tnx-shared 5.2.17 → 5.2.18

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 (452) hide show
  1. package/classes/base/component-base.d.ts +1 -1
  2. package/classes/base/data-form-base.d.ts +1 -1
  3. package/classes/base/data-list-base.d.ts +1 -1
  4. package/classes/base/list-base.d.ts +1 -1
  5. package/classes/base/tree-list-base.d.ts +1 -1
  6. package/classes/public-function.d.ts +3 -2
  7. package/components/access-denied-component/access-denied-v1/access-denied-v1.component.d.ts +1 -1
  8. package/components/access-denied-component/access-denied.component.d.ts +1 -1
  9. package/components/add-news/add-news.component.d.ts +1 -1
  10. package/components/address/address.component.d.ts +1 -1
  11. package/components/after-view-checked/after-view-checked.component.d.ts +1 -1
  12. package/components/autocomplete-datasource/autocomplete-datasource.component.d.ts +1 -1
  13. package/components/autocomplete-picker/autocomplete-picker.component.d.ts +1 -1
  14. package/components/avatar-uploader/avatar-uploader.component.d.ts +1 -1
  15. package/components/chat/chat-box/chat-box.component.d.ts +1 -1
  16. package/components/chat/chat-send-message-box/chat-send-message-box.component.d.ts +1 -1
  17. package/components/check-box-list/check-box-list.component.d.ts +1 -1
  18. package/components/cocautochuc/cocautochuc-picker/cocautochuc-picker.component.d.ts +1 -1
  19. package/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.d.ts +1 -1
  20. package/components/common-app-component/app-root-menu/app-root-menu.component.d.ts +1 -1
  21. package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts +1 -1
  22. package/components/common-app-component/app-topbar-v2/app-topbar-v2.component.d.ts +1 -1
  23. package/components/common-app-component/app.footer.component.d.ts +1 -1
  24. package/components/common-app-component/app.menu.component.d.ts +2 -2
  25. package/components/common-app-component/app.profile.component.d.ts +1 -1
  26. package/components/common-app-component/app.topbar.component.d.ts +1 -1
  27. package/components/common-app-component/common-app-component.d.ts +1 -1
  28. package/components/common-app-component/default-setting-form/default-data-settings.component.d.ts +1 -1
  29. package/components/common-dashboard/common-dashboard.component.d.ts +1 -1
  30. package/components/congviec-picker/congviec-picker.component.d.ts +1 -1
  31. package/components/crud/advance-search/advance-search.component.d.ts +1 -1
  32. package/components/crud/check-ready/check-ready.component.d.ts +1 -1
  33. package/components/crud/crud-form/crud-form.component.d.ts +1 -1
  34. package/components/crud/crud-list/crud-list.component.d.ts +1 -1
  35. package/components/crud/table-detail-form/table-detail-form.component.d.ts +1 -1
  36. package/components/crud/tn-table.component.d.ts +1 -1
  37. package/components/crud/tree-table/tree-table.component.d.ts +1 -1
  38. package/components/datetime-picker/datetime-picker.component.d.ts +1 -1
  39. package/components/datetime-picker-range/datetime-picker-range.component.d.ts +1 -1
  40. package/components/dropdown/dropdown.component.d.ts +1 -1
  41. package/components/dropdown/quick-add-form/quick-add-form.component.d.ts +1 -1
  42. package/components/entity-permission/entity-permission.component.d.ts +1 -1
  43. package/components/entity-picker/entity-picker-box/entity-picker-box.component.d.ts +1 -1
  44. package/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.d.ts +1 -1
  45. package/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.d.ts +1 -1
  46. package/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.d.ts +1 -1
  47. package/components/entity-picker/entity-picker.component.d.ts +1 -1
  48. package/components/equation-editor/equation-editor.component.d.ts +1 -1
  49. package/components/file-explorer/file-explorer.component.d.ts +1 -1
  50. package/components/file-explorer/file-form/file-form.component.d.ts +1 -1
  51. package/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.d.ts +1 -1
  52. package/components/file-explorer/file-manager/file-manager.component.d.ts +1 -1
  53. package/components/file-explorer/file-picker-dialog/file-picker-dialog.component.d.ts +1 -1
  54. package/components/file-explorer/file-tai-lieu/file-tai-lieu.component.d.ts +1 -1
  55. package/components/file-explorer/file-tai-lieu/khaithac-tailieu-dungchung/khaithac-tailieu-dungchung.component.d.ts +1 -1
  56. package/components/file-explorer/file-tai-lieu/tailieu-cuatoi/tailieu-cuatoi.component.d.ts +1 -1
  57. package/components/file-explorer/file-version-list/file-version-list.component.d.ts +1 -1
  58. package/components/file-explorer/file-viewer/file-viewer.component.d.ts +1 -1
  59. package/components/file-explorer/folder-form/folder-form.component.d.ts +1 -1
  60. package/components/file-explorer/ky-so-sim-danh-sach-chu-ky/ky-so-sim-danh-sach-chu-ky.component.d.ts +1 -1
  61. package/components/file-explorer/signature-detail/signature-detail.component.d.ts +1 -1
  62. package/components/file-upload/file-upload.component.d.ts +1 -1
  63. package/components/key-value/key-value.component.d.ts +1 -1
  64. package/components/mask/mask.component.d.ts +1 -1
  65. package/components/not-found/not-found.component.d.ts +1 -1
  66. package/components/number-picker-range/number-picker-range.component.d.ts +1 -1
  67. package/components/paging-next-back-only/paging-next-back-only.component.d.ts +1 -1
  68. package/components/permission-utils/permission-utils.component.d.ts +1 -1
  69. package/components/qr-code-generator/qr-code-generator.component.d.ts +1 -1
  70. package/components/query-builders/query-builder/query-builder.component.d.ts +1 -1
  71. package/components/query-builders/query-builder-group/query-builder-group.component.d.ts +1 -1
  72. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +1 -1
  73. package/components/radio-button-list/radio-button-list.component.d.ts +1 -1
  74. package/components/report-queue/report-queue.component.d.ts +1 -1
  75. package/components/service-file-upload/service-file-upload.component.d.ts +1 -1
  76. package/components/settings/settings-row/settings-row.component.d.ts +1 -1
  77. package/components/settings/settings-workflow/settings-workflow-no1/settings-workflow-no1.component.d.ts +1 -1
  78. package/components/settings/settings-workflow/settings-workflow.component.d.ts +1 -1
  79. package/components/settings/settings.component.d.ts +1 -1
  80. package/components/share-link-by-permission/share-link-by-permission.component.d.ts +1 -1
  81. package/components/splash-component/splash-component-v1/splash-component-v1.component.d.ts +1 -1
  82. package/components/splash-component/splash-component-v2/splash-component-v2.component.d.ts +1 -1
  83. package/components/splash-component/splash-component.component.d.ts +1 -1
  84. package/components/statemachines/dynamic-node/dynamic-node.component.d.ts +1 -1
  85. package/components/statemachines/state/state.component.d.ts +1 -1
  86. package/components/statemachines/state-metadata/state-metadata.component.d.ts +1 -1
  87. package/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.d.ts +1 -1
  88. package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts +1 -1
  89. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts +1 -1
  90. package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts +1 -1
  91. package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts +1 -1
  92. package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts +1 -1
  93. package/components/statemachines/statemachines-connection-receiver-user/statemachines-connection-receiver-user.component.d.ts +1 -1
  94. package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts +1 -1
  95. package/components/statemachines/statemachines-designer/statemachines-designer.component.d.ts +1 -1
  96. package/components/tn-app-help/helper-current-page/helper-current-page.component.d.ts +1 -1
  97. package/components/tn-app-help/tn-app-help.component.d.ts +1 -1
  98. package/components/tn-app-notification/tn-app-notification-list/tn-app-notification-list.component.d.ts +1 -1
  99. package/components/tn-app-notification/tn-app-notification.component.d.ts +1 -1
  100. package/components/tn-checkbox/tn-checkbox.component.d.ts +1 -1
  101. package/components/tn-color-picker/tn-color-picker.component.d.ts +1 -1
  102. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts +1 -1
  103. package/components/tn-dialog/tn-dialog.component.d.ts +1 -1
  104. package/components/tn-tabview/tn-tabview.component.d.ts +1 -1
  105. package/components/tn-template/tn-template.component.d.ts +1 -1
  106. package/components/tn-tinymce/tn-tinymce.component.d.ts +1 -1
  107. package/components/universal-link-processor/universal-link-processor.component.d.ts +1 -1
  108. package/components/user-picker/user-picker-box/user-picker-box.component.d.ts +1 -1
  109. package/components/user-picker/user-picker-dialog/user-picker-dialog.component.d.ts +1 -1
  110. package/components/user-picker/user-picker.component.d.ts +1 -1
  111. package/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.d.ts +1 -1
  112. package/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.d.ts +1 -1
  113. package/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.d.ts +1 -1
  114. package/components/vanban-picker/vanban-picker.component.d.ts +1 -1
  115. package/components/workflow/cho-y-kien-form/cho-y-kien-form.component.d.ts +1 -1
  116. package/components/workflow/permission-sharing/permission-sharing.component.d.ts +1 -1
  117. package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts +1 -1
  118. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +1 -1
  119. package/components/workflow/simple-workflow-form/simple-workflow-form.component.d.ts +1 -1
  120. package/components/workflow/start-workflow/start-workflow.component.d.ts +1 -1
  121. package/components/workflow/workflow-history/workflow-history.component.d.ts +1 -1
  122. package/components/workflow/workflow-history-dialog/workflow-history-dialog.component.d.ts +1 -1
  123. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts +1 -1
  124. package/components/workflow/workflow-permission/workflow-permission.component.d.ts +1 -1
  125. package/components/workflow/workflow-permission-form/workflow-permission-form.component.d.ts +1 -1
  126. package/components/workflow/workflow-picker/workflow-picker.component.d.ts +1 -1
  127. package/components/workflow/workflow-setting/workflow-setting.component.d.ts +1 -1
  128. package/components/workflow/workflow-setting-dialog/workflow-setting-dialog.component.d.ts +1 -1
  129. package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts +1 -1
  130. package/congviec/cauhinh-workflow/cauhinh-workflow-detail/cauhinh-workflow-detail.component.d.ts +1 -1
  131. package/congviec/cauhinh-workflow/cauhinh-workflow.component.d.ts +1 -1
  132. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +1 -1
  133. package/congviec/congviec/congviec-dinhkem-form/congviec-dinhkem-form.component.d.ts +1 -1
  134. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -1
  135. package/congviec/congviec/congviec-next-first-step/congviec-next-first-step.component.d.ts +1 -1
  136. package/congviec/congviec/congviec.component.d.ts +1 -1
  137. package/congviec/congviec-test/congviec.component.d.ts +1 -1
  138. package/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec-form/dm-linhvuc-congviec-form.component.d.ts +1 -1
  139. package/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec.component.d.ts +1 -1
  140. package/congviec/dm-loai-congviec/dm-loai-congviec-form/dm-loai-congviec-form.component.d.ts +1 -1
  141. package/congviec/dm-loai-congviec/dm-loai-congviec.component.d.ts +1 -1
  142. package/congviec/dm-priority/dm-priority-form/dm-priority-form.component.d.ts +1 -1
  143. package/congviec/dm-priority/dm-priority.component.d.ts +1 -1
  144. package/directives/authorize.directive.d.ts +1 -1
  145. package/directives/prevent-shift-tab.directive.d.ts +1 -1
  146. package/directives/primeng/tn-table.directive.d.ts +5 -5
  147. package/directives/tn-template.directive.d.ts +1 -1
  148. package/esm2020/app-context/application-context.service.mjs +3 -3
  149. package/esm2020/app-context/component-context.service.mjs +3 -3
  150. package/esm2020/classes/base/component-base.mjs +3 -3
  151. package/esm2020/classes/base/data-form-base.mjs +3 -3
  152. package/esm2020/classes/base/data-list-base.mjs +3 -3
  153. package/esm2020/classes/base/list-base.mjs +3 -3
  154. package/esm2020/classes/base/tree-list-base.mjs +3 -3
  155. package/esm2020/components/access-denied-component/access-denied-v1/access-denied-v1.component.mjs +3 -3
  156. package/esm2020/components/access-denied-component/access-denied.component.mjs +6 -6
  157. package/esm2020/components/add-news/add-news.component.mjs +6 -6
  158. package/esm2020/components/address/address.component.mjs +5 -5
  159. package/esm2020/components/address/services/address.service.mjs +3 -3
  160. package/esm2020/components/after-view-checked/after-view-checked.component.mjs +4 -4
  161. package/esm2020/components/autocomplete-datasource/autocomplete-datasource.component.mjs +7 -7
  162. package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +11 -11
  163. package/esm2020/components/avatar-uploader/avatar-uploader.component.mjs +6 -6
  164. package/esm2020/components/chat/chat-box/chat-box.component.mjs +7 -7
  165. package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +10 -10
  166. package/esm2020/components/chat/services/chat.service.mjs +3 -3
  167. package/esm2020/components/chat/services/content.service.mjs +3 -3
  168. package/esm2020/components/chat/services/message-board.service.mjs +3 -3
  169. package/esm2020/components/chat/services/status.service.mjs +3 -3
  170. package/esm2020/components/check-box-list/check-box-list.component.mjs +8 -8
  171. package/esm2020/components/cocautochuc/cocautochuc-picker/cocautochuc-picker.component.mjs +7 -7
  172. package/esm2020/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.mjs +6 -6
  173. package/esm2020/components/cocautochuc/services/cocautochuc.service.mjs +3 -3
  174. package/esm2020/components/common-app-component/app-root-menu/app-root-menu.component.mjs +4 -4
  175. package/esm2020/components/common-app-component/app-topbar-v1/app-topbar-v1.component.mjs +11 -11
  176. package/esm2020/components/common-app-component/app-topbar-v2/app-topbar-v2.component.mjs +9 -9
  177. package/esm2020/components/common-app-component/app.footer.component.mjs +3 -3
  178. package/esm2020/components/common-app-component/app.menu.component.mjs +11 -17
  179. package/esm2020/components/common-app-component/app.profile.component.mjs +5 -5
  180. package/esm2020/components/common-app-component/app.topbar.component.mjs +11 -11
  181. package/esm2020/components/common-app-component/common-app-component.mjs +15 -15
  182. package/esm2020/components/common-app-component/default-setting-form/default-data-settings.component.mjs +7 -7
  183. package/esm2020/components/common-dashboard/common-dashboard.component.mjs +3 -3
  184. package/esm2020/components/congviec-picker/congviec-picker.component.mjs +7 -7
  185. package/esm2020/components/congviec-picker/services/congviec.service.mjs +3 -3
  186. package/esm2020/components/congviec-picker/services/taskworkflowhistories.service.mjs +3 -3
  187. package/esm2020/components/crud/advance-search/advance-search.component.mjs +14 -14
  188. package/esm2020/components/crud/check-ready/check-ready.component.mjs +4 -4
  189. package/esm2020/components/crud/crud-form/crud-form.component.mjs +26 -26
  190. package/esm2020/components/crud/crud-list/crud-list.component.mjs +25 -25
  191. package/esm2020/components/crud/table-detail-form/table-detail-form.component.mjs +6 -6
  192. package/esm2020/components/crud/tn-table.component.mjs +3 -3
  193. package/esm2020/components/crud/tree-table/tree-table.component.mjs +23 -23
  194. package/esm2020/components/datetime-picker/datetime-picker.component.mjs +7 -7
  195. package/esm2020/components/datetime-picker-range/datetime-picker-range.component.mjs +6 -6
  196. package/esm2020/components/dropdown/dropdown.component.mjs +11 -11
  197. package/esm2020/components/dropdown/quick-add-form/quick-add-form.component.mjs +6 -6
  198. package/esm2020/components/dropdown/services/dropdown.service.mjs +3 -3
  199. package/esm2020/components/entity-permission/entity-permission.component.mjs +9 -9
  200. package/esm2020/components/entity-permission/services.cs/entity-permission.service.mjs +3 -3
  201. package/esm2020/components/entity-picker/entity-picker-box/entity-picker-box.component.mjs +7 -7
  202. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.mjs +7 -7
  203. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.mjs +7 -7
  204. package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +7 -7
  205. package/esm2020/components/entity-picker/entity-picker.component.mjs +10 -10
  206. package/esm2020/components/equation-editor/equation-editor.component.mjs +6 -6
  207. package/esm2020/components/file-explorer/file-explorer.component.mjs +6 -6
  208. package/esm2020/components/file-explorer/file-form/file-form.component.mjs +7 -7
  209. package/esm2020/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.mjs +8 -8
  210. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +22 -22
  211. package/esm2020/components/file-explorer/file-picker-dialog/file-picker-dialog.component.mjs +7 -7
  212. package/esm2020/components/file-explorer/file-tai-lieu/file-tai-lieu.component.mjs +9 -9
  213. package/esm2020/components/file-explorer/file-tai-lieu/khaithac-tailieu-dungchung/khaithac-tailieu-dungchung.component.mjs +4 -4
  214. package/esm2020/components/file-explorer/file-tai-lieu/tailieu-cuatoi/tailieu-cuatoi.component.mjs +4 -4
  215. package/esm2020/components/file-explorer/file-version-list/file-version-list.component.mjs +9 -9
  216. package/esm2020/components/file-explorer/file-viewer/file-viewer.component.mjs +9 -9
  217. package/esm2020/components/file-explorer/folder-form/folder-form.component.mjs +7 -7
  218. package/esm2020/components/file-explorer/ky-so-sim-danh-sach-chu-ky/ky-so-sim-danh-sach-chu-ky.component.mjs +6 -6
  219. package/esm2020/components/file-explorer/services/danhmuc-dungchung.service.mjs +3 -3
  220. package/esm2020/components/file-explorer/services/download-link.service.mjs +3 -3
  221. package/esm2020/components/file-explorer/services/file-data.service.mjs +3 -3
  222. package/esm2020/components/file-explorer/services/file-explorer-new.service.mjs +3 -3
  223. package/esm2020/components/file-explorer/services/file-explorer.service.mjs +3 -3
  224. package/esm2020/components/file-explorer/services/file-object.service.mjs +3 -3
  225. package/esm2020/components/file-explorer/services/file-version.service.mjs +3 -3
  226. package/esm2020/components/file-explorer/services/folder.service.mjs +3 -3
  227. package/esm2020/components/file-explorer/services/ky-so-sim-chu-ky-user.service.mjs +3 -3
  228. package/esm2020/components/file-explorer/services/ky-so-sim-signPDF.service.mjs +3 -3
  229. package/esm2020/components/file-explorer/services/my-drive.service.mjs +3 -3
  230. package/esm2020/components/file-explorer/signature-detail/signature-detail.component.mjs +3 -3
  231. package/esm2020/components/file-upload/file-upload.component.mjs +9 -9
  232. package/esm2020/components/key-value/key-value.component.mjs +3 -3
  233. package/esm2020/components/mask/mask.component.mjs +7 -7
  234. package/esm2020/components/not-found/not-found.component.mjs +3 -3
  235. package/esm2020/components/number-picker-range/number-picker-range.component.mjs +7 -7
  236. package/esm2020/components/paging-next-back-only/paging-next-back-only.component.mjs +8 -8
  237. package/esm2020/components/permission-utils/permission-utils.component.mjs +9 -9
  238. package/esm2020/components/qr-code-generator/qr-code-generator.component.mjs +4 -4
  239. package/esm2020/components/query-builders/query-builder/query-builder.component.mjs +8 -8
  240. package/esm2020/components/query-builders/query-builder-group/query-builder-group.component.mjs +10 -10
  241. package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +18 -18
  242. package/esm2020/components/query-builders/services/dm-chucvu.service.mjs +3 -3
  243. package/esm2020/components/radio-button-list/radio-button-list.component.mjs +6 -6
  244. package/esm2020/components/report-queue/report-queue.component.mjs +8 -8
  245. package/esm2020/components/service-file-upload/service-file-upload.component.mjs +10 -10
  246. package/esm2020/components/settings/settings-row/settings-row.component.mjs +8 -8
  247. package/esm2020/components/settings/settings-workflow/settings-workflow-no1/settings-workflow-no1.component.mjs +4 -4
  248. package/esm2020/components/settings/settings-workflow/settings-workflow.component.mjs +9 -9
  249. package/esm2020/components/settings/settings.component.mjs +14 -14
  250. package/esm2020/components/share-link-by-permission/share-link-by-permission.component.mjs +7 -7
  251. package/esm2020/components/splash-component/splash-component-v1/splash-component-v1.component.mjs +7 -7
  252. package/esm2020/components/splash-component/splash-component-v2/splash-component-v2.component.mjs +7 -7
  253. package/esm2020/components/splash-component/splash-component.component.mjs +9 -9
  254. package/esm2020/components/statemachines/dynamic-node/dynamic-node.component.mjs +3 -3
  255. package/esm2020/components/statemachines/services/node.service.mjs +3 -3
  256. package/esm2020/components/statemachines/services/statemachines.service.mjs +3 -3
  257. package/esm2020/components/statemachines/state/state.component.mjs +4 -4
  258. package/esm2020/components/statemachines/state-metadata/state-metadata.component.mjs +7 -7
  259. package/esm2020/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.mjs +9 -9
  260. package/esm2020/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.mjs +7 -7
  261. package/esm2020/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.mjs +3 -3
  262. package/esm2020/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.mjs +3 -3
  263. package/esm2020/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.mjs +3 -3
  264. package/esm2020/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.mjs +3 -3
  265. package/esm2020/components/statemachines/statemachines-connection-receiver-user/statemachines-connection-receiver-user.component.mjs +3 -3
  266. package/esm2020/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.mjs +3 -3
  267. package/esm2020/components/statemachines/statemachines-designer/statemachines-designer.component.mjs +13 -13
  268. package/esm2020/components/tn-app-help/helper-current-page/helper-current-page.component.mjs +3 -3
  269. package/esm2020/components/tn-app-help/services/path-name.service.mjs +3 -3
  270. package/esm2020/components/tn-app-help/tn-app-help.component.mjs +7 -7
  271. package/esm2020/components/tn-app-notification/tn-app-notification-list/tn-app-notification-list.component.mjs +4 -4
  272. package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +5 -5
  273. package/esm2020/components/tn-checkbox/tn-checkbox.component.mjs +6 -6
  274. package/esm2020/components/tn-color-picker/tn-color-picker.component.mjs +7 -7
  275. package/esm2020/components/tn-custom-scrollbar/tn-custom-scrollbar.component.mjs +6 -6
  276. package/esm2020/components/tn-dialog/tn-dialog.component.mjs +8 -8
  277. package/esm2020/components/tn-tabview/tn-tabview.component.mjs +6 -6
  278. package/esm2020/components/tn-template/tn-template.component.mjs +4 -4
  279. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +9 -9
  280. package/esm2020/components/universal-link-processor/universal-link-processor.component.mjs +4 -4
  281. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +9 -9
  282. package/esm2020/components/user-picker/user-picker-dialog/user-picker-dialog.component.mjs +4 -4
  283. package/esm2020/components/user-picker/user-picker.component.mjs +12 -12
  284. package/esm2020/components/vanban-picker/services/vanban-den.service.mjs +3 -3
  285. package/esm2020/components/vanban-picker/services/vanban-di.service.mjs +3 -3
  286. package/esm2020/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.mjs +10 -10
  287. package/esm2020/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.mjs +10 -10
  288. package/esm2020/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.mjs +6 -6
  289. package/esm2020/components/vanban-picker/vanban-picker.component.mjs +10 -10
  290. package/esm2020/components/workflow/cho-y-kien-form/cho-y-kien-form.component.mjs +7 -7
  291. package/esm2020/components/workflow/permission-sharing/permission-sharing.component.mjs +7 -7
  292. package/esm2020/components/workflow/process-workflow-form/process-workflow-form.component.mjs +9 -9
  293. package/esm2020/components/workflow/process-workflow-target/process-workflow-target.component.mjs +4 -4
  294. package/esm2020/components/workflow/services/canbo-hoso.service.mjs +3 -3
  295. package/esm2020/components/workflow/services/dm-loai-congviec.service.mjs +3 -3
  296. package/esm2020/components/workflow/services/entity-workflow-history.service.mjs +3 -3
  297. package/esm2020/components/workflow/services/entity-workflow-setting.service.mjs +3 -3
  298. package/esm2020/components/workflow/services/workflow-history.service.mjs +3 -3
  299. package/esm2020/components/workflow/services/workflow-permission-detail.service.mjs +3 -3
  300. package/esm2020/components/workflow/services/workflow-permission.service.mjs +3 -3
  301. package/esm2020/components/workflow/services/workflow-settings.service.mjs +3 -3
  302. package/esm2020/components/workflow/simple-workflow-form/simple-workflow-form.component.mjs +7 -7
  303. package/esm2020/components/workflow/start-workflow/start-workflow.component.mjs +8 -8
  304. package/esm2020/components/workflow/workflow-history/workflow-history.component.mjs +6 -6
  305. package/esm2020/components/workflow/workflow-history-dialog/workflow-history-dialog.component.mjs +4 -4
  306. package/esm2020/components/workflow/workflow-history-new/workflow-history-new.component.mjs +10 -10
  307. package/esm2020/components/workflow/workflow-permission/workflow-permission.component.mjs +8 -8
  308. package/esm2020/components/workflow/workflow-permission-form/workflow-permission-form.component.mjs +7 -7
  309. package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +8 -8
  310. package/esm2020/components/workflow/workflow-setting/workflow-setting.component.mjs +5 -5
  311. package/esm2020/components/workflow/workflow-setting-dialog/workflow-setting-dialog.component.mjs +4 -4
  312. package/esm2020/components/workflow/workflow-setting-new/workflow-setting-new.component.mjs +7 -7
  313. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow-detail/cauhinh-workflow-detail.component.mjs +5 -5
  314. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow.component.mjs +3 -3
  315. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow.module.mjs +10 -12
  316. package/esm2020/congviec/cauhinh-workflow/services/cauhinh-workflow.service.mjs +3 -3
  317. package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +14 -14
  318. package/esm2020/congviec/congviec/congviec-dinhkem-form/congviec-dinhkem-form.component.mjs +4 -4
  319. package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +9 -9
  320. package/esm2020/congviec/congviec/congviec-next-first-step/congviec-next-first-step.component.mjs +9 -9
  321. package/esm2020/congviec/congviec/congviec.component.mjs +11 -11
  322. package/esm2020/congviec/congviec/services/congviec-dinhkem.service.mjs +3 -3
  323. package/esm2020/congviec/congviec/services/congviec.service.mjs +3 -3
  324. package/esm2020/congviec/congviec/services/congvieclienquan.service.mjs +3 -3
  325. package/esm2020/congviec/congviec-test/congviec.component.mjs +3 -3
  326. package/esm2020/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec-form/dm-linhvuc-congviec-form.component.mjs +7 -7
  327. package/esm2020/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec.component.mjs +6 -6
  328. package/esm2020/congviec/dm-linhvuc-congviec/services/dm-linhvuc-congviec.service.mjs +3 -3
  329. package/esm2020/congviec/dm-loai-congviec/dm-loai-congviec-form/dm-loai-congviec-form.component.mjs +7 -7
  330. package/esm2020/congviec/dm-loai-congviec/dm-loai-congviec.component.mjs +6 -6
  331. package/esm2020/congviec/dm-loai-congviec/services/dm-loai-congviec.service.mjs +3 -3
  332. package/esm2020/congviec/dm-priority/dm-priority-form/dm-priority-form.component.mjs +4 -4
  333. package/esm2020/congviec/dm-priority/dm-priority.component.mjs +5 -5
  334. package/esm2020/congviec/dm-priority/dm-priority.module.mjs +9 -9
  335. package/esm2020/congviec/dm-priority/services/dm-priority.service.mjs +3 -3
  336. package/esm2020/directives/authorize.directive.mjs +3 -3
  337. package/esm2020/directives/prevent-shift-tab.directive.mjs +3 -3
  338. package/esm2020/directives/primeng/tn-table.directive.mjs +17 -17
  339. package/esm2020/directives/tn-template.directive.mjs +3 -3
  340. package/esm2020/dynamic-components/dynamic-component.service.mjs +3 -3
  341. package/esm2020/intercepters/log.interceptor.mjs +3 -3
  342. package/esm2020/intercepters/permission-utils.interceptor.mjs +3 -3
  343. package/esm2020/intercepters/send-access-token.interceptor.mjs +3 -3
  344. package/esm2020/intercepters/trace.interceptor.mjs +3 -3
  345. package/esm2020/pipes/approval.pipe.mjs +3 -3
  346. package/esm2020/pipes/boolean-format.pipe.mjs +3 -3
  347. package/esm2020/pipes/convertMoneyToWord.pipe.mjs +3 -3
  348. package/esm2020/pipes/file-icon.pipe.mjs +3 -3
  349. package/esm2020/pipes/file-size.pipe.mjs +3 -3
  350. package/esm2020/pipes/highlight.pipe.mjs +3 -3
  351. package/esm2020/pipes/html-format.pipe.mjs +3 -3
  352. package/esm2020/pipes/masterData.pipe.mjs +3 -3
  353. package/esm2020/pipes/multiple-reference-data-format.pipe.mjs +3 -3
  354. package/esm2020/pipes/organization-format.pipe.mjs +3 -3
  355. package/esm2020/pipes/organization-name-format.pipe.mjs +3 -3
  356. package/esm2020/pipes/organizations-format.pipe.mjs +3 -3
  357. package/esm2020/pipes/reference-data-format.pipe.mjs +3 -3
  358. package/esm2020/pipes/safe-html.pipe.mjs +3 -3
  359. package/esm2020/pipes/safe-style.pipe.mjs +3 -3
  360. package/esm2020/pipes/safe-url.pipe.mjs +3 -3
  361. package/esm2020/pipes/secure.pipe.mjs +3 -3
  362. package/esm2020/pipes/string-format.pipe.mjs +3 -3
  363. package/esm2020/pipes/summary.pipe.mjs +3 -3
  364. package/esm2020/pipes/tn-date.pipe.mjs +3 -3
  365. package/esm2020/pipes/user-format.pipe.mjs +3 -3
  366. package/esm2020/pipes/users-format.pipe.mjs +3 -3
  367. package/esm2020/services/app-list.service.mjs +3 -3
  368. package/esm2020/services/article.service.mjs +3 -3
  369. package/esm2020/services/authen.service.mjs +3 -3
  370. package/esm2020/services/calculation-engine.service.mjs +3 -3
  371. package/esm2020/services/canbo-hoso.service.mjs +3 -3
  372. package/esm2020/services/check-control-visible.service.mjs +3 -3
  373. package/esm2020/services/common.service.mjs +3 -3
  374. package/esm2020/services/conditional-builder.service.mjs +3 -3
  375. package/esm2020/services/crud.service.mjs +3 -3
  376. package/esm2020/services/custom-router.service.mjs +3 -3
  377. package/esm2020/services/customize-ui.service.mjs +3 -3
  378. package/esm2020/services/danhmuc-api.service.mjs +3 -3
  379. package/esm2020/services/dhvinh-guard.service.mjs +3 -3
  380. package/esm2020/services/dm-chucvu.service.mjs +3 -3
  381. package/esm2020/services/dom.service.mjs +3 -3
  382. package/esm2020/services/eform.service.mjs +3 -3
  383. package/esm2020/services/entity-metadata.service.mjs +3 -3
  384. package/esm2020/services/entity-picker.service.mjs +3 -3
  385. package/esm2020/services/environment.service.mjs +3 -3
  386. package/esm2020/services/exception-handler.service.mjs +3 -3
  387. package/esm2020/services/export.service.mjs +3 -3
  388. package/esm2020/services/file-manager.service.mjs +3 -3
  389. package/esm2020/services/file-object-v4.service.mjs +3 -3
  390. package/esm2020/services/generic-guard-child.service.mjs +3 -3
  391. package/esm2020/services/generic-guard.service.mjs +3 -3
  392. package/esm2020/services/global.service.mjs +3 -3
  393. package/esm2020/services/guard-sv.service.mjs +3 -3
  394. package/esm2020/services/guard.service.mjs +3 -3
  395. package/esm2020/services/high-performance.service.mjs +3 -3
  396. package/esm2020/services/image.service.mjs +3 -3
  397. package/esm2020/services/list-helper.service.mjs +3 -3
  398. package/esm2020/services/localCache.service.mjs +3 -3
  399. package/esm2020/services/master-data.service.mjs +3 -3
  400. package/esm2020/services/menu.service.mjs +3 -3
  401. package/esm2020/services/newscategory.service.mjs +3 -3
  402. package/esm2020/services/notification.service.mjs +3 -3
  403. package/esm2020/services/notifier.service.mjs +3 -3
  404. package/esm2020/services/organization.service.mjs +3 -3
  405. package/esm2020/services/permission.service.mjs +3 -3
  406. package/esm2020/services/position.service.mjs +3 -3
  407. package/esm2020/services/print.service.mjs +3 -3
  408. package/esm2020/services/random-data.service.mjs +3 -3
  409. package/esm2020/services/role.service.mjs +3 -3
  410. package/esm2020/services/signalr.service.mjs +3 -3
  411. package/esm2020/services/storage-updated.service.mjs +3 -3
  412. package/esm2020/services/storage.service.mjs +3 -3
  413. package/esm2020/services/template-text-v4.service.mjs +3 -3
  414. package/esm2020/services/template-v4.service.mjs +3 -3
  415. package/esm2020/services/template.service.mjs +3 -3
  416. package/esm2020/services/templateinstance.service.mjs +3 -3
  417. package/esm2020/services/tn-client.service.mjs +3 -3
  418. package/esm2020/services/unique-number.service.mjs +3 -3
  419. package/esm2020/services/user-group-real.service.mjs +3 -3
  420. package/esm2020/services/user-group.service.mjs +3 -3
  421. package/esm2020/services/user-v5.service.mjs +3 -3
  422. package/esm2020/services/user.service.mjs +3 -3
  423. package/esm2020/services/virtual-base.service.mjs +3 -3
  424. package/esm2020/tnx-shared.module.mjs +6 -6
  425. package/fesm2015/tnx-shared.mjs +7269 -7277
  426. package/fesm2015/tnx-shared.mjs.map +1 -1
  427. package/fesm2020/tnx-shared.mjs +9215 -9223
  428. package/fesm2020/tnx-shared.mjs.map +1 -1
  429. package/{tnx-shared.d.ts → index.d.ts} +0 -0
  430. package/package.json +4 -4
  431. package/pipes/approval.pipe.d.ts +1 -1
  432. package/pipes/boolean-format.pipe.d.ts +1 -1
  433. package/pipes/convertMoneyToWord.pipe.d.ts +1 -1
  434. package/pipes/file-icon.pipe.d.ts +1 -1
  435. package/pipes/file-size.pipe.d.ts +1 -1
  436. package/pipes/highlight.pipe.d.ts +1 -1
  437. package/pipes/html-format.pipe.d.ts +1 -1
  438. package/pipes/masterData.pipe.d.ts +1 -1
  439. package/pipes/multiple-reference-data-format.pipe.d.ts +1 -1
  440. package/pipes/organization-format.pipe.d.ts +1 -1
  441. package/pipes/organization-name-format.pipe.d.ts +1 -1
  442. package/pipes/organizations-format.pipe.d.ts +1 -1
  443. package/pipes/reference-data-format.pipe.d.ts +1 -1
  444. package/pipes/safe-html.pipe.d.ts +1 -1
  445. package/pipes/safe-style.pipe.d.ts +1 -1
  446. package/pipes/safe-url.pipe.d.ts +1 -1
  447. package/pipes/secure.pipe.d.ts +1 -1
  448. package/pipes/string-format.pipe.d.ts +1 -1
  449. package/pipes/summary.pipe.d.ts +1 -1
  450. package/pipes/tn-date.pipe.d.ts +1 -1
  451. package/pipes/user-format.pipe.d.ts +1 -1
  452. package/pipes/users-format.pipe.d.ts +1 -1
@@ -11,11 +11,11 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "ngx-device-detector";
12
12
  import * as i2 from "../../services/notifier.service";
13
13
  import * as i3 from "../file-explorer/services/file-explorer.service";
14
- import * as i4 from "../tn-dialog/tn-dialog.component";
15
- import * as i5 from "../tn-custom-scrollbar/tn-custom-scrollbar.component";
14
+ import * as i4 from "@angular/common";
15
+ import * as i5 from "tn-custom-primeng/button";
16
16
  import * as i6 from "../equation-editor/equation-editor.component";
17
- import * as i7 from "@angular/common";
18
- import * as i8 from "tn-custom-primeng/button";
17
+ import * as i7 from "../tn-dialog/tn-dialog.component";
18
+ import * as i8 from "../tn-custom-scrollbar/tn-custom-scrollbar.component";
19
19
  import * as i9 from "@ngx-translate/core";
20
20
  export class TnTinymceComponent extends ComponentBase {
21
21
  constructor(injector, _deviceDetectorService, _notifierService, _fileService) {
@@ -374,16 +374,16 @@ export class TnTinymceComponent extends ComponentBase {
374
374
  this.editor.insertContent(evt);
375
375
  }
376
376
  }
377
- TnTinymceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: TnTinymceComponent, deps: [{ token: i0.Injector }, { token: i1.DeviceDetectorService }, { token: i2.NotifierService }, { token: i3.FileExplorerService }], target: i0.ɵɵFactoryTarget.Component });
378
- TnTinymceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: TnTinymceComponent, selector: "tn-tinymce", inputs: { mode: "mode", disabled: "disabled", required: "required", height: "height", field: "field", languageCode: "languageCode" }, outputs: { keydown: "keydown", onBlur: "onBlur", onChanged: "onChanged" }, providers: [
377
+ TnTinymceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnTinymceComponent, deps: [{ token: i0.Injector }, { token: i1.DeviceDetectorService }, { token: i2.NotifierService }, { token: i3.FileExplorerService }], target: i0.ɵɵFactoryTarget.Component });
378
+ TnTinymceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TnTinymceComponent, selector: "tn-tinymce", inputs: { mode: "mode", disabled: "disabled", required: "required", height: "height", field: "field", languageCode: "languageCode" }, outputs: { keydown: "keydown", onBlur: "onBlur", onChanged: "onChanged" }, providers: [
379
379
  {
380
380
  provide: NG_VALUE_ACCESSOR,
381
381
  useExisting: forwardRef(() => TnTinymceComponent),
382
382
  multi: true
383
383
  },
384
384
  ComponentContextService
385
- ], viewQueries: [{ propertyName: "equationForm", first: true, predicate: EquationEditorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <!-- <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChanged($event)\"></add-news> -->\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showTemplate\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\"\r\n [popupSize]=\"popupSize\" (onHide)=\"showTemplate = false\">\r\n <!-- <tn-template (onChanged)=\"addTemplate($event)\"></tn-template> -->\r\n</tn-dialog>\r\n\r\n<!-- <tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog> -->", styles: [""], components: [{ type: i4.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { type: i5.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { type: i6.EquationEditorComponent, selector: "equation-editor", inputs: ["data"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }], pipes: { "translate": i9.TranslatePipe } });
386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: TnTinymceComponent, decorators: [{
385
+ ], viewQueries: [{ propertyName: "equationForm", first: true, predicate: EquationEditorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <!-- <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChanged($event)\"></add-news> -->\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showTemplate\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\"\r\n [popupSize]=\"popupSize\" (onHide)=\"showTemplate = false\">\r\n <!-- <tn-template (onChanged)=\"addTemplate($event)\"></tn-template> -->\r\n</tn-dialog>\r\n\r\n<!-- <tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog> -->", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i6.EquationEditorComponent, selector: "equation-editor", inputs: ["data"] }, { kind: "component", type: i7.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "component", type: i8.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TnTinymceComponent, decorators: [{
387
387
  type: Component,
388
388
  args: [{ selector: 'tn-tinymce', providers: [
389
389
  {
@@ -392,7 +392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImpor
392
392
  multi: true
393
393
  },
394
394
  ComponentContextService
395
- ], template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <!-- <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChanged($event)\"></add-news> -->\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showTemplate\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\"\r\n [popupSize]=\"popupSize\" (onHide)=\"showTemplate = false\">\r\n <!-- <tn-template (onChanged)=\"addTemplate($event)\"></tn-template> -->\r\n</tn-dialog>\r\n\r\n<!-- <tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog> -->", styles: [""] }]
395
+ ], template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <!-- <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChanged($event)\"></add-news> -->\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showTemplate\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\"\r\n [popupSize]=\"popupSize\" (onHide)=\"showTemplate = false\">\r\n <!-- <tn-template (onChanged)=\"addTemplate($event)\"></tn-template> -->\r\n</tn-dialog>\r\n\r\n<!-- <tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog> -->" }]
396
396
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.DeviceDetectorService }, { type: i2.NotifierService }, { type: i3.FileExplorerService }]; }, propDecorators: { equationForm: [{
397
397
  type: ViewChild,
398
398
  args: [EquationEditorComponent]
@@ -34,10 +34,10 @@ export class UniversalLinkProcessorComponent extends ComponentBase {
34
34
  ngOnInit() {
35
35
  }
36
36
  }
37
- UniversalLinkProcessorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UniversalLinkProcessorComponent, deps: [{ token: i0.Injector }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
38
- UniversalLinkProcessorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: UniversalLinkProcessorComponent, selector: "universal-link-processor", providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"hasError\">\r\n {{errorMessage}}\r\n</div>", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UniversalLinkProcessorComponent, decorators: [{
37
+ UniversalLinkProcessorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UniversalLinkProcessorComponent, deps: [{ token: i0.Injector }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
38
+ UniversalLinkProcessorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: UniversalLinkProcessorComponent, selector: "universal-link-processor", providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"hasError\">\r\n {{errorMessage}}\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UniversalLinkProcessorComponent, decorators: [{
40
40
  type: Component,
41
- args: [{ selector: 'universal-link-processor', providers: [ComponentContextService], template: "<div *ngIf=\"hasError\">\r\n {{errorMessage}}\r\n</div>", styles: [""] }]
41
+ args: [{ selector: 'universal-link-processor', providers: [ComponentContextService], template: "<div *ngIf=\"hasError\">\r\n {{errorMessage}}\r\n</div>" }]
42
42
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.ActivatedRoute }]; } });
43
43
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsLWxpbmstcHJvY2Vzc29yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvdW5pdmVyc2FsLWxpbmstcHJvY2Vzc29yL3VuaXZlcnNhbC1saW5rLXByb2Nlc3Nvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3VuaXZlcnNhbC1saW5rLXByb2Nlc3Nvci91bml2ZXJzYWwtbGluay1wcm9jZXNzb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUWxFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxhQUFhO0lBSTlELFlBQ0ksUUFBa0IsRUFDVixjQUE4QjtRQUV0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFGUixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFMMUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQU9kLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN2QiwyRUFBMkU7b0JBQzNFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUMxRCxHQUFHLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQ2xDO2lCQUNKO3FCQUFNO29CQUNILEdBQUcsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDbEM7Z0JBQ0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2FBQzNCO2lCQUFNO2dCQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsd0JBQXdCLENBQUM7YUFDaEQ7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO0lBRVIsQ0FBQzs7NEhBL0JRLCtCQUErQjtnSEFBL0IsK0JBQStCLG1EQUY3QixDQUFDLHVCQUF1QixDQUFDLGlEQ1R4Qyw0REFFTTsyRkRTTywrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0ksMEJBQTBCLGFBR3pCLENBQUMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd1bml2ZXJzYWwtbGluay1wcm9jZXNzb3InLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VuaXZlcnNhbC1saW5rLXByb2Nlc3Nvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91bml2ZXJzYWwtbGluay1wcm9jZXNzb3IuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsTGlua1Byb2Nlc3NvckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgaGFzRXJyb3IgPSBmYWxzZTtcclxuICAgIGVycm9yTWVzc2FnZSA9ICcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5zb3VyY2VQYXRoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KGRhdGEuc291cmNlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTuG6v3UgdHJvbmcgdXJsIMSRw6MgY8OzIHPhurVuIHF1ZXJ5c3RyaW5nIGlkIHRow6wga2jDtG5nIGPhuqduIGPhu5luZyBpZCB2w6BvIHVybCBu4buvYVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignP2lkPScpID09PSAtMSAmJiB1cmwuaW5kZXhPZignJmlkPScpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgKz0gYCZpZD0ke2RhdGEuZW50aXR5S2V5fWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gYD9pZD0ke2RhdGEuZW50aXR5S2V5fWA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b3AubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0tow7RuZyB0w6xtIHRo4bqleSBzb3VyY2VwYXRoLCBraMO0bmcgdGjhu4MgY2h1eeG7g24gdHJhbmcnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnxJDGsOG7nW5nIGThuqtuIGtow7RuZyBo4bujcCBs4buHJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG5cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiaGFzRXJyb3JcIj5cclxuICAgIHt7ZXJyb3JNZXNzYWdlfX1cclxuPC9kaXY+Il19
@@ -7,12 +7,12 @@ import { appendDefaultFilter } from '../../../utils/common';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../../services/user-v5.service";
9
9
  import * as i2 from "../../../services/organization.service";
10
- import * as i3 from "angular-split";
11
- import * as i4 from "../../tn-custom-scrollbar/tn-custom-scrollbar.component";
12
- import * as i5 from "tn-custom-primeng/tree";
13
- import * as i6 from "../../entity-picker/entity-picker-box/entity-picker-box.component";
14
- import * as i7 from "tn-custom-primeng/api";
15
- import * as i8 from "tn-custom-primeng/button";
10
+ import * as i3 from "tn-custom-primeng/api";
11
+ import * as i4 from "angular-split";
12
+ import * as i5 from "tn-custom-primeng/button";
13
+ import * as i6 from "tn-custom-primeng/tree";
14
+ import * as i7 from "../../entity-picker/entity-picker-box/entity-picker-box.component";
15
+ import * as i8 from "../../tn-custom-scrollbar/tn-custom-scrollbar.component";
16
16
  import * as i9 from "@ngx-translate/core";
17
17
  export class UserPickerBoxComponent extends ComponentBase {
18
18
  constructor(_userV5Service, _injector, _organizationService) {
@@ -164,9 +164,9 @@ export class UserPickerBoxComponent extends ComponentBase {
164
164
  this.onDone.emit(evt);
165
165
  }
166
166
  }
167
- UserPickerBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UserPickerBoxComponent, deps: [{ token: i1.UserV5Service }, { token: i0.Injector }, { token: i2.OrganizationService }], target: i0.ɵɵFactoryTarget.Component });
168
- UserPickerBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: UserPickerBoxComponent, selector: "user-picker-box", inputs: { multiple: "multiple", disabled: "disabled", enableCaching: "enableCaching", controlSetting: "controlSetting", parentSetting: "parentSetting", advanceData: "advanceData", control: "control", width: "width", height: "height", selectedValue: "selectedValue", readOnlyValues: "readOnlyValues" }, outputs: { onRowSelect: "onRowSelect", onChanged: "onChanged", onSelect: "onSelect", onUnSelect: "onUnSelect", onDone: "onDone" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "entityPickerBox", first: true, predicate: ["entityPickerBox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"p-grid p-m-0 tn-l-user-picker-box\">\r\n <as-split [unit]=\"'pixel'\">\r\n <as-split-area [size]=\"330\">\r\n <tn-custom-scrollbar>\r\n <p-tree [style]=\"{'width': '100%'}\" styleClass=\"tn-tree-beauty tree-organization-picker\"\r\n [value]=\"rootTreeNode\" filterPlaceholder=\"T\u00ECm \u0111\u01A1n v\u1ECB / ph\u00F2ng ban\" selectionMode=\"single\"\r\n [filter]=\"true\" [(selection)]=\"selectedTreeNode\" (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeSelect)=\"nodeSelect($event)\" [emptyMessage]=\"'Kh\u00F4ng t\u00ECm th\u1EA5y k\u1EBFt qu\u1EA3'\">\r\n <ng-template let-node pTemplate=\"default\">\r\n <span id=\"{{node.data}}\" class=\"custom-node\">{{node.label}}</span>\r\n </ng-template>\r\n </p-tree>\r\n </tn-custom-scrollbar>\r\n </as-split-area>\r\n <as-split-area [size]=\"'*'\">\r\n <entity-picker-box #entityPickerBox [control]=\"control\" [parentSetting]=\"parentSetting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangedEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleDone($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n </as-split-area>\r\n </as-split>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn'\"\r\n (click)=\"handleSelect($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"handleCancelDialog($event)\"></button>\r\n</ng-template>", styles: [".action-btn{border:1px solid #0a89bf;color:#0a89bf;background-color:#fff;font-size:16px;width:40px;cursor:pointer;text-align:center;margin:4px 2px}.content-all{display:flex;flex-direction:column}.content-top{padding:5px 0;overflow:hidden;flex-grow:1}.content-bottom{border-top:1px solid #ddd;padding:5px 0;overflow:hidden;flex:0 0 50%}.tn-l-button-group{padding-bottom:1em}.tn-l-button-group-picker{text-align:center;position:absolute;background:#fff;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10}.tn-l-user-picker-box{height:100%}.tn-l-left-sidebar-wrapper{height:100%;border-right:1px solid #aaa}.tn-l-left-sidebar-area{height:100%}.tn-l-right-content-wrapper{padding-bottom:0;padding-top:0;height:100%}@media (max-width: 640px){.entityPicker{height:auto}.tn-l-search-button-group{padding-bottom:1em}.tn-l-button-group-picker{position:static;top:auto;left:auto;transform:none;padding-bottom:5px}.tn-l-left-sidebar-wrapper{height:calc(100vh - 300px);border-right:unset;border-bottom:1px solid #aaa}}::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:hidden;padding:0}::ng-deep .user-picker-box-dialog .p-tree{padding:0;border:none}::ng-deep .user-picker-box-dialog .p-tree-wrapper{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container{position:sticky;top:0;z-index:4;padding:.5em;margin-bottom:0;background-color:#fff}::ng-deep .user-picker-box-dialog .p-tree-empty-message{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container .p-tree-filter-icon{right:1em}::ng-deep .user-picker-box-dialog .ps__rail-y{z-index:10}@media (max-width: 640px){::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:auto}::ng-deep .user-picker-box-dialog .tn-dialog-scrollbar>div{min-height:100%!important}::ng-deep .user-picker-box-dialog .tn-l-right-content-wrapper{padding:0}}\n"], components: [{ type: i3.SplitComponent, selector: "as-split", inputs: ["direction", "unit", "gutterSize", "gutterStep", "restrictMove", "useTransition", "disabled", "dir", "gutterDblClickDuration"], outputs: ["dragStart", "dragEnd", "gutterClick", "gutterDblClick", "transitionEnd"], exportAs: ["asSplit"] }, { type: i4.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { type: i5.Tree, selector: "p-tree", inputs: ["layout", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loadingIcon", "emptyMessage", "filterBy", "filterMode", "indentation", "trackBy", "selection", "value", "selectionMode", "style", "styleClass", "contextMenu", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "loading", "ariaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterPlaceholder", "filterLocale", "scrollHeight", "virtualScroll", "virtualNodeHeight", "minBufferPx", "maxBufferPx"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onFilter"] }, { type: i6.EntityPickerBoxComponent, selector: "entity-picker-box", inputs: ["parentSetting", "advanceData", "control", "width", "height", "readOnlyValues", "selectedValue"], outputs: ["onContentLeftInit", "onContentRightInit", "onRowSelect", "onChanged", "onSelect", "onUnSelect", "onDone"] }], directives: [{ type: i3.SplitAreaDirective, selector: "as-split-area, [as-split-area]", inputs: ["order", "size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }], pipes: { "translate": i9.TranslatePipe } });
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UserPickerBoxComponent, decorators: [{
167
+ UserPickerBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UserPickerBoxComponent, deps: [{ token: i1.UserV5Service }, { token: i0.Injector }, { token: i2.OrganizationService }], target: i0.ɵɵFactoryTarget.Component });
168
+ UserPickerBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: UserPickerBoxComponent, selector: "user-picker-box", inputs: { multiple: "multiple", disabled: "disabled", enableCaching: "enableCaching", controlSetting: "controlSetting", parentSetting: "parentSetting", advanceData: "advanceData", control: "control", width: "width", height: "height", selectedValue: "selectedValue", readOnlyValues: "readOnlyValues" }, outputs: { onRowSelect: "onRowSelect", onChanged: "onChanged", onSelect: "onSelect", onUnSelect: "onUnSelect", onDone: "onDone" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "entityPickerBox", first: true, predicate: ["entityPickerBox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"p-grid p-m-0 tn-l-user-picker-box\">\r\n <as-split [unit]=\"'pixel'\">\r\n <as-split-area [size]=\"330\">\r\n <tn-custom-scrollbar>\r\n <p-tree [style]=\"{'width': '100%'}\" styleClass=\"tn-tree-beauty tree-organization-picker\"\r\n [value]=\"rootTreeNode\" filterPlaceholder=\"T\u00ECm \u0111\u01A1n v\u1ECB / ph\u00F2ng ban\" selectionMode=\"single\"\r\n [filter]=\"true\" [(selection)]=\"selectedTreeNode\" (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeSelect)=\"nodeSelect($event)\" [emptyMessage]=\"'Kh\u00F4ng t\u00ECm th\u1EA5y k\u1EBFt qu\u1EA3'\">\r\n <ng-template let-node pTemplate=\"default\">\r\n <span id=\"{{node.data}}\" class=\"custom-node\">{{node.label}}</span>\r\n </ng-template>\r\n </p-tree>\r\n </tn-custom-scrollbar>\r\n </as-split-area>\r\n <as-split-area [size]=\"'*'\">\r\n <entity-picker-box #entityPickerBox [control]=\"control\" [parentSetting]=\"parentSetting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangedEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleDone($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n </as-split-area>\r\n </as-split>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn'\"\r\n (click)=\"handleSelect($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"handleCancelDialog($event)\"></button>\r\n</ng-template>", styles: [".action-btn{border:1px solid #0a89bf;color:#0a89bf;background-color:#fff;font-size:16px;width:40px;cursor:pointer;text-align:center;margin:4px 2px}.content-all{display:flex;flex-direction:column}.content-top{padding:5px 0;overflow:hidden;flex-grow:1}.content-bottom{border-top:1px solid #ddd;padding:5px 0;overflow:hidden;flex:0 0 50%}.tn-l-button-group{padding-bottom:1em}.tn-l-button-group-picker{text-align:center;position:absolute;background:#fff;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10}.tn-l-user-picker-box{height:100%}.tn-l-left-sidebar-wrapper{height:100%;border-right:1px solid #aaa}.tn-l-left-sidebar-area{height:100%}.tn-l-right-content-wrapper{padding-bottom:0;padding-top:0;height:100%}@media (max-width: 640px){.entityPicker{height:auto}.tn-l-search-button-group{padding-bottom:1em}.tn-l-button-group-picker{position:static;top:auto;left:auto;transform:none;padding-bottom:5px}.tn-l-left-sidebar-wrapper{height:calc(100vh - 300px);border-right:unset;border-bottom:1px solid #aaa}}::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:hidden;padding:0}::ng-deep .user-picker-box-dialog .p-tree{padding:0;border:none}::ng-deep .user-picker-box-dialog .p-tree-wrapper{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container{position:sticky;top:0;z-index:4;padding:.5em;margin-bottom:0;background-color:#fff}::ng-deep .user-picker-box-dialog .p-tree-empty-message{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container .p-tree-filter-icon{right:1em}::ng-deep .user-picker-box-dialog .ps__rail-y{z-index:10}@media (max-width: 640px){::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:auto}::ng-deep .user-picker-box-dialog .tn-dialog-scrollbar>div{min-height:100%!important}::ng-deep .user-picker-box-dialog .tn-l-right-content-wrapper{padding:0}}\n"], dependencies: [{ kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.SplitComponent, selector: "as-split", inputs: ["direction", "unit", "gutterSize", "gutterStep", "restrictMove", "useTransition", "disabled", "dir", "gutterDblClickDuration"], outputs: ["dragStart", "dragEnd", "gutterClick", "gutterDblClick", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "directive", type: i4.SplitAreaDirective, selector: "as-split-area, [as-split-area]", inputs: ["order", "size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i6.Tree, selector: "p-tree", inputs: ["layout", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loadingIcon", "emptyMessage", "filterBy", "filterMode", "indentation", "trackBy", "selection", "value", "selectionMode", "style", "styleClass", "contextMenu", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "loading", "ariaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterPlaceholder", "filterLocale", "scrollHeight", "virtualScroll", "virtualNodeHeight", "minBufferPx", "maxBufferPx"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onFilter"] }, { kind: "component", type: i7.EntityPickerBoxComponent, selector: "entity-picker-box", inputs: ["parentSetting", "advanceData", "control", "width", "height", "readOnlyValues", "selectedValue"], outputs: ["onContentLeftInit", "onContentRightInit", "onRowSelect", "onChanged", "onSelect", "onUnSelect", "onDone"] }, { kind: "component", type: i8.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UserPickerBoxComponent, decorators: [{
170
170
  type: Component,
171
171
  args: [{ selector: 'user-picker-box', providers: [ComponentContextService], template: "<div class=\"p-grid p-m-0 tn-l-user-picker-box\">\r\n <as-split [unit]=\"'pixel'\">\r\n <as-split-area [size]=\"330\">\r\n <tn-custom-scrollbar>\r\n <p-tree [style]=\"{'width': '100%'}\" styleClass=\"tn-tree-beauty tree-organization-picker\"\r\n [value]=\"rootTreeNode\" filterPlaceholder=\"T\u00ECm \u0111\u01A1n v\u1ECB / ph\u00F2ng ban\" selectionMode=\"single\"\r\n [filter]=\"true\" [(selection)]=\"selectedTreeNode\" (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeSelect)=\"nodeSelect($event)\" [emptyMessage]=\"'Kh\u00F4ng t\u00ECm th\u1EA5y k\u1EBFt qu\u1EA3'\">\r\n <ng-template let-node pTemplate=\"default\">\r\n <span id=\"{{node.data}}\" class=\"custom-node\">{{node.label}}</span>\r\n </ng-template>\r\n </p-tree>\r\n </tn-custom-scrollbar>\r\n </as-split-area>\r\n <as-split-area [size]=\"'*'\">\r\n <entity-picker-box #entityPickerBox [control]=\"control\" [parentSetting]=\"parentSetting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangedEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleDone($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n </as-split-area>\r\n </as-split>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn'\"\r\n (click)=\"handleSelect($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"handleCancelDialog($event)\"></button>\r\n</ng-template>", styles: [".action-btn{border:1px solid #0a89bf;color:#0a89bf;background-color:#fff;font-size:16px;width:40px;cursor:pointer;text-align:center;margin:4px 2px}.content-all{display:flex;flex-direction:column}.content-top{padding:5px 0;overflow:hidden;flex-grow:1}.content-bottom{border-top:1px solid #ddd;padding:5px 0;overflow:hidden;flex:0 0 50%}.tn-l-button-group{padding-bottom:1em}.tn-l-button-group-picker{text-align:center;position:absolute;background:#fff;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10}.tn-l-user-picker-box{height:100%}.tn-l-left-sidebar-wrapper{height:100%;border-right:1px solid #aaa}.tn-l-left-sidebar-area{height:100%}.tn-l-right-content-wrapper{padding-bottom:0;padding-top:0;height:100%}@media (max-width: 640px){.entityPicker{height:auto}.tn-l-search-button-group{padding-bottom:1em}.tn-l-button-group-picker{position:static;top:auto;left:auto;transform:none;padding-bottom:5px}.tn-l-left-sidebar-wrapper{height:calc(100vh - 300px);border-right:unset;border-bottom:1px solid #aaa}}::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:hidden;padding:0}::ng-deep .user-picker-box-dialog .p-tree{padding:0;border:none}::ng-deep .user-picker-box-dialog .p-tree-wrapper{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container{position:sticky;top:0;z-index:4;padding:.5em;margin-bottom:0;background-color:#fff}::ng-deep .user-picker-box-dialog .p-tree-empty-message{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container .p-tree-filter-icon{right:1em}::ng-deep .user-picker-box-dialog .ps__rail-y{z-index:10}@media (max-width: 640px){::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:auto}::ng-deep .user-picker-box-dialog .tn-dialog-scrollbar>div{min-height:100%!important}::ng-deep .user-picker-box-dialog .tn-l-right-content-wrapper{padding:0}}\n"] }]
172
172
  }], ctorParameters: function () { return [{ type: i1.UserV5Service }, { type: i0.Injector }, { type: i2.OrganizationService }]; }, propDecorators: { multiple: [{
@@ -31,11 +31,11 @@ export class UserPickerDialogComponent extends DataListBase {
31
31
  super.ngOnInit();
32
32
  }
33
33
  }
34
- UserPickerDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UserPickerDialogComponent, deps: [{ token: i1.UserService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
35
- UserPickerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: UserPickerDialogComponent, selector: "app-user-picker-dialog", inputs: { multiple: "multiple", enableCaching: "enableCaching", control: "control" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p>\r\n user-picker-dialog works!\r\n</p>\r\n", styles: [""] });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UserPickerDialogComponent, decorators: [{
34
+ UserPickerDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UserPickerDialogComponent, deps: [{ token: i1.UserService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
35
+ UserPickerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: UserPickerDialogComponent, selector: "app-user-picker-dialog", inputs: { multiple: "multiple", enableCaching: "enableCaching", control: "control" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p>\r\n user-picker-dialog works!\r\n</p>\r\n", styles: [""] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UserPickerDialogComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ selector: 'app-user-picker-dialog', providers: [ComponentContextService], template: "<p>\r\n user-picker-dialog works!\r\n</p>\r\n", styles: [""] }]
38
+ args: [{ selector: 'app-user-picker-dialog', providers: [ComponentContextService], template: "<p>\r\n user-picker-dialog works!\r\n</p>\r\n" }]
39
39
  }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i0.Injector }]; }, propDecorators: { dialog: [{
40
40
  type: ViewChild,
41
41
  args: ['dialog']
@@ -14,14 +14,14 @@ import * as i0 from "@angular/core";
14
14
  import * as i1 from "../../services/user-v5.service";
15
15
  import * as i2 from "@ngx-translate/core";
16
16
  import * as i3 from "../../services/dm-chucvu.service";
17
- import * as i4 from "tn-custom-primeng/autocomplete";
18
- import * as i5 from "../tn-dialog/tn-dialog.component";
19
- import * as i6 from "./user-picker-box/user-picker-box.component";
20
- import * as i7 from "../dropdown/dropdown.component";
21
- import * as i8 from "tn-custom-primeng/tooltip";
22
- import * as i9 from "@angular/common";
23
- import * as i10 from "@angular/forms";
24
- import * as i11 from "tn-custom-primeng/button";
17
+ import * as i4 from "@angular/common";
18
+ import * as i5 from "tn-custom-primeng/button";
19
+ import * as i6 from "tn-custom-primeng/tooltip";
20
+ import * as i7 from "@angular/forms";
21
+ import * as i8 from "tn-custom-primeng/autocomplete";
22
+ import * as i9 from "../dropdown/dropdown.component";
23
+ import * as i10 from "../tn-dialog/tn-dialog.component";
24
+ import * as i11 from "./user-picker-box/user-picker-box.component";
25
25
  export class UserPickerComponent extends ComponentBase {
26
26
  constructor(_injector, _userV5Service, _translateService, _dm_ChucVuService) {
27
27
  super(_injector);
@@ -549,16 +549,16 @@ export class UserPickerComponent extends ComponentBase {
549
549
  this.onTouched = fn;
550
550
  }
551
551
  }
552
- UserPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UserPickerComponent, deps: [{ token: i0.Injector }, { token: i1.UserV5Service }, { token: i2.TranslateService }, { token: i3.DmChucVuService }], target: i0.ɵɵFactoryTarget.Component });
553
- UserPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: UserPickerComponent, selector: "user-picker", inputs: { control: "control", popupSize: "popupSize", multiple: "multiple", disabled: "disabled", readOnlyValues: "readOnlyValues" }, outputs: { onSelect: "onSelect", onUnSelect: "onUnSelect", onChanged: "onChanged", onFocus: "onFocus", onBlur: "onBlur", onReady: "onReady" }, providers: [
552
+ UserPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UserPickerComponent, deps: [{ token: i0.Injector }, { token: i1.UserV5Service }, { token: i2.TranslateService }, { token: i3.DmChucVuService }], target: i0.ɵɵFactoryTarget.Component });
553
+ UserPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: UserPickerComponent, selector: "user-picker", inputs: { control: "control", popupSize: "popupSize", multiple: "multiple", disabled: "disabled", readOnlyValues: "readOnlyValues" }, outputs: { onSelect: "onSelect", onUnSelect: "onUnSelect", onChanged: "onChanged", onFocus: "onFocus", onBlur: "onBlur", onReady: "onReady" }, providers: [
554
554
  {
555
555
  provide: NG_VALUE_ACCESSOR,
556
556
  useExisting: forwardRef(() => UserPickerComponent),
557
557
  multi: true
558
558
  },
559
559
  ComponentContextService
560
- ], viewQueries: [{ propertyName: "filterChucVuRef", first: true, predicate: ["filterChucVuRef"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"p-inputgroup user-picker\" [class.multiple]=\"multiple\" [class.hasValue]=\"hasValue\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\" [disabled]=\"disabled\"\r\n [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\" [suggestions]=\"results\" field=\"label\"\r\n [styleClass]=\"control.validators && control.required ? 'rq' : ''\" [multiple]=\"control.multiple\"\r\n [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\" (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\" (onKeyUp)=\"handleKeyUp($event)\"\r\n (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"user-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <user-picker-box #userPickerBox [controlSetting]=\"control\" [control]=\"controlPicker\" [parentSetting]=\"settingPicker\"\r\n [advanceData]=\"advanceDataPicker\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangeEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleHide($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </user-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, userPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh'\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<ng-template #filterChucVuRef let-col=\"col\" let-filterData=\"filterData\" let-onSearch=\"onSearch\"\r\n let-onShowFilterDropdownPanel=\"onShowFilterDropdownPanel\" let-onHideFilterDropdownPanel=\"onHideFilterDropdownPanel\">\r\n <dropdown [control]=\"searchSchema.idChucVus\" [(value)]=\"filterData[col.field]\" (onHideSmartEvent)=\"onSearch()\"\r\n (onShow)=\"onShowFilterDropdownPanel($event)\" (onHideSmartEvent)=\"onHideFilterDropdownPanel($event)\">\r\n </dropdown>\r\n</ng-template>", styles: [".user-picker{position:relative}.user-picker .icon-clear{position:absolute;right:36px;top:50%;transform:translateY(-50%);font-size:11px;color:#555;padding:3px;cursor:pointer}::ng-deep .user-picker.has-value:not(.multiple):not(.disabled) p-autocomplete .p-inputtext{padding-right:34px}::ng-deep .user-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:.143rem 0}::ng-deep .user-picker .p-autocomplete .p-autocomplete-multiple-container,::ng-deep .user-picker .p-autocomplete .p-autocomplete-input{border-radius:4px 0 0 4px}@media (max-width: 640px){::ng-deep user-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:0 0 3px}::ng-deep user-picker .p-autocomplete-input-token>input{height:21.5px!important}}\n"], components: [{ type: i4.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "type", "autoZIndex", "baseZIndex", "dropdownIcon", "unique", "completeOnFocus", "scrollHeight", "dropdownMode", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "suggestions", "disabled", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "ariaLabel", "ariaLabelledBy", "field", "dropdown", "multiple", "tabindex", "dataKey", "emptyMessage", "autofocus"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }, { type: i5.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { type: i6.UserPickerBoxComponent, selector: "user-picker-box", inputs: ["multiple", "disabled", "enableCaching", "controlSetting", "parentSetting", "advanceData", "control", "width", "height", "selectedValue", "readOnlyValues"], outputs: ["onRowSelect", "onChanged", "onSelect", "onUnSelect", "onDone"] }, { type: i7.DropdownComponent, selector: "dropdown", inputs: ["showClear", "disableDisplayFieldServerSearch", "filter", "control", "defaultLabel", "appendTo", "dataSource", "value", "itemSelectedStyleClass"], outputs: ["onChanged", "onCollapse", "onExpand", "onDropdownClick", "onShow", "onShowSmartEvent", "onHide", "onHideSmartEvent", "onFocus", "onBlur", "onReady", "onDataSourceLoaded", "valueChange", "adjustValue"] }], directives: [{ type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }], pipes: { "translate": i2.TranslatePipe } });
561
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: UserPickerComponent, decorators: [{
560
+ ], viewQueries: [{ propertyName: "filterChucVuRef", first: true, predicate: ["filterChucVuRef"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"p-inputgroup user-picker\" [class.multiple]=\"multiple\" [class.hasValue]=\"hasValue\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\" [disabled]=\"disabled\"\r\n [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\" [suggestions]=\"results\" field=\"label\"\r\n [styleClass]=\"control.validators && control.required ? 'rq' : ''\" [multiple]=\"control.multiple\"\r\n [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\" (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\" (onKeyUp)=\"handleKeyUp($event)\"\r\n (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"user-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <user-picker-box #userPickerBox [controlSetting]=\"control\" [control]=\"controlPicker\" [parentSetting]=\"settingPicker\"\r\n [advanceData]=\"advanceDataPicker\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangeEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleHide($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </user-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, userPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh'\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<ng-template #filterChucVuRef let-col=\"col\" let-filterData=\"filterData\" let-onSearch=\"onSearch\"\r\n let-onShowFilterDropdownPanel=\"onShowFilterDropdownPanel\" let-onHideFilterDropdownPanel=\"onHideFilterDropdownPanel\">\r\n <dropdown [control]=\"searchSchema.idChucVus\" [(value)]=\"filterData[col.field]\" (onHideSmartEvent)=\"onSearch()\"\r\n (onShow)=\"onShowFilterDropdownPanel($event)\" (onHideSmartEvent)=\"onHideFilterDropdownPanel($event)\">\r\n </dropdown>\r\n</ng-template>", styles: [".user-picker{position:relative}.user-picker .icon-clear{position:absolute;right:36px;top:50%;transform:translateY(-50%);font-size:11px;color:#555;padding:3px;cursor:pointer}::ng-deep .user-picker.has-value:not(.multiple):not(.disabled) p-autocomplete .p-inputtext{padding-right:34px}::ng-deep .user-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:.143rem 0}::ng-deep .user-picker .p-autocomplete .p-autocomplete-multiple-container,::ng-deep .user-picker .p-autocomplete .p-autocomplete-input{border-radius:4px 0 0 4px}@media (max-width: 640px){::ng-deep user-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:0 0 3px}::ng-deep user-picker .p-autocomplete-input-token>input{height:21.5px!important}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "type", "autoZIndex", "baseZIndex", "dropdownIcon", "unique", "completeOnFocus", "scrollHeight", "dropdownMode", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "suggestions", "disabled", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "ariaLabel", "ariaLabelledBy", "field", "dropdown", "multiple", "tabindex", "dataKey", "emptyMessage", "autofocus"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }, { kind: "component", type: i9.DropdownComponent, selector: "dropdown", inputs: ["showClear", "disableDisplayFieldServerSearch", "filter", "control", "defaultLabel", "appendTo", "dataSource", "value", "itemSelectedStyleClass"], outputs: ["onChanged", "onCollapse", "onExpand", "onDropdownClick", "onShow", "onShowSmartEvent", "onHide", "onHideSmartEvent", "onFocus", "onBlur", "onReady", "onDataSourceLoaded", "valueChange", "adjustValue"] }, { kind: "component", type: i10.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "component", type: i11.UserPickerBoxComponent, selector: "user-picker-box", inputs: ["multiple", "disabled", "enableCaching", "controlSetting", "parentSetting", "advanceData", "control", "width", "height", "selectedValue", "readOnlyValues"], outputs: ["onRowSelect", "onChanged", "onSelect", "onUnSelect", "onDone"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: UserPickerComponent, decorators: [{
562
562
  type: Component,
563
563
  args: [{ selector: 'user-picker', providers: [
564
564
  {
@@ -11,9 +11,9 @@ export class VanBanDenService extends BaseService {
11
11
  this.serviceUri = `${this.endPoint}/vanbanden`;
12
12
  }
13
13
  }
14
- VanBanDenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanBanDenService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
15
- VanBanDenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanBanDenService, providedIn: 'root' });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanBanDenService, decorators: [{
14
+ VanBanDenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanBanDenService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ VanBanDenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanBanDenService, providedIn: 'root' });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanBanDenService, decorators: [{
17
17
  type: Injectable,
18
18
  args: [{
19
19
  providedIn: 'root'
@@ -11,9 +11,9 @@ export class VanBanDiService extends BaseService {
11
11
  this.serviceUri = `${this.endPoint}/VanBanDi`;
12
12
  }
13
13
  }
14
- VanBanDiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanBanDiService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
15
- VanBanDiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanBanDiService, providedIn: 'root' });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanBanDiService, decorators: [{
14
+ VanBanDiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanBanDiService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ VanBanDiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanBanDiService, providedIn: 'root' });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanBanDiService, decorators: [{
17
17
  type: Injectable,
18
18
  args: [{
19
19
  providedIn: 'root'
@@ -8,11 +8,11 @@ import { ColumnSchemaBase } from '../../../classes/form-schema-with-service';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "../services/vanban-den.service";
10
10
  import * as i2 from "../../../services/environment.service";
11
- import * as i3 from "../../crud/crud-list/crud-list.component";
12
- import * as i4 from "../../tn-dialog/tn-dialog.component";
13
- import * as i5 from "@angular/common";
14
- import * as i6 from "tn-custom-primeng/button";
15
- import * as i7 from "tn-custom-primeng/tooltip";
11
+ import * as i3 from "@angular/common";
12
+ import * as i4 from "tn-custom-primeng/button";
13
+ import * as i5 from "tn-custom-primeng/tooltip";
14
+ import * as i6 from "../../crud/crud-list/crud-list.component";
15
+ import * as i7 from "../../tn-dialog/tn-dialog.component";
16
16
  import * as i8 from "@ngx-translate/core";
17
17
  export class VanbanDenPickerComponent extends DataListBase {
18
18
  constructor(_injector, _vanBanDenService, _environmentService) {
@@ -181,11 +181,11 @@ export class VanbanDenPickerComponent extends DataListBase {
181
181
  this.onPicked.emit(data);
182
182
  }
183
183
  }
184
- VanbanDenPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanbanDenPickerComponent, deps: [{ token: i0.Injector }, { token: i1.VanBanDenService }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
185
- VanbanDenPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: VanbanDenPickerComponent, selector: "app-vanban-den-picker", inputs: { ids: "ids", hiddenPicker: "hiddenPicker" }, outputs: { onPicked: "onPicked", onRemoved: "onRemoved" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\"\r\n (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n <ng-template #toolbar>\r\n <button *ngIf=\"hiddenPicker\" type=\"button\" pButton icon=\"pi pi-check\"\r\n class=\"p-button-text p-button-rounded p-button-primary\" label=\"Ch\u1ECDn v\u0103n b\u1EA3n\"\r\n (click)=\"pickVanBanSelected()\"></button>\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-clone\" class=\"p-button-text p-button-rounded p-button-success\"\r\n label=\"Ch\u1ECDn v\u0103n b\u1EA3n\" (click)=\"showFormPickVanBan()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n label=\"X\u00F3a v\u0103n b\u1EA3n\" (click)=\"xoaVanBanSelected()\"></button>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-eye\"\r\n class=\"p-button-text p-button-rounded p-button-success link-or-action\" pTooltip=\"Xem chi ti\u1EBFt v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"navigateToVanBan(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"xoaVanBan(rowData)\"></button>\r\n </ng-container>\r\n <ng-container *ngIf=\"hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"pickVanBan(rowData)\"></button>\r\n </ng-container>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showFormPicker\" #dialog [styleClass]=\"'vb-den-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showFormPicker = false\">\r\n <app-vanban-den-picker [parentModel]=\"model\" [parentContext]=\"context\" [hiddenPicker]=\"true\" [ids]=\"_ids\"\r\n (onSaved)=\"showFormPicker = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"\r\n (onPicked)=\"handlePicked($event)\">\r\n </app-vanban-den-picker>\r\n</tn-dialog>", styles: [""], components: [{ type: i3.CrudListComponent, selector: "crud-list", inputs: ["model", "setting", "fileName", "lazy", "widthCheckbox", "widthOrderColumn", "widthFunctionColumn", "classRowGroup", "showScrollBar", "pTableScrollable", "pTableScrollHeight", "responsive", "configScrollBar", "showScrollHorizontal", "showRadio", "hiddenAdd", "hiddenDelete", "hiddenEdit", "hiddenCopyLink", "hiddenView", "disableKeypressControl", "cancelBubble", "escape", "selectionMode", "config", "enableReorderRow", "templates", "templatesFromParent", "childrenFromParent", "menuButtons", "fieldOrder", "style", "tableClass", "dataSource", "filter_default"], outputs: ["onRowSelect", "onReordered", "onCheckAll", "onReload", "onReloaded", "onReady", "onContentInit", "onAdd", "onEdit", "onCopyLink", "onCopyLinkMultiple", "onView", "onDelete", "onDeleteMultiple", "onInvalidWorkflow", "onAfterTrinhKy", "onStartedWorkflow", "onProcessedWorkflow", "onRollbackedWorkflow", "onChangedStatusWorkflow"] }, { type: i4.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { type: VanbanDenPickerComponent, selector: "app-vanban-den-picker", inputs: ["ids", "hiddenPicker"], outputs: ["onPicked", "onRemoved"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }], pipes: { "translate": i8.TranslatePipe } });
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: VanbanDenPickerComponent, decorators: [{
184
+ VanbanDenPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanbanDenPickerComponent, deps: [{ token: i0.Injector }, { token: i1.VanBanDenService }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
185
+ VanbanDenPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: VanbanDenPickerComponent, selector: "app-vanban-den-picker", inputs: { ids: "ids", hiddenPicker: "hiddenPicker" }, outputs: { onPicked: "onPicked", onRemoved: "onRemoved" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\"\r\n (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n <ng-template #toolbar>\r\n <button *ngIf=\"hiddenPicker\" type=\"button\" pButton icon=\"pi pi-check\"\r\n class=\"p-button-text p-button-rounded p-button-primary\" label=\"Ch\u1ECDn v\u0103n b\u1EA3n\"\r\n (click)=\"pickVanBanSelected()\"></button>\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-clone\" class=\"p-button-text p-button-rounded p-button-success\"\r\n label=\"Ch\u1ECDn v\u0103n b\u1EA3n\" (click)=\"showFormPickVanBan()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n label=\"X\u00F3a v\u0103n b\u1EA3n\" (click)=\"xoaVanBanSelected()\"></button>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-eye\"\r\n class=\"p-button-text p-button-rounded p-button-success link-or-action\" pTooltip=\"Xem chi ti\u1EBFt v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"navigateToVanBan(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"xoaVanBan(rowData)\"></button>\r\n </ng-container>\r\n <ng-container *ngIf=\"hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"pickVanBan(rowData)\"></button>\r\n </ng-container>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showFormPicker\" #dialog [styleClass]=\"'vb-den-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showFormPicker = false\">\r\n <app-vanban-den-picker [parentModel]=\"model\" [parentContext]=\"context\" [hiddenPicker]=\"true\" [ids]=\"_ids\"\r\n (onSaved)=\"showFormPicker = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"\r\n (onPicked)=\"handlePicked($event)\">\r\n </app-vanban-den-picker>\r\n</tn-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { kind: "component", type: i6.CrudListComponent, selector: "crud-list", inputs: ["model", "setting", "fileName", "lazy", "widthCheckbox", "widthOrderColumn", "widthFunctionColumn", "classRowGroup", "showScrollBar", "pTableScrollable", "pTableScrollHeight", "responsive", "configScrollBar", "showScrollHorizontal", "showRadio", "hiddenAdd", "hiddenDelete", "hiddenEdit", "hiddenCopyLink", "hiddenView", "disableKeypressControl", "cancelBubble", "escape", "selectionMode", "config", "enableReorderRow", "templates", "templatesFromParent", "childrenFromParent", "menuButtons", "fieldOrder", "style", "tableClass", "dataSource", "filter_default"], outputs: ["onRowSelect", "onReordered", "onCheckAll", "onReload", "onReloaded", "onReady", "onContentInit", "onAdd", "onEdit", "onCopyLink", "onCopyLinkMultiple", "onView", "onDelete", "onDeleteMultiple", "onInvalidWorkflow", "onAfterTrinhKy", "onStartedWorkflow", "onProcessedWorkflow", "onRollbackedWorkflow", "onChangedStatusWorkflow"] }, { kind: "component", type: VanbanDenPickerComponent, selector: "app-vanban-den-picker", inputs: ["ids", "hiddenPicker"], outputs: ["onPicked", "onRemoved"] }, { kind: "component", type: i7.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: VanbanDenPickerComponent, decorators: [{
187
187
  type: Component,
188
- args: [{ selector: 'app-vanban-den-picker', providers: [ComponentContextService], template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\"\r\n (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n <ng-template #toolbar>\r\n <button *ngIf=\"hiddenPicker\" type=\"button\" pButton icon=\"pi pi-check\"\r\n class=\"p-button-text p-button-rounded p-button-primary\" label=\"Ch\u1ECDn v\u0103n b\u1EA3n\"\r\n (click)=\"pickVanBanSelected()\"></button>\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-clone\" class=\"p-button-text p-button-rounded p-button-success\"\r\n label=\"Ch\u1ECDn v\u0103n b\u1EA3n\" (click)=\"showFormPickVanBan()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n label=\"X\u00F3a v\u0103n b\u1EA3n\" (click)=\"xoaVanBanSelected()\"></button>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-eye\"\r\n class=\"p-button-text p-button-rounded p-button-success link-or-action\" pTooltip=\"Xem chi ti\u1EBFt v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"navigateToVanBan(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"xoaVanBan(rowData)\"></button>\r\n </ng-container>\r\n <ng-container *ngIf=\"hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"pickVanBan(rowData)\"></button>\r\n </ng-container>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showFormPicker\" #dialog [styleClass]=\"'vb-den-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showFormPicker = false\">\r\n <app-vanban-den-picker [parentModel]=\"model\" [parentContext]=\"context\" [hiddenPicker]=\"true\" [ids]=\"_ids\"\r\n (onSaved)=\"showFormPicker = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"\r\n (onPicked)=\"handlePicked($event)\">\r\n </app-vanban-den-picker>\r\n</tn-dialog>", styles: [""] }]
188
+ args: [{ selector: 'app-vanban-den-picker', providers: [ComponentContextService], template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\"\r\n (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n <ng-template #toolbar>\r\n <button *ngIf=\"hiddenPicker\" type=\"button\" pButton icon=\"pi pi-check\"\r\n class=\"p-button-text p-button-rounded p-button-primary\" label=\"Ch\u1ECDn v\u0103n b\u1EA3n\"\r\n (click)=\"pickVanBanSelected()\"></button>\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-clone\" class=\"p-button-text p-button-rounded p-button-success\"\r\n label=\"Ch\u1ECDn v\u0103n b\u1EA3n\" (click)=\"showFormPickVanBan()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n label=\"X\u00F3a v\u0103n b\u1EA3n\" (click)=\"xoaVanBanSelected()\"></button>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <ng-container *ngIf=\"!hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-eye\"\r\n class=\"p-button-text p-button-rounded p-button-success link-or-action\" pTooltip=\"Xem chi ti\u1EBFt v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"navigateToVanBan(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"xoaVanBan(rowData)\"></button>\r\n </ng-container>\r\n <ng-container *ngIf=\"hiddenPicker\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-rounded p-button-danger link-or-action\" pTooltip=\"X\u00F3a v\u0103n b\u1EA3n\"\r\n tooltipPosition=\"top\" (click)=\"pickVanBan(rowData)\"></button>\r\n </ng-container>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showFormPicker\" #dialog [styleClass]=\"'vb-den-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showFormPicker = false\">\r\n <app-vanban-den-picker [parentModel]=\"model\" [parentContext]=\"context\" [hiddenPicker]=\"true\" [ids]=\"_ids\"\r\n (onSaved)=\"showFormPicker = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"\r\n (onPicked)=\"handlePicked($event)\">\r\n </app-vanban-den-picker>\r\n</tn-dialog>" }]
189
189
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.VanBanDenService }, { type: i2.EnvironmentService }]; }, propDecorators: { ids: [{
190
190
  type: Input
191
191
  }], hiddenPicker: [{
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImpor
195
195
  }], onRemoved: [{
196
196
  type: Output
197
197
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFuYmFuLWRlbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy92YW5iYW4tcGlja2VyL3ZhbmJhbi1kZW4tcGlja2VyL3ZhbmJhbi1kZW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvdmFuYmFuLXBpY2tlci92YW5iYW4tZGVuLXBpY2tlci92YW5iYW4tZGVuLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7QUFXN0UsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFlBQVk7SUFtQ3RELFlBQ2MsU0FBbUIsRUFDbkIsaUJBQW1DLEVBQzdDLG1CQUF1QztRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUE3QnhDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTdCLGFBQVEsR0FB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QzdCLENBQUM7O3FIQXRNUSx3QkFBd0I7eUdBQXhCLHdCQUF3QixpS0FGdEIsQ0FBQyx1QkFBdUIsQ0FBQyxpRENmeEMsMHdGQW9DWSwyekNEbkJDLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNJLHVCQUF1QixhQUd0QixDQUFDLHVCQUF1QixDQUFDOytKQUt2QixHQUFHO3NCQUFmLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtbGlzdC1iYXNlJztcclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZW51bXMnO1xyXG5pbXBvcnQgeyBNb2RlbFNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYS13aXRoLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFuQmFuRGVuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbmJhbi1kZW4uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXZhbmJhbi1kZW4tcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi92YW5iYW4tZGVuLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi92YW5iYW4tZGVuLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYW5iYW5EZW5QaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgX2lkczogbnVtYmVyW107XHJcbiAgICBASW5wdXQoKSBzZXQgaWRzKHZhbHVlOiBudW1iZXJbXSkge1xyXG4gICAgICAgIHRoaXMuX2lkcyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudmFsdWUubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgaGlkZGVuUGlja2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uUGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICAgIGVudmlyb25tZW50OiBhbnkgPSB7fTtcclxuICAgIC8qKlxyXG4gICAgICogVOG6oW8gc3Vic2NyaXB0aW9uXHJcbiAgICAgKi9cclxuICAgIHZhbHVlID0gbmV3IFN1YmplY3Q8bnVtYmVyW10+KCk7XHJcbiAgICB2YWx1ZSQgPSB0aGlzLnZhbHVlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcmVhZHkgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gICAgcmVhZHkkID0gdGhpcy5yZWFkeS5hc09ic2VydmFibGUoKTtcclxuICAgIHNvdXJjZSA9IGNvbWJpbmVMYXRlc3QoXHJcbiAgICAgICAgdGhpcy52YWx1ZSQsXHJcbiAgICAgICAgdGhpcy5yZWFkeSRcclxuICAgICk7XHJcbiAgICBzdWIgPSB0aGlzLnNvdXJjZS5zdWJzY3JpYmUodmFsdWVzID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrQW5kR2V0RGF0YSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2VhcmNoU2NoZW1hOiBhbnkgPSB7fTtcclxuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xyXG5cclxuICAgIHNob3dGb3JtUGlja2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF92YW5CYW5EZW5TZXJ2aWNlOiBWYW5CYW5EZW5TZXJ2aWNlLFxyXG4gICAgICAgIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmxvYWREZXRhaWxGcm9tUXVlcnlQYXJhbSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3ZhbkJhbkRlblNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZGVuUGlja2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5QYWdlVGl0bGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcubW9kZWxTY2hlbWFzID0gW1xyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdzb0RlbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ludCcsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnU+G7kSDEkeG6v24nLFxyXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdT4buRIMSR4bq/bicsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Phu5EgxJHhur9uJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29LeUhpZXUnLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ1Phu5EsIGvDvSBoaeG7h3UnLFxyXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdT4buRLCBrw70gaGnhu4d1JyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU+G7kSwga8O9IGhp4buHdSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndHJpY2hZZXUnLCBuYW1lOiAnVHLDrWNoIHnhur91JywgZnVsbE5hbWU6ICcnLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlCYW5IYW5oJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnTmfDoHkgYmFuIGjDoG5oJyxcclxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5RGVuJywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IMSR4bq/bicsIGZ1bGxOYW1lOiAnJywgZGVzY3JpcHRpb246ICcnIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29EZW4nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29LeUhpZXUnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndHJpY2hZZXUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlCYW5IYW5oJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTI1cHgnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlEZW4nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGRTZWFyY2hUZXh0ID0gWydjb2RlJywgJ25hbWUnXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcub2JqZWN0TmFtZSA9ICcgdsSDbiBi4bqjbiDEkeG6v24nO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMucmVhZHkubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb21pc2VHZXREYXRhKGdyaWRJbmZvOiBHcmlkSW5mbykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UuZ2V0QnlHcmlkUmVxdWVzdFdpdGhCb2R5T2xkKGdyaWRJbmZvLCAnUGVybWlzc2lvbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeUdyaWRJbmZvKGdyaWRJbmZvPzogR3JpZEluZm8pIHtcclxuICAgICAgICBncmlkSW5mby5zb3J0cyA9IFtcclxuICAgICAgICAgICAgeyBmaWVsZDogJ2lkJywgZGlyOiAtMSB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2lkcyAmJiB0aGlzLl9pZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgb3BlcmF0b3IgPSBPcGVyYXRvci5pbjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvciA9IE9wZXJhdG9yLm5vdEluO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdChcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpbnN0YW5jZUlkJywgb3BlcmF0b3IsIHRoaXMuX2lkcylcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tBbmRHZXREYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pZHMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dGb3JtUGlja1ZhbkJhbigpIHtcclxuICAgICAgICB0aGlzLmJlZm9yZUFkZCgpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUubWF4aW1pemUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cEhlYWRlciA9IGBUaMOqbSBt4bubaSAke3RoaXMuc2V0dGluZy5vYmplY3ROYW1lfWA7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcGlja1ZhbkJhblNlbGVjdGVkKCkge1xyXG4gICAgICAgIHRoaXMuX3BpY2tWYW5CYW4odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwaWNrVmFuQmFuKHJvd0RhdGEpIHtcclxuICAgICAgICB0aGlzLl9waWNrVmFuQmFuKFtyb3dEYXRhXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcGlja1ZhbkJhbihpdGVtcykge1xyXG4gICAgICAgIHRoaXMub25QaWNrZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGlkczogaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5pbnN0YW5jZUlkKSxcclxuICAgICAgICAgICAgaXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB4b2FWYW5CYW5TZWxlY3RlZCgpIHtcclxuICAgICAgICB0aGlzLl94b2FWYW5CYW4odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICB4b2FWYW5CYW4ocm93RGF0YSkge1xyXG4gICAgICAgIHRoaXMuX3hvYVZhbkJhbihbcm93RGF0YV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3hvYVZhbkJhbihpdGVtcykge1xyXG4gICAgICAgIHRoaXMub25SZW1vdmVkLmVtaXQoe1xyXG4gICAgICAgICAgICBpZHM6IGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uaW5zdGFuY2VJZCksXHJcbiAgICAgICAgICAgIGl0ZW1zXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmF2aWdhdGVUb1ZhbkJhbihyb3dEYXRhKSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5lbnZpcm9ubWVudC5jbGllbnREb21haW4udmFuYmFuRG9tYWlufS92YW5iYW5kZW4jX2E9MSZfaT0ke3Jvd0RhdGEuaWR9YCwgJ19ibGFuaycpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVBpY2tlZChkYXRhKSB7XHJcbiAgICAgICAgLy8gY29uc3QgaWRzID0gW1xyXG4gICAgICAgIC8vICAgICAuLi50aGlzLl9pZHMsXHJcbiAgICAgICAgLy8gICAgIC4uLmRhdGEuaWRzLmZpbHRlcihxID0+IHRoaXMuX2lkcy5pbmRleE9mKHEpID09IC0xKVxyXG4gICAgICAgIC8vIF1cclxuICAgICAgICAvLyB0aGlzLmlkcyA9IGlkcztcclxuICAgICAgICB0aGlzLm9uUGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsIjxjcnVkLWxpc3QgI2NydWRMaXN0IFttb2RlbF09XCJtb2RlbFwiIFtzZXR0aW5nXT1cInNldHRpbmdcIiBbZGF0YVNvdXJjZV09XCJtb2RlbC5kYXRhU291cmNlXCJcclxuICAgIChvblJlbG9hZCk9XCJfdHJpZ2dlclByb2Nlc3NEYXRhKCRldmVudClcIiAob25BZGQpPVwiX2FkZCgkZXZlbnQpXCIgKG9uRWRpdCk9XCJfZWRpdCgkZXZlbnQpXCIgKG9uVmlldyk9XCJfdmlldygkZXZlbnQpXCJcclxuICAgIChvbkRlbGV0ZSk9XCJfZGVsZXRlKCRldmVudClcIiAob25EZWxldGVNdWx0aXBsZSk9XCJfZGVsZXRlTXVsdGlwbGUoJGV2ZW50KVwiIChvblJlbG9hZGVkKT1cIl91bm1hcmtMb2FkaW5nKClcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaGlkZGVuUGlja2VyXCIgdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gaWNvbj1cInBpIHBpLWNoZWNrXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tcHJpbWFyeVwiIGxhYmVsPVwiQ2jhu41uIHbEg24gYuG6o25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicGlja1ZhbkJhblNlbGVjdGVkKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGRlblBpY2tlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1jbG9uZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDaOG7jW4gdsSDbiBi4bqjblwiIChjbGljayk9XCJzaG93Rm9ybVBpY2tWYW5CYW4oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIljDs2EgdsSDbiBi4bqjblwiIChjbGljayk9XCJ4b2FWYW5CYW5TZWxlY3RlZCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmdW5jdGlvbiBsZXQtcm93RGF0YT1cInJvd0RhdGFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGRlblBpY2tlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1leWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tc3VjY2VzcyBsaW5rLW9yLWFjdGlvblwiIHBUb29sdGlwPVwiWGVtIGNoaSB0aeG6v3QgdsSDbiBi4bqjblwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwibmF2aWdhdGVUb1ZhbkJhbihyb3dEYXRhKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1kYW5nZXIgbGluay1vci1hY3Rpb25cIiBwVG9vbHRpcD1cIljDs2EgdsSDbiBi4bqjblwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwieG9hVmFuQmFuKHJvd0RhdGEpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpZGRlblBpY2tlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1kYW5nZXIgbGluay1vci1hY3Rpb25cIiBwVG9vbHRpcD1cIljDs2EgdsSDbiBi4bqjblwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwicGlja1ZhbkJhbihyb3dEYXRhKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9jcnVkLWxpc3Q+XHJcbjx0bi1kaWFsb2cgKm5nSWY9XCJzaG93Rm9ybVBpY2tlclwiICNkaWFsb2cgW3N0eWxlQ2xhc3NdPVwiJ3ZiLWRlbi1mb3JtIHRuLWZvcm0tZGlhbG9nJ1wiXHJcbiAgICBbaGVhZGVyXT1cInNldHRpbmcucG9wdXBIZWFkZXIgfCB0cmFuc2xhdGVcIiBbcG9wdXBTaXplXT1cInNldHRpbmcucG9wdXBTaXplXCIgKG9uSGlkZSk9XCJzaG93Rm9ybVBpY2tlciA9IGZhbHNlXCI+XHJcbiAgICA8YXBwLXZhbmJhbi1kZW4tcGlja2VyIFtwYXJlbnRNb2RlbF09XCJtb2RlbFwiIFtwYXJlbnRDb250ZXh0XT1cImNvbnRleHRcIiBbaGlkZGVuUGlja2VyXT1cInRydWVcIiBbaWRzXT1cIl9pZHNcIlxyXG4gICAgICAgIChvblNhdmVkKT1cInNob3dGb3JtUGlja2VyID0gZmFsc2U7Y3J1ZExpc3QucmVsb2FkKClcIiAob25DYW5jZWwpPVwiX2hhbmRsZUNhbmNlbCgkZXZlbnQpXCJcclxuICAgICAgICAob25QaWNrZWQpPVwiaGFuZGxlUGlja2VkKCRldmVudClcIj5cclxuICAgIDwvYXBwLXZhbmJhbi1kZW4tcGlja2VyPlxyXG48L3RuLWRpYWxvZz4iXX0=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFuYmFuLWRlbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy92YW5iYW4tcGlja2VyL3ZhbmJhbi1kZW4tcGlja2VyL3ZhbmJhbi1kZW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvdmFuYmFuLXBpY2tlci92YW5iYW4tZGVuLXBpY2tlci92YW5iYW4tZGVuLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7QUFXN0UsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFlBQVk7SUFtQ3RELFlBQ2MsU0FBbUIsRUFDbkIsaUJBQW1DLEVBQzdDLG1CQUF1QztRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUE3QnhDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRzlDLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCOztXQUVHO1FBQ0gsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFZLENBQUM7UUFDaEMsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDL0IsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsV0FBTSxHQUFHLGFBQWEsQ0FDbEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxDQUNkLENBQUM7UUFDRixRQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUVyQixtQkFBYyxHQUFZLEtBQUssQ0FBQztJQVFoQyxDQUFDO0lBdENELElBQWEsR0FBRyxDQUFDLEtBQWU7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQXFDRCxRQUFRO1FBQ0osSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUc7WUFDeEIsSUFBSSxXQUFXLENBQUM7Z0JBQ1osS0FBSyxFQUFFLE9BQU87Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxRQUFRO2FBQ3hCLENBQUM7WUFDRixJQUFJLFdBQVcsQ0FBQztnQkFDWixLQUFLLEVBQUUsVUFBVTtnQkFDakIsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixXQUFXLEVBQUUsYUFBYTthQUM3QixDQUFDO1lBQ0YsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEYsSUFBSSxXQUFXLENBQUM7Z0JBQ1osS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixJQUFJLEVBQUUsZUFBZTtnQkFDckIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osV0FBVyxFQUFFLEVBQUU7YUFDbEIsQ0FBQztZQUNGLElBQUksV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDM0csQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHO1lBQ2hCLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxPQUFPO2dCQUNkLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUM7WUFDRixJQUFJLGdCQUFnQixDQUFDO2dCQUNqQixLQUFLLEVBQUUsVUFBVTtnQkFDakIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUNGLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxVQUFVO2FBQ3BCLENBQUM7WUFDRixJQUFJLGdCQUFnQixDQUFDO2dCQUNqQixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUNGLElBQUksZ0JBQWdCLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1NBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQztRQUN6QyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQW1CO1FBQ3BDLFFBQVEsQ0FBQyxLQUFLLEdBQUc7WUFDYixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFO1NBQzNCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuQixRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUM3QjtZQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNwRCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDakI7aUJBQ0k7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUNqQjthQUNKO1NBQ0o7YUFDSTtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQU87UUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQUs7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDZixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDdkMsS0FBSztTQUNSLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFLO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN2QyxLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQU87UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFlBQVksc0JBQXNCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDYixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLDBEQUEwRDtRQUMxRCxJQUFJO1FBQ0osa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O3FIQXRNUSx3QkFBd0I7eUdBQXhCLHdCQUF3QixpS0FGdEIsQ0FBQyx1QkFBdUIsQ0FBQyxpRENmeEMsMHdGQW9DWSxrK0NEbkJDLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNJLHVCQUF1QixhQUd0QixDQUFDLHVCQUF1QixDQUFDOytKQUt2QixHQUFHO3NCQUFmLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUxpc3RCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtbGlzdC1iYXNlJztcclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZW51bXMnO1xyXG5pbXBvcnQgeyBNb2RlbFNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYS13aXRoLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFuQmFuRGVuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbmJhbi1kZW4uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXZhbmJhbi1kZW4tcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi92YW5iYW4tZGVuLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi92YW5iYW4tZGVuLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYW5iYW5EZW5QaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgX2lkczogbnVtYmVyW107XHJcbiAgICBASW5wdXQoKSBzZXQgaWRzKHZhbHVlOiBudW1iZXJbXSkge1xyXG4gICAgICAgIHRoaXMuX2lkcyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudmFsdWUubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgaGlkZGVuUGlja2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uUGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25SZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICAgIGVudmlyb25tZW50OiBhbnkgPSB7fTtcclxuICAgIC8qKlxyXG4gICAgICogVOG6oW8gc3Vic2NyaXB0aW9uXHJcbiAgICAgKi9cclxuICAgIHZhbHVlID0gbmV3IFN1YmplY3Q8bnVtYmVyW10+KCk7XHJcbiAgICB2YWx1ZSQgPSB0aGlzLnZhbHVlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcmVhZHkgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gICAgcmVhZHkkID0gdGhpcy5yZWFkeS5hc09ic2VydmFibGUoKTtcclxuICAgIHNvdXJjZSA9IGNvbWJpbmVMYXRlc3QoXHJcbiAgICAgICAgdGhpcy52YWx1ZSQsXHJcbiAgICAgICAgdGhpcy5yZWFkeSRcclxuICAgICk7XHJcbiAgICBzdWIgPSB0aGlzLnNvdXJjZS5zdWJzY3JpYmUodmFsdWVzID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrQW5kR2V0RGF0YSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2VhcmNoU2NoZW1hOiBhbnkgPSB7fTtcclxuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xyXG5cclxuICAgIHNob3dGb3JtUGlja2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF92YW5CYW5EZW5TZXJ2aWNlOiBWYW5CYW5EZW5TZXJ2aWNlLFxyXG4gICAgICAgIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmxvYWREZXRhaWxGcm9tUXVlcnlQYXJhbSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3ZhbkJhbkRlblNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZGVuUGlja2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5QYWdlVGl0bGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcubW9kZWxTY2hlbWFzID0gW1xyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdzb0RlbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2ludCcsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnU+G7kSDEkeG6v24nLFxyXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdT4buRIMSR4bq/bicsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Phu5EgxJHhur9uJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29LeUhpZXUnLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ1Phu5EsIGvDvSBoaeG7h3UnLFxyXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdT4buRLCBrw70gaGnhu4d1JyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU+G7kSwga8O9IGhp4buHdSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndHJpY2hZZXUnLCBuYW1lOiAnVHLDrWNoIHnhur91JywgZnVsbE5hbWU6ICcnLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlCYW5IYW5oJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnTmfDoHkgYmFuIGjDoG5oJyxcclxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5RGVuJywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IMSR4bq/bicsIGZ1bGxOYW1lOiAnJywgZGVzY3JpcHRpb246ICcnIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29EZW4nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29LeUhpZXUnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndHJpY2hZZXUnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlCYW5IYW5oJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTI1cHgnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlEZW4nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMjBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuZmllbGRTZWFyY2hUZXh0ID0gWydjb2RlJywgJ25hbWUnXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcub2JqZWN0TmFtZSA9ICcgdsSDbiBi4bqjbiDEkeG6v24nO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMucmVhZHkubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb21pc2VHZXREYXRhKGdyaWRJbmZvOiBHcmlkSW5mbykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UuZ2V0QnlHcmlkUmVxdWVzdFdpdGhCb2R5T2xkKGdyaWRJbmZvLCAnUGVybWlzc2lvbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeUdyaWRJbmZvKGdyaWRJbmZvPzogR3JpZEluZm8pIHtcclxuICAgICAgICBncmlkSW5mby5zb3J0cyA9IFtcclxuICAgICAgICAgICAgeyBmaWVsZDogJ2lkJywgZGlyOiAtMSB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2lkcyAmJiB0aGlzLl9pZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgb3BlcmF0b3IgPSBPcGVyYXRvci5pbjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvciA9IE9wZXJhdG9yLm5vdEluO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdChcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpbnN0YW5jZUlkJywgb3BlcmF0b3IsIHRoaXMuX2lkcylcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tBbmRHZXREYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pZHMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dGb3JtUGlja1ZhbkJhbigpIHtcclxuICAgICAgICB0aGlzLmJlZm9yZUFkZCgpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUubWF4aW1pemUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cEhlYWRlciA9IGBUaMOqbSBt4bubaSAke3RoaXMuc2V0dGluZy5vYmplY3ROYW1lfWA7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybVBpY2tlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcGlja1ZhbkJhblNlbGVjdGVkKCkge1xyXG4gICAgICAgIHRoaXMuX3BpY2tWYW5CYW4odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwaWNrVmFuQmFuKHJvd0RhdGEpIHtcclxuICAgICAgICB0aGlzLl9waWNrVmFuQmFuKFtyb3dEYXRhXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcGlja1ZhbkJhbihpdGVtcykge1xyXG4gICAgICAgIHRoaXMub25QaWNrZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGlkczogaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5pbnN0YW5jZUlkKSxcclxuICAgICAgICAgICAgaXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB4b2FWYW5CYW5TZWxlY3RlZCgpIHtcclxuICAgICAgICB0aGlzLl94b2FWYW5CYW4odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICB4b2FWYW5CYW4ocm93RGF0YSkge1xyXG4gICAgICAgIHRoaXMuX3hvYVZhbkJhbihbcm93RGF0YV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3hvYVZhbkJhbihpdGVtcykge1xyXG4gICAgICAgIHRoaXMub25SZW1vdmVkLmVtaXQoe1xyXG4gICAgICAgICAgICBpZHM6IGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uaW5zdGFuY2VJZCksXHJcbiAgICAgICAgICAgIGl0ZW1zXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmF2aWdhdGVUb1ZhbkJhbihyb3dEYXRhKSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5lbnZpcm9ubWVudC5jbGllbnREb21haW4udmFuYmFuRG9tYWlufS92YW5iYW5kZW4jX2E9MSZfaT0ke3Jvd0RhdGEuaWR9YCwgJ19ibGFuaycpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVBpY2tlZChkYXRhKSB7XHJcbiAgICAgICAgLy8gY29uc3QgaWRzID0gW1xyXG4gICAgICAgIC8vICAgICAuLi50aGlzLl9pZHMsXHJcbiAgICAgICAgLy8gICAgIC4uLmRhdGEuaWRzLmZpbHRlcihxID0+IHRoaXMuX2lkcy5pbmRleE9mKHEpID09IC0xKVxyXG4gICAgICAgIC8vIF1cclxuICAgICAgICAvLyB0aGlzLmlkcyA9IGlkcztcclxuICAgICAgICB0aGlzLm9uUGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsIjxjcnVkLWxpc3QgI2NydWRMaXN0IFttb2RlbF09XCJtb2RlbFwiIFtzZXR0aW5nXT1cInNldHRpbmdcIiBbZGF0YVNvdXJjZV09XCJtb2RlbC5kYXRhU291cmNlXCJcclxuICAgIChvblJlbG9hZCk9XCJfdHJpZ2dlclByb2Nlc3NEYXRhKCRldmVudClcIiAob25BZGQpPVwiX2FkZCgkZXZlbnQpXCIgKG9uRWRpdCk9XCJfZWRpdCgkZXZlbnQpXCIgKG9uVmlldyk9XCJfdmlldygkZXZlbnQpXCJcclxuICAgIChvbkRlbGV0ZSk9XCJfZGVsZXRlKCRldmVudClcIiAob25EZWxldGVNdWx0aXBsZSk9XCJfZGVsZXRlTXVsdGlwbGUoJGV2ZW50KVwiIChvblJlbG9hZGVkKT1cIl91bm1hcmtMb2FkaW5nKClcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaGlkZGVuUGlja2VyXCIgdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gaWNvbj1cInBpIHBpLWNoZWNrXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tcHJpbWFyeVwiIGxhYmVsPVwiQ2jhu41uIHbEg24gYuG6o25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicGlja1ZhbkJhblNlbGVjdGVkKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGRlblBpY2tlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1jbG9uZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDaOG7jW4gdsSDbiBi4bqjblwiIChjbGljayk9XCJzaG93Rm9ybVBpY2tWYW5CYW4oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIljDs2EgdsSDbiBi4bqjblwiIChjbGljayk9XCJ4b2FWYW5CYW5TZWxlY3RlZCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmdW5jdGlvbiBsZXQtcm93RGF0YT1cInJvd0RhdGFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGRlblBpY2tlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1leWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tc3VjY2VzcyBsaW5rLW9yLWFjdGlvblwiIHBUb29sdGlwPVwiWGVtIGNoaSB0aeG6v3QgdsSDbiBi4bqjblwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwibmF2aWdhdGVUb1ZhbkJhbihyb3dEYXRhKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1kYW5nZXIgbGluay1vci1hY3Rpb25cIiBwVG9vbHRpcD1cIljDs2EgdsSDbiBi4bqjblwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwieG9hVmFuQmFuKHJvd0RhdGEpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpZGRlblBpY2tlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1kYW5nZXIgbGluay1vci1hY3Rpb25cIiBwVG9vbHRpcD1cIljDs2EgdsSDbiBi4bqjblwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIiAoY2xpY2spPVwicGlja1ZhbkJhbihyb3dEYXRhKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9jcnVkLWxpc3Q+XHJcbjx0bi1kaWFsb2cgKm5nSWY9XCJzaG93Rm9ybVBpY2tlclwiICNkaWFsb2cgW3N0eWxlQ2xhc3NdPVwiJ3ZiLWRlbi1mb3JtIHRuLWZvcm0tZGlhbG9nJ1wiXHJcbiAgICBbaGVhZGVyXT1cInNldHRpbmcucG9wdXBIZWFkZXIgfCB0cmFuc2xhdGVcIiBbcG9wdXBTaXplXT1cInNldHRpbmcucG9wdXBTaXplXCIgKG9uSGlkZSk9XCJzaG93Rm9ybVBpY2tlciA9IGZhbHNlXCI+XHJcbiAgICA8YXBwLXZhbmJhbi1kZW4tcGlja2VyIFtwYXJlbnRNb2RlbF09XCJtb2RlbFwiIFtwYXJlbnRDb250ZXh0XT1cImNvbnRleHRcIiBbaGlkZGVuUGlja2VyXT1cInRydWVcIiBbaWRzXT1cIl9pZHNcIlxyXG4gICAgICAgIChvblNhdmVkKT1cInNob3dGb3JtUGlja2VyID0gZmFsc2U7Y3J1ZExpc3QucmVsb2FkKClcIiAob25DYW5jZWwpPVwiX2hhbmRsZUNhbmNlbCgkZXZlbnQpXCJcclxuICAgICAgICAob25QaWNrZWQpPVwiaGFuZGxlUGlja2VkKCRldmVudClcIj5cclxuICAgIDwvYXBwLXZhbmJhbi1kZW4tcGlja2VyPlxyXG48L3RuLWRpYWxvZz4iXX0=