nuxeo-development-framework 6.1.0 → 6.1.2

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 (881) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +2091 -1569
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +1 -1
  4. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +1 -1
  5. package/esm2015/lib/components/activities-log/activities-log.module.js +1 -1
  6. package/esm2015/lib/components/activity/activity/activity.component.js +1 -1
  7. package/esm2015/lib/components/activity/activity.module.js +1 -1
  8. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +2 -2
  9. package/esm2015/lib/components/attachment-item/attachment-item.module.js +1 -1
  10. package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +1 -1
  11. package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +1 -1
  12. package/esm2015/lib/components/avatar/avatar/avatar.component.js +1 -1
  13. package/esm2015/lib/components/avatar/avatar.module.js +1 -1
  14. package/esm2015/lib/components/card/card.component.js +1 -1
  15. package/esm2015/lib/components/card/card.module.js +1 -1
  16. package/esm2015/lib/components/comments/comments.module.js +1 -1
  17. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +2 -2
  18. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +1 -1
  19. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +1 -1
  20. package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +1 -1
  21. package/esm2015/lib/components/comments/constants/comment.js +1 -1
  22. package/esm2015/lib/components/comments/services/comment-api.service.js +1 -1
  23. package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +1 -1
  24. package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +1 -1
  25. package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +1 -1
  26. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +1 -1
  27. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +1 -1
  28. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +1 -1
  29. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +1 -1
  30. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +2 -2
  31. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +1 -1
  32. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +1 -1
  33. package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +1 -1
  34. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +1 -1
  35. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +1 -1
  36. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +1 -1
  37. package/esm2015/lib/components/create-entity/create-entity.module.js +1 -1
  38. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +2 -2
  39. package/esm2015/lib/components/cts-tags/cts-tags.module.js +1 -1
  40. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +1 -1
  41. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +1 -1
  42. package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +1 -1
  43. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +1 -1
  44. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +1 -1
  45. package/esm2015/lib/components/diagrams/components/base-node.component.js +1 -1
  46. package/esm2015/lib/components/diagrams/components/circle-node/circle-node.component.js +1 -1
  47. package/esm2015/lib/components/diagrams/components/connection-label.component.js +1 -1
  48. package/esm2015/lib/components/diagrams/components/content-node/content-node.component.js +1 -1
  49. package/esm2015/lib/components/diagrams/components/custom-connection.component.js +1 -1
  50. package/esm2015/lib/components/diagrams/components/custom-socket.component.js +1 -1
  51. package/esm2015/lib/components/diagrams/components/gateway-node/gateway-node.component.js +1 -1
  52. package/esm2015/lib/components/diagrams/components/gateway-ports.component.js +1 -1
  53. package/esm2015/lib/components/diagrams/components/index.js +1 -1
  54. package/esm2015/lib/components/diagrams/components/node-icon.component.js +1 -1
  55. package/esm2015/lib/components/diagrams/components/node-inputs.component.js +1 -1
  56. package/esm2015/lib/components/diagrams/components/node-outputs.component.js +1 -1
  57. package/esm2015/lib/components/diagrams/components/node-ports.component.js +1 -1
  58. package/esm2015/lib/components/diagrams/components/remove-button.component.js +1 -1
  59. package/esm2015/lib/components/diagrams/components/status-icon.component.js +1 -1
  60. package/esm2015/lib/components/diagrams/components/template-node/template-node.component.js +1 -1
  61. package/esm2015/lib/components/diagrams/components/zoom-control.component.js +1 -1
  62. package/esm2015/lib/components/diagrams/constants/defaults.js +1 -1
  63. package/esm2015/lib/components/diagrams/constants/direction.js +1 -1
  64. package/esm2015/lib/components/diagrams/constants/index.js +1 -1
  65. package/esm2015/lib/components/diagrams/constants/message-type.js +1 -1
  66. package/esm2015/lib/components/diagrams/constants/node-type.js +1 -1
  67. package/esm2015/lib/components/diagrams/constants/notify-events.js +1 -1
  68. package/esm2015/lib/components/diagrams/constants/sizes.js +1 -1
  69. package/esm2015/lib/components/diagrams/constants/status.js +1 -1
  70. package/esm2015/lib/components/diagrams/diagrams.module.js +1 -1
  71. package/esm2015/lib/components/diagrams/directive/diagram.directive.js +1 -1
  72. package/esm2015/lib/components/diagrams/directive/index.js +1 -1
  73. package/esm2015/lib/components/diagrams/editor/customize.js +1 -1
  74. package/esm2015/lib/components/diagrams/editor/editor.js +1 -1
  75. package/esm2015/lib/components/diagrams/editor/index.js +1 -1
  76. package/esm2015/lib/components/diagrams/editor/overrides/connection-path.transformers.js +1 -1
  77. package/esm2015/lib/components/diagrams/editor/overrides/index.js +1 -1
  78. package/esm2015/lib/components/diagrams/editor/path-plugin.js +1 -1
  79. package/esm2015/lib/components/diagrams/editor/socket-position-watcher.js +1 -1
  80. package/esm2015/lib/components/diagrams/index.js +1 -1
  81. package/esm2015/lib/components/diagrams/models/base-node.model.js +1 -1
  82. package/esm2015/lib/components/diagrams/models/circle-node.model.js +1 -1
  83. package/esm2015/lib/components/diagrams/models/connection.model.js +1 -1
  84. package/esm2015/lib/components/diagrams/models/content-node.model.js +1 -1
  85. package/esm2015/lib/components/diagrams/models/gate-way.model.js +1 -1
  86. package/esm2015/lib/components/diagrams/models/index.js +1 -1
  87. package/esm2015/lib/components/diagrams/models/ports.model.js +1 -1
  88. package/esm2015/lib/components/diagrams/models/socket.model.js +1 -1
  89. package/esm2015/lib/components/diagrams/models/template-node.model.js +1 -1
  90. package/esm2015/lib/components/diagrams/public-api.js +1 -1
  91. package/esm2015/lib/components/diagrams/services/diagram-plugins.service.js +1 -1
  92. package/esm2015/lib/components/diagrams/services/diagram.service.js +1 -1
  93. package/esm2015/lib/components/diagrams/services/index.js +1 -1
  94. package/esm2015/lib/components/diagrams/services/message.service.js +1 -1
  95. package/esm2015/lib/components/diagrams/services/workflow.service.js +1 -1
  96. package/esm2015/lib/components/diagrams/types/common.type.js +1 -1
  97. package/esm2015/lib/components/diagrams/types/connection-config.type.js +1 -1
  98. package/esm2015/lib/components/diagrams/types/connection-label.type.js +1 -1
  99. package/esm2015/lib/components/diagrams/types/customization.type.js +1 -1
  100. package/esm2015/lib/components/diagrams/types/diagram-config.type.js +1 -1
  101. package/esm2015/lib/components/diagrams/types/diagram-editor.type.js +1 -1
  102. package/esm2015/lib/components/diagrams/types/emitter-type.js +1 -1
  103. package/esm2015/lib/components/diagrams/types/index.js +1 -1
  104. package/esm2015/lib/components/diagrams/types/layout.type.js +1 -1
  105. package/esm2015/lib/components/diagrams/types/node-content.js +1 -1
  106. package/esm2015/lib/components/diagrams/types/node-definition.js +1 -1
  107. package/esm2015/lib/components/diagrams/types/node-status.type.js +1 -1
  108. package/esm2015/lib/components/diagrams/types/node.type.js +1 -1
  109. package/esm2015/lib/components/diagrams/types/notify-event.type.js +1 -1
  110. package/esm2015/lib/components/diagrams/types/path.type.js +1 -1
  111. package/esm2015/lib/components/diagrams/types/ports-config.type.js +1 -1
  112. package/esm2015/lib/components/diagrams/types/schemes.type.js +1 -1
  113. package/esm2015/lib/components/diagrams/types/socket.type.js +1 -1
  114. package/esm2015/lib/components/diagrams/utilities/common.js +1 -1
  115. package/esm2015/lib/components/diagrams/utilities/index.js +1 -1
  116. package/esm2015/lib/components/diagrams/utilities/random.js +1 -1
  117. package/esm2015/lib/components/diagrams/utilities/remove.util.js +1 -1
  118. package/esm2015/lib/components/diagrams/utilities/serialize.js +1 -1
  119. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +2 -2
  120. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +1 -1
  121. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +1 -1
  122. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +1 -1
  123. package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +1 -1
  124. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +1 -1
  125. package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +1 -1
  126. package/esm2015/lib/components/documents/components/document-scan/document-scan.service.js +1 -1
  127. package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +1 -1
  128. package/esm2015/lib/components/documents/components/documents/documents.component.js +1 -1
  129. package/esm2015/lib/components/documents/constants/document-templates.js +1 -1
  130. package/esm2015/lib/components/documents/constants/documents.js +1 -1
  131. package/esm2015/lib/components/documents/documents.module.js +1 -1
  132. package/esm2015/lib/components/documents/services/document-templates.service.js +1 -1
  133. package/esm2015/lib/components/documents/services/documents.service.js +1 -1
  134. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +1 -1
  135. package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +1 -1
  136. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +1 -1
  137. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +1 -1
  138. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +1 -1
  139. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +2 -2
  140. package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +1 -1
  141. package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +1 -1
  142. package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +1 -1
  143. package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +1 -1
  144. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +1 -1
  145. package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +1 -1
  146. package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +1 -1
  147. package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +1 -1
  148. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +1 -1
  149. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +1 -1
  150. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +1 -1
  151. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +1 -1
  152. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +1 -1
  153. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +1 -1
  154. package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +1 -1
  155. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +1 -1
  156. package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +1 -1
  157. package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +1 -1
  158. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +1 -1
  159. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +1 -1
  160. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +1 -1
  161. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +1 -1
  162. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +1 -1
  163. package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +1 -1
  164. package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +2 -2
  165. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +1 -1
  166. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +1 -1
  167. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +1 -1
  168. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +2 -2
  169. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +1 -1
  170. package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +1 -1
  171. package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +1 -1
  172. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +1 -1
  173. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +1 -1
  174. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +1 -1
  175. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +1 -1
  176. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.js +1 -1
  177. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.js +1 -1
  178. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +1 -1
  179. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +1 -1
  180. package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +1 -1
  181. package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +1 -1
  182. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +1 -1
  183. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +1 -1
  184. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +1 -1
  185. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +1 -1
  186. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +1 -1
  187. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +1 -1
  188. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +1 -1
  189. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +1 -1
  190. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +1 -1
  191. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +1 -1
  192. package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +1 -1
  193. package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +1 -1
  194. package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +1 -1
  195. package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +1 -1
  196. package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +1 -1
  197. package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +1 -1
  198. package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +1 -1
  199. package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +1 -1
  200. package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +1 -1
  201. package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +1 -1
  202. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +1 -1
  203. package/esm2015/lib/components/dynamic-form/services/vocabulary-api.service.js +1 -1
  204. package/esm2015/lib/components/dynamic-form/validators/length-validator.js +1 -1
  205. package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +1 -1
  206. package/esm2015/lib/components/dynamic-form/validators/required-validator.js +1 -1
  207. package/esm2015/lib/components/dynamic-form/validators/value-validator.js +1 -1
  208. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +1 -1
  209. package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +1 -1
  210. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +1 -1
  211. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +1 -1
  212. package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +2 -2
  213. package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +1 -1
  214. package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +1 -1
  215. package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +1 -1
  216. package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +2 -2
  217. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +2 -2
  218. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +2 -2
  219. package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +2 -2
  220. package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +1 -1
  221. package/esm2015/lib/components/dynamic-view/dynamic-viewe.service.js +1 -1
  222. package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +1 -1
  223. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +2 -2
  224. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +2 -2
  225. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +1 -1
  226. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +2 -2
  227. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +1 -1
  228. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +1 -1
  229. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +1 -1
  230. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +1 -1
  231. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +2 -2
  232. package/esm2015/lib/components/file-manger/components/move/move.component.js +1 -1
  233. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +1 -1
  234. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +2 -2
  235. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +1 -1
  236. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +2 -2
  237. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +2 -2
  238. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +1 -1
  239. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +1 -1
  240. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +1 -1
  241. package/esm2015/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.js +1 -1
  242. package/esm2015/lib/components/file-manger/file-manager.abstract.js +1 -1
  243. package/esm2015/lib/components/file-manger/file-manger.module.js +1 -1
  244. package/esm2015/lib/components/file-manger/models/file-manager-config.model.js +1 -1
  245. package/esm2015/lib/components/file-manger/models/index.js +1 -1
  246. package/esm2015/lib/components/file-manger/models/pagination-payload.mode.js +1 -1
  247. package/esm2015/lib/components/file-manger/models/pagination-response.model.js +1 -1
  248. package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
  249. package/esm2015/lib/components/filter/filter.module.js +1 -1
  250. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +1 -1
  251. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +1 -1
  252. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +1 -1
  253. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +1 -1
  254. package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +1 -1
  255. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +1 -1
  256. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +1 -1
  257. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +1 -1
  258. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +1 -1
  259. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +1 -1
  260. package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +1 -1
  261. package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +1 -1
  262. package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +1 -1
  263. package/esm2015/lib/components/latest-activity/constants/activitylog.js +1 -1
  264. package/esm2015/lib/components/latest-activity/latest-activity.module.js +1 -1
  265. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +1 -1
  266. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +1 -1
  267. package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +1 -1
  268. package/esm2015/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.js +1 -1
  269. package/esm2015/lib/components/ndf-config-editor/components/editor-mode-switch.component.js +1 -1
  270. package/esm2015/lib/components/ndf-config-editor/components/index.js +1 -1
  271. package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +2 -2
  272. package/esm2015/lib/components/ndf-config-editor/config.token.js +1 -1
  273. package/esm2015/lib/components/ndf-config-editor/constants/index.js +1 -1
  274. package/esm2015/lib/components/ndf-config-editor/constants/mode.js +1 -1
  275. package/esm2015/lib/components/ndf-config-editor/constants/query.js +1 -1
  276. package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +2 -2
  277. package/esm2015/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.js +2 -2
  278. package/esm2015/lib/components/ndf-config-editor/containers/index.js +1 -1
  279. package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +1 -1
  280. package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +1 -1
  281. package/esm2015/lib/components/ndf-config-editor/index.js +1 -1
  282. package/esm2015/lib/components/ndf-config-editor/metadata-token.js +1 -1
  283. package/esm2015/lib/components/ndf-config-editor/models/config.js +1 -1
  284. package/esm2015/lib/components/ndf-config-editor/models/dialog-data.js +1 -1
  285. package/esm2015/lib/components/ndf-config-editor/models/editor-model.js +1 -1
  286. package/esm2015/lib/components/ndf-config-editor/models/index.js +1 -1
  287. package/esm2015/lib/components/ndf-config-editor/models/payload-data.js +1 -1
  288. package/esm2015/lib/components/ndf-config-editor/models/type-helper.js +1 -1
  289. package/esm2015/lib/components/ndf-config-editor/ndf-config-editor.module.js +1 -1
  290. package/esm2015/lib/components/ndf-config-editor/pipes/index.js +1 -1
  291. package/esm2015/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.js +1 -1
  292. package/esm2015/lib/components/ndf-config-editor/pipes/validate-object.pipe.js +1 -1
  293. package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +2 -2
  294. package/esm2015/lib/components/ndf-config-editor/public/index.js +1 -1
  295. package/esm2015/lib/components/ndf-config-editor/public-api.js +1 -1
  296. package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +1 -1
  297. package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +1 -1
  298. package/esm2015/lib/components/ndf-config-editor/services/index.js +1 -1
  299. package/esm2015/lib/components/ndf-config-editor/services/monaco.loader.service.js +1 -1
  300. package/esm2015/lib/components/ndf-config-editor/utility/index.js +1 -1
  301. package/esm2015/lib/components/ndf-config-editor/utility/json.js +1 -1
  302. package/esm2015/lib/components/ndf-datepicker/adapters/hijri-adapter.js +1 -1
  303. package/esm2015/lib/components/ndf-datepicker/adapters/index.js +1 -1
  304. package/esm2015/lib/components/ndf-datepicker/adapters/moment-adapter.js +1 -1
  305. package/esm2015/lib/components/ndf-datepicker/base/base-value-accessor.js +1 -1
  306. package/esm2015/lib/components/ndf-datepicker/base/index.js +1 -1
  307. package/esm2015/lib/components/ndf-datepicker/components/base-datepicker.js +1 -1
  308. package/esm2015/lib/components/ndf-datepicker/components/index.js +1 -1
  309. package/esm2015/lib/components/ndf-datepicker/components/input-date.component.js +1 -1
  310. package/esm2015/lib/components/ndf-datepicker/components/input-range-date.component.js +1 -1
  311. package/esm2015/lib/components/ndf-datepicker/constants/date-locale-keys.js +1 -1
  312. package/esm2015/lib/components/ndf-datepicker/constants/date-picker.js +1 -1
  313. package/esm2015/lib/components/ndf-datepicker/constants/date-type.js +1 -1
  314. package/esm2015/lib/components/ndf-datepicker/constants/formats.js +1 -1
  315. package/esm2015/lib/components/ndf-datepicker/constants/hijri-dates-names.js +1 -1
  316. package/esm2015/lib/components/ndf-datepicker/constants/index.js +1 -1
  317. package/esm2015/lib/components/ndf-datepicker/containers/datepicker-container.js +1 -1
  318. package/esm2015/lib/components/ndf-datepicker/containers/index.js +1 -1
  319. package/esm2015/lib/components/ndf-datepicker/containers/ndf-gregorian-datepicker.component.js +1 -1
  320. package/esm2015/lib/components/ndf-datepicker/containers/ndf-hijri-datepicker.component.js +1 -1
  321. package/esm2015/lib/components/ndf-datepicker/index.js +1 -1
  322. package/esm2015/lib/components/ndf-datepicker/models/data-types.js +1 -1
  323. package/esm2015/lib/components/ndf-datepicker/models/index.js +1 -1
  324. package/esm2015/lib/components/ndf-datepicker/models/value-object.js +1 -1
  325. package/esm2015/lib/components/ndf-datepicker/ndf-datepicker.component.js +2 -2
  326. package/esm2015/lib/components/ndf-datepicker/ndf-datepicker.module.js +1 -1
  327. package/esm2015/lib/components/ndf-datepicker/services/calendar.service.js +1 -1
  328. package/esm2015/lib/components/ndf-datepicker/services/index.js +1 -1
  329. package/esm2015/lib/components/ndf-datepicker/services/localize-state.service.js +1 -1
  330. package/esm2015/lib/components/ndf-filters/base/base-aggregation-field.component.js +1 -1
  331. package/esm2015/lib/components/ndf-filters/base/base-checkbox-radio.component.js +1 -1
  332. package/esm2015/lib/components/ndf-filters/base/base-custom-field.component.js +1 -1
  333. package/esm2015/lib/components/ndf-filters/base/base-predicate-field.component.js +1 -1
  334. package/esm2015/lib/components/ndf-filters/base/base-value-accessor.component.js +1 -1
  335. package/esm2015/lib/components/ndf-filters/base/index.js +1 -1
  336. package/esm2015/lib/components/ndf-filters/components/__parts/field-header.component.js +1 -1
  337. package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +1 -1
  338. package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +1 -1
  339. package/esm2015/lib/components/ndf-filters/components/__parts/filter-collapse-control/filter-collapse-control.component.js +1 -1
  340. package/esm2015/lib/components/ndf-filters/components/__parts/filter-date-range/filter-date-range.component.js +1 -1
  341. package/esm2015/lib/components/ndf-filters/components/__parts/filter-empty-message.component.js +1 -1
  342. package/esm2015/lib/components/ndf-filters/components/__parts/filter-option-text/filter-option-text.component.js +2 -2
  343. package/esm2015/lib/components/ndf-filters/components/__parts/filter-options-sort/filter-options-sort.component.js +2 -2
  344. package/esm2015/lib/components/ndf-filters/components/__parts/filter-search-input/filter-search-input.component.js +1 -1
  345. package/esm2015/lib/components/ndf-filters/components/__parts/html-dialog/html-dialog.component.js +1 -1
  346. package/esm2015/lib/components/ndf-filters/components/__parts/index.js +1 -1
  347. package/esm2015/lib/components/ndf-filters/components/aggregation-autocomplete/aggregation-autocomplete.component.js +1 -1
  348. package/esm2015/lib/components/ndf-filters/components/aggregation-checkbox/aggregation-checkbox.component.js +1 -1
  349. package/esm2015/lib/components/ndf-filters/components/aggregation-custom/aggregation-custom.component.js +1 -1
  350. package/esm2015/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.js +1 -1
  351. package/esm2015/lib/components/ndf-filters/components/aggregation-radio/aggregation-radio.component.js +1 -1
  352. package/esm2015/lib/components/ndf-filters/components/aggregation-select/aggregation-select.component.js +1 -1
  353. package/esm2015/lib/components/ndf-filters/components/aggregation-switch/aggregation-switch.component.js +2 -2
  354. package/esm2015/lib/components/ndf-filters/components/index.js +1 -1
  355. package/esm2015/lib/components/ndf-filters/components/predicate-date-input/predicate-date-input.component.js +1 -1
  356. package/esm2015/lib/components/ndf-filters/components/predicate-text-input/predicate-text-input.component.js +2 -2
  357. package/esm2015/lib/components/ndf-filters/constants/common.js +1 -1
  358. package/esm2015/lib/components/ndf-filters/constants/field.js +1 -1
  359. package/esm2015/lib/components/ndf-filters/constants/index.js +1 -1
  360. package/esm2015/lib/components/ndf-filters/constants/operators.js +1 -1
  361. package/esm2015/lib/components/ndf-filters/constants/sort.js +1 -1
  362. package/esm2015/lib/components/ndf-filters/constants/type.js +1 -1
  363. package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +1 -1
  364. package/esm2015/lib/components/ndf-filters/containers/base-field.js +1 -1
  365. package/esm2015/lib/components/ndf-filters/containers/custom-field/custom-field.component.js +1 -1
  366. package/esm2015/lib/components/ndf-filters/containers/filters-panel/base-filters-panel.js +1 -1
  367. package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +1 -1
  368. package/esm2015/lib/components/ndf-filters/containers/index.js +1 -1
  369. package/esm2015/lib/components/ndf-filters/containers/predicate-field/predicate-field.component.js +1 -1
  370. package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user-switch.component.js +2 -2
  371. package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user.service.js +1 -1
  372. package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/user-types.js +1 -1
  373. package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.js +1 -1
  374. package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.js +1 -1
  375. package/esm2015/lib/components/ndf-filters/custom-components/index.js +1 -1
  376. package/esm2015/lib/components/ndf-filters/directives/autocomplete-template.directive.js +1 -1
  377. package/esm2015/lib/components/ndf-filters/directives/checkbox-template.directive.js +1 -1
  378. package/esm2015/lib/components/ndf-filters/directives/custom-template.directive.js +1 -1
  379. package/esm2015/lib/components/ndf-filters/directives/date-template.directive.js +1 -1
  380. package/esm2015/lib/components/ndf-filters/directives/dropdown-label-template.directive.js +1 -1
  381. package/esm2015/lib/components/ndf-filters/directives/dropdown-template.directive.js +1 -1
  382. package/esm2015/lib/components/ndf-filters/directives/index.js +1 -1
  383. package/esm2015/lib/components/ndf-filters/directives/radio-template.directive.js +1 -1
  384. package/esm2015/lib/components/ndf-filters/directives/switch-template.directive.js +1 -1
  385. package/esm2015/lib/components/ndf-filters/index.js +1 -1
  386. package/esm2015/lib/components/ndf-filters/models/aggregation-field-config.js +1 -1
  387. package/esm2015/lib/components/ndf-filters/models/aggregation-response.model.js +1 -1
  388. package/esm2015/lib/components/ndf-filters/models/base-field-config.js +1 -1
  389. package/esm2015/lib/components/ndf-filters/models/common.js +1 -1
  390. package/esm2015/lib/components/ndf-filters/models/custom-field-config.js +1 -1
  391. package/esm2015/lib/components/ndf-filters/models/field-config.model.js +1 -1
  392. package/esm2015/lib/components/ndf-filters/models/field-options/autocomplete-options.js +1 -1
  393. package/esm2015/lib/components/ndf-filters/models/field-options/checkbox-options.js +1 -1
  394. package/esm2015/lib/components/ndf-filters/models/field-options/common-utils.js +1 -1
  395. package/esm2015/lib/components/ndf-filters/models/field-options/custom-fields-options.js +1 -1
  396. package/esm2015/lib/components/ndf-filters/models/field-options/custom-options.js +1 -1
  397. package/esm2015/lib/components/ndf-filters/models/field-options/date-list-options.js +1 -1
  398. package/esm2015/lib/components/ndf-filters/models/field-options/date-options.js +1 -1
  399. package/esm2015/lib/components/ndf-filters/models/field-options/dropdown-options.js +1 -1
  400. package/esm2015/lib/components/ndf-filters/models/field-options/index.js +1 -1
  401. package/esm2015/lib/components/ndf-filters/models/field-options/input-options.js +1 -1
  402. package/esm2015/lib/components/ndf-filters/models/field-options/radio-options.js +1 -1
  403. package/esm2015/lib/components/ndf-filters/models/field-options/switch-options.js +1 -1
  404. package/esm2015/lib/components/ndf-filters/models/filter-option.model.js +1 -1
  405. package/esm2015/lib/components/ndf-filters/models/form-query-request.js +1 -1
  406. package/esm2015/lib/components/ndf-filters/models/index.js +1 -1
  407. package/esm2015/lib/components/ndf-filters/models/operator-value-object.js +1 -1
  408. package/esm2015/lib/components/ndf-filters/models/predicate-field-config.js +1 -1
  409. package/esm2015/lib/components/ndf-filters/models/types-helper.js +1 -1
  410. package/esm2015/lib/components/ndf-filters/models/value-object.model.js +1 -1
  411. package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +1 -1
  412. package/esm2015/lib/components/ndf-filters/pipes/autocomplete-filter.pipe.js +1 -1
  413. package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +1 -1
  414. package/esm2015/lib/components/ndf-filters/pipes/filter.pipe.js +1 -1
  415. package/esm2015/lib/components/ndf-filters/pipes/hash-translate.pipe.js +1 -1
  416. package/esm2015/lib/components/ndf-filters/pipes/index.js +1 -1
  417. package/esm2015/lib/components/ndf-filters/pipes/localized-label.pipe.js +1 -1
  418. package/esm2015/lib/components/ndf-filters/pipes/roles-filters.pipe.js +1 -1
  419. package/esm2015/lib/components/ndf-filters/pipes/sanitizer.pipe.js +1 -1
  420. package/esm2015/lib/components/ndf-filters/pipes/sort.pipe.js +1 -1
  421. package/esm2015/lib/components/ndf-filters/pipes/tooltip.pipe.js +1 -1
  422. package/esm2015/lib/components/ndf-filters/public-api.js +1 -1
  423. package/esm2015/lib/components/ndf-filters/services/aggregation-field.service.js +1 -1
  424. package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +1 -1
  425. package/esm2015/lib/components/ndf-filters/services/filters-mapper.service.js +1 -1
  426. package/esm2015/lib/components/ndf-filters/services/filters-query.service.js +1 -1
  427. package/esm2015/lib/components/ndf-filters/services/index.js +1 -1
  428. package/esm2015/lib/components/ndf-filters/utility/index.js +1 -1
  429. package/esm2015/lib/components/ndf-filters/utility/nxql-query.js +1 -1
  430. package/esm2015/lib/components/ndf-filters/utility/nxql.js +1 -1
  431. package/esm2015/lib/components/ndf-filters/utility/object.js +1 -1
  432. package/esm2015/lib/components/ndf-panel/component/ndf-panel.component.js +1 -1
  433. package/esm2015/lib/components/ndf-panel/index.js +1 -1
  434. package/esm2015/lib/components/ndf-panel/ndf-panel.module.js +1 -1
  435. package/esm2015/lib/components/ndf-scanner/index.js +1 -1
  436. package/esm2015/lib/components/ndf-scanner/ndf-scanner.component.js +2 -2
  437. package/esm2015/lib/components/ndf-scanner/ndf-scanner.module.js +1 -1
  438. package/esm2015/lib/components/ndf-signatures/emdha/dialogs/auth/emdha-auth.dialog.js +1 -1
  439. package/esm2015/lib/components/ndf-signatures/emdha/dialogs/index.js +1 -1
  440. package/esm2015/lib/components/ndf-signatures/emdha/index.js +1 -1
  441. package/esm2015/lib/components/ndf-signatures/emdha/services/emdha.service.js +1 -1
  442. package/esm2015/lib/components/ndf-signatures/emdha/services/index.js +1 -1
  443. package/esm2015/lib/components/ndf-signatures/index.js +1 -1
  444. package/esm2015/lib/components/ndf-signatures/ndf-signature-panel/ndf-signature-panel.component.js +1 -1
  445. package/esm2015/lib/components/ndf-signatures/ndf-signatures.module.js +1 -1
  446. package/esm2015/lib/components/ndf-signatures/services/index.js +1 -1
  447. package/esm2015/lib/components/ndf-signatures/services/signatures.service.js +1 -1
  448. package/esm2015/lib/components/ndf-tabs/component/ndf-tabs.component.js +1 -1
  449. package/esm2015/lib/components/ndf-tabs/index.js +1 -1
  450. package/esm2015/lib/components/ndf-tabs/ndf-tabs.module.js +1 -1
  451. package/esm2015/lib/components/ndf-tabs/tab.type.js +1 -1
  452. package/esm2015/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.js +2 -2
  453. package/esm2015/lib/components/ndf-uploader/components/index.js +1 -1
  454. package/esm2015/lib/components/ndf-uploader/config/index.js +1 -1
  455. package/esm2015/lib/components/ndf-uploader/config/uploader.config.js +1 -1
  456. package/esm2015/lib/components/ndf-uploader/constant/file-content.js +1 -1
  457. package/esm2015/lib/components/ndf-uploader/constant/index.js +1 -1
  458. package/esm2015/lib/components/ndf-uploader/helpers/index.js +1 -1
  459. package/esm2015/lib/components/ndf-uploader/helpers/uploader.helper.js +1 -1
  460. package/esm2015/lib/components/ndf-uploader/index.js +1 -1
  461. package/esm2015/lib/components/ndf-uploader/models/batch.model.js +1 -1
  462. package/esm2015/lib/components/ndf-uploader/models/index.js +1 -1
  463. package/esm2015/lib/components/ndf-uploader/models/ndf-file.model.js +1 -1
  464. package/esm2015/lib/components/ndf-uploader/models/provider.model.js +1 -1
  465. package/esm2015/lib/components/ndf-uploader/ndf-uploader-bottom-sheet.service.js +1 -1
  466. package/esm2015/lib/components/ndf-uploader/ndf-uploader.module.js +1 -1
  467. package/esm2015/lib/components/ndf-uploader/ndf-uploader.service.js +1 -1
  468. package/esm2015/lib/components/ndf-uploader/nuxeo-base-url.js +1 -1
  469. package/esm2015/lib/components/ndf-uploader/providers/index.js +1 -1
  470. package/esm2015/lib/components/ndf-uploader/providers/nuxeo-provider.service.js +1 -1
  471. package/esm2015/lib/components/ndf-uploader/providers/s3-provider.service.js +1 -1
  472. package/esm2015/lib/components/no-data-found/index.js +1 -1
  473. package/esm2015/lib/components/no-data-found/no-data-found.component.js +1 -1
  474. package/esm2015/lib/components/no-data-found/no-data.module.js +1 -1
  475. package/esm2015/lib/components/notifications/components/base-list-notfications.component.js +1 -1
  476. package/esm2015/lib/components/notifications/components/base-notifications.component.js +1 -1
  477. package/esm2015/lib/components/notifications/components/index.js +1 -1
  478. package/esm2015/lib/components/notifications/components/notification-item/get-icon.pipe.js +1 -1
  479. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +2 -2
  480. package/esm2015/lib/components/notifications/components/notification-sortby-toggle/notification-sortby-toggle.component.js +2 -2
  481. package/esm2015/lib/components/notifications/components/notification-source-select/notification-source-select.component.js +2 -2
  482. package/esm2015/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.js +2 -2
  483. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +2 -2
  484. package/esm2015/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.js +2 -2
  485. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +2 -2
  486. package/esm2015/lib/components/notifications/components/notifications-list/options.js +1 -1
  487. package/esm2015/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.js +2 -2
  488. package/esm2015/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.js +1 -1
  489. package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.js +1 -1
  490. package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.component.js +2 -2
  491. package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.js +1 -1
  492. package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.js +1 -1
  493. package/esm2015/lib/components/notifications/constants/date.js +1 -1
  494. package/esm2015/lib/components/notifications/constants/index.js +1 -1
  495. package/esm2015/lib/components/notifications/constants/pagination.js +1 -1
  496. package/esm2015/lib/components/notifications/constants/panel.js +1 -1
  497. package/esm2015/lib/components/notifications/constants/status.js +1 -1
  498. package/esm2015/lib/components/notifications/containers/index.js +1 -1
  499. package/esm2015/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.js +2 -2
  500. package/esm2015/lib/components/notifications/containers/notifications-list-container/options.js +1 -1
  501. package/esm2015/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.js +1 -1
  502. package/esm2015/lib/components/notifications/directives/button.directive.js +1 -1
  503. package/esm2015/lib/components/notifications/directives/index.js +1 -1
  504. package/esm2015/lib/components/notifications/directives/notification.directive.js +1 -1
  505. package/esm2015/lib/components/notifications/index.js +1 -1
  506. package/esm2015/lib/components/notifications/models/common.js +1 -1
  507. package/esm2015/lib/components/notifications/models/index.js +1 -1
  508. package/esm2015/lib/components/notifications/models/notification-definition.model.js +1 -1
  509. package/esm2015/lib/components/notifications/models/notification-message.mode.js +1 -1
  510. package/esm2015/lib/components/notifications/models/notification-options.js +1 -1
  511. package/esm2015/lib/components/notifications/models/notification-setting.presenter.js +1 -1
  512. package/esm2015/lib/components/notifications/models/notification-subscription.model.js +1 -1
  513. package/esm2015/lib/components/notifications/models/notification.model.js +1 -1
  514. package/esm2015/lib/components/notifications/models/notifications-list-options.js +1 -1
  515. package/esm2015/lib/components/notifications/models/paging-response.model.js +1 -1
  516. package/esm2015/lib/components/notifications/models/params.model.js +1 -1
  517. package/esm2015/lib/components/notifications/models/vocabularies.js +1 -1
  518. package/esm2015/lib/components/notifications/notifications.module.js +1 -1
  519. package/esm2015/lib/components/notifications/public-api.js +1 -1
  520. package/esm2015/lib/components/notifications/services/index.js +1 -1
  521. package/esm2015/lib/components/notifications/services/listener.service.js +1 -1
  522. package/esm2015/lib/components/notifications/services/notifications.service.js +1 -1
  523. package/esm2015/lib/components/notifications/services/params.service.js +1 -1
  524. package/esm2015/lib/components/notifications/services/response.service.js +1 -1
  525. package/esm2015/lib/components/notifications/services/socket.service.js +1 -1
  526. package/esm2015/lib/components/notifications/utilities/index.js +1 -1
  527. package/esm2015/lib/components/notifications/utilities/response.adapter.js +1 -1
  528. package/esm2015/lib/components/pagination/pagination/pagination.component.js +1 -1
  529. package/esm2015/lib/components/pagination/pagination.module.js +1 -1
  530. package/esm2015/lib/components/pdf-tron/directives/index.js +1 -1
  531. package/esm2015/lib/components/pdf-tron/directives/ndf-tron-extract-text.directive.js +1 -1
  532. package/esm2015/lib/components/pdf-tron/models/index.js +1 -1
  533. package/esm2015/lib/components/pdf-tron/models/tron.model.js +1 -1
  534. package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +1 -1
  535. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +1 -1
  536. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +1 -1
  537. package/esm2015/lib/components/pdf-tron/pdftron/silent-pdftron.service.js +1 -1
  538. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +2 -2
  539. package/esm2015/lib/components/permissions/permission.service.js +1 -1
  540. package/esm2015/lib/components/permissions/permissions/permissions.component.js +1 -1
  541. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +1 -1
  542. package/esm2015/lib/components/permissions/permissions.module.js +1 -1
  543. package/esm2015/lib/components/reports/chart-panel.js +1 -1
  544. package/esm2015/lib/components/reports/charts/chart.const.js +1 -1
  545. package/esm2015/lib/components/reports/charts/chart.token.js +1 -1
  546. package/esm2015/lib/components/reports/charts/charts.module.js +1 -1
  547. package/esm2015/lib/components/reports/charts/components/base-chart.component.js +1 -1
  548. package/esm2015/lib/components/reports/charts/components/chart.component.js +1 -1
  549. package/esm2015/lib/components/reports/charts/components/data-chart.component.js +1 -1
  550. package/esm2015/lib/components/reports/charts/components/index.js +1 -1
  551. package/esm2015/lib/components/reports/charts/defaults/bar.js +1 -1
  552. package/esm2015/lib/components/reports/charts/defaults/doughnut.js +1 -1
  553. package/esm2015/lib/components/reports/charts/defaults/index.js +1 -1
  554. package/esm2015/lib/components/reports/charts/defaults/line.js +1 -1
  555. package/esm2015/lib/components/reports/charts/defaults/pie.js +1 -1
  556. package/esm2015/lib/components/reports/charts/index.js +1 -1
  557. package/esm2015/lib/components/reports/charts/models/index.js +1 -1
  558. package/esm2015/lib/components/reports/charts/models/options.js +1 -1
  559. package/esm2015/lib/components/reports/charts/models/plugins-options.js +1 -1
  560. package/esm2015/lib/components/reports/charts/models/response.js +1 -1
  561. package/esm2015/lib/components/reports/charts/models/statistic-request-config.js +1 -1
  562. package/esm2015/lib/components/reports/charts/plugins/data-labels.js +1 -1
  563. package/esm2015/lib/components/reports/charts/plugins/doughnut-center-text.js +1 -1
  564. package/esm2015/lib/components/reports/charts/plugins/doughnut-empty-state.js +1 -1
  565. package/esm2015/lib/components/reports/charts/plugins/index.js +1 -1
  566. package/esm2015/lib/components/reports/charts/plugins/legend-margin.js +1 -1
  567. package/esm2015/lib/components/reports/charts/plugins/scrollable-legends.js +1 -1
  568. package/esm2015/lib/components/reports/charts/public-api.js +1 -1
  569. package/esm2015/lib/components/reports/charts/services/index.js +1 -1
  570. package/esm2015/lib/components/reports/charts/services/statistic.service.js +1 -1
  571. package/esm2015/lib/components/reports/charts/utility/colors.js +1 -1
  572. package/esm2015/lib/components/reports/charts/utility/common.js +1 -1
  573. package/esm2015/lib/components/reports/charts/utility/css.js +1 -1
  574. package/esm2015/lib/components/reports/charts/utility/index.js +1 -1
  575. package/esm2015/lib/components/reports/index.js +1 -1
  576. package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +1 -1
  577. package/esm2015/lib/components/reports/ndf-reports/base/base-custom-report.js +1 -1
  578. package/esm2015/lib/components/reports/ndf-reports/base/base-graph.report.js +1 -1
  579. package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +1 -1
  580. package/esm2015/lib/components/reports/ndf-reports/base/index.js +1 -1
  581. package/esm2015/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.js +1 -1
  582. package/esm2015/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.js +1 -1
  583. package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +1 -1
  584. package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.service.js +1 -1
  585. package/esm2015/lib/components/reports/ndf-reports/charts-components/index.js +1 -1
  586. package/esm2015/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.js +2 -2
  587. package/esm2015/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.js +2 -2
  588. package/esm2015/lib/components/reports/ndf-reports/components/_parts/graph-dialog/graph-dialog.component.js +2 -2
  589. package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +1 -1
  590. package/esm2015/lib/components/reports/ndf-reports/components/_parts/report-actions/report-actions.component.js +2 -2
  591. package/esm2015/lib/components/reports/ndf-reports/components/_parts/time-group-selector/time-group-selector.component.js +1 -1
  592. package/esm2015/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.js +2 -2
  593. package/esm2015/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.js +2 -2
  594. package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +1 -1
  595. package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +3 -3
  596. package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +2 -2
  597. package/esm2015/lib/components/reports/ndf-reports/components/index.js +1 -1
  598. package/esm2015/lib/components/reports/ndf-reports/constants/charts-types.js +1 -1
  599. package/esm2015/lib/components/reports/ndf-reports/constants/index.js +1 -1
  600. package/esm2015/lib/components/reports/ndf-reports/constants/time-group.js +1 -1
  601. package/esm2015/lib/components/reports/ndf-reports/containers/index.js +1 -1
  602. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +1 -1
  603. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +73 -44
  604. package/esm2015/lib/components/reports/ndf-reports/directives/empty-content-template.directive.js +28 -0
  605. package/esm2015/lib/components/reports/ndf-reports/directives/header-panel-template.directive.js +28 -0
  606. package/esm2015/lib/components/reports/ndf-reports/directives/index.js +3 -1
  607. package/esm2015/lib/components/reports/ndf-reports/directives/scrollable-div.directive.js +1 -1
  608. package/esm2015/lib/components/reports/ndf-reports/index.js +1 -1
  609. package/esm2015/lib/components/reports/ndf-reports/models/base.js +1 -1
  610. package/esm2015/lib/components/reports/ndf-reports/models/common.js +1 -1
  611. package/esm2015/lib/components/reports/ndf-reports/models/custom-definition.js +1 -1
  612. package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
  613. package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +1 -1
  614. package/esm2015/lib/components/reports/ndf-reports/models/digit.js +1 -1
  615. package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
  616. package/esm2015/lib/components/reports/ndf-reports/models/graph-definition.js +1 -1
  617. package/esm2015/lib/components/reports/ndf-reports/models/index.js +1 -1
  618. package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
  619. package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +1 -1
  620. package/esm2015/lib/components/reports/ndf-reports/models/report-data-source.js +1 -1
  621. package/esm2015/lib/components/reports/ndf-reports/models/report-response.model.js +1 -1
  622. package/esm2015/lib/components/reports/ndf-reports/models/request.js +1 -1
  623. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +31 -17
  624. package/esm2015/lib/components/reports/ndf-reports/options/doughnut.js +1 -1
  625. package/esm2015/lib/components/reports/ndf-reports/options/horizontal-bar.js +1 -1
  626. package/esm2015/lib/components/reports/ndf-reports/options/index.js +1 -1
  627. package/esm2015/lib/components/reports/ndf-reports/options/line.js +1 -1
  628. package/esm2015/lib/components/reports/ndf-reports/options/pie.js +1 -1
  629. package/esm2015/lib/components/reports/ndf-reports/options/vertical-bar.js +1 -1
  630. package/esm2015/lib/components/reports/ndf-reports/pipes/check-condition.pipe.js +20 -0
  631. package/esm2015/lib/components/reports/ndf-reports/public-api.js +6 -5
  632. package/esm2015/lib/components/reports/ndf-reports/services/base-chart-builder.service.js +1 -1
  633. package/esm2015/lib/components/reports/ndf-reports/services/chart-callbacks-register.services.js +1 -1
  634. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +1 -1
  635. package/esm2015/lib/components/reports/ndf-reports/services/chart-manager.service.js +1 -1
  636. package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +1 -1
  637. package/esm2015/lib/components/reports/ndf-reports/services/chart-theme.service.js +1 -1
  638. package/esm2015/lib/components/reports/ndf-reports/services/custom-reports-registry.service.js +1 -1
  639. package/esm2015/lib/components/reports/ndf-reports/services/digit-chart.service.js +1 -1
  640. package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +26 -31
  641. package/esm2015/lib/components/reports/ndf-reports/services/index.js +12 -11
  642. package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +20 -17
  643. package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
  644. package/esm2015/lib/components/reports/ndf-reports/services/report-configuration.service.js +1 -1
  645. package/esm2015/lib/components/reports/ndf-reports/services/report-transform.service.js +1 -1
  646. package/esm2015/lib/components/reports/ndf-reports/services/reports-data-transformers.service.js +1 -1
  647. package/esm2015/lib/components/reports/ndf-reports/services/reports-dialog.service.js +1 -1
  648. package/esm2015/lib/components/reports/ndf-reports/services/reports-hooks.service.js +89 -0
  649. package/esm2015/lib/components/reports/ndf-reports/services/reports-state.service.js +1 -1
  650. package/esm2015/lib/components/reports/ndf-reports/utilities/dataset-colors.js +1 -1
  651. package/esm2015/lib/components/reports/ndf-reports/utilities/index.js +1 -1
  652. package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +1 -1
  653. package/esm2015/lib/components/select/select/select.component.js +1 -1
  654. package/esm2015/lib/components/select/select.module.js +1 -1
  655. package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +1 -1
  656. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +1 -1
  657. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +1 -1
  658. package/esm2015/lib/components/skeleton/index.js +1 -1
  659. package/esm2015/lib/components/skeleton/skeleton.component.js +1 -1
  660. package/esm2015/lib/components/skeleton/skeleton.module.js +1 -1
  661. package/esm2015/lib/components/skeleton/table-skeleton.component.js +1 -1
  662. package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
  663. package/esm2015/lib/components/spell-checker-field/spell-checker-text-field/spell-checker-text-field.component.js +1 -1
  664. package/esm2015/lib/components/tables/dynamic-table/directives/empty-state.directive.js +1 -1
  665. package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +116 -102
  666. package/esm2015/lib/components/tables/dynamic-table/dynamic-table.module.js +1 -1
  667. package/esm2015/lib/components/tables/dynamic-table/index.js +1 -1
  668. package/esm2015/lib/components/tables/dynamic-table/public-api.js +3 -2
  669. package/esm2015/lib/components/tables/dynamic-table/services/dynamic-table.service.js +1 -1
  670. package/esm2015/lib/components/tables/dynamic-table/services/table-hooks.service.js +56 -0
  671. package/esm2015/lib/components/tables/index.js +1 -1
  672. package/esm2015/lib/components/tables/ndf-table/components/index.js +1 -1
  673. package/esm2015/lib/components/tables/ndf-table/components/mode-toggler/mode-toggler.component.js +1 -1
  674. package/esm2015/lib/components/tables/ndf-table/components/sorting-list/sorting-list.component.js +2 -2
  675. package/esm2015/lib/components/tables/ndf-table/components/table-columns-toggler/table-columns-toggler.component.js +2 -2
  676. package/esm2015/lib/components/tables/ndf-table/components/table-export/table-export.component.js +2 -2
  677. package/esm2015/lib/components/tables/ndf-table/components/text-search/text-search.component.js +1 -1
  678. package/esm2015/lib/components/tables/ndf-table/constants/index.js +1 -1
  679. package/esm2015/lib/components/tables/ndf-table/constants/sizes.js +1 -1
  680. package/esm2015/lib/components/tables/ndf-table/containers/index.js +1 -1
  681. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +1 -1
  682. package/esm2015/lib/components/tables/ndf-table/directives/actions.directive.js +1 -1
  683. package/esm2015/lib/components/tables/ndf-table/directives/filter-custom.directive.js +1 -1
  684. package/esm2015/lib/components/tables/ndf-table/directives/index.js +1 -1
  685. package/esm2015/lib/components/tables/ndf-table/directives/search.directive.js +1 -1
  686. package/esm2015/lib/components/tables/ndf-table/index.js +1 -1
  687. package/esm2015/lib/components/tables/ndf-table/models/index.js +1 -1
  688. package/esm2015/lib/components/tables/ndf-table/models/payload-types.js +1 -1
  689. package/esm2015/lib/components/tables/ndf-table/models/search.config.js +1 -1
  690. package/esm2015/lib/components/tables/ndf-table/models/table-column.js +1 -1
  691. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
  692. package/esm2015/lib/components/tables/ndf-table/models/table-mode.js +1 -1
  693. package/esm2015/lib/components/tables/ndf-table/models/table-options.js +1 -1
  694. package/esm2015/lib/components/tables/ndf-table/models/types.js +1 -1
  695. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +1 -1
  696. package/esm2015/lib/components/tables/ndf-table/public-api.js +1 -1
  697. package/esm2015/lib/components/tables/ndf-table/services/index.js +1 -1
  698. package/esm2015/lib/components/tables/ndf-table/services/ndf-table-configuration.service.js +1 -1
  699. package/esm2015/lib/components/tables/ndf-table/services/ndf-table.service.js +1 -1
  700. package/esm2015/lib/components/tables/public-api.js +1 -1
  701. package/esm2015/lib/components/tables/table/dynamic-column/dynamic-column.component.js +1 -1
  702. package/esm2015/lib/components/tables/table/dynamic-component.js +1 -1
  703. package/esm2015/lib/components/tables/table/index.js +1 -1
  704. package/esm2015/lib/components/tables/table/page-sizes-list/page-sizes-list.component.js +1 -1
  705. package/esm2015/lib/components/tables/table/public-api.js +1 -1
  706. package/esm2015/lib/components/tables/table/table/table.component.js +2 -2
  707. package/esm2015/lib/components/tables/table/table.module.js +1 -1
  708. package/esm2015/lib/components/toasts/components/notification-toast/notification-toast.component.js +1 -1
  709. package/esm2015/lib/components/toasts/index.js +1 -1
  710. package/esm2015/lib/components/toasts/public-api.js +1 -1
  711. package/esm2015/lib/components/toasts/toasts.module.js +1 -1
  712. package/esm2015/lib/components/user/user/user.component.js +1 -1
  713. package/esm2015/lib/components/user/user.module.js +1 -1
  714. package/esm2015/lib/components/users-card/users-card.component.js +2 -2
  715. package/esm2015/lib/components/users-card/users-card.module.js +1 -1
  716. package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +1 -1
  717. package/esm2015/lib/components/viewer-log/viewer-log.module.js +1 -1
  718. package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +1 -1
  719. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +1 -1
  720. package/esm2015/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.js +1 -1
  721. package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +1 -1
  722. package/esm2015/lib/components/vocabulary/vocabulary.module.js +1 -1
  723. package/esm2015/lib/configuration/app-config.service.js +1 -1
  724. package/esm2015/lib/configuration/helpers/app-initializer.js +1 -1
  725. package/esm2015/lib/core/adapters/adapter.service.js +1 -1
  726. package/esm2015/lib/core/core.module.js +1 -1
  727. package/esm2015/lib/core/enums/language.enum.js +1 -1
  728. package/esm2015/lib/core/env/env-manager.js +1 -1
  729. package/esm2015/lib/core/env/index.js +1 -1
  730. package/esm2015/lib/core/models/api-response.model.js +1 -1
  731. package/esm2015/lib/core/models/automation-response.model.js +1 -1
  732. package/esm2015/lib/core/models/base-response.models.js +1 -1
  733. package/esm2015/lib/core/models/component.model.js +1 -1
  734. package/esm2015/lib/core/models/index.js +1 -1
  735. package/esm2015/lib/core/services/callApi/call-api.service.js +1 -1
  736. package/esm2015/lib/core/services/column-renderer/column-renderer-registry.service.js +1 -1
  737. package/esm2015/lib/core/services/column-renderer/index.js +1 -1
  738. package/esm2015/lib/core/services/extension/action.extensions.js +1 -1
  739. package/esm2015/lib/core/services/extension/component-register.service.js +1 -1
  740. package/esm2015/lib/core/services/extension/extenion-utils.js +1 -1
  741. package/esm2015/lib/core/services/extension/extension-element.js +1 -1
  742. package/esm2015/lib/core/services/extension/extension-loader.service.js +1 -1
  743. package/esm2015/lib/core/services/extension/extension.service.js +1 -1
  744. package/esm2015/lib/core/services/index.js +1 -1
  745. package/esm2015/lib/core/services/initialization/initialization.service.js +1 -1
  746. package/esm2015/lib/core/services/localStorag/local-storag.service.js +1 -1
  747. package/esm2015/lib/core/services/ndf-transform.service.js +1 -1
  748. package/esm2015/lib/core/services/nuxeo/new-nuxeo-overide.js +1 -1
  749. package/esm2015/lib/core/services/nuxeo/nuxeo-override.js +1 -1
  750. package/esm2015/lib/core/services/nuxeo/nuxeo.service.js +1 -1
  751. package/esm2015/lib/core/services/roles/roles.service.js +1 -1
  752. package/esm2015/lib/core/services/translation/translate-loader.service.js +1 -1
  753. package/esm2015/lib/core/services/translation/translation.service.js +1 -1
  754. package/esm2015/lib/core/services/user/user-preferences.service.js +1 -1
  755. package/esm2015/lib/core/tokens/index.js +1 -1
  756. package/esm2015/lib/core/tokens/project.token.js +1 -1
  757. package/esm2015/lib/core/utilities/moment-date-adapter.js +1 -1
  758. package/esm2015/lib/core/utilities/utility.service.js +1 -1
  759. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +1 -1
  760. package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +1 -1
  761. package/esm2015/lib/directive/directive.module.js +1 -1
  762. package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +1 -1
  763. package/esm2015/lib/directive/permissions/evaluators.service.js +1 -1
  764. package/esm2015/lib/directive/permissions/permissions.directive.js +1 -1
  765. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +1 -1
  766. package/esm2015/lib/directive/rtl/set-rtl.directive.js +1 -1
  767. package/esm2015/lib/nuxeo-development-framework.component.js +1 -1
  768. package/esm2015/lib/nuxeo-development-framework.module.js +1 -1
  769. package/esm2015/lib/nuxeo-development-framework.service.js +1 -1
  770. package/esm2015/lib/pipes/file-size.pipe.js +1 -1
  771. package/esm2015/lib/pipes/hijri-date.pipe.js +1 -1
  772. package/esm2015/lib/pipes/localized-date.pipe.js +1 -1
  773. package/esm2015/lib/pipes/multi-value.pipe.js +1 -1
  774. package/esm2015/lib/pipes/pipes.module.js +1 -1
  775. package/esm2015/lib/pipes/secure-html.pipe.js +1 -1
  776. package/esm2015/lib/pipes/secure.pipe.js +1 -1
  777. package/esm2015/lib/pipes/time-ago.pipe.js +1 -1
  778. package/esm2015/lib/shared/components/base/base-column.component.js +1 -1
  779. package/esm2015/lib/shared/components/base/base-dialog.component.js +1 -1
  780. package/esm2015/lib/shared/components/base/base-selector.component.js +1 -1
  781. package/esm2015/lib/shared/components/base/base.component.js +1 -1
  782. package/esm2015/lib/shared/components/base/destroy.subject.js +1 -1
  783. package/esm2015/lib/shared/components/base/index.js +1 -1
  784. package/esm2015/lib/shared/components/button/button.component.js +1 -1
  785. package/esm2015/lib/shared/components/general-notification-popup/general-notification-popup.component.js +1 -1
  786. package/esm2015/lib/shared/components/index.js +1 -1
  787. package/esm2015/lib/shared/components/item-list/item-list.component.js +2 -2
  788. package/esm2015/lib/shared/components/no-data/no-data.component.js +1 -1
  789. package/esm2015/lib/shared/components/nuxeo-dialog/confirmation/ndf-confirmation-dialog.component.js +1 -1
  790. package/esm2015/lib/shared/components/nuxeo-dialog/index.js +1 -1
  791. package/esm2015/lib/shared/components/nuxeo-dialog/models/confirm-options.model.js +1 -1
  792. package/esm2015/lib/shared/components/nuxeo-dialog/models/dialog-option.model.js +1 -1
  793. package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo-dialog.module.js +1 -1
  794. package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo.dialog.js +2 -2
  795. package/esm2015/lib/shared/components/nuxeo-dialog/services/nuxeo-dialog.service.js +1 -1
  796. package/esm2015/lib/shared/components/read-more/read-more.component.js +1 -1
  797. package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +1 -1
  798. package/esm2015/lib/shared/components/spinner/spinner.component.js +1 -1
  799. package/esm2015/lib/shared/components/user-card/user-card.component.js +1 -1
  800. package/esm2015/lib/shared/constants/editor-config-type.js +1 -1
  801. package/esm2015/lib/shared/constants/index.js +1 -1
  802. package/esm2015/lib/shared/directives/copy-to-clipboard.directive.js +1 -1
  803. package/esm2015/lib/shared/directives/element-height.directive.js +1 -1
  804. package/esm2015/lib/shared/directives/fluid-height.directive.js +1 -1
  805. package/esm2015/lib/shared/directives/index.js +1 -1
  806. package/esm2015/lib/shared/evaluator/evaluator.js +1 -1
  807. package/esm2015/lib/shared/evaluator/index.js +1 -1
  808. package/esm2015/lib/shared/evaluator/types.js +1 -1
  809. package/esm2015/lib/shared/index.js +1 -1
  810. package/esm2015/lib/shared/libraryShared.module.js +1 -1
  811. package/esm2015/lib/shared/models/index.js +1 -1
  812. package/esm2015/lib/shared/models/mapper/index.js +1 -1
  813. package/esm2015/lib/shared/models/mapper/nuxeo-mapper.js +1 -1
  814. package/esm2015/lib/shared/models/ndf-request.model.js +1 -1
  815. package/esm2015/lib/shared/models/nuxeo-response.model.js +1 -1
  816. package/esm2015/lib/shared/models/task.model.js +1 -1
  817. package/esm2015/lib/shared/models/type-helpers.js +1 -1
  818. package/esm2015/lib/shared/services/base/base-editor-config.service.js +1 -1
  819. package/esm2015/lib/shared/services/base/base.service.js +9 -10
  820. package/esm2015/lib/shared/services/base/cache-base.service.js +1 -1
  821. package/esm2015/lib/shared/services/base/config/default-ttl-config.js +1 -1
  822. package/esm2015/lib/shared/services/base/config/index.js +1 -1
  823. package/esm2015/lib/shared/services/base/constants/default-cache-options.js +1 -1
  824. package/esm2015/lib/shared/services/base/constants/index.js +1 -1
  825. package/esm2015/lib/shared/services/base/http-base.service.js +1 -1
  826. package/esm2015/lib/shared/services/base/index.js +1 -1
  827. package/esm2015/lib/shared/services/base/models/cache-info-model.js +1 -1
  828. package/esm2015/lib/shared/services/base/models/http-options.model.js +1 -1
  829. package/esm2015/lib/shared/services/base/models/index.js +1 -1
  830. package/esm2015/lib/shared/services/base/models/operation-options.model.js +1 -1
  831. package/esm2015/lib/shared/services/base/models/query-options.model.js +1 -1
  832. package/esm2015/lib/shared/services/base/models/request-options.model.js +1 -1
  833. package/esm2015/lib/shared/services/base/override-token.service.js +1 -1
  834. package/esm2015/lib/shared/services/index.js +1 -1
  835. package/esm2015/lib/shared-services/apis-errors-messages.service.js +1 -1
  836. package/esm2015/lib/shared-services/dialog-mangment.service.js +1 -1
  837. package/esm2015/lib/shared-services/dynamic-form.service.js +1 -1
  838. package/esm2015/lib/shared-services/file-manager.adapter.js +1 -1
  839. package/esm2015/lib/shared-services/file-manager.service.js +1 -1
  840. package/esm2015/lib/shared-services/global-admin.service.js +1 -1
  841. package/esm2015/lib/shared-services/global-pdftron.service.js +1 -1
  842. package/esm2015/lib/shared-services/mainfolder.service.js +1 -1
  843. package/esm2015/lib/shared-services/publishing-document.service.js +1 -1
  844. package/esm2015/lib/shared-services/recently-viewed.service.js +1 -1
  845. package/esm2015/lib/shared-services/shared-docs.service.js +1 -1
  846. package/esm2015/lib/shared-services/shared-services.module.js +1 -1
  847. package/esm2015/lib/shared-services/upload-file.service.js +1 -1
  848. package/esm2015/lib/shared-services/upload-managment.service.js +1 -1
  849. package/esm2015/lib/shared-services/user.service.js +1 -1
  850. package/esm2015/nuxeo-development-framework.js +1 -1
  851. package/esm2015/public-api.js +1 -1
  852. package/fesm2015/nuxeo-development-framework.js +1625 -1369
  853. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  854. package/lib/components/diagrams/components/custom-connection.component.d.ts +1 -1
  855. package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +1 -1
  856. package/lib/components/reports/charts/components/base-chart.component.d.ts +1 -1
  857. package/lib/components/reports/ndf-reports/base/base-chart.d.ts +1 -1
  858. package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +2 -18
  859. package/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.d.ts +1 -1
  860. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +14 -6
  861. package/lib/components/reports/ndf-reports/directives/empty-content-template.directive.d.ts +9 -0
  862. package/lib/components/reports/ndf-reports/directives/header-panel-template.directive.d.ts +9 -0
  863. package/lib/components/reports/ndf-reports/directives/index.d.ts +2 -0
  864. package/lib/components/reports/ndf-reports/models/common.d.ts +9 -1
  865. package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +4 -5
  866. package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +4 -1
  867. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +29 -26
  868. package/lib/components/reports/ndf-reports/pipes/check-condition.pipe.d.ts +8 -0
  869. package/lib/components/reports/ndf-reports/public-api.d.ts +5 -4
  870. package/lib/components/reports/ndf-reports/services/base-chart-builder.service.d.ts +14 -14
  871. package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +4 -2
  872. package/lib/components/reports/ndf-reports/services/index.d.ts +11 -10
  873. package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts +15 -6
  874. package/lib/components/reports/ndf-reports/services/reports-hooks.service.d.ts +24 -0
  875. package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +23 -9
  876. package/lib/components/tables/dynamic-table/public-api.d.ts +2 -1
  877. package/lib/components/tables/dynamic-table/services/table-hooks.service.d.ts +13 -0
  878. package/lib/components/tables/ndf-table/components/table-export/table-export.component.d.ts +1 -1
  879. package/lib/components/tables/ndf-table/models/table-options.d.ts +1 -1
  880. package/lib/shared/services/base/base.service.d.ts +4 -2
  881. package/package.json +1 -1
@@ -1,37 +1,40 @@
1
1
  import { __rest } from "tslib";
2
- import { animate, state, style, transition, trigger } from '@angular/animations';
3
- import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';
2
+ import { animate, state, style, transition, trigger, } from '@angular/animations';
3
+ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
4
4
  import _ from 'lodash';
5
+ import { BehaviorSubject, combineLatest, forkJoin, from, fromEvent, of, ReplaySubject, } from 'rxjs';
6
+ import { filter, finalize, map, switchMap, takeUntil, tap, } from 'rxjs/operators';
5
7
  import { DestroySubject, FluidHeightDirective } from '../../../../../shared';
6
- import { BehaviorSubject, combineLatest, forkJoin, fromEvent, of, ReplaySubject } from 'rxjs';
7
- import { distinctUntilChanged, filter, finalize, map, switchMap, takeUntil, tap } from 'rxjs/operators';
8
- import { CUSTOM_TEMPLATE } from '../../../../ndf-filters';
9
- import { mapToNdfTableConfig, prepareNdfTableFilters } from '../../utilities';
10
8
  import { NDF_EDITOR_TYPE } from '../../../../ndf-config-editor/constants';
9
+ import { CUSTOM_TEMPLATE, } from '../../../../ndf-filters';
10
+ import { EMPTY_CONTENT_TEMPLATE, HEADER_PANEL_TEMPLATE, } from '../../directives';
11
+ import { mapToNdfTableConfig, prepareNdfTableFilters } from '../../utilities';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "@ngx-translate/core";
13
14
  import * as i2 from "../../../../ndf-filters";
14
15
  import * as i3 from "../../services";
15
16
  import * as i4 from "@angular/router";
16
- import * as i5 from "../../../../ndf-filters/containers/filters-panel/filters-panel.component";
17
- import * as i6 from "@angular/material/button";
18
- import * as i7 from "@angular/material/icon";
19
- import * as i8 from "../../../../ndf-config-editor/public/editor-navigate-button";
20
- import * as i9 from "@angular/material/progress-spinner";
17
+ import * as i5 from "@angular/material/progress-spinner";
18
+ import * as i6 from "../../../../ndf-filters/containers/filters-panel/filters-panel.component";
19
+ import * as i7 from "@angular/material/button";
20
+ import * as i8 from "@angular/material/icon";
21
+ import * as i9 from "../../../../ndf-config-editor/public/editor-navigate-button";
21
22
  import * as i10 from "../ndf-report/ndf-report.component";
22
23
  import * as i11 from "../../../../tables/ndf-table/containers/ndf-table/ndf-table.component";
23
- import * as i12 from "@angular/common";
24
- import * as i13 from "../../../../../shared/directives/fluid-height.directive";
25
- import * as i14 from "@angular/cdk/bidi";
24
+ import * as i12 from "../../../../../shared/directives/fluid-height.directive";
25
+ import * as i13 from "@angular/cdk/bidi";
26
+ import * as i14 from "@angular/common";
26
27
  import * as i15 from "../../directives/scrollable-div.directive";
27
28
  import * as i16 from "../../../../tables/ndf-table/directives/search.directive";
28
29
  export const slideAnimation = trigger('slideInOut', [
29
- state('closed', style({ transform: 'translateX(var(--ndf-reports-details-translateX, -100%))' })),
30
+ state('closed', style({
31
+ transform: 'translateX(var(--ndf-reports-details-translateX, -100%))',
32
+ })),
30
33
  state('open', style({ transform: 'translateX(0)' })),
31
- transition('closed <=> open', animate('200ms ease-out'))
34
+ transition('closed <=> open', animate('200ms ease-out')),
32
35
  ]);
33
36
  export class NdfReportsComponent extends DestroySubject {
34
- constructor(_translateService, _filtersMapper, _ndfReportsService, _chartHelperService, _transformService, _cdr, _filterQueryService, _stateService, _configurationService, _router, _ngZone) {
37
+ constructor(_translateService, _filtersMapper, _ndfReportsService, _chartHelperService, _transformService, _cdr, _filterQueryService, _stateService, _configurationService, _router, _ngZone, _reportsHooksService) {
35
38
  super();
36
39
  this._translateService = _translateService;
37
40
  this._filtersMapper = _filtersMapper;
@@ -44,12 +47,12 @@ export class NdfReportsComponent extends DestroySubject {
44
47
  this._configurationService = _configurationService;
45
48
  this._router = _router;
46
49
  this._ngZone = _ngZone;
50
+ this._reportsHooksService = _reportsHooksService;
47
51
  this._isHeightUpdated = false;
48
52
  this.direction = 'rtl';
49
53
  this.isPanelOpened = false;
50
54
  this.isLoadingResult = false;
51
55
  this.isExpanded = false;
52
- // activeQuery: Record<string, any> = {};
53
56
  this._activeQuerySub = new BehaviorSubject(null);
54
57
  this._activeFiltersQuerySub = new ReplaySubject();
55
58
  this.activeFiltersQuery$ = this._activeFiltersQuerySub.asObservable();
@@ -57,6 +60,7 @@ export class NdfReportsComponent extends DestroySubject {
57
60
  this.reportConfig$ = this._configSubject.asObservable();
58
61
  this._filtersCriteriaSubject = new BehaviorSubject(null);
59
62
  this.filtersParams$ = this._filtersCriteriaSubject.asObservable();
63
+ this._triggerFiltersSub = new BehaviorSubject(true);
60
64
  this._detailsFiltersSubject = new BehaviorSubject(null);
61
65
  this.detailsFiltersParams$ = this._detailsFiltersSubject.asObservable();
62
66
  this._reportDetailsSubject = new BehaviorSubject(null);
@@ -70,7 +74,24 @@ export class NdfReportsComponent extends DestroySubject {
70
74
  this.trackByFn = (_, report) => {
71
75
  return report.id;
72
76
  };
73
- this._translateService.onLangChange.pipe(takeUntil(this.destroy$)).subscribe((res) => {
77
+ this.triggerUpdate = () => {
78
+ this._triggerFiltersSub.next(true);
79
+ };
80
+ this.resetFilters = () => {
81
+ this._resetQueryAndFiltersCriteria();
82
+ };
83
+ this.filterChanged = (criteria) => {
84
+ if (_.isEqual(this.activeQuery, criteria)) {
85
+ return;
86
+ }
87
+ this.onQueryChange.emit(criteria);
88
+ this._updateActiveQuery(criteria);
89
+ const _date = this._prepareMappedQuery(criteria, this.filtersConfig.mode);
90
+ this._filtersCriteriaSubject.next(_date);
91
+ };
92
+ this._translateService.onLangChange
93
+ .pipe(takeUntil(this.destroy$))
94
+ .subscribe((res) => {
74
95
  this.direction = res.lang === 'ar' ? 'rtl' : 'ltr';
75
96
  });
76
97
  }
@@ -99,6 +120,12 @@ export class NdfReportsComponent extends DestroySubject {
99
120
  this.reportsData$ = this._prepareReports();
100
121
  this._handleKeyboardEvent();
101
122
  }
123
+ callLoadCondition() {
124
+ if (this.loadCondition && typeof this.loadCondition == 'function') {
125
+ return this.loadCondition(this.activeQuery);
126
+ }
127
+ return true;
128
+ }
102
129
  ngOnChanges(changes) {
103
130
  var _a, _b;
104
131
  const reportsKey = (_a = changes.reportsKey) === null || _a === void 0 ? void 0 : _a.currentValue;
@@ -142,15 +169,6 @@ export class NdfReportsComponent extends DestroySubject {
142
169
  printAll() {
143
170
  window.print();
144
171
  }
145
- filterChanged(criteria) {
146
- if (_.isEqual(this.activeQuery, criteria)) {
147
- return;
148
- }
149
- this.onQueryChange.emit(criteria);
150
- this._updateActiveQuery(criteria);
151
- const _date = this._prepareMappedQuery(criteria, this.filtersConfig.mode);
152
- this._filtersCriteriaSubject.next(_date);
153
- }
154
172
  onContentScroll(isScrolling) {
155
173
  this._stateService.onContentScroll(isScrolling);
156
174
  if (isScrolling && !this._isHeightUpdated) {
@@ -178,7 +196,9 @@ export class NdfReportsComponent extends DestroySubject {
178
196
  return data;
179
197
  }
180
198
  return _.merge(data, {
181
- options: { filters: prepareNdfTableFilters((_d = data === null || data === void 0 ? void 0 : data.options) === null || _d === void 0 ? void 0 : _d.filters, this.config, data) }
199
+ options: {
200
+ filters: prepareNdfTableFilters((_d = data === null || data === void 0 ? void 0 : data.options) === null || _d === void 0 ? void 0 : _d.filters, this.config, data),
201
+ },
182
202
  });
183
203
  }))
184
204
  : of(mapToNdfTableConfig(this.config, reportConfig.details));
@@ -186,7 +206,7 @@ export class NdfReportsComponent extends DestroySubject {
186
206
  queueMicrotask(() => {
187
207
  this._reportDetailsSubject.next({
188
208
  config,
189
- label: reportConfig.label
209
+ label: reportConfig.label,
190
210
  });
191
211
  });
192
212
  });
@@ -213,8 +233,9 @@ export class NdfReportsComponent extends DestroySubject {
213
233
  _prepareReports() {
214
234
  this.isLoadingResult = true;
215
235
  return combineLatest([
216
- this.filtersParams$.pipe(distinctUntilChanged((a, b) => _.isEqual(a, b))),
217
- this.reportConfig$
236
+ this.filtersParams$,
237
+ this.reportConfig$,
238
+ this._triggerFiltersSub,
218
239
  ]).pipe(tap(() => {
219
240
  this.isLoadingResult = true;
220
241
  this._cdr.detectChanges();
@@ -227,7 +248,7 @@ export class NdfReportsComponent extends DestroySubject {
227
248
  if (!criteria && !!config.activeQuery) {
228
249
  _payload = this.prepareCriteriaPayload(config.activeQuery);
229
250
  }
230
- const data$ = this._ndfReportsService.getData(request, _payload).pipe(switchMap((reports) => {
251
+ const data$ = from(this._reportsHooksService.executeBeforeSubmit(Object.assign(Object.assign({}, this._ndfReportsService.prepareRequest(request, criteria)), { request }))).pipe(switchMap((res) => this._ndfReportsService.getData(request, res)), switchMap((reports) => {
231
252
  return this._transformService.prepareData(reports, config);
232
253
  }), finalize(() => {
233
254
  this.isLoadingResult = false;
@@ -238,7 +259,7 @@ export class NdfReportsComponent extends DestroySubject {
238
259
  this._prepareAggregations(response === null || response === void 0 ? void 0 : response.aggregations);
239
260
  return {
240
261
  config,
241
- response
262
+ response,
242
263
  };
243
264
  }));
244
265
  }
@@ -255,17 +276,17 @@ export class NdfReportsComponent extends DestroySubject {
255
276
  return mode == 'payload'
256
277
  ? this.prepareCriteriaPayload(criteria)
257
278
  : {
258
- params: this._stringifyValues(criteria)
279
+ params: this._stringifyValues(criteria),
259
280
  };
260
281
  }
261
282
  _updateActiveQuery(query) {
262
283
  this._activeQuerySub.next({
263
284
  previous: this.activeQuery,
264
- current: query
285
+ current: query,
265
286
  });
266
287
  this._activeFiltersQuerySub.next({
267
288
  query,
268
- emitEvent: false
289
+ emitEvent: false,
269
290
  });
270
291
  }
271
292
  _prepareAggregations(aggregations) {
@@ -338,7 +359,7 @@ export class NdfReportsComponent extends DestroySubject {
338
359
  else if (!this.activeQuery || Object.keys(this.activeQuery).length == 0) {
339
360
  this._resetQueryAndFiltersCriteria();
340
361
  }
341
- this.isPanelOpened = false;
362
+ this.isPanelOpened = !!(config === null || config === void 0 ? void 0 : config.filters.visible);
342
363
  this.isDetailsOpened = false;
343
364
  this._reportDetailsSubject.next(null);
344
365
  }
@@ -347,8 +368,8 @@ export class NdfReportsComponent extends DestroySubject {
347
368
  this._filtersCriteriaSubject.next(null);
348
369
  }
349
370
  }
350
- NdfReportsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, deps: [{ token: i1.TranslateService }, { token: i2.FiltersMapperService }, { token: i3.NdfReportsService }, { token: i3.ChartManagerService }, { token: i3.ReportTransformService }, { token: i0.ChangeDetectorRef }, { token: i2.FilterQueryService }, { token: i3.ReportsStateService }, { token: i3.ReportConfigurationService }, { token: i4.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
351
- NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, queries: [{ propertyName: "filterCustomTemplate", first: true, predicate: CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"reportsData$ | async as reports\"\r\n\tclass=\"ndf-reports__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n>\r\n\t<div class=\"ndf-reports__panel print:hidden\" *ngIf=\"!!filtersConfig?.fields?.length\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig?.fields\"\r\n\t\t\t[aggregations]=\"aggregations\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\tclass=\"ndf-reports__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\r\n\t<div class=\"ndf-reports__content\" (scrolled)=\"onContentScroll($event)\">\r\n\t\t<div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<app-editor-button\r\n\t\t\t\t*ngIf=\"jsonEditorEnabled && reportsKey\"\r\n\t\t\t\t[key]=\"reportsKey\"\r\n\t\t\t\t[type]=\"editorType\"\r\n\t\t\t></app-editor-button>\r\n\t\t\t<button mat-stroked-button *ngIf=\"config?.options?.print\" class=\"print-button\" (click)=\"printAll()\">\r\n\t\t\t\t<mat-icon> print</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<mat-spinner *ngIf=\"isLoadingResult\" class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n\r\n\t\t<div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n\t\t\t<app-ndf-report\r\n\t\t\t\t*ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n\t\t\t\t[config]=\"config\"\r\n\t\t\t\t[data]=\"reports?.response\"\r\n\t\t\t\t[criteria]=\"filtersParams$ | async\"\r\n\t\t\t\t[direction]=\"direction\"\r\n\t\t\t\t[attr.data-width]=\"config?.layout?.width || 4\"\r\n\t\t\t\t[attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n\t\t\t\t[attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n\t\t\t\t[attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n\t\t\t\t[class.wide]=\"config?.layout?.width >= 6\"\r\n [style]=\"config?.layout?.style\"\r\n\t\t\t\tclass=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n\t\t\t\t(onNavigate)=\"onNavigate($event)\"\r\n\t\t\t\t(onOpen)=\"openReportDetails($event, config)\"\r\n\t\t\t></app-ndf-report>\r\n\t\t</div>\r\n\t</div>\r\n\t<div\r\n\t\tclass=\"ndf-reports__details print:hidden\"\r\n\t\t[class.opened]=\"showDetails\"\r\n\t\t[@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n\t\t(@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n\t>\r\n\t\t<app-ndf-table\r\n\t\t\t*ngIf=\"reportDetails$ | async as report\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\t[customCriteria]=\"detailsFiltersParams$ | async\"\r\n\t\t>\r\n\t\t\t<ng-template searchTableTemplate let-toggle=\"togglePanel\">\r\n\t\t\t\t<div class=\"ndf-reports__details__header flex gap-2\" >\r\n\t\t\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"toggle()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-stroked-button class=\"close-button\" (click)=\"closeDetailsPanel()\">\r\n\t\t\t\t\t\t<mat-icon> close</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h3>\r\n\t\t\t\t\t{{ report.label | translate }}\r\n\t\t\t\t</h3>\r\n\t\t\t</ng-template>\r\n\t\t</app-ndf-table>\r\n\t</div>\r\n</div>\r\n\r\n", styles: [":host{--table-dev-height: var(--ndf-reports-table-dev-height, auto);--report-height: var(--ndf-reports-report-height, 430px);--cp-height: var(--report-height);padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}@media print{:host{--report-height: auto;--cp-print-min-height: 80mm;padding:0}}.ndf-reports *{box-sizing:border-box;min-height:0}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc(var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-pis: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-pis, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible;width:100%;margin:0;padding:0;page-break-after:avoid}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 10mm;--reports-grid-margin-top: 0;padding:0;margin:0;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: i5.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i9.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i10.NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: i11.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "styleClass", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i14.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i15.ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i12.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
371
+ NdfReportsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, deps: [{ token: i1.TranslateService }, { token: i2.FiltersMapperService }, { token: i3.NdfReportsService }, { token: i3.ChartManagerService }, { token: i3.ReportTransformService }, { token: i0.ChangeDetectorRef }, { token: i2.FilterQueryService }, { token: i3.ReportsStateService }, { token: i3.ReportConfigurationService }, { token: i4.Router }, { token: i0.NgZone }, { token: i3.ReportsHooksService }], target: i0.ɵɵFactoryTarget.Component });
372
+ NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", loadCondition: "loadCondition", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, queries: [{ propertyName: "filterCustomTemplate", first: true, predicate: CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "headerPanelTemplate", first: true, predicate: HEADER_PANEL_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "emptyContentTemplate", first: true, predicate: EMPTY_CONTENT_TEMPLATE, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"ndf-reports__container\"\r\n [class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n [dir]=\"direction\"\r\n ndfFluidHeight\r\n>\r\n <div\r\n class=\"absolute flex justify-center items-center loading-result\"\r\n *ngIf=\"isLoadingResult && callLoadCondition()\"\r\n >\r\n <mat-spinner class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n </div>\r\n\r\n <div class=\"ndf-reports__panel print:hidden\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerPanelTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: aggregations,\r\n filterChanged: filterChanged,\r\n activeQuery: activeQuery,\r\n triggerUpdate: triggerUpdate,\r\n reset: resetFilters,\r\n config: config\r\n }\"\r\n ></ng-container>\r\n\r\n <app-filters-panel\r\n *ngIf=\"!!filtersConfig?.fields?.length && callLoadCondition()\"\r\n [fields]=\"filtersConfig?.fields\"\r\n [aggregations]=\"aggregations\"\r\n (filterChanged)=\"filterChanged($event)\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n class=\"ndf-reports__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n ></app-filters-panel>\r\n </div>\r\n\r\n <ng-container *ngIf=\"callLoadCondition(); else emptyContent\">\r\n <div\r\n class=\"ndf-reports__content\"\r\n (scrolled)=\"onContentScroll($event)\"\r\n *ngIf=\"reportsData$ | async as reports\"\r\n >\r\n <div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n <button\r\n mat-stroked-button\r\n class=\"toggle-button\"\r\n (click)=\"togglePanel()\"\r\n >\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <app-editor-button\r\n *ngIf=\"jsonEditorEnabled && reportsKey\"\r\n [key]=\"reportsKey\"\r\n [type]=\"editorType\"\r\n ></app-editor-button>\r\n <button\r\n mat-stroked-button\r\n *ngIf=\"config?.options?.print\"\r\n class=\"print-button\"\r\n (click)=\"printAll()\"\r\n >\r\n <mat-icon> print</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n <app-ndf-report\r\n *ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n [config]=\"config\"\r\n [data]=\"reports?.response\"\r\n [criteria]=\"filtersParams$ | async\"\r\n [direction]=\"direction\"\r\n [attr.data-width]=\"config?.layout?.width || 4\"\r\n [attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n [attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n [attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n [class.wide]=\"config?.layout?.width >= 6\"\r\n [style]=\"config?.layout?.style\"\r\n class=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n (onNavigate)=\"onNavigate($event)\"\r\n (onOpen)=\"openReportDetails($event, config)\"\r\n ></app-ndf-report>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n class=\"ndf-reports__details print:hidden\"\r\n [class.opened]=\"showDetails\"\r\n [@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n (@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n >\r\n <app-ndf-table\r\n *ngIf=\"reportDetails$ | async as report\"\r\n [config]=\"report.config\"\r\n [activeQuery]=\"activeFiltersQuery$ | async\"\r\n [customCriteria]=\"detailsFiltersParams$ | async\"\r\n >\r\n <ng-template searchTableTemplate let-toggle=\"togglePanel\">\r\n <div class=\"ndf-reports__details__header flex gap-2\">\r\n <button mat-stroked-button class=\"toggle-button\" (click)=\"toggle()\">\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <button\r\n mat-stroked-button\r\n class=\"close-button\"\r\n (click)=\"closeDetailsPanel()\"\r\n >\r\n <mat-icon> close</mat-icon>\r\n </button>\r\n </div>\r\n <h3>\r\n {{ report.label | translate }}\r\n </h3>\r\n </ng-template>\r\n </app-ndf-table>\r\n </div>\r\n</div>\r\n\r\n<ng-template #emptyContent>\r\n <div class=\"ndf-reports__content flex items-center flex-grow-1\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"emptyContentTemplate || defaultEmptyContent\"\r\n ></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyContent>\r\n <div class=\"no-data mt-26\">\r\n {{ 'noData' | translate }}\r\n </div>\r\n</ng-template>\r\n", styles: [":host{--table-dev-height: var(--ndf-reports-table-dev-height, auto);--report-height: var(--ndf-reports-report-height, 430px);--cp-height: var(--report-height);padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}@media print{:host{--report-height: auto;--cp-print-min-height: 80mm;padding:0}}.loading-result{background:var(--loading-result-background, rgba(255, 255, 255, .5));-webkit-backdrop-filter:var(--loading-result-filter, blur(3px));backdrop-filter:var(--loading-result-filter, blur(3px));width:100%;height:100%;z-index:3}.ndf-reports *{box-sizing:border-box;min-height:0}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc( var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5) ));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-pis: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-pis, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible;width:100%;margin:0;padding:0;page-break-after:avoid}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 10mm;--reports-grid-margin-top: 0;padding:0;margin:0;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i10.NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: i11.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "styleClass", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i12.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i13.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i14.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
352
373
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, decorators: [{
353
374
  type: Component,
354
375
  args: [{
@@ -357,11 +378,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
357
378
  styleUrls: ['./ndf-reports.component.scss'],
358
379
  host: {
359
380
  class: 'ndf-reports',
360
- '[dir]': 'direction'
381
+ '[dir]': 'direction',
361
382
  },
362
- animations: [slideAnimation]
383
+ animations: [slideAnimation],
363
384
  }]
364
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.FiltersMapperService }, { type: i3.NdfReportsService }, { type: i3.ChartManagerService }, { type: i3.ReportTransformService }, { type: i0.ChangeDetectorRef }, { type: i2.FilterQueryService }, { type: i3.ReportsStateService }, { type: i3.ReportConfigurationService }, { type: i4.Router }, { type: i0.NgZone }]; }, propDecorators: { fluidDirective: [{
385
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.FiltersMapperService }, { type: i3.NdfReportsService }, { type: i3.ChartManagerService }, { type: i3.ReportTransformService }, { type: i0.ChangeDetectorRef }, { type: i2.FilterQueryService }, { type: i3.ReportsStateService }, { type: i3.ReportConfigurationService }, { type: i4.Router }, { type: i0.NgZone }, { type: i3.ReportsHooksService }]; }, propDecorators: { fluidDirective: [{
365
386
  type: ViewChild,
366
387
  args: [FluidHeightDirective]
367
388
  }], jsonEditorEnabled: [{
@@ -370,6 +391,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
370
391
  type: Input
371
392
  }], navigateRoute: [{
372
393
  type: Input
394
+ }], loadCondition: [{
395
+ type: Input
373
396
  }], config: [{
374
397
  type: Input
375
398
  }], onQueryChange: [{
@@ -377,5 +400,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
377
400
  }], filterCustomTemplate: [{
378
401
  type: ContentChild,
379
402
  args: [CUSTOM_TEMPLATE, { read: TemplateRef }]
403
+ }], headerPanelTemplate: [{
404
+ type: ContentChild,
405
+ args: [HEADER_PANEL_TEMPLATE, { read: TemplateRef }]
406
+ }], emptyContentTemplate: [{
407
+ type: ContentChild,
408
+ args: [EMPTY_CONTENT_TEMPLATE, { read: TemplateRef }]
380
409
  }] } });
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXJlcG9ydHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9jb250YWluZXJzL25kZi1yZXBvcnRzL25kZi1yZXBvcnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvY29udGFpbmVycy9uZGYtcmVwb3J0cy9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakcsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4RyxPQUFPLEVBRU4sZUFBZSxFQUtmLE1BQU0seUJBQXlC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aW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0Tmdab25lLFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmLFxyXG5cdFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IERlc3Ryb3lTdWJqZWN0LCBGbHVpZEhlaWdodERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZmluYWxpemUsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE5kZlRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vdGFibGVzJztcclxuaW1wb3J0IHtcclxuXHRBZ2dyZWdhdGlvblJlc3BvbnNlLFxyXG5cdENVU1RPTV9URU1QTEFURSxcclxuXHRGaWVsZENvbmZpZ01vZGVsLFxyXG5cdEZpbHRlclF1ZXJ5U2VydmljZSxcclxuXHRGaWx0ZXJzTWFwcGVyU2VydmljZSxcclxuXHRGb3JtUXVlcnlNb2RlbFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFNb2RlbCwgTmRmUmVwb3J0c0NvbmZpZywgUmVwb3J0Q29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG5cdENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcblx0TmRmUmVwb3J0c1NlcnZpY2UsXHJcblx0UmVwb3J0Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcblx0UmVwb3J0c1N0YXRlU2VydmljZSxcclxuXHRSZXBvcnRUcmFuc2Zvcm1TZXJ2aWNlXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBtYXBUb05kZlRhYmxlQ29uZmlnLCBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgTkRGX0VESVRPUl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWNvbmZpZy1lZGl0b3IvY29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBjb25zdCBzbGlkZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcblx0c3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCh2YXIoLS1uZGYtcmVwb3J0cy1kZXRhaWxzLXRyYW5zbGF0ZVgsIC0xMDAlKSknIH0pKSxcclxuXHRzdGF0ZSgnb3BlbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxyXG5cdHRyYW5zaXRpb24oJ2Nsb3NlZCA8PT4gb3BlbicsIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JykpXHJcbl0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtbmRmLXJlcG9ydHMnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbmRmLXJlcG9ydHMuY29tcG9uZW50LnNjc3MnXSxcclxuXHRob3N0OiB7XHJcblx0XHRjbGFzczogJ25kZi1yZXBvcnRzJyxcclxuXHRcdCdbZGlyXSc6ICdkaXJlY3Rpb24nXHJcblx0fSxcclxuXHRhbmltYXRpb25zOiBbc2xpZGVBbmltYXRpb25dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZGZSZXBvcnRzQ29tcG9uZW50IGV4dGVuZHMgRGVzdHJveVN1YmplY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHRAVmlld0NoaWxkKEZsdWlkSGVpZ2h0RGlyZWN0aXZlKSBmbHVpZERpcmVjdGl2ZTogRmx1aWRIZWlnaHREaXJlY3RpdmU7XHJcblx0X2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG5cdGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblx0aXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG5cdGlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG5cdHJlcG9ydHNEYXRhJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cdGlzRXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcblx0Ly8gYWN0aXZlUXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUXVlcnlTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuXHRcdHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0Y3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHR9PihudWxsKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViID0gbmV3IFJlcGxheVN1YmplY3Q8Rm9ybVF1ZXJ5TW9kZWw+KCk7XHJcblx0cmVhZG9ubHkgYWN0aXZlRmlsdGVyc1F1ZXJ5JCA9IHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfY29uZmlnU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmUmVwb3J0c0NvbmZpZz4obnVsbCk7XHJcblx0cmVhZG9ubHkgcmVwb3J0Q29uZmlnJCA9IHRoaXMuX2NvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyaXRlcmlhTW9kZWw+KG51bGwpO1xyXG5cdHJlYWRvbmx5IGZpbHRlcnNQYXJhbXMkID0gdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfZGV0YWlsc0ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDcml0ZXJpYU1vZGVsPihudWxsKTtcclxuXHRyZWFkb25seSBkZXRhaWxzRmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9kZXRhaWxzRmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHByaXZhdGUgX3JlcG9ydERldGFpbHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcblx0XHRsYWJlbD86IHN0cmluZztcclxuXHRcdGNvbmZpZzogTmRmVGFibGVDb25maWc7XHJcblx0fT4obnVsbCk7XHJcblxyXG5cdGdldCBhY3RpdmVRdWVyeSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpPy5jdXJyZW50O1xyXG5cdH1cclxuXHJcblx0cmVwb3J0RGV0YWlscyQgPSB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0YWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPjtcclxuXHJcblx0Z2V0IHNob3dEZXRhaWxzKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICEhdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblxyXG5cdGlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG5cclxuXHRnZXQgZmlsdGVyc0NvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVycztcclxuXHR9XHJcblxyXG5cdGdldCByZXBvcnRDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jb25maWc/LnJlcG9ydHM7XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKSBqc29uRWRpdG9yRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHJlcG9ydHNLZXk6IHN0cmluZztcclxuXHRlZGl0b3JUeXBlID0gTkRGX0VESVRPUl9UWVBFLlJFUE9SVFM7XHJcblxyXG5cdEBJbnB1dCgpIG5hdmlnYXRlUm91dGU6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdHByaXZhdGUgX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuXHRwcml2YXRlIF9jb25maWc6IE5kZlJlcG9ydHNDb25maWc7XHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlJlcG9ydHNDb25maWcpIHtcclxuXHRcdHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcclxuXHR9XHJcblxyXG5cdGdldCBjb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29uZmlnU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG5cdH1cclxuXHJcblx0QE91dHB1dCgpIG9uUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdEBDb250ZW50Q2hpbGQoQ1VTVE9NX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcblx0ZmlsdGVyQ3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG5cdHRyYWNrQnlGbiA9IChfOiBudW1iZXIsIHJlcG9ydDogUmVwb3J0Q29uZmlnTW9kZWwpID0+IHtcclxuXHRcdHJldHVybiByZXBvcnQuaWQ7XHJcblx0fTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZmlsdGVyc01hcHBlcjogRmlsdGVyc01hcHBlclNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9uZGZSZXBvcnRzU2VydmljZTogTmRmUmVwb3J0c1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9jaGFydEhlbHBlclNlcnZpY2U6IENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF90cmFuc2Zvcm1TZXJ2aWNlOiBSZXBvcnRUcmFuc2Zvcm1TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHByaXZhdGUgX2ZpbHRlclF1ZXJ5U2VydmljZTogRmlsdGVyUXVlcnlTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfc3RhdGVTZXJ2aWNlOiBSZXBvcnRzU3RhdGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfY29uZmlndXJhdGlvblNlcnZpY2U6IFJlcG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmRpcmVjdGlvbiA9IHJlcy5sYW5nID09PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnJlcG9ydHNEYXRhJCA9IHRoaXMuX3ByZXBhcmVSZXBvcnRzKCk7XHJcblx0XHR0aGlzLl9oYW5kbGVLZXlib2FyZEV2ZW50KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRjb25zdCByZXBvcnRzS2V5ID0gY2hhbmdlcy5yZXBvcnRzS2V5Py5jdXJyZW50VmFsdWU7XHJcblx0XHRjb25zdCBjb25maWcgPSBjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlO1xyXG5cclxuXHRcdGlmIChyZXBvcnRzS2V5ICYmIGNvbmZpZykge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3Qgc2V0IGJvdGggcmVwb3J0c0tleSBhbmQgcmVwb3J0cyBDb25maWcgYXQgdGhlIHNhbWUgdGltZS4nKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY29uZmlnKSB7XHJcblx0XHRcdHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHJlcG9ydHNLZXkpIHtcclxuXHRcdFx0dGhpcy5fbG9hZFJlcG9ydHNDb25maWcocmVwb3J0c0tleSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbk5hdmlnYXRlKGRhdGE6IHsgcmVwb3J0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pIHtcclxuXHRcdGNvbnN0IHJlcG9ydCA9IGRhdGE/LnJlcG9ydDtcclxuXHRcdGNvbnN0IF9jdXN0b21Sb3V0ZSA9IHJlcG9ydC5uYXZpZ2F0ZT8ucm91dGUgfHwgW107XHJcblx0XHQvLyBsZXQgcm91dGUgPSBbUk1TX0JBU0UucmVwbGFjZSgvXFwvJC8sICcnKV07XHJcblx0XHRsZXQgcm91dGUgPSB0aGlzLm5hdmlnYXRlUm91dGU7XHJcblx0XHRpZiAoISFfY3VzdG9tUm91dGUubGVuZ3RoKSB7XHJcblx0XHRcdHJvdXRlID0gWy4uLnJvdXRlLCAuLi5fY3VzdG9tUm91dGVdO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XHJcblx0XHRpZiAocmVwb3J0Lm5hdmlnYXRlPy5pbmNsdWRlUGFyYW1zID8/IHRydWUpIHtcclxuXHRcdFx0aWYgKE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkgfHwge30pLmxlbmd0aCkge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJRdWVyeVNlcnZpY2UuZW5jb2RlUXVlcnkodGhpcy5hY3RpdmVRdWVyeSk7XHJcblx0XHRcdFx0aWYgKGRhdGEpIHtcclxuXHRcdFx0XHRcdHF1ZXJ5UGFyYW1zWydmaWx0ZXJzJ10gPSBkYXRhO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShyb3V0ZSwgeyBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMgfSkudGhlbigoKSA9PiB7fSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVQYW5lbCgpIHtcclxuXHRcdHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLnJlc2l6ZUNoYXJ0cygpO1xyXG5cdFx0fSwgNTAwKTtcclxuXHR9XHJcblxyXG5cdHByaW50QWxsKCkge1xyXG5cdFx0d2luZG93LnByaW50KCk7XHJcblx0fVxyXG5cclxuXHRmaWx0ZXJDaGFuZ2VkKGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+KSB7XHJcblx0XHRpZiAoXy5pc0VxdWFsKHRoaXMuYWN0aXZlUXVlcnksIGNyaXRlcmlhKSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLm9uUXVlcnlDaGFuZ2UuZW1pdChjcml0ZXJpYSk7XHJcblx0XHR0aGlzLl91cGRhdGVBY3RpdmVRdWVyeShjcml0ZXJpYSk7XHJcblx0XHRjb25zdCBfZGF0ZSA9IHRoaXMuX3ByZXBhcmVNYXBwZWRRdWVyeShjcml0ZXJpYSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpO1xyXG5cdFx0dGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5uZXh0KF9kYXRlKTtcclxuXHR9XHJcblxyXG5cdG9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZzogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0dGhpcy5fc3RhdGVTZXJ2aWNlLm9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZyk7XHJcblxyXG5cdFx0aWYgKGlzU2Nyb2xsaW5nICYmICF0aGlzLl9pc0hlaWdodFVwZGF0ZWQpIHtcclxuXHRcdFx0dGhpcy5faXNIZWlnaHRVcGRhdGVkID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5mbHVpZERpcmVjdGl2ZS5zY2hlZHVsZVNldEhlaWdodCgxMDApO1xyXG5cdFx0fSBlbHNlIGlmICghaXNTY3JvbGxpbmcgJiYgdGhpcy5faXNIZWlnaHRVcGRhdGVkKSB7XHJcblx0XHRcdHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLmZsdWlkRGlyZWN0aXZlLnNjaGVkdWxlU2V0SGVpZ2h0KDEwMCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvcGVuUmVwb3J0RGV0YWlscyhjcml0ZXJpYU1vZGVsOiBDcml0ZXJpYU1vZGVsLCByZXBvcnRDb25maWc6IFJlcG9ydENvbmZpZ01vZGVsKSB7XHJcblx0XHRpZiAoIXJlcG9ydENvbmZpZz8uZGV0YWlscz8uZW5hYmxlZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGFyYW1zID0gdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG5cdFx0dGhpcy5fZGV0YWlsc0ZpbHRlcnNTdWJqZWN0Lm5leHQocGFyYW1zKTtcclxuXHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSBmYWxzZTtcclxuXHRcdGNvbnN0IHNvdXJjZSA9IHJlcG9ydENvbmZpZz8uZGV0YWlscz8uc291cmNlO1xyXG5cdFx0Y29uc3QgY29uZmlnJCA9XHJcblx0XHRcdHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJ1xyXG5cdFx0XHRcdD8gdGhpcy5fY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0VGFibGVDb25maWd1cmF0aW9uKHNvdXJjZSkucGlwZShcclxuXHRcdFx0XHRcdFx0bWFwKChkYXRhKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCEhZGF0YT8ub3B0aW9ucz8uZmlsdGVycz8uZmllbGRzPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBkYXRhO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gXy5tZXJnZShkYXRhLCB7XHJcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zOiB7IGZpbHRlcnM6IHByZXBhcmVOZGZUYWJsZUZpbHRlcnMoZGF0YT8ub3B0aW9ucz8uZmlsdGVycywgdGhpcy5jb25maWcsIGRhdGEpIH1cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQ6IG9mKG1hcFRvTmRmVGFibGVDb25maWcodGhpcy5jb25maWcsIHJlcG9ydENvbmZpZy5kZXRhaWxzKSk7XHJcblxyXG5cdFx0Y29uZmlnJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuXHRcdFx0cXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0Lm5leHQoe1xyXG5cdFx0XHRcdFx0Y29uZmlnLFxyXG5cdFx0XHRcdFx0bGFiZWw6IHJlcG9ydENvbmZpZy5sYWJlbFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Y2xvc2VEZXRhaWxzUGFuZWwoKSB7XHJcblx0XHR0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdH1cclxuXHJcblx0b25EZXRhaWxzQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG5cdFx0dGhpcy5pc0RldGFpbHNPcGVuZWQgPSBldmVudC50b1N0YXRlID09PSAnb3Blbic7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25EZXN0cm95KCk7XHJcblx0XHR0aGlzLl9jaGFydEhlbHBlclNlcnZpY2UuZGVzdHJveUFsbCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwcmVwYXJlQ3JpdGVyaWFQYXlsb2FkKGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+LCBmaWVsZHM6IEZpZWxkQ29uZmlnTW9kZWxbXSA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maWVsZHMpIHtcclxuXHRcdHJldHVybiB0aGlzLl9maWx0ZXJzTWFwcGVyLnByZXBhcmVQYXlsb2FkKGZpZWxkcywgY3JpdGVyaWEpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoY3JpdGVyaWEpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuXHRcdFx0YWNjW2tleV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlO1xyXG5cdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0fSwge30pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfcHJlcGFyZVJlcG9ydHMoKSB7XHJcblx0XHR0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcblx0XHRyZXR1cm4gY29tYmluZUxhdGVzdChbXHJcblx0XHRcdHRoaXMuZmlsdGVyc1BhcmFtcyQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gXy5pc0VxdWFsKGEsIGIpKSksXHJcblx0XHRcdHRoaXMucmVwb3J0Q29uZmlnJFxyXG5cdFx0XSkucGlwZShcclxuXHRcdFx0dGFwKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0fSksXHJcblx0XHRcdHN3aXRjaE1hcCgoW2NyaXRlcmlhLCBjb25maWddKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgcmVxdWVzdCA9IGNvbmZpZz8ucmVxdWVzdDtcclxuXHRcdFx0XHRpZiAoIXJlcXVlc3QpIHtcclxuXHRcdFx0XHRcdHJldHVybiBvZihudWxsKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IF9wYXlsb2FkID0gY3JpdGVyaWE7XHJcblx0XHRcdFx0aWYgKCFjcml0ZXJpYSAmJiAhIWNvbmZpZy5hY3RpdmVRdWVyeSkge1xyXG5cdFx0XHRcdFx0X3BheWxvYWQgPSB0aGlzLnByZXBhcmVDcml0ZXJpYVBheWxvYWQoY29uZmlnLmFjdGl2ZVF1ZXJ5KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGNvbnN0IGRhdGEkID0gdGhpcy5fbmRmUmVwb3J0c1NlcnZpY2UuZ2V0RGF0YShyZXF1ZXN0LCBfcGF5bG9hZCkucGlwZShcclxuXHRcdFx0XHRcdHN3aXRjaE1hcCgocmVwb3J0czogQXBpUmVzcG9uc2VNb2RlbCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU2VydmljZS5wcmVwYXJlRGF0YShyZXBvcnRzLCBjb25maWcpO1xyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNMb2FkaW5nUmVzdWx0ID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdHJldHVybiBmb3JrSm9pbihbb2YoY29uZmlnKSwgZGF0YSRdKTtcclxuXHRcdFx0fSksXHJcblx0XHRcdG1hcCgoW2NvbmZpZywgcmVzcG9uc2VdKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5fcHJlcGFyZUFnZ3JlZ2F0aW9ucyhyZXNwb25zZT8uYWdncmVnYXRpb25zKTtcclxuXHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0Y29uZmlnLFxyXG5cdFx0XHRcdFx0cmVzcG9uc2VcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2hhbmRsZUtleWJvYXJkRXZlbnQoKSB7XHJcblx0XHR0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG5cdFx0XHRmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJylcclxuXHRcdFx0XHQucGlwZShcclxuXHRcdFx0XHRcdGZpbHRlcigoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5zaG93RGV0YWlscyksXHJcblx0XHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmNsb3NlRGV0YWlsc1BhbmVsKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3ByZXBhcmVNYXBwZWRRdWVyeShjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55PiwgbW9kZTogJ3BheWxvYWQnIHwgJ3BhcmFtcycpIHtcclxuXHRcdHJldHVybiBtb2RlID09ICdwYXlsb2FkJ1xyXG5cdFx0XHQ/IHRoaXMucHJlcGFyZUNyaXRlcmlhUGF5bG9hZChjcml0ZXJpYSlcclxuXHRcdFx0OiB7XHJcblx0XHRcdFx0XHRwYXJhbXM6IHRoaXMuX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYSlcclxuXHRcdFx0XHR9O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfdXBkYXRlQWN0aXZlUXVlcnkocXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLm5leHQoe1xyXG5cdFx0XHRwcmV2aW91czogdGhpcy5hY3RpdmVRdWVyeSxcclxuXHRcdFx0Y3VycmVudDogcXVlcnlcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5fYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViLm5leHQoe1xyXG5cdFx0XHRxdWVyeSxcclxuXHRcdFx0ZW1pdEV2ZW50OiBmYWxzZVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9wcmVwYXJlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9uczogYW55KSB7XHJcblx0XHRpZiAodGhpcy5faXNDb25maWdDaGFuZ2VkICYmIHRoaXMuYWdncmVnYXRpb25zKSB7XHJcblx0XHRcdHRoaXMuYWdncmVnYXRpb25zID0gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCByZWxvYWRTdHJhdGVneSA9IHRoaXMuY29uZmlnPy5maWx0ZXJzPy5yZWxvYWQ/LnN0cmF0ZWd5O1xyXG5cclxuXHRcdGlmICh0aGlzLmFnZ3JlZ2F0aW9ucyAmJiByZWxvYWRTdHJhdGVneSA9PT0gJ25ldmVyJykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuYWdncmVnYXRpb25zICYmIHJlbG9hZFN0cmF0ZWd5ID09PSAnb25DaGFuZ2UnKSB7XHJcblx0XHRcdGlmICh0aGlzLl9zaG91bGRSZWxvYWRPbkNoYW5nZSgpKSB7XHJcblx0XHRcdFx0dGhpcy5fdXBkYXRlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9ucyk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuX3VwZGF0ZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnMpO1xyXG5cdFx0dGhpcy5faXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9zaG91bGRSZWxvYWRPbkNoYW5nZSgpIHtcclxuXHRcdGlmICh0aGlzLmNvbmZpZz8uZmlsdGVycz8ucmVsb2FkPy5zdHJhdGVneSAhPT0gJ29uQ2hhbmdlJykge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgdHJpZ2dlckZpZWxkcyA9IHRoaXMuY29uZmlnPy5maWx0ZXJzPy5yZWxvYWQ/LnRyaWdnZXJGaWVsZHM7XHJcblxyXG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHRyaWdnZXJGaWVsZHMpKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB2YWxpZEZpZWxkcyA9IHRyaWdnZXJGaWVsZHMuZmlsdGVyKEJvb2xlYW4pO1xyXG5cdFx0aWYgKCF2YWxpZEZpZWxkcy5sZW5ndGgpIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0gdGhpcy5fYWN0aXZlUXVlcnlTdWIuZ2V0VmFsdWUoKTtcclxuXHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5jdXJyZW50IHx8IHt9O1xyXG5cdFx0Y29uc3QgcHJldmlvdXNWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5wcmV2aW91cyB8fCB7fTtcclxuXHJcblx0XHRjb25zdCBjaGFuZ2VkS2V5cyA9IHRoaXMuX2dldENoYW5nZWRLZXlzKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSk7XHJcblxyXG5cdFx0cmV0dXJuIHZhbGlkRmllbGRzLnNvbWUoKGZpZWxkKSA9PiBjaGFuZ2VkS2V5cy5pbmNsdWRlcyhmaWVsZCkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfZ2V0Q2hhbmdlZEtleXMocHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGN1cnJlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCBhbGxLZXlzID0gXy51bmlvbihfLmtleXMocHJldmlvdXMpLCBfLmtleXMoY3VycmVudCkpO1xyXG5cdFx0cmV0dXJuIGFsbEtleXMuZmlsdGVyKChrZXkpID0+ICFfLmlzRXF1YWwocHJldmlvdXNba2V5XSwgY3VycmVudFtrZXldKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF91cGRhdGVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zOiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMuYWdncmVnYXRpb25zID0gXy5jbG9uZURlZXAoYWdncmVnYXRpb25zKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2NoZWNrQ29uZmlnQ2hhbmdlKHZhbHVlOiBOZGZSZXBvcnRzQ29uZmlnKSB7XHJcblx0XHRjb25zdCB7IGFjdGl2ZVF1ZXJ5LCAuLi5jb25maWcgfSA9IHZhbHVlO1xyXG5cdFx0Y29uc3QgeyBhY3RpdmVRdWVyeTogYXEsIC4uLmN1cnJlbnRDb25maWcgfSA9IHRoaXMuX2NvbmZpZ1N1YmplY3QuZ2V0VmFsdWUoKSB8fCB7fTtcclxuXHJcblx0XHR0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSAhXy5pc0VxdWFsKGN1cnJlbnRDb25maWcsIGNvbmZpZyk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9sb2FkUmVwb3J0c0NvbmZpZyhrZXk6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fY29uZmlndXJhdGlvblNlcnZpY2VcclxuXHRcdFx0LmdldFJlcG9ydHNDb25maWd1cmF0aW9uKGtleSlcclxuXHRcdFx0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuXHRcdFx0XHRpZiAoY29uZmlnKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9pbml0UmVwb3J0c0NvbmZpZyhjb25maWcpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9pbml0UmVwb3J0c0NvbmZpZyhjb25maWc6IE5kZlJlcG9ydHNDb25maWcpIHtcclxuXHRcdGNvbnN0IHZhbHVlID0gXy5jbG9uZURlZXAoY29uZmlnKTtcclxuXHRcdHRoaXMuX2NoZWNrQ29uZmlnQ2hhbmdlKHZhbHVlKTtcclxuXHRcdHRoaXMuX2NvbmZpZ1N1YmplY3QubmV4dCh2YWx1ZSk7XHJcblx0XHRpZiAodmFsdWU/LmFjdGl2ZVF1ZXJ5ICYmICEhT2JqZWN0LmtleXModmFsdWU/LmFjdGl2ZVF1ZXJ5KS5sZW5ndGgpIHtcclxuXHRcdFx0dGhpcy5fdXBkYXRlQWN0aXZlUXVlcnkodmFsdWU/LmFjdGl2ZVF1ZXJ5KTtcclxuXHRcdFx0dGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5uZXh0KHRoaXMuX3ByZXBhcmVNYXBwZWRRdWVyeSh2YWx1ZT8uYWN0aXZlUXVlcnksIHRoaXMuZmlsdGVyc0NvbmZpZy5tb2RlKSk7XHJcblx0XHR9IGVsc2UgaWYgKCF0aGlzLmFjdGl2ZVF1ZXJ5IHx8IE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkpLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuaXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5pc0RldGFpbHNPcGVuZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0Lm5leHQobnVsbCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9yZXNldFF1ZXJ5QW5kRmlsdGVyc0NyaXRlcmlhKCkge1xyXG5cdFx0dGhpcy5fdXBkYXRlQWN0aXZlUXVlcnkoe30pO1xyXG5cdFx0dGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2XHJcblx0Km5nSWY9XCJyZXBvcnRzRGF0YSQgfCBhc3luYyBhcyByZXBvcnRzXCJcclxuXHRjbGFzcz1cIm5kZi1yZXBvcnRzX19jb250YWluZXJcIlxyXG5cdFtjbGFzcy5wYW5lbC1vcGVuZWRdPVwiaXNQYW5lbE9wZW5lZCAmJiBmaWx0ZXJzQ29uZmlnXCJcclxuXHRbZGlyXT1cImRpcmVjdGlvblwiXHJcblx0bmRmRmx1aWRIZWlnaHRcclxuPlxyXG5cdDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19fcGFuZWwgcHJpbnQ6aGlkZGVuXCIgKm5nSWY9XCIhIWZpbHRlcnNDb25maWc/LmZpZWxkcz8ubGVuZ3RoXCI+XHJcblx0XHQ8YXBwLWZpbHRlcnMtcGFuZWxcclxuXHRcdFx0W2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnPy5maWVsZHNcIlxyXG5cdFx0XHRbYWdncmVnYXRpb25zXT1cImFnZ3JlZ2F0aW9uc1wiXHJcblx0XHRcdChmaWx0ZXJDaGFuZ2VkKT1cImZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFthY3RpdmVRdWVyeV09XCJhY3RpdmVGaWx0ZXJzUXVlcnkkIHwgYXN5bmNcIlxyXG5cdFx0XHRjbGFzcz1cIm5kZi1yZXBvcnRzX19maWx0ZXJzXCJcclxuICAgICAgW2N1c3RvbVRlbXBsYXRlUmVmXT1cImZpbHRlckN1c3RvbVRlbXBsYXRlXCJcclxuXHRcdD48L2FwcC1maWx0ZXJzLXBhbmVsPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnRcIiAoc2Nyb2xsZWQpPVwib25Db250ZW50U2Nyb2xsKCRldmVudClcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19faGVhZGVyIGZsZXggcHQtNCBwcmludDpoaWRkZW5cIj5cclxuXHRcdFx0PGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj5cclxuXHRcdFx0XHQ8bWF0LWljb24+IGZpbHRlcl9hbHQ8L21hdC1pY29uPlxyXG5cdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PGFwcC1lZGl0b3ItYnV0dG9uXHJcblx0XHRcdFx0Km5nSWY9XCJqc29uRWRpdG9yRW5hYmxlZCAmJiByZXBvcnRzS2V5XCJcclxuXHRcdFx0XHRba2V5XT1cInJlcG9ydHNLZXlcIlxyXG5cdFx0XHRcdFt0eXBlXT1cImVkaXRvclR5cGVcIlxyXG5cdFx0XHQ+PC9hcHAtZWRpdG9yLWJ1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nSWY9XCJjb25maWc/Lm9wdGlvbnM/LnByaW50XCIgY2xhc3M9XCJwcmludC1idXR0b25cIiAoY2xpY2spPVwicHJpbnRBbGwoKVwiPlxyXG5cdFx0XHRcdDxtYXQtaWNvbj4gcHJpbnQ8L21hdC1pY29uPlxyXG5cdFx0XHQ8L2J1dHRvbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PG1hdC1zcGlubmVyICpuZ0lmPVwiaXNMb2FkaW5nUmVzdWx0XCIgY2xhc3M9XCJtdC01IG14LWF1dG9cIiBbZGlhbWV0ZXJdPVwiNDhcIj48L21hdC1zcGlubmVyPlxyXG5cclxuXHRcdDxkaXYgY2xhc3M9XCJyZXBvcnRzLWdyaWRcIiAqbmdJZj1cIiFpc0xvYWRpbmdSZXN1bHRcIj5cclxuXHRcdFx0PGFwcC1uZGYtcmVwb3J0XHJcblx0XHRcdFx0Km5nRm9yPVwibGV0IGNvbmZpZyBvZiByZXBvcnRDb25maWcuaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcblx0XHRcdFx0W2NvbmZpZ109XCJjb25maWdcIlxyXG5cdFx0XHRcdFtkYXRhXT1cInJlcG9ydHM/LnJlc3BvbnNlXCJcclxuXHRcdFx0XHRbY3JpdGVyaWFdPVwiZmlsdGVyc1BhcmFtcyQgfCBhc3luY1wiXHJcblx0XHRcdFx0W2RpcmVjdGlvbl09XCJkaXJlY3Rpb25cIlxyXG5cdFx0XHRcdFthdHRyLmRhdGEtd2lkdGhdPVwiY29uZmlnPy5sYXlvdXQ/LndpZHRoIHx8IDRcIlxyXG5cdFx0XHRcdFthdHRyLmRhdGEtaGVpZ2h0XT1cImNvbmZpZz8ubGF5b3V0Py5oZWlnaHQgfHwgJ2F1dG8nXCJcclxuXHRcdFx0XHRbYXR0ci5kYXRhLXN0YXJ0LWNvbHVtbl09XCJjb25maWc/LmxheW91dD8uY29sdW1uUG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuXHRcdFx0XHRbYXR0ci5kYXRhLXN0YXJ0LXJvd109XCJjb25maWc/LmxheW91dD8ucm93UG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuXHRcdFx0XHRbY2xhc3Mud2lkZV09XCJjb25maWc/LmxheW91dD8ud2lkdGggPj0gNlwiXHJcbiAgICAgICAgW3N0eWxlXT1cImNvbmZpZz8ubGF5b3V0Py5zdHlsZVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJyZXBvcnRzLWdyaWRfX2l0ZW0ge3sgY29uZmlnPy5sYXlvdXQ/LnN0eWxlQ2xhc3MgfX0gXCJcclxuXHRcdFx0XHQob25OYXZpZ2F0ZSk9XCJvbk5hdmlnYXRlKCRldmVudClcIlxyXG5cdFx0XHRcdChvbk9wZW4pPVwib3BlblJlcG9ydERldGFpbHMoJGV2ZW50LCBjb25maWcpXCJcclxuXHRcdFx0PjwvYXBwLW5kZi1yZXBvcnQ+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2XHJcblx0XHRjbGFzcz1cIm5kZi1yZXBvcnRzX19kZXRhaWxzIHByaW50OmhpZGRlblwiXHJcblx0XHRbY2xhc3Mub3BlbmVkXT1cInNob3dEZXRhaWxzXCJcclxuXHRcdFtAc2xpZGVJbk91dF09XCJzaG93RGV0YWlscyA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuXHRcdChAc2xpZGVJbk91dC5kb25lKT1cIm9uRGV0YWlsc0FuaW1hdGlvbkVuZCgkZXZlbnQpXCJcclxuXHQ+XHJcblx0XHQ8YXBwLW5kZi10YWJsZVxyXG5cdFx0XHQqbmdJZj1cInJlcG9ydERldGFpbHMkIHwgYXN5bmMgYXMgcmVwb3J0XCJcclxuXHRcdFx0W2NvbmZpZ109XCJyZXBvcnQuY29uZmlnXCJcclxuXHRcdFx0W2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZUZpbHRlcnNRdWVyeSQgfCBhc3luY1wiXHJcblx0XHRcdFtjdXN0b21Dcml0ZXJpYV09XCJkZXRhaWxzRmlsdGVyc1BhcmFtcyQgfCBhc3luY1wiXHJcblx0XHQ+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSBzZWFyY2hUYWJsZVRlbXBsYXRlIGxldC10b2dnbGU9XCJ0b2dnbGVQYW5lbFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJuZGYtcmVwb3J0c19fZGV0YWlsc19faGVhZGVyIGZsZXggZ2FwLTJcIiA+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cclxuXHRcdFx0XHRcdFx0PG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2xvc2VEZXRhaWxzUGFuZWwoKVwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWljb24+IGNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxoMz5cclxuXHRcdFx0XHRcdHt7IHJlcG9ydC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdDwvaDM+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L2FwcC1uZGYtdGFibGU+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXJlcG9ydHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2NvbnRhaW5lcnMvbmRmLXJlcG9ydHMvbmRmLXJlcG9ydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2NvbnRhaW5lcnMvbmRmLXJlcG9ydHMvbmRmLXJlcG9ydHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBRVQsRUFBRSxFQUNGLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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LFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgdHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBmb3JrSm9pbixcclxuICBmcm9tLFxyXG4gIGZyb21FdmVudCxcclxuICBPYnNlcnZhYmxlLFxyXG4gIG9mLFxyXG4gIFJlcGxheVN1YmplY3QsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgZmlsdGVyLFxyXG4gIGZpbmFsaXplLFxyXG4gIG1hcCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERlc3Ryb3lTdWJqZWN0LCBGbHVpZEhlaWdodERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBBcGlSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOREZfRURJVE9SX1RZUEUgfSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtY29uZmlnLWVkaXRvci9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gIEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcbiAgQ1VTVE9NX1RFTVBMQVRFLFxyXG4gIEZpZWxkQ29uZmlnTW9kZWwsXHJcbiAgRmlsdGVyUXVlcnlTZXJ2aWNlLFxyXG4gIEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG4gIEZvcm1RdWVyeU1vZGVsLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzJztcclxuaW1wb3J0IHsgTmRmVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXMnO1xyXG5pbXBvcnQge1xyXG4gIEVNUFRZX0NPTlRFTlRfVEVNUExBVEUsXHJcbiAgSEVBREVSX1BBTkVMX1RFTVBMQVRFLFxyXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG4gIENyaXRlcmlhTW9kZWwsXHJcbiAgTmRmUmVwb3J0c0NvbmZpZyxcclxuICBSZXBvcnRDb25maWdNb2RlbCxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIENoYXJ0TWFuYWdlclNlcnZpY2UsXHJcbiAgTmRmUmVwb3J0c1NlcnZpY2UsXHJcbiAgUmVwb3J0Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgUmVwb3J0c0hvb2tzU2VydmljZSxcclxuICBSZXBvcnRzU3RhdGVTZXJ2aWNlLFxyXG4gIFJlcG9ydFRyYW5zZm9ybVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBtYXBUb05kZlRhYmxlQ29uZmlnLCBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcclxuXHJcbmV4cG9ydCBjb25zdCBzbGlkZUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgc3RhdGUoXHJcbiAgICAnY2xvc2VkJyxcclxuICAgIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCh2YXIoLS1uZGYtcmVwb3J0cy1kZXRhaWxzLXRyYW5zbGF0ZVgsIC0xMDAlKSknLFxyXG4gICAgfSlcclxuICApLFxyXG4gIHN0YXRlKCdvcGVuJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSksXHJcbiAgdHJhbnNpdGlvbignY2xvc2VkIDw9PiBvcGVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSksXHJcbl0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbmRmLXJlcG9ydHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZGYtcmVwb3J0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmRmLXJlcG9ydHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ25kZi1yZXBvcnRzJyxcclxuICAgICdbZGlyXSc6ICdkaXJlY3Rpb24nLFxyXG4gIH0sXHJcbiAgYW5pbWF0aW9uczogW3NsaWRlQW5pbWF0aW9uXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5kZlJlcG9ydHNDb21wb25lbnRcclxuICBleHRlbmRzIERlc3Ryb3lTdWJqZWN0XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXHJcbntcclxuICBAVmlld0NoaWxkKEZsdWlkSGVpZ2h0RGlyZWN0aXZlKSBmbHVpZERpcmVjdGl2ZTogRmx1aWRIZWlnaHREaXJlY3RpdmU7XHJcbiAgX2lzSGVpZ2h0VXBkYXRlZCA9IGZhbHNlO1xyXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcbiAgaXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG4gIHJlcG9ydHNEYXRhJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIGlzRXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUXVlcnlTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgIHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICB9PihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlRmlsdGVyc1F1ZXJ5U3ViID0gbmV3IFJlcGxheVN1YmplY3Q8Rm9ybVF1ZXJ5TW9kZWw+KCk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlRmlsdGVyc1F1ZXJ5JCA9IHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmUmVwb3J0c0NvbmZpZz4obnVsbCk7XHJcbiAgcmVhZG9ubHkgcmVwb3J0Q29uZmlnJCA9IHRoaXMuX2NvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyaXRlcmlhTW9kZWw+KFxyXG4gICAgbnVsbFxyXG4gICk7XHJcbiAgcmVhZG9ubHkgZmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF90cmlnZ2VyRmlsdGVyc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RldGFpbHNGaWx0ZXJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4oXHJcbiAgICBudWxsXHJcbiAgKTtcclxuICByZWFkb25seSBkZXRhaWxzRmlsdGVyc1BhcmFtcyQgPSB0aGlzLl9kZXRhaWxzRmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX3JlcG9ydERldGFpbHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGNvbmZpZzogTmRmVGFibGVDb25maWc7XHJcbiAgfT4obnVsbCk7XHJcblxyXG4gIGdldCBhY3RpdmVRdWVyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpPy5jdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcmVwb3J0RGV0YWlscyQgPSB0aGlzLl9yZXBvcnREZXRhaWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgYWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPjtcclxuXHJcbiAgZ2V0IHNob3dEZXRhaWxzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG5cclxuICBnZXQgZmlsdGVyc0NvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVycztcclxuICB9XHJcblxyXG4gIGdldCByZXBvcnRDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnJlcG9ydHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBqc29uRWRpdG9yRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcG9ydHNLZXk6IHN0cmluZztcclxuICBlZGl0b3JUeXBlID0gTkRGX0VESVRPUl9UWVBFLlJFUE9SVFM7XHJcblxyXG4gIEBJbnB1dCgpIG5hdmlnYXRlUm91dGU6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRDb25kaXRpb246ICguLi5hcmdzOiBhbnlbXSkgPT4gYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfaXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogTmRmUmVwb3J0c0NvbmZpZztcclxuICBASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdTdWJqZWN0LmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25RdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChDVVNUT01fVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICBmaWx0ZXJDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAQ29udGVudENoaWxkKEhFQURFUl9QQU5FTF9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGhlYWRlclBhbmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoRU1QVFlfQ09OVEVOVF9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGVtcHR5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICB0cmFja0J5Rm4gPSAoXzogbnVtYmVyLCByZXBvcnQ6IFJlcG9ydENvbmZpZ01vZGVsKSA9PiB7XHJcbiAgICByZXR1cm4gcmVwb3J0LmlkO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZpbHRlcnNNYXBwZXI6IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbmRmUmVwb3J0c1NlcnZpY2U6IE5kZlJlcG9ydHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhcnRIZWxwZXJTZXJ2aWNlOiBDaGFydE1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNmb3JtU2VydmljZTogUmVwb3J0VHJhbnNmb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9maWx0ZXJRdWVyeVNlcnZpY2U6IEZpbHRlclF1ZXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX3N0YXRlU2VydmljZTogUmVwb3J0c1N0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBSZXBvcnRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIF9yZXBvcnRzSG9va3NTZXJ2aWNlOiBSZXBvcnRzSG9va3NTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IHJlcy5sYW5nID09PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVwb3J0c0RhdGEkID0gdGhpcy5fcHJlcGFyZVJlcG9ydHMoKTtcclxuICAgIHRoaXMuX2hhbmRsZUtleWJvYXJkRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLl90cmlnZ2VyRmlsdGVyc1N1Yi5uZXh0KHRydWUpO1xyXG4gIH07XHJcblxyXG4gIHJlc2V0RmlsdGVycyA9ICgpID0+IHtcclxuICAgIHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuICB9O1xyXG5cclxuICBjYWxsTG9hZENvbmRpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmxvYWRDb25kaXRpb24gJiYgdHlwZW9mIHRoaXMubG9hZENvbmRpdGlvbiA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRDb25kaXRpb24odGhpcy5hY3RpdmVRdWVyeSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHJlcG9ydHNLZXkgPSBjaGFuZ2VzLnJlcG9ydHNLZXk/LmN1cnJlbnRWYWx1ZTtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgaWYgKHJlcG9ydHNLZXkgJiYgY29uZmlnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnWW91IGNhbm5vdCBzZXQgYm90aCByZXBvcnRzS2V5IGFuZCByZXBvcnRzIENvbmZpZyBhdCB0aGUgc2FtZSB0aW1lLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcG9ydHNLZXkpIHtcclxuICAgICAgdGhpcy5fbG9hZFJlcG9ydHNDb25maWcocmVwb3J0c0tleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5hdmlnYXRlKGRhdGE6IHsgcmVwb3J0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pIHtcclxuICAgIGNvbnN0IHJlcG9ydCA9IGRhdGE/LnJlcG9ydDtcclxuICAgIGNvbnN0IF9jdXN0b21Sb3V0ZSA9IHJlcG9ydC5uYXZpZ2F0ZT8ucm91dGUgfHwgW107XHJcbiAgICAvLyBsZXQgcm91dGUgPSBbUk1TX0JBU0UucmVwbGFjZSgvXFwvJC8sICcnKV07XHJcbiAgICBsZXQgcm91dGUgPSB0aGlzLm5hdmlnYXRlUm91dGU7XHJcbiAgICBpZiAoISFfY3VzdG9tUm91dGUubGVuZ3RoKSB7XHJcbiAgICAgIHJvdXRlID0gWy4uLnJvdXRlLCAuLi5fY3VzdG9tUm91dGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XHJcbiAgICBpZiAocmVwb3J0Lm5hdmlnYXRlPy5pbmNsdWRlUGFyYW1zID8/IHRydWUpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkgfHwge30pLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJRdWVyeVNlcnZpY2UuZW5jb2RlUXVlcnkodGhpcy5hY3RpdmVRdWVyeSk7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zWydmaWx0ZXJzJ10gPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShyb3V0ZSwgeyBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMgfSkudGhlbigoKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYW5lbCgpIHtcclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLnJlc2l6ZUNoYXJ0cygpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByaW50QWxsKCkge1xyXG4gICAgd2luZG93LnByaW50KCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDaGFuZ2VkID0gKGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+KSA9PiB7XHJcbiAgICBpZiAoXy5pc0VxdWFsKHRoaXMuYWN0aXZlUXVlcnksIGNyaXRlcmlhKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uUXVlcnlDaGFuZ2UuZW1pdChjcml0ZXJpYSk7XHJcbiAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeShjcml0ZXJpYSk7XHJcbiAgICBjb25zdCBfZGF0ZSA9IHRoaXMuX3ByZXBhcmVNYXBwZWRRdWVyeShjcml0ZXJpYSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpO1xyXG4gICAgdGhpcy5fZmlsdGVyc0NyaXRlcmlhU3ViamVjdC5uZXh0KF9kYXRlKTtcclxuICB9O1xyXG5cclxuICBvbkNvbnRlbnRTY3JvbGwoaXNTY3JvbGxpbmc6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXRlU2VydmljZS5vbkNvbnRlbnRTY3JvbGwoaXNTY3JvbGxpbmcpO1xyXG5cclxuICAgIGlmIChpc1Njcm9sbGluZyAmJiAhdGhpcy5faXNIZWlnaHRVcGRhdGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmx1aWREaXJlY3RpdmUuc2NoZWR1bGVTZXRIZWlnaHQoMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoIWlzU2Nyb2xsaW5nICYmIHRoaXMuX2lzSGVpZ2h0VXBkYXRlZCkge1xyXG4gICAgICB0aGlzLl9pc0hlaWdodFVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5mbHVpZERpcmVjdGl2ZS5zY2hlZHVsZVNldEhlaWdodCgxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlcG9ydERldGFpbHMoXHJcbiAgICBjcml0ZXJpYU1vZGVsOiBDcml0ZXJpYU1vZGVsLFxyXG4gICAgcmVwb3J0Q29uZmlnOiBSZXBvcnRDb25maWdNb2RlbFxyXG4gICkge1xyXG4gICAgaWYgKCFyZXBvcnRDb25maWc/LmRldGFpbHM/LmVuYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuX2ZpbHRlcnNDcml0ZXJpYVN1YmplY3QuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuX2RldGFpbHNGaWx0ZXJzU3ViamVjdC5uZXh0KHBhcmFtcyk7XHJcblxyXG4gICAgdGhpcy5pc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcbiAgICBjb25zdCBzb3VyY2UgPSByZXBvcnRDb25maWc/LmRldGFpbHM/LnNvdXJjZTtcclxuICAgIGNvbnN0IGNvbmZpZyQgPVxyXG4gICAgICBzb3VyY2UgJiYgdHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFRhYmxlQ29uZmlndXJhdGlvbihzb3VyY2UpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghIWRhdGE/Lm9wdGlvbnM/LmZpbHRlcnM/LmZpZWxkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8ubWVyZ2UoZGF0YSwge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBwcmVwYXJlTmRmVGFibGVGaWx0ZXJzKFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE/Lm9wdGlvbnM/LmZpbHRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YVxyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICA6IG9mKG1hcFRvTmRmVGFibGVDb25maWcodGhpcy5jb25maWcsIHJlcG9ydENvbmZpZy5kZXRhaWxzKSk7XHJcblxyXG4gICAgY29uZmlnJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChjb25maWcpID0+IHtcclxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydERldGFpbHNTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgICAgY29uZmlnLFxyXG4gICAgICAgICAgbGFiZWw6IHJlcG9ydENvbmZpZy5sYWJlbCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlRGV0YWlsc1BhbmVsKCkge1xyXG4gICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIG9uRGV0YWlsc0FuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcclxuICAgIHRoaXMuaXNEZXRhaWxzT3BlbmVkID0gZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgdGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLmRlc3Ryb3lBbGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUNyaXRlcmlhUGF5bG9hZChcclxuICAgIGNyaXRlcmlhOiBSZWNvcmQ8YW55LCBhbnk+LFxyXG4gICAgZmllbGRzOiBGaWVsZENvbmZpZ01vZGVsW10gPSB0aGlzLmZpbHRlcnNDb25maWcuZmllbGRzXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyc01hcHBlci5wcmVwYXJlUGF5bG9hZChmaWVsZHMsIGNyaXRlcmlhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVSZXBvcnRzKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdSZXN1bHQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmZpbHRlcnNQYXJhbXMkLFxyXG4gICAgICB0aGlzLnJlcG9ydENvbmZpZyQsXHJcbiAgICAgIHRoaXMuX3RyaWdnZXJGaWx0ZXJzU3ViLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoW2NyaXRlcmlhLCBjb25maWddKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGNvbmZpZz8ucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IF9wYXlsb2FkID0gY3JpdGVyaWE7XHJcbiAgICAgICAgaWYgKCFjcml0ZXJpYSAmJiAhIWNvbmZpZy5hY3RpdmVRdWVyeSkge1xyXG4gICAgICAgICAgX3BheWxvYWQgPSB0aGlzLnByZXBhcmVDcml0ZXJpYVBheWxvYWQoY29uZmlnLmFjdGl2ZVF1ZXJ5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGEkID0gZnJvbShcclxuICAgICAgICAgIHRoaXMuX3JlcG9ydHNIb29rc1NlcnZpY2UuZXhlY3V0ZUJlZm9yZVN1Ym1pdCh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuX25kZlJlcG9ydHNTZXJ2aWNlLnByZXBhcmVSZXF1ZXN0KHJlcXVlc3QsIGNyaXRlcmlhKSxcclxuICAgICAgICAgICAgcmVxdWVzdCxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXMpID0+IHRoaXMuX25kZlJlcG9ydHNTZXJ2aWNlLmdldERhdGEocmVxdWVzdCwgcmVzKSksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlcG9ydHM6IEFwaVJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVNlcnZpY2UucHJlcGFyZURhdGEocmVwb3J0cywgY29uZmlnKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oW29mKGNvbmZpZyksIGRhdGEkXSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKFtjb25maWcsIHJlc3BvbnNlXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVBZ2dyZWdhdGlvbnMocmVzcG9uc2U/LmFnZ3JlZ2F0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvbmZpZyxcclxuICAgICAgICAgIHJlc3BvbnNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlS2V5Ym9hcmRFdmVudCgpIHtcclxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5zaG93RGV0YWlsc1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VEZXRhaWxzUGFuZWwoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZU1hcHBlZFF1ZXJ5KFxyXG4gICAgY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBtb2RlOiAncGF5bG9hZCcgfCAncGFyYW1zJ1xyXG4gICkge1xyXG4gICAgcmV0dXJuIG1vZGUgPT0gJ3BheWxvYWQnXHJcbiAgICAgID8gdGhpcy5wcmVwYXJlQ3JpdGVyaWFQYXlsb2FkKGNyaXRlcmlhKVxyXG4gICAgICA6IHtcclxuICAgICAgICAgIHBhcmFtczogdGhpcy5fc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhKSxcclxuICAgICAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQWN0aXZlUXVlcnkocXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIHRoaXMuX2FjdGl2ZVF1ZXJ5U3ViLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5hY3RpdmVRdWVyeSxcclxuICAgICAgY3VycmVudDogcXVlcnksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2FjdGl2ZUZpbHRlcnNRdWVyeVN1Yi5uZXh0KHtcclxuICAgICAgcXVlcnksXHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgJiYgdGhpcy5hZ2dyZWdhdGlvbnMpIHtcclxuICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlbG9hZFN0cmF0ZWd5ID0gdGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8uc3RyYXRlZ3k7XHJcblxyXG4gICAgaWYgKHRoaXMuYWdncmVnYXRpb25zICYmIHJlbG9hZFN0cmF0ZWd5ID09PSAnbmV2ZXInKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hZ2dyZWdhdGlvbnMgJiYgcmVsb2FkU3RyYXRlZ3kgPT09ICdvbkNoYW5nZScpIHtcclxuICAgICAgaWYgKHRoaXMuX3Nob3VsZFJlbG9hZE9uQ2hhbmdlKCkpIHtcclxuICAgICAgICB0aGlzLl91cGRhdGVBZ2dyZWdhdGlvbnMoYWdncmVnYXRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9ucyk7XHJcbiAgICB0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3VsZFJlbG9hZE9uQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5maWx0ZXJzPy5yZWxvYWQ/LnN0cmF0ZWd5ICE9PSAnb25DaGFuZ2UnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyRmllbGRzID0gdGhpcy5jb25maWc/LmZpbHRlcnM/LnJlbG9hZD8udHJpZ2dlckZpZWxkcztcclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJpZ2dlckZpZWxkcykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbGlkRmllbGRzID0gdHJpZ2dlckZpZWxkcy5maWx0ZXIoQm9vbGVhbik7XHJcbiAgICBpZiAoIXZhbGlkRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWN0aXZhdGVkUXVlcnkgPSB0aGlzLl9hY3RpdmVRdWVyeVN1Yi5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnQgfHwge307XHJcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LnByZXZpb3VzIHx8IHt9O1xyXG5cclxuICAgIGNvbnN0IGNoYW5nZWRLZXlzID0gdGhpcy5fZ2V0Q2hhbmdlZEtleXMocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRGaWVsZHMuc29tZSgoZmllbGQpID0+IGNoYW5nZWRLZXlzLmluY2x1ZGVzKGZpZWxkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDaGFuZ2VkS2V5cyhcclxuICAgIHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGFsbEtleXMgPSBfLnVuaW9uKF8ua2V5cyhwcmV2aW91cyksIF8ua2V5cyhjdXJyZW50KSk7XHJcbiAgICByZXR1cm4gYWxsS2V5cy5maWx0ZXIoKGtleSkgPT4gIV8uaXNFcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUFnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnM6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnMgPSBfLmNsb25lRGVlcChhZ2dyZWdhdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tDb25maWdDaGFuZ2UodmFsdWU6IE5kZlJlcG9ydHNDb25maWcpIHtcclxuICAgIGNvbnN0IHsgYWN0aXZlUXVlcnksIC4uLmNvbmZpZyB9ID0gdmFsdWU7XHJcbiAgICBjb25zdCB7IGFjdGl2ZVF1ZXJ5OiBhcSwgLi4uY3VycmVudENvbmZpZyB9ID1cclxuICAgICAgdGhpcy5fY29uZmlnU3ViamVjdC5nZXRWYWx1ZSgpIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9ICFfLmlzRXF1YWwoY3VycmVudENvbmZpZywgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRSZXBvcnRzQ29uZmlnKGtleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZVxyXG4gICAgICAuZ2V0UmVwb3J0c0NvbmZpZ3VyYXRpb24oa2V5KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIGlmIChjb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRSZXBvcnRzQ29uZmlnKGNvbmZpZzogTmRmUmVwb3J0c0NvbmZpZykge1xyXG4gICAgY29uc3QgdmFsdWUgPSBfLmNsb25lRGVlcChjb25maWcpO1xyXG4gICAgdGhpcy5fY2hlY2tDb25maWdDaGFuZ2UodmFsdWUpO1xyXG4gICAgdGhpcy5fY29uZmlnU3ViamVjdC5uZXh0KHZhbHVlKTtcclxuICAgIGlmICh2YWx1ZT8uYWN0aXZlUXVlcnkgJiYgISFPYmplY3Qua2V5cyh2YWx1ZT8uYWN0aXZlUXVlcnkpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeSh2YWx1ZT8uYWN0aXZlUXVlcnkpO1xyXG4gICAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQoXHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZU1hcHBlZFF1ZXJ5KHZhbHVlPy5hY3RpdmVRdWVyeSwgdGhpcy5maWx0ZXJzQ29uZmlnLm1vZGUpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmFjdGl2ZVF1ZXJ5IHx8IE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlUXVlcnkpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICEhY29uZmlnPy5maWx0ZXJzLnZpc2libGU7XHJcbiAgICB0aGlzLmlzRGV0YWlsc09wZW5lZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fcmVwb3J0RGV0YWlsc1N1YmplY3QubmV4dChudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2V0UXVlcnlBbmRGaWx0ZXJzQ3JpdGVyaWEoKSB7XHJcbiAgICB0aGlzLl91cGRhdGVBY3RpdmVRdWVyeSh7fSk7XHJcbiAgICB0aGlzLl9maWx0ZXJzQ3JpdGVyaWFTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm5kZi1yZXBvcnRzX19jb250YWluZXJcIlxyXG4gIFtjbGFzcy5wYW5lbC1vcGVuZWRdPVwiaXNQYW5lbE9wZW5lZCAmJiBmaWx0ZXJzQ29uZmlnXCJcclxuICBbZGlyXT1cImRpcmVjdGlvblwiXHJcbiAgbmRmRmx1aWRIZWlnaHRcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYWJzb2x1dGUgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgbG9hZGluZy1yZXN1bHRcIlxyXG4gICAgKm5nSWY9XCJpc0xvYWRpbmdSZXN1bHQgJiYgY2FsbExvYWRDb25kaXRpb24oKVwiXHJcbiAgPlxyXG4gICAgPG1hdC1zcGlubmVyIGNsYXNzPVwibXQtNSBteC1hdXRvXCIgW2RpYW1ldGVyXT1cIjQ4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIm5kZi1yZXBvcnRzX19wYW5lbCBwcmludDpoaWRkZW5cIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyUGFuZWxUZW1wbGF0ZVwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgJGltcGxpY2l0OiBhZ2dyZWdhdGlvbnMsXHJcbiAgICAgICAgZmlsdGVyQ2hhbmdlZDogZmlsdGVyQ2hhbmdlZCxcclxuICAgICAgICBhY3RpdmVRdWVyeTogYWN0aXZlUXVlcnksXHJcbiAgICAgICAgdHJpZ2dlclVwZGF0ZTogdHJpZ2dlclVwZGF0ZSxcclxuICAgICAgICByZXNldDogcmVzZXRGaWx0ZXJzLFxyXG4gICAgICAgIGNvbmZpZzogY29uZmlnXHJcbiAgICAgIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxhcHAtZmlsdGVycy1wYW5lbFxyXG4gICAgICAqbmdJZj1cIiEhZmlsdGVyc0NvbmZpZz8uZmllbGRzPy5sZW5ndGggJiYgY2FsbExvYWRDb25kaXRpb24oKVwiXHJcbiAgICAgIFtmaWVsZHNdPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCJcclxuICAgICAgW2FnZ3JlZ2F0aW9uc109XCJhZ2dyZWdhdGlvbnNcIlxyXG4gICAgICAoZmlsdGVyQ2hhbmdlZCk9XCJmaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICBbYWN0aXZlUXVlcnldPVwiYWN0aXZlRmlsdGVyc1F1ZXJ5JCB8IGFzeW5jXCJcclxuICAgICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fZmlsdGVyc1wiXHJcbiAgICAgIFtjdXN0b21UZW1wbGF0ZVJlZl09XCJmaWx0ZXJDdXN0b21UZW1wbGF0ZVwiXHJcbiAgICA+PC9hcHAtZmlsdGVycy1wYW5lbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxMb2FkQ29uZGl0aW9uKCk7IGVsc2UgZW1wdHlDb250ZW50XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnRcIlxyXG4gICAgICAoc2Nyb2xsZWQpPVwib25Db250ZW50U2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAqbmdJZj1cInJlcG9ydHNEYXRhJCB8IGFzeW5jIGFzIHJlcG9ydHNcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2hlYWRlciBmbGV4IHB0LTQgcHJpbnQ6aGlkZGVuXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGFwcC1lZGl0b3ItYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cImpzb25FZGl0b3JFbmFibGVkICYmIHJlcG9ydHNLZXlcIlxyXG4gICAgICAgICAgW2tleV09XCJyZXBvcnRzS2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cImVkaXRvclR5cGVcIlxyXG4gICAgICAgID48L2FwcC1lZGl0b3ItYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/Lm9wdGlvbnM/LnByaW50XCJcclxuICAgICAgICAgIGNsYXNzPVwicHJpbnQtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJwcmludEFsbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24+IHByaW50PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVwb3J0cy1ncmlkXCIgKm5nSWY9XCIhaXNMb2FkaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgPGFwcC1uZGYtcmVwb3J0XHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIHJlcG9ydENvbmZpZy5pdGVtczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgICAgICAgIFtkYXRhXT1cInJlcG9ydHM/LnJlc3BvbnNlXCJcclxuICAgICAgICAgIFtjcml0ZXJpYV09XCJmaWx0ZXJzUGFyYW1zJCB8IGFzeW5jXCJcclxuICAgICAgICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtd2lkdGhdPVwiY29uZmlnPy5sYXlvdXQ/LndpZHRoIHx8IDRcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1oZWlnaHRdPVwiY29uZmlnPy5sYXlvdXQ/LmhlaWdodCB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1zdGFydC1jb2x1bW5dPVwiY29uZmlnPy5sYXlvdXQ/LmNvbHVtblBvc2l0aW9uIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXN0YXJ0LXJvd109XCJjb25maWc/LmxheW91dD8ucm93UG9zaXRpb24gfHwgJ2F1dG8nXCJcclxuICAgICAgICAgIFtjbGFzcy53aWRlXT1cImNvbmZpZz8ubGF5b3V0Py53aWR0aCA+PSA2XCJcclxuICAgICAgICAgIFtzdHlsZV09XCJjb25maWc/LmxheW91dD8uc3R5bGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyZXBvcnRzLWdyaWRfX2l0ZW0ge3sgY29uZmlnPy5sYXlvdXQ/LnN0eWxlQ2xhc3MgfX0gXCJcclxuICAgICAgICAgIChvbk5hdmlnYXRlKT1cIm9uTmF2aWdhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25PcGVuKT1cIm9wZW5SZXBvcnREZXRhaWxzKCRldmVudCwgY29uZmlnKVwiXHJcbiAgICAgICAgPjwvYXBwLW5kZi1yZXBvcnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJuZGYtcmVwb3J0c19fZGV0YWlscyBwcmludDpoaWRkZW5cIlxyXG4gICAgW2NsYXNzLm9wZW5lZF09XCJzaG93RGV0YWlsc1wiXHJcbiAgICBbQHNsaWRlSW5PdXRdPVwic2hvd0RldGFpbHMgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXHJcbiAgICAoQHNsaWRlSW5PdXQuZG9uZSk9XCJvbkRldGFpbHNBbmltYXRpb25FbmQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGFwcC1uZGYtdGFibGVcclxuICAgICAgKm5nSWY9XCJyZXBvcnREZXRhaWxzJCB8IGFzeW5jIGFzIHJlcG9ydFwiXHJcbiAgICAgIFtjb25maWddPVwicmVwb3J0LmNvbmZpZ1wiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVGaWx0ZXJzUXVlcnkkIHwgYXN5bmNcIlxyXG4gICAgICBbY3VzdG9tQ3JpdGVyaWFdPVwiZGV0YWlsc0ZpbHRlcnNQYXJhbXMkIHwgYXN5bmNcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgc2VhcmNoVGFibGVUZW1wbGF0ZSBsZXQtdG9nZ2xlPVwidG9nZ2xlUGFuZWxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2RldGFpbHNfX2hlYWRlciBmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPiBmaWx0ZXJfYWx0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEZXRhaWxzUGFuZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj4gY2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGgzPlxyXG4gICAgICAgICAge3sgcmVwb3J0LmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvYXBwLW5kZi10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cclxuICA8ZGl2IGNsYXNzPVwibmRmLXJlcG9ydHNfX2NvbnRlbnQgZmxleCBpdGVtcy1jZW50ZXIgZmxleC1ncm93LTFcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlDb250ZW50VGVtcGxhdGUgfHwgZGVmYXVsdEVtcHR5Q29udGVudFwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eUNvbnRlbnQ+XHJcbiAgPGRpdiBjbGFzcz1cIm5vLWRhdGEgbXQtMjZcIj5cclxuICAgIHt7ICdub0RhdGEnIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Directive, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const EMPTY_CONTENT_TEMPLATE = new InjectionToken('EmptyContentTemplateDirective');
4
+ export class EmptyContentTemplateDirective {
5
+ constructor(template) {
6
+ this.template = template;
7
+ }
8
+ }
9
+ EmptyContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmptyContentTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
10
+ EmptyContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: EmptyContentTemplateDirective, selector: "[emptyContentTemplate]", providers: [
11
+ {
12
+ provide: EMPTY_CONTENT_TEMPLATE,
13
+ useExisting: EmptyContentTemplateDirective,
14
+ },
15
+ ], ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmptyContentTemplateDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ selector: '[emptyContentTemplate]',
20
+ providers: [
21
+ {
22
+ provide: EMPTY_CONTENT_TEMPLATE,
23
+ useExisting: EmptyContentTemplateDirective,
24
+ },
25
+ ],
26
+ }]
27
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvZGlyZWN0aXZlcy9lbXB0eS1jb250ZW50LXRlbXBsYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQ2pDLElBQUksY0FBYyxDQUNoQiwrQkFBK0IsQ0FDaEMsQ0FBQztBQVdKLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBRyxDQUFDOzsySEFEdEMsNkJBQTZCOytHQUE3Qiw2QkFBNkIsaURBUDdCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLFdBQVcsRUFBRSw2QkFBNkI7U0FDM0M7S0FDRjs0RkFFVSw2QkFBNkI7a0JBVHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcsK0JBQStCO3lCQUMzQztxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgRU1QVFlfQ09OVEVOVF9URU1QTEFURSA9XHJcbiAgbmV3IEluamVjdGlvblRva2VuPEVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlPihcclxuICAgICdFbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSdcclxuICApO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZW1wdHlDb250ZW50VGVtcGxhdGVdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRU1QVFlfQ09OVEVOVF9URU1QTEFURSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cclxufVxyXG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { Directive, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const HEADER_PANEL_TEMPLATE = new InjectionToken('HeaderPanelTemplateDirective');
4
+ export class HeaderPanelTemplateDirective {
5
+ constructor(template) {
6
+ this.template = template;
7
+ }
8
+ }
9
+ HeaderPanelTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HeaderPanelTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
10
+ HeaderPanelTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: HeaderPanelTemplateDirective, selector: "[headerPanelTemplate]", providers: [
11
+ {
12
+ provide: HEADER_PANEL_TEMPLATE,
13
+ useExisting: HeaderPanelTemplateDirective,
14
+ },
15
+ ], ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HeaderPanelTemplateDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ selector: '[headerPanelTemplate]',
20
+ providers: [
21
+ {
22
+ provide: HEADER_PANEL_TEMPLATE,
23
+ useExisting: HeaderPanelTemplateDirective,
24
+ },
25
+ ],
26
+ }]
27
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXBhbmVsLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9kaXJlY3RpdmVzL2hlYWRlci1wYW5lbC10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUNoQyxJQUFJLGNBQWMsQ0FDaEIsOEJBQThCLENBQy9CLENBQUM7QUFXSixNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQW1CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQzs7MEhBRHRDLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLGdEQVA1QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixXQUFXLEVBQUUsNEJBQTRCO1NBQzFDO0tBQ0Y7NEZBRVUsNEJBQTRCO2tCQVR4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLDhCQUE4Qjt5QkFDMUM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEhFQURFUl9QQU5FTF9URU1QTEFURSA9XHJcbiAgbmV3IEluamVjdGlvblRva2VuPEhlYWRlclBhbmVsVGVtcGxhdGVEaXJlY3RpdmU+KFxyXG4gICAgJ0hlYWRlclBhbmVsVGVtcGxhdGVEaXJlY3RpdmUnXHJcbiAgKTtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2hlYWRlclBhbmVsVGVtcGxhdGVdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSEVBREVSX1BBTkVMX1RFTVBMQVRFLFxyXG4gICAgICB1c2VFeGlzdGluZzogSGVhZGVyUGFuZWxUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlclBhbmVsVGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cclxufVxyXG4iXX0=
@@ -1,2 +1,4 @@
1
+ export * from './empty-content-template.directive';
2
+ export * from './header-panel-template.directive';
1
3
  export * from './scrollable-div.directive';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsYWJsZS1kaXYuZGlyZWN0aXZlJztcclxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZW1wdHktY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hlYWRlci1wYW5lbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUtZGl2LmRpcmVjdGl2ZSc7XHJcbiJdfQ==