@igo2/common 1.12.0 → 1.13.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/{esm2015/igo2-common.js → esm2020/igo2-common.mjs} +0 -0
  2. package/{esm2015/lib/action/action.module.js → esm2020/lib/action/action.module.mjs} +3 -5
  3. package/esm2020/lib/action/actionbar/actionbar-item.component.mjs +252 -0
  4. package/esm2020/lib/action/actionbar/actionbar.component.mjs +370 -0
  5. package/{esm2015/lib/action/actionbar/actionbar.module.js → esm2020/lib/action/actionbar/actionbar.module.mjs} +10 -12
  6. package/{esm2015/lib/action/index.js → esm2020/lib/action/index.mjs} +0 -0
  7. package/{esm2015/lib/action/shared/action.enums.js → esm2020/lib/action/shared/action.enums.mjs} +0 -0
  8. package/{esm2015/lib/action/shared/action.interfaces.js → esm2020/lib/action/shared/action.interfaces.mjs} +0 -0
  9. package/{esm2015/lib/action/shared/index.js → esm2020/lib/action/shared/index.mjs} +0 -0
  10. package/{esm2015/lib/action/shared/store.js → esm2020/lib/action/shared/store.mjs} +0 -0
  11. package/{esm2015/lib/backdrop/backdrop.component.js → esm2020/lib/backdrop/backdrop.component.mjs} +3 -7
  12. package/{esm2015/lib/backdrop/backdrop.module.js → esm2020/lib/backdrop/backdrop.module.mjs} +2 -2
  13. package/{esm2015/lib/backdrop/index.js → esm2020/lib/backdrop/index.mjs} +0 -0
  14. package/{esm2015/lib/badge-icon/badge-icon.directive.js → esm2020/lib/badge-icon/badge-icon.directive.mjs} +0 -0
  15. package/{esm2015/lib/badge-icon/badge-icon.module.js → esm2020/lib/badge-icon/badge-icon.module.mjs} +2 -2
  16. package/{esm2015/lib/badge-icon/index.js → esm2020/lib/badge-icon/index.mjs} +0 -0
  17. package/{esm2015/lib/clickout/clickout.directive.js → esm2020/lib/clickout/clickout.directive.mjs} +0 -0
  18. package/{esm2015/lib/clickout/clickout.module.js → esm2020/lib/clickout/clickout.module.mjs} +2 -2
  19. package/{esm2015/lib/clickout/index.js → esm2020/lib/clickout/index.mjs} +0 -0
  20. package/{esm2015/lib/clone/clone.module.js → esm2020/lib/clone/clone.module.mjs} +2 -2
  21. package/{esm2015/lib/clone/clone.pipe.js → esm2020/lib/clone/clone.pipe.mjs} +0 -0
  22. package/{esm2015/lib/clone/index.js → esm2020/lib/clone/index.mjs} +0 -0
  23. package/{esm2015/lib/collapsible/collapse.directive.js → esm2020/lib/collapsible/collapse.directive.mjs} +0 -0
  24. package/{esm2015/lib/collapsible/collapsible.component.js → esm2020/lib/collapsible/collapsible.component.mjs} +9 -15
  25. package/{esm2015/lib/collapsible/collapsible.module.js → esm2020/lib/collapsible/collapsible.module.mjs} +2 -2
  26. package/{esm2015/lib/collapsible/index.js → esm2020/lib/collapsible/index.mjs} +0 -0
  27. package/{esm2015/lib/confirm-dialog/confirm-dialog.component.js → esm2020/lib/confirm-dialog/confirm-dialog.component.mjs} +5 -11
  28. package/{esm2015/lib/confirm-dialog/confirm-dialog.module.js → esm2020/lib/confirm-dialog/confirm-dialog.module.mjs} +2 -2
  29. package/{esm2015/lib/confirm-dialog/confirm-dialog.service.js → esm2020/lib/confirm-dialog/confirm-dialog.service.mjs} +0 -0
  30. package/{esm2015/lib/confirm-dialog/index.js → esm2020/lib/confirm-dialog/index.mjs} +0 -0
  31. package/{esm2015/lib/context-menu/context-menu.directive.js → esm2020/lib/context-menu/context-menu.directive.mjs} +0 -0
  32. package/{esm2015/lib/context-menu/context-menu.module.js → esm2020/lib/context-menu/context-menu.module.mjs} +2 -2
  33. package/{esm2015/lib/context-menu/index.js → esm2020/lib/context-menu/index.mjs} +0 -0
  34. package/{esm2015/lib/custom-html/custom-html.component.js → esm2020/lib/custom-html/custom-html.component.mjs} +3 -7
  35. package/{esm2015/lib/custom-html/custom-html.module.js → esm2020/lib/custom-html/custom-html.module.mjs} +7 -9
  36. package/{esm2015/lib/custom-html/custom-html.pipe.js → esm2020/lib/custom-html/custom-html.pipe.mjs} +0 -0
  37. package/{esm2015/lib/custom-html/index.js → esm2020/lib/custom-html/index.mjs} +0 -0
  38. package/{esm2015/lib/dom/dom.interfaces.js → esm2020/lib/dom/dom.interfaces.mjs} +0 -0
  39. package/{esm2015/lib/dom/dom.module.js → esm2020/lib/dom/dom.module.mjs} +0 -0
  40. package/{esm2015/lib/dom/dom.service.js → esm2020/lib/dom/dom.service.mjs} +11 -14
  41. package/{esm2015/lib/dom/index.js → esm2020/lib/dom/index.mjs} +0 -0
  42. package/{esm2015/lib/drag-drop/drag-drop.directive.js → esm2020/lib/drag-drop/drag-drop.directive.mjs} +0 -0
  43. package/{esm2015/lib/drag-drop/drag-drop.module.js → esm2020/lib/drag-drop/drag-drop.module.mjs} +2 -2
  44. package/{esm2015/lib/drag-drop/index.js → esm2020/lib/drag-drop/index.mjs} +0 -0
  45. package/{esm2015/lib/dynamic-component/dynamic-component.module.js → esm2020/lib/dynamic-component/dynamic-component.module.mjs} +3 -5
  46. package/{esm2015/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.js → esm2020/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.mjs} +2 -7
  47. package/{esm2015/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.js → esm2020/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.mjs} +2 -4
  48. package/{esm2015/lib/dynamic-component/index.js → esm2020/lib/dynamic-component/index.mjs} +0 -0
  49. package/{esm2015/lib/dynamic-component/shared/dynamic-component.interfaces.js → esm2020/lib/dynamic-component/shared/dynamic-component.interfaces.mjs} +0 -0
  50. package/{esm2015/lib/dynamic-component/shared/dynamic-component.js → esm2020/lib/dynamic-component/shared/dynamic-component.mjs} +0 -0
  51. package/{esm2015/lib/dynamic-component/shared/dynamic-component.service.js → esm2020/lib/dynamic-component/shared/dynamic-component.service.mjs} +0 -0
  52. package/{esm2015/lib/dynamic-component/shared/index.js → esm2020/lib/dynamic-component/shared/index.mjs} +0 -0
  53. package/{esm2015/lib/entity/entity-selector/entity-selector.component.js → esm2020/lib/entity/entity-selector/entity-selector.component.mjs} +8 -15
  54. package/{esm2015/lib/entity/entity-selector/entity-selector.module.js → esm2020/lib/entity/entity-selector/entity-selector.module.mjs} +4 -6
  55. package/{esm2015/lib/entity/entity-table/entity-table-row.directive.js → esm2020/lib/entity/entity-table/entity-table-row.directive.mjs} +0 -0
  56. package/esm2020/lib/entity/entity-table/entity-table.component.mjs +1339 -0
  57. package/{esm2015/lib/entity/entity-table/entity-table.module.js → esm2020/lib/entity/entity-table/entity-table.module.mjs} +20 -22
  58. package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.component.mjs +132 -0
  59. package/{esm2015/lib/entity/entity-table-paginator/entity-table-paginator.interface.js → esm2020/lib/entity/entity-table-paginator/entity-table-paginator.interface.mjs} +0 -0
  60. package/{esm2015/lib/entity/entity-table-paginator/entity-table-paginator.module.js → esm2020/lib/entity/entity-table-paginator/entity-table-paginator.module.mjs} +2 -4
  61. package/{esm2015/lib/entity/entity.module.js → esm2020/lib/entity/entity.module.mjs} +2 -4
  62. package/{esm2015/lib/entity/index.js → esm2020/lib/entity/index.mjs} +0 -0
  63. package/{esm2015/lib/entity/shared/entity.enums.js → esm2020/lib/entity/shared/entity.enums.mjs} +0 -0
  64. package/{esm2015/lib/entity/shared/entity.interfaces.js → esm2020/lib/entity/shared/entity.interfaces.mjs} +0 -0
  65. package/esm2020/lib/entity/shared/entity.utils.mjs +67 -0
  66. package/{esm2015/lib/entity/shared/index.js → esm2020/lib/entity/shared/index.mjs} +0 -0
  67. package/{esm2015/lib/entity/shared/state.js → esm2020/lib/entity/shared/state.mjs} +0 -0
  68. package/{esm2015/lib/entity/shared/store.js → esm2020/lib/entity/shared/store.mjs} +0 -0
  69. package/{esm2015/lib/entity/shared/strategies/filter-custom-function.js → esm2020/lib/entity/shared/strategies/filter-custom-function.mjs} +0 -0
  70. package/{esm2015/lib/entity/shared/strategies/filter-selection.js → esm2020/lib/entity/shared/strategies/filter-selection.mjs} +0 -0
  71. package/{esm2015/lib/entity/shared/strategies/index.js → esm2020/lib/entity/shared/strategies/index.mjs} +0 -0
  72. package/{esm2015/lib/entity/shared/strategies/strategy.js → esm2020/lib/entity/shared/strategies/strategy.mjs} +0 -0
  73. package/{esm2015/lib/entity/shared/transaction.js → esm2020/lib/entity/shared/transaction.mjs} +0 -0
  74. package/{esm2015/lib/entity/shared/view.js → esm2020/lib/entity/shared/view.mjs} +0 -0
  75. package/{esm2015/lib/entity/shared/watcher.js → esm2020/lib/entity/shared/watcher.mjs} +0 -0
  76. package/{esm2015/lib/flexible/flexible.component.js → esm2020/lib/flexible/flexible.component.mjs} +7 -17
  77. package/{esm2015/lib/flexible/flexible.module.js → esm2020/lib/flexible/flexible.module.mjs} +2 -2
  78. package/{esm2015/lib/flexible/flexible.type.js → esm2020/lib/flexible/flexible.type.mjs} +0 -0
  79. package/{esm2015/lib/flexible/index.js → esm2020/lib/flexible/index.mjs} +0 -0
  80. package/esm2020/lib/form/form/form.component.mjs +117 -0
  81. package/{esm2015/lib/form/form/form.module.js → esm2020/lib/form/form/form.module.mjs} +4 -6
  82. package/esm2020/lib/form/form-field/form-field-select.component.mjs +127 -0
  83. package/esm2020/lib/form/form-field/form-field-text.component.mjs +104 -0
  84. package/esm2020/lib/form/form-field/form-field-textarea.component.mjs +105 -0
  85. package/{esm2015/lib/form/form-field/form-field.component.js → esm2020/lib/form/form-field/form-field.component.mjs} +3 -8
  86. package/{esm2015/lib/form/form-field/form-field.module.js → esm2020/lib/form/form-field/form-field.module.mjs} +10 -12
  87. package/{esm2015/lib/form/form-field/index.js → esm2020/lib/form/form-field/index.mjs} +0 -0
  88. package/{esm2015/lib/form/form-group/form-group.component.js → esm2020/lib/form/form-group/form-group.component.mjs} +5 -10
  89. package/{esm2015/lib/form/form-group/form-group.module.js → esm2020/lib/form/form-group/form-group.module.mjs} +5 -7
  90. package/{esm2015/lib/form/form.module.js → esm2020/lib/form/form.module.mjs} +4 -6
  91. package/{esm2015/lib/form/index.js → esm2020/lib/form/index.mjs} +0 -0
  92. package/{esm2015/lib/form/shared/form-field-component.js → esm2020/lib/form/shared/form-field-component.mjs} +0 -0
  93. package/{esm2015/lib/form/shared/form-field.service.js → esm2020/lib/form/shared/form-field.service.mjs} +1 -1
  94. package/{esm2015/lib/form/shared/form.interfaces.js → esm2020/lib/form/shared/form.interfaces.mjs} +0 -0
  95. package/{esm2015/lib/form/shared/form.service.js → esm2020/lib/form/shared/form.service.mjs} +0 -0
  96. package/{esm2015/lib/form/shared/form.utils.js → esm2020/lib/form/shared/form.utils.mjs} +0 -0
  97. package/{esm2015/lib/form/shared/index.js → esm2020/lib/form/shared/index.mjs} +0 -0
  98. package/{esm2015/lib/home-button/home-button.component.js → esm2020/lib/home-button/home-button.component.mjs} +6 -10
  99. package/{esm2015/lib/home-button/home-button.module.js → esm2020/lib/home-button/home-button.module.mjs} +6 -8
  100. package/{esm2015/lib/home-button/index.js → esm2020/lib/home-button/index.mjs} +0 -0
  101. package/{esm2015/lib/image/image.module.js → esm2020/lib/image/image.module.mjs} +2 -2
  102. package/{esm2015/lib/image/index.js → esm2020/lib/image/index.mjs} +0 -0
  103. package/esm2020/lib/image/secure-image.pipe.mjs +54 -0
  104. package/{esm2015/lib/interactive-tour/index.js → esm2020/lib/interactive-tour/index.mjs} +0 -0
  105. package/esm2020/lib/interactive-tour/interactive-tour.component.mjs +135 -0
  106. package/{esm2015/lib/interactive-tour/interactive-tour.interface.js → esm2020/lib/interactive-tour/interactive-tour.interface.mjs} +0 -0
  107. package/{esm2015/lib/interactive-tour/interactive-tour.loader.js → esm2020/lib/interactive-tour/interactive-tour.loader.mjs} +0 -0
  108. package/{esm2015/lib/interactive-tour/interactive-tour.module.js → esm2020/lib/interactive-tour/interactive-tour.module.mjs} +6 -8
  109. package/esm2020/lib/interactive-tour/interactive-tour.service.mjs +285 -0
  110. package/{esm2015/lib/json-dialog/index.js → esm2020/lib/json-dialog/index.mjs} +0 -0
  111. package/{esm2015/lib/json-dialog/json-dialog.component.js → esm2020/lib/json-dialog/json-dialog.component.mjs} +6 -13
  112. package/{esm2015/lib/json-dialog/json-dialog.module.js → esm2020/lib/json-dialog/json-dialog.module.mjs} +2 -2
  113. package/{esm2015/lib/json-dialog/json-dialog.service.js → esm2020/lib/json-dialog/json-dialog.service.mjs} +0 -0
  114. package/{esm2015/lib/keyvalue/index.js → esm2020/lib/keyvalue/index.mjs} +0 -0
  115. package/{esm2015/lib/keyvalue/keyvalue.module.js → esm2020/lib/keyvalue/keyvalue.module.mjs} +2 -2
  116. package/{esm2015/lib/keyvalue/keyvalue.pipe.js → esm2020/lib/keyvalue/keyvalue.pipe.mjs} +0 -0
  117. package/{esm2015/lib/list/index.js → esm2020/lib/list/index.mjs} +0 -0
  118. package/{esm2015/lib/list/list-item.directive.js → esm2020/lib/list/list-item.directive.mjs} +0 -0
  119. package/{esm2015/lib/list/list.component.js → esm2020/lib/list/list.component.mjs} +6 -10
  120. package/{esm2015/lib/list/list.module.js → esm2020/lib/list/list.module.mjs} +2 -2
  121. package/{esm2015/lib/panel/index.js → esm2020/lib/panel/index.mjs} +0 -0
  122. package/esm2020/lib/panel/panel.component.mjs +60 -0
  123. package/{esm2015/lib/panel/panel.module.js → esm2020/lib/panel/panel.module.mjs} +2 -2
  124. package/{esm2015/lib/sidenav/index.js → esm2020/lib/sidenav/index.mjs} +0 -0
  125. package/{esm2015/lib/sidenav/sidenav-shim.directive.js → esm2020/lib/sidenav/sidenav-shim.directive.mjs} +0 -0
  126. package/{esm2015/lib/sidenav/sidenav.module.js → esm2020/lib/sidenav/sidenav.module.mjs} +2 -2
  127. package/{esm2015/lib/spinner/index.js → esm2020/lib/spinner/index.mjs} +0 -0
  128. package/{esm2015/lib/spinner/spinner-activity.directive.js → esm2020/lib/spinner/spinner-activity.directive.mjs} +0 -0
  129. package/{esm2015/lib/spinner/spinner.component.js → esm2020/lib/spinner/spinner.component.mjs} +4 -9
  130. package/{esm2015/lib/spinner/spinner.module.js → esm2020/lib/spinner/spinner.module.mjs} +2 -2
  131. package/{esm2015/lib/stop-propagation/index.js → esm2020/lib/stop-propagation/index.mjs} +0 -0
  132. package/{esm2015/lib/stop-propagation/stop-drop-propagation.directive.js → esm2020/lib/stop-propagation/stop-drop-propagation.directive.mjs} +0 -0
  133. package/{esm2015/lib/stop-propagation/stop-propagation.directive.js → esm2020/lib/stop-propagation/stop-propagation.directive.mjs} +0 -0
  134. package/{esm2015/lib/stop-propagation/stop-propagation.module.js → esm2020/lib/stop-propagation/stop-propagation.module.mjs} +2 -2
  135. package/{esm2015/lib/table/index.js → esm2020/lib/table/index.mjs} +0 -0
  136. package/{esm2015/lib/table/table-action-color.enum.js → esm2020/lib/table/table-action-color.enum.mjs} +0 -0
  137. package/{esm2015/lib/table/table-database.js → esm2020/lib/table/table-database.mjs} +0 -0
  138. package/{esm2015/lib/table/table-datasource.js → esm2020/lib/table/table-datasource.mjs} +0 -0
  139. package/{esm2015/lib/table/table-model.interface.js → esm2020/lib/table/table-model.interface.mjs} +0 -0
  140. package/esm2020/lib/table/table.component.mjs +297 -0
  141. package/{esm2015/lib/table/table.module.js → esm2020/lib/table/table.module.mjs} +12 -14
  142. package/{esm2015/lib/tool/index.js → esm2020/lib/tool/index.mjs} +0 -0
  143. package/{esm2015/lib/tool/shared/index.js → esm2020/lib/tool/shared/index.mjs} +0 -0
  144. package/{esm2015/lib/tool/shared/tool-component.js → esm2020/lib/tool/shared/tool-component.mjs} +0 -0
  145. package/{esm2015/lib/tool/shared/tool.interface.js → esm2020/lib/tool/shared/tool.interface.mjs} +0 -0
  146. package/{esm2015/lib/tool/shared/tool.service.js → esm2020/lib/tool/shared/tool.service.mjs} +1 -1
  147. package/{esm2015/lib/tool/shared/toolbox.enums.js → esm2020/lib/tool/shared/toolbox.enums.mjs} +0 -0
  148. package/{esm2015/lib/tool/shared/toolbox.js → esm2020/lib/tool/shared/toolbox.mjs} +0 -0
  149. package/{esm2015/lib/tool/tool.module.js → esm2020/lib/tool/tool.module.mjs} +2 -4
  150. package/{esm2015/lib/tool/toolbox/toolbox.animation.js → esm2020/lib/tool/toolbox/toolbox.animation.mjs} +0 -0
  151. package/esm2020/lib/tool/toolbox/toolbox.component.mjs +255 -0
  152. package/{esm2015/lib/tool/toolbox/toolbox.module.js → esm2020/lib/tool/toolbox/toolbox.module.mjs} +4 -6
  153. package/{esm2015/lib/widget/index.js → esm2020/lib/widget/index.mjs} +0 -0
  154. package/{esm2015/lib/widget/shared/index.js → esm2020/lib/widget/shared/index.mjs} +0 -0
  155. package/{esm2015/lib/widget/shared/widget.interfaces.js → esm2020/lib/widget/shared/widget.interfaces.mjs} +0 -0
  156. package/{esm2015/lib/widget/shared/widget.js → esm2020/lib/widget/shared/widget.mjs} +0 -0
  157. package/{esm2015/lib/widget/shared/widget.service.js → esm2020/lib/widget/shared/widget.service.mjs} +0 -0
  158. package/{esm2015/lib/widget/widget-outlet/widget-outlet.component.js → esm2020/lib/widget/widget-outlet/widget-outlet.component.mjs} +3 -8
  159. package/{esm2015/lib/widget/widget-outlet/widget-outlet.module.js → esm2020/lib/widget/widget-outlet/widget-outlet.module.mjs} +3 -5
  160. package/{esm2015/lib/widget/widget.module.js → esm2020/lib/widget/widget.module.mjs} +3 -5
  161. package/{esm2015/lib/workspace/index.js → esm2020/lib/workspace/index.mjs} +0 -0
  162. package/{esm2015/lib/workspace/shared/index.js → esm2020/lib/workspace/shared/index.mjs} +0 -0
  163. package/{esm2015/lib/workspace/shared/store.js → esm2020/lib/workspace/shared/store.mjs} +0 -0
  164. package/{esm2015/lib/workspace/shared/workspace.interfaces.js → esm2020/lib/workspace/shared/workspace.interfaces.mjs} +0 -0
  165. package/{esm2015/lib/workspace/shared/workspace.js → esm2020/lib/workspace/shared/workspace.mjs} +0 -0
  166. package/{esm2015/lib/workspace/workspace-selector/workspace-selector.component.js → esm2020/lib/workspace/workspace-selector/workspace-selector.component.mjs} +3 -8
  167. package/{esm2015/lib/workspace/workspace-selector/workspace-selector.module.js → esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs} +3 -5
  168. package/esm2020/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.mjs +88 -0
  169. package/{esm2015/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.js → esm2020/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.mjs} +3 -5
  170. package/{esm2015/lib/workspace/workspace.module.js → esm2020/lib/workspace/workspace.module.mjs} +2 -4
  171. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  172. package/fesm2015/igo2-common.mjs +10145 -0
  173. package/fesm2015/igo2-common.mjs.map +1 -0
  174. package/{fesm2015/igo2-common.js → fesm2020/igo2-common.mjs} +469 -704
  175. package/fesm2020/igo2-common.mjs.map +1 -0
  176. package/{igo2-common.d.ts → index.d.ts} +0 -0
  177. package/lib/action/actionbar/actionbar-item.component.d.ts +1 -1
  178. package/lib/action/actionbar/actionbar.component.d.ts +1 -1
  179. package/lib/backdrop/backdrop.component.d.ts +1 -1
  180. package/lib/badge-icon/badge-icon.directive.d.ts +1 -1
  181. package/lib/clickout/clickout.directive.d.ts +1 -1
  182. package/lib/clone/clone.pipe.d.ts +1 -1
  183. package/lib/collapsible/collapse.directive.d.ts +1 -1
  184. package/lib/collapsible/collapsible.component.d.ts +1 -1
  185. package/lib/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  186. package/lib/context-menu/context-menu.directive.d.ts +1 -1
  187. package/lib/custom-html/custom-html.component.d.ts +1 -1
  188. package/lib/custom-html/custom-html.pipe.d.ts +1 -1
  189. package/lib/drag-drop/drag-drop.directive.d.ts +1 -1
  190. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.d.ts +1 -1
  191. package/lib/entity/entity-selector/entity-selector.component.d.ts +1 -1
  192. package/lib/entity/entity-table/entity-table-row.directive.d.ts +1 -1
  193. package/lib/entity/entity-table/entity-table.component.d.ts +1 -1
  194. package/lib/entity/entity-table-paginator/entity-table-paginator.component.d.ts +1 -1
  195. package/lib/flexible/flexible.component.d.ts +1 -1
  196. package/lib/form/form/form.component.d.ts +1 -1
  197. package/lib/form/form-field/form-field-select.component.d.ts +1 -1
  198. package/lib/form/form-field/form-field-text.component.d.ts +1 -1
  199. package/lib/form/form-field/form-field-textarea.component.d.ts +1 -1
  200. package/lib/form/form-field/form-field.component.d.ts +1 -1
  201. package/lib/form/form-group/form-group.component.d.ts +1 -1
  202. package/lib/home-button/home-button.component.d.ts +1 -1
  203. package/lib/image/secure-image.pipe.d.ts +1 -1
  204. package/lib/interactive-tour/interactive-tour.component.d.ts +1 -1
  205. package/lib/json-dialog/json-dialog.component.d.ts +1 -1
  206. package/lib/keyvalue/keyvalue.pipe.d.ts +1 -1
  207. package/lib/list/list-item.directive.d.ts +1 -1
  208. package/lib/list/list.component.d.ts +1 -1
  209. package/lib/panel/panel.component.d.ts +1 -1
  210. package/lib/sidenav/sidenav-shim.directive.d.ts +1 -1
  211. package/lib/spinner/spinner-activity.directive.d.ts +1 -1
  212. package/lib/spinner/spinner.component.d.ts +1 -1
  213. package/lib/stop-propagation/stop-drop-propagation.directive.d.ts +1 -1
  214. package/lib/stop-propagation/stop-propagation.directive.d.ts +1 -1
  215. package/lib/table/table.component.d.ts +1 -1
  216. package/lib/tool/toolbox/toolbox.component.d.ts +1 -1
  217. package/lib/widget/widget-outlet/widget-outlet.component.d.ts +1 -1
  218. package/lib/workspace/workspace-selector/workspace-selector.component.d.ts +1 -1
  219. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.d.ts +1 -1
  220. package/package.json +25 -12
  221. package/bundles/igo2-common.umd.js +0 -11545
  222. package/bundles/igo2-common.umd.js.map +0 -1
  223. package/esm2015/lib/action/actionbar/actionbar-item.component.js +0 -257
  224. package/esm2015/lib/action/actionbar/actionbar.component.js +0 -385
  225. package/esm2015/lib/entity/entity-table/entity-table.component.js +0 -1359
  226. package/esm2015/lib/entity/entity-table-paginator/entity-table-paginator.component.js +0 -138
  227. package/esm2015/lib/entity/shared/entity.utils.js +0 -67
  228. package/esm2015/lib/form/form/form.component.js +0 -125
  229. package/esm2015/lib/form/form-field/form-field-select.component.js +0 -132
  230. package/esm2015/lib/form/form-field/form-field-text.component.js +0 -108
  231. package/esm2015/lib/form/form-field/form-field-textarea.component.js +0 -110
  232. package/esm2015/lib/image/secure-image.pipe.js +0 -55
  233. package/esm2015/lib/interactive-tour/interactive-tour.component.js +0 -140
  234. package/esm2015/lib/interactive-tour/interactive-tour.service.js +0 -285
  235. package/esm2015/lib/panel/panel.component.js +0 -67
  236. package/esm2015/lib/table/table.component.js +0 -310
  237. package/esm2015/lib/tool/toolbox/toolbox.component.js +0 -261
  238. package/esm2015/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.js +0 -93
  239. package/fesm2015/igo2-common.js.map +0 -1
@@ -0,0 +1,285 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@igo2/core";
4
+ import * as i2 from "./interactive-tour.loader";
5
+ import * as i3 from "angular-shepherd";
6
+ export class InteractiveTourService {
7
+ constructor(configService, mediaService, languageService, interactiveTourLoader, shepherdService) {
8
+ this.configService = configService;
9
+ this.mediaService = mediaService;
10
+ this.languageService = languageService;
11
+ this.interactiveTourLoader = interactiveTourLoader;
12
+ this.shepherdService = shepherdService;
13
+ this.nextIndex = 1;
14
+ if (this.isAppHaveTour()) {
15
+ this.interactiveTourLoader.loadConfigTour();
16
+ }
17
+ }
18
+ isAppHaveTour() {
19
+ const haveTour = this.configService.getConfig('interactiveTour.activateInteractiveTour');
20
+ if (haveTour === undefined) {
21
+ return true;
22
+ }
23
+ else {
24
+ return haveTour;
25
+ }
26
+ }
27
+ isToolHaveTourConfig(toolName) {
28
+ const checkTourActiveOptions = this.interactiveTourLoader.getTourOptionData(toolName);
29
+ if (checkTourActiveOptions === undefined) {
30
+ return false;
31
+ }
32
+ else {
33
+ return true;
34
+ }
35
+ }
36
+ disabledTourButton(toolName) {
37
+ const stepConfig = this.interactiveTourLoader.getTourOptionData(toolName);
38
+ if (stepConfig?.conditions) {
39
+ for (const condition of stepConfig?.conditions) {
40
+ if (document.querySelector(condition) === null) {
41
+ return true;
42
+ }
43
+ }
44
+ }
45
+ return false;
46
+ }
47
+ isMobile() {
48
+ return this.mediaService.isMobile();
49
+ }
50
+ isTourDisplayInMobile() {
51
+ const showInMobile = this.configService.getConfig('interactiveTour.tourInMobile');
52
+ if (showInMobile === undefined) {
53
+ return true;
54
+ }
55
+ return this.configService.getConfig('interactiveTour.tourInMobile');
56
+ }
57
+ getButtons(buttonKind) {
58
+ if (buttonKind === 'noBackButton') {
59
+ return [
60
+ {
61
+ classes: 'shepherd-button-primary',
62
+ text: this.languageService.translate.instant('igo.common.interactiveTour.nextButton'),
63
+ type: 'next'
64
+ }
65
+ ];
66
+ }
67
+ if (buttonKind === 'first') {
68
+ return [
69
+ {
70
+ classes: 'shepherd-button-secondary',
71
+ text: this.languageService.translate.instant('igo.common.interactiveTour.exitButton'),
72
+ type: 'cancel'
73
+ },
74
+ {
75
+ classes: 'shepherd-button-primary',
76
+ text: this.languageService.translate.instant('igo.common.interactiveTour.nextButton'),
77
+ type: 'next'
78
+ }
79
+ ];
80
+ }
81
+ if (buttonKind === 'last') {
82
+ return [
83
+ {
84
+ classes: 'shepherd-button-secondary',
85
+ text: this.languageService.translate.instant('igo.common.interactiveTour.backButton'),
86
+ type: 'back'
87
+ },
88
+ {
89
+ classes: 'shepherd-button-primary',
90
+ text: this.languageService.translate.instant('igo.common.interactiveTour.exitButton'),
91
+ type: 'cancel'
92
+ }
93
+ ];
94
+ }
95
+ return [
96
+ {
97
+ classes: 'shepherd-button-secondary',
98
+ text: this.languageService.translate.instant('igo.common.interactiveTour.backButton'),
99
+ type: 'back'
100
+ },
101
+ {
102
+ classes: 'shepherd-button-primary',
103
+ text: this.languageService.translate.instant('igo.common.interactiveTour.nextButton'),
104
+ type: 'next'
105
+ }
106
+ ];
107
+ }
108
+ getAction(actionName) {
109
+ const action = {
110
+ click: 'click'
111
+ };
112
+ return action[actionName.toLowerCase()];
113
+ }
114
+ addProgress() {
115
+ const self = this;
116
+ let nbTry = 0;
117
+ const maxTry = 21;
118
+ const checkExist = setInterval(() => {
119
+ if (self.getCurrentStep()) {
120
+ if (self.getCurrentStep().options.attachTo.element && !document.querySelector(self.getCurrentStep().options.attachTo.element)) {
121
+ self.cancel();
122
+ clearInterval(checkExist);
123
+ return;
124
+ }
125
+ else {
126
+ const currentStepElement = self.getCurrentStep().getElement();
127
+ if (currentStepElement) {
128
+ const shepherdList = currentStepElement.querySelectorAll('.shepherd-content, .shepherd-text');
129
+ shepherdList.forEach(element => {
130
+ element.classList.add('mat-typography');
131
+ });
132
+ }
133
+ const header = currentStepElement
134
+ ? currentStepElement.querySelector('.shepherd-header')
135
+ : undefined;
136
+ nbTry++;
137
+ if (header || nbTry > maxTry) {
138
+ clearInterval(checkExist);
139
+ }
140
+ if (header) {
141
+ const stepsArray = self.steps;
142
+ const progress = document.createElement('span');
143
+ progress.className = 'shepherd-progress';
144
+ progress.innerText = `${stepsArray.indexOf(self.getCurrentStep()) + 1}/${stepsArray.length}`;
145
+ header.insertBefore(progress, currentStepElement.querySelector('.shepherd-cancel-icon'));
146
+ }
147
+ }
148
+ }
149
+ }, 100);
150
+ }
151
+ checkNext(index, tour, service) {
152
+ if (tour.getCurrentStep()) {
153
+ if (tour.getCurrentStep().options.attachTo.element && document.querySelector(tour.getCurrentStep().options.attachTo.element)) {
154
+ tour.complete();
155
+ return;
156
+ }
157
+ if (index.index === tour.steps.length - 1) {
158
+ tour.complete();
159
+ return;
160
+ }
161
+ tour.steps.splice(index.index, 1);
162
+ const nextStep = tour.steps[index.index];
163
+ if (nextStep.options.attachTo.element && !document.querySelector(nextStep.options.attachTo.element)) {
164
+ service.checkNext(index, tour, service);
165
+ }
166
+ else {
167
+ tour._setupModal();
168
+ tour.show(nextStep.id);
169
+ }
170
+ }
171
+ }
172
+ executeAction(step, actionConfig) {
173
+ if (!actionConfig) {
174
+ return;
175
+ }
176
+ if (actionConfig.condition &&
177
+ ((actionConfig.condition.charAt(0) === '!' &&
178
+ document.querySelector(actionConfig.condition.slice(1))) ||
179
+ (actionConfig.condition.charAt(0) !== '!' &&
180
+ !document.querySelector(actionConfig.condition)))) {
181
+ return;
182
+ }
183
+ const element = document.querySelector(actionConfig.element || step.element);
184
+ const action = this.getAction(actionConfig.action);
185
+ if (element && action) {
186
+ element[action]();
187
+ }
188
+ }
189
+ executeActionPromise(step, actionConfig) {
190
+ return new Promise((resolve) => {
191
+ this.executeAction(step, actionConfig);
192
+ if (!actionConfig || !actionConfig.waitFor) {
193
+ resolve();
194
+ return;
195
+ }
196
+ let nbTry = 0;
197
+ const maxTry = actionConfig.maxWait ? actionConfig.maxWait / 100 : 20;
198
+ const checkExist = setInterval(() => {
199
+ nbTry++;
200
+ if (nbTry > maxTry || document.querySelector(actionConfig.waitFor)) {
201
+ clearInterval(checkExist);
202
+ resolve();
203
+ }
204
+ }, 100);
205
+ });
206
+ }
207
+ getShepherdSteps(stepConfig) {
208
+ const shepherdSteps = [];
209
+ let i = 0;
210
+ for (const step of stepConfig.steps) {
211
+ shepherdSteps.push({
212
+ attachTo: {
213
+ element: step.element,
214
+ on: step.position || stepConfig.position
215
+ },
216
+ popperOptions: {
217
+ modifiers: [{ name: 'offset', options: { offset: [0, 15] } }]
218
+ },
219
+ beforeShowPromise: () => {
220
+ return Promise.all([
221
+ this.executeActionPromise(this.previousStep, this.previousStep ? this.previousStep.beforeChange : undefined),
222
+ this.executeActionPromise(step, step.beforeShow)
223
+ ]);
224
+ },
225
+ buttons: this.getButtons(i === 0
226
+ ? 'first'
227
+ : i + 1 === stepConfig.steps.length
228
+ ? 'last'
229
+ : stepConfig.steps[i].noBackButton
230
+ ? 'noBackButton'
231
+ : undefined),
232
+ classes: step.class,
233
+ highlightClass: step.highlightClass,
234
+ scrollTo: step.scrollToElement || stepConfig.scrollToElement || true,
235
+ canClickTarget: step.disableInteraction
236
+ ? !step.disableInteraction
237
+ : undefined,
238
+ title: this.languageService.translate.instant(step.title || stepConfig.title),
239
+ text: [this.languageService.translate.instant(step.text)],
240
+ when: {
241
+ show: () => {
242
+ this.executeAction(step, step.onShow);
243
+ },
244
+ hide: () => {
245
+ this.previousStep = step;
246
+ this.executeAction(step, step.onHide);
247
+ }
248
+ }
249
+ });
250
+ i++;
251
+ }
252
+ return shepherdSteps;
253
+ }
254
+ startTour(toolName) {
255
+ const stepConfig = this.interactiveTourLoader.getTourOptionData(toolName);
256
+ this.shepherdService.defaultStepOptions = {
257
+ classes: stepConfig.class,
258
+ highlightClass: stepConfig.highlightClass,
259
+ canClickTarget: stepConfig.disableInteraction
260
+ ? !stepConfig.disableInteraction
261
+ : true,
262
+ cancelIcon: {
263
+ enabled: true
264
+ }
265
+ };
266
+ const shepherdSteps = this.getShepherdSteps(stepConfig);
267
+ this.shepherdService.modal = true;
268
+ this.shepherdService.confirmCancel = false;
269
+ this.shepherdService.addSteps(shepherdSteps);
270
+ this.shepherdService.tourObject.on('show', this.addProgress);
271
+ this.shepherdService.tourObject.on('cancel', (index) => {
272
+ this.checkNext(index, this.shepherdService.tourObject, this);
273
+ });
274
+ this.shepherdService.start();
275
+ }
276
+ }
277
+ InteractiveTourService.ɵfac = function InteractiveTourService_Factory(t) { return new (t || InteractiveTourService)(i0.ɵɵinject(i1.ConfigService), i0.ɵɵinject(i1.MediaService), i0.ɵɵinject(i1.LanguageService), i0.ɵɵinject(i2.InteractiveTourLoader), i0.ɵɵinject(i3.ShepherdService)); };
278
+ InteractiveTourService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: InteractiveTourService, factory: InteractiveTourService.ɵfac, providedIn: 'root' });
279
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InteractiveTourService, [{
280
+ type: Injectable,
281
+ args: [{
282
+ providedIn: 'root'
283
+ }]
284
+ }], function () { return [{ type: i1.ConfigService }, { type: i1.MediaService }, { type: i1.LanguageService }, { type: i2.InteractiveTourLoader }, { type: i3.ShepherdService }]; }, null); })();
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtdG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvaW50ZXJhY3RpdmUtdG91ci9pbnRlcmFjdGl2ZS10b3VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFjM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUNVLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLHFCQUE0QyxFQUM1QyxlQUFnQztRQUpoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFQbEMsY0FBUyxHQUFHLENBQUMsQ0FBQztRQVNwQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU0sYUFBYTtRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxRQUFnQjtRQUMxQyxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FDekUsUUFBUSxDQUNULENBQUM7UUFDRixJQUFJLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtZQUN4QyxPQUFPLEtB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VSxFQUFFO2dCQUNWLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRixDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDOzs0RkFyVlUsc0JBQXNCOzRFQUF0QixzQkFBc0IsV0FBdEIsc0JBQXNCLG1CQUZyQixNQUFNO3VGQUVQLHNCQUFzQjtjQUhsQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNoZXBoZXJkU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItc2hlcGhlcmQnO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTWVkaWFTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgSW50ZXJhY3RpdmVUb3VyTG9hZGVyIH0gZnJvbSAnLi9pbnRlcmFjdGl2ZS10b3VyLmxvYWRlcic7XHJcbmltcG9ydCB7XHJcbiAgSW50ZXJhY3RpdmVUb3VyT3B0aW9ucyxcclxuICBJbnRlcmFjdGl2ZVRvdXJTdGVwLFxyXG4gIEludGVyYWN0aXZlVG91ckFjdGlvblxyXG59IGZyb20gJy4vaW50ZXJhY3RpdmUtdG91ci5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RpdmVUb3VyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBwcmV2aW91c1N0ZXA6IEludGVyYWN0aXZlVG91clN0ZXA7XHJcbiAgcHJpdmF0ZSBuZXh0SW5kZXggPSAxO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbnRlcmFjdGl2ZVRvdXJMb2FkZXI6IEludGVyYWN0aXZlVG91ckxvYWRlcixcclxuICAgIHByaXZhdGUgc2hlcGhlcmRTZXJ2aWNlOiBTaGVwaGVyZFNlcnZpY2VcclxuICApIHtcclxuICAgIGlmICh0aGlzLmlzQXBwSGF2ZVRvdXIoKSkge1xyXG4gICAgICB0aGlzLmludGVyYWN0aXZlVG91ckxvYWRlci5sb2FkQ29uZmlnVG91cigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzQXBwSGF2ZVRvdXIoKSB7XHJcbiAgICBjb25zdCBoYXZlVG91ciA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2ludGVyYWN0aXZlVG91ci5hY3RpdmF0ZUludGVyYWN0aXZlVG91cicpO1xyXG4gICAgaWYgKGhhdmVUb3VyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaGF2ZVRvdXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNUb29sSGF2ZVRvdXJDb25maWcodG9vbE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2tUb3VyQWN0aXZlT3B0aW9ucyA9IHRoaXMuaW50ZXJhY3RpdmVUb3VyTG9hZGVyLmdldFRvdXJPcHRpb25EYXRhKFxyXG4gICAgICB0b29sTmFtZVxyXG4gICAgKTtcclxuICAgIGlmIChjaGVja1RvdXJBY3RpdmVPcHRpb25zID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGlzYWJsZWRUb3VyQnV0dG9uKHRvb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHN0ZXBDb25maWc6IEludGVyYWN0aXZlVG91ck9wdGlvbnMgPSB0aGlzLmludGVyYWN0aXZlVG91ckxvYWRlci5nZXRUb3VyT3B0aW9uRGF0YShcclxuICAgICAgdG9vbE5hbWVcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHN0ZXBDb25maWc/LmNvbmRpdGlvbnMpIHtcclxuICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygc3RlcENvbmZpZz8uY29uZGl0aW9ucykge1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbmRpdGlvbikgPT09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubWVkaWFTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNUb3VyRGlzcGxheUluTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2hvd0luTW9iaWxlID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyhcclxuICAgICAgJ2ludGVyYWN0aXZlVG91ci50b3VySW5Nb2JpbGUnXHJcbiAgICApO1xyXG4gICAgaWYgKHNob3dJbk1vYmlsZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2ludGVyYWN0aXZlVG91ci50b3VySW5Nb2JpbGUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QnV0dG9ucyhidXR0b25LaW5kPzogJ2ZpcnN0JyB8ICdsYXN0JyB8ICdub0JhY2tCdXR0b24nKSB7XHJcbiAgICBpZiAoYnV0dG9uS2luZCA9PT0gJ25vQmFja0J1dHRvbicpIHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnc2hlcGhlcmQtYnV0dG9uLXByaW1hcnknLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uY29tbW9uLmludGVyYWN0aXZlVG91ci5uZXh0QnV0dG9uJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHR5cGU6ICduZXh0J1xyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25LaW5kID09PSAnZmlyc3QnKSB7XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ3NoZXBoZXJkLWJ1dHRvbi1zZWNvbmRhcnknLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uY29tbW9uLmludGVyYWN0aXZlVG91ci5leGl0QnV0dG9uJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHR5cGU6ICdjYW5jZWwnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnc2hlcGhlcmQtYnV0dG9uLXByaW1hcnknLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uY29tbW9uLmludGVyYWN0aXZlVG91ci5uZXh0QnV0dG9uJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHR5cGU6ICduZXh0J1xyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYnV0dG9uS2luZCA9PT0gJ2xhc3QnKSB7XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ3NoZXBoZXJkLWJ1dHRvbi1zZWNvbmRhcnknLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uY29tbW9uLmludGVyYWN0aXZlVG91ci5iYWNrQnV0dG9uJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHR5cGU6ICdiYWNrJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ3NoZXBoZXJkLWJ1dHRvbi1wcmltYXJ5JyxcclxuICAgICAgICAgIHRleHQ6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAnaWdvLmNvbW1vbi5pbnRlcmFjdGl2ZVRvdXIuZXhpdEJ1dHRvbidcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB0eXBlOiAnY2FuY2VsJ1xyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgY2xhc3NlczogJ3NoZXBoZXJkLWJ1dHRvbi1zZWNvbmRhcnknLFxyXG4gICAgICAgIHRleHQ6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5jb21tb24uaW50ZXJhY3RpdmVUb3VyLmJhY2tCdXR0b24nXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0eXBlOiAnYmFjaydcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNsYXNzZXM6ICdzaGVwaGVyZC1idXR0b24tcHJpbWFyeScsXHJcbiAgICAgICAgdGV4dDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAnaWdvLmNvbW1vbi5pbnRlcmFjdGl2ZVRvdXIubmV4dEJ1dHRvbidcclxuICAgICAgICApLFxyXG4gICAgICAgIHR5cGU6ICduZXh0J1xyXG4gICAgICB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB7XHJcbiAgICAgIGNsaWNrOiAnY2xpY2snXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGFjdGlvblthY3Rpb25OYW1lLnRvTG93ZXJDYXNlKCldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRQcm9ncmVzcygpIHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzIGFzIGFueTtcclxuICAgIGxldCBuYlRyeSA9IDA7XHJcbiAgICBjb25zdCBtYXhUcnkgPSAyMTtcclxuICAgIGNvbnN0IGNoZWNrRXhpc3QgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmIChzZWxmLmdldEN1cnJlbnRTdGVwKCkpIHtcclxuICAgICAgICBpZiAoc2VsZi5nZXRDdXJyZW50U3RlcCgpLm9wdGlvbnMuYXR0YWNoVG8uZWxlbWVudCAmJiAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxmLmdldEN1cnJlbnRTdGVwKCkub3B0aW9ucy5hdHRhY2hUby5lbGVtZW50KSkge1xyXG4gICAgICAgICAgc2VsZi5jYW5jZWwoKTtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tFeGlzdCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwRWxlbWVudCA9IHNlbGYuZ2V0Q3VycmVudFN0ZXAoKS5nZXRFbGVtZW50KCk7XHJcbiAgICAgICAgICBpZiAoY3VycmVudFN0ZXBFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNoZXBoZXJkTGlzdCA9IGN1cnJlbnRTdGVwRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2hlcGhlcmQtY29udGVudCwgLnNoZXBoZXJkLXRleHQnKTtcclxuICAgICAgICAgICAgc2hlcGhlcmRMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtdHlwb2dyYXBoeScpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGN1cnJlbnRTdGVwRWxlbWVudFxyXG4gICAgICAgICAgICA/IGN1cnJlbnRTdGVwRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2hlcGhlcmQtaGVhZGVyJylcclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgbmJUcnkrKztcclxuICAgICAgICAgIGlmIChoZWFkZXIgfHwgbmJUcnkgPiBtYXhUcnkpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0V4aXN0KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoaGVhZGVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBzQXJyYXkgPSBzZWxmLnN0ZXBzO1xyXG4gICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAgICAgcHJvZ3Jlc3MuY2xhc3NOYW1lID0gJ3NoZXBoZXJkLXByb2dyZXNzJztcclxuICAgICAgICAgICAgcHJvZ3Jlc3MuaW5uZXJUZXh0ID0gYCR7XHJcbiAgICAgICAgICAgICAgc3RlcHNBcnJheS5pbmRleE9mKHNlbGYuZ2V0Q3VycmVudFN0ZXAoKSkgKyAxXHJcbiAgICAgICAgICAgIH0vJHtzdGVwc0FycmF5Lmxlbmd0aH1gO1xyXG4gICAgICAgICAgICBoZWFkZXIuaW5zZXJ0QmVmb3JlKFxyXG4gICAgICAgICAgICAgIHByb2dyZXNzLFxyXG4gICAgICAgICAgICAgIGN1cnJlbnRTdGVwRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2hlcGhlcmQtY2FuY2VsLWljb24nKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tOZXh0KGluZGV4LCB0b3VyLCBzZXJ2aWNlKSB7XHJcbiAgICBpZiAodG91ci5nZXRDdXJyZW50U3RlcCgpKSB7XHJcbiAgICAgIGlmICh0b3VyLmdldEN1cnJlbnRTdGVwKCkub3B0aW9ucy5hdHRhY2hUby5lbGVtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodG91ci5nZXRDdXJyZW50U3RlcCgpLm9wdGlvbnMuYXR0YWNoVG8uZWxlbWVudCkpIHtcclxuICAgICAgICB0b3VyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaW5kZXguaW5kZXggPT09IHRvdXIuc3RlcHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRvdXIuY29tcGxldGUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRvdXIuc3RlcHMuc3BsaWNlKGluZGV4LmluZGV4LCAxKTtcclxuICAgICAgY29uc3QgbmV4dFN0ZXAgPSB0b3VyLnN0ZXBzW2luZGV4LmluZGV4XTtcclxuICAgICAgaWYgKG5leHRTdGVwLm9wdGlvbnMuYXR0YWNoVG8uZWxlbWVudCAmJiAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuZXh0U3RlcC5vcHRpb25zLmF0dGFjaFRvLmVsZW1lbnQpKSB7XHJcbiAgICAgICAgc2VydmljZS5jaGVja05leHQoaW5kZXgsIHRvdXIsIHNlcnZpY2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRvdXIuX3NldHVwTW9kYWwoKTtcclxuICAgICAgICB0b3VyLnNob3cobmV4dFN0ZXAuaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb24oXHJcbiAgICBzdGVwOiBJbnRlcmFjdGl2ZVRvdXJTdGVwLFxyXG4gICAgYWN0aW9uQ29uZmlnOiBJbnRlcmFjdGl2ZVRvdXJBY3Rpb25cclxuICApIHtcclxuICAgIGlmICghYWN0aW9uQ29uZmlnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGFjdGlvbkNvbmZpZy5jb25kaXRpb24gJiZcclxuICAgICAgKChhY3Rpb25Db25maWcuY29uZGl0aW9uLmNoYXJBdCgwKSA9PT0gJyEnICYmXHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihhY3Rpb25Db25maWcuY29uZGl0aW9uLnNsaWNlKDEpKSkgfHxcclxuICAgICAgICAoYWN0aW9uQ29uZmlnLmNvbmRpdGlvbi5jaGFyQXQoMCkgIT09ICchJyAmJlxyXG4gICAgICAgICAgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYWN0aW9uQ29uZmlnLmNvbmRpdGlvbikpKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIGFjdGlvbkNvbmZpZy5lbGVtZW50IHx8IHN0ZXAuZWxlbWVudFxyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZ2V0QWN0aW9uKGFjdGlvbkNvbmZpZy5hY3Rpb24pO1xyXG4gICAgaWYgKGVsZW1lbnQgJiYgYWN0aW9uKSB7XHJcbiAgICAgIGVsZW1lbnRbYWN0aW9uXSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlQWN0aW9uUHJvbWlzZShcclxuICAgIHN0ZXA6IEludGVyYWN0aXZlVG91clN0ZXAsXHJcbiAgICBhY3Rpb25Db25maWc6IEludGVyYWN0aXZlVG91ckFjdGlvblxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbihzdGVwLCBhY3Rpb25Db25maWcpO1xyXG4gICAgICBpZiAoIWFjdGlvbkNvbmZpZyB8fCAhYWN0aW9uQ29uZmlnLndhaXRGb3IpIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBuYlRyeSA9IDA7XHJcbiAgICAgIGNvbnN0IG1heFRyeSA9IGFjdGlvbkNvbmZpZy5tYXhXYWl0ID8gYWN0aW9uQ29uZmlnLm1heFdhaXQgLyAxMDAgOiAyMDtcclxuICAgICAgY29uc3QgY2hlY2tFeGlzdCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBuYlRyeSsrO1xyXG4gICAgICAgIGlmIChuYlRyeSA+IG1heFRyeSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGFjdGlvbkNvbmZpZy53YWl0Rm9yKSkge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0V4aXN0KTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2hlcGhlcmRTdGVwcyhzdGVwQ29uZmlnOiBJbnRlcmFjdGl2ZVRvdXJPcHRpb25zKSB7XHJcbiAgICBjb25zdCBzaGVwaGVyZFN0ZXBzID0gW107XHJcblxyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgZm9yIChjb25zdCBzdGVwIG9mIHN0ZXBDb25maWcuc3RlcHMpIHtcclxuICAgICAgc2hlcGhlcmRTdGVwcy5wdXNoKHtcclxuICAgICAgICBhdHRhY2hUbzoge1xyXG4gICAgICAgICAgZWxlbWVudDogc3RlcC5lbGVtZW50LFxyXG4gICAgICAgICAgb246IHN0ZXAucG9zaXRpb24gfHwgc3RlcENvbmZpZy5wb3NpdGlvblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9wcGVyT3B0aW9uczoge1xyXG4gICAgICAgICAgbW9kaWZpZXJzOiBbeyBuYW1lOiAnb2Zmc2V0Jywgb3B0aW9uczogeyBvZmZzZXQ6IFswLCAxNV0gfSB9XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYmVmb3JlU2hvd1Byb21pc2U6ICgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvblByb21pc2UoXHJcbiAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1N0ZXAsXHJcbiAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1N0ZXAgPyB0aGlzLnByZXZpb3VzU3RlcC5iZWZvcmVDaGFuZ2UgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5leGVjdXRlQWN0aW9uUHJvbWlzZShzdGVwLCBzdGVwLmJlZm9yZVNob3cpXHJcbiAgICAgICAgICBdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJ1dHRvbnM6IHRoaXMuZ2V0QnV0dG9ucyhcclxuICAgICAgICAgIGkgPT09IDBcclxuICAgICAgICAgICAgPyAnZmlyc3QnXHJcbiAgICAgICAgICAgIDogaSArIDEgPT09IHN0ZXBDb25maWcuc3RlcHMubGVuZ3RoXHJcbiAgICAgICAgICAgID8gJ2xhc3QnXHJcbiAgICAgICAgICAgIDogc3RlcENvbmZpZy5zdGVwc1tpXS5ub0JhY2tCdXR0b25cclxuICAgICAgICAgICAgPyAnbm9CYWNrQnV0dG9uJ1xyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICksXHJcbiAgICAgICAgY2xhc3Nlczogc3RlcC5jbGFzcyxcclxuICAgICAgICBoaWdobGlnaHRDbGFzczogc3RlcC5oaWdobGlnaHRDbGFzcyxcclxuICAgICAgICBzY3JvbGxUbzogc3RlcC5zY3JvbGxUb0VsZW1lbnQgfHwgc3RlcENvbmZpZy5zY3JvbGxUb0VsZW1lbnQgfHwgdHJ1ZSxcclxuICAgICAgICBjYW5DbGlja1RhcmdldDogc3RlcC5kaXNhYmxlSW50ZXJhY3Rpb25cclxuICAgICAgICAgID8gIXN0ZXAuZGlzYWJsZUludGVyYWN0aW9uXHJcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICBzdGVwLnRpdGxlIHx8IHN0ZXBDb25maWcudGl0bGVcclxuICAgICAgICApLFxyXG4gICAgICAgIHRleHQ6IFt0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChzdGVwLnRleHQpXSxcclxuICAgICAgICB3aGVuOiB7XHJcbiAgICAgICAgICBzaG93OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbihzdGVwLCBzdGVwLm9uU2hvdyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGlkZTogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzU3RlcCA9IHN0ZXA7XHJcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbihzdGVwLCBzdGVwLm9uSGlkZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzaGVwaGVyZFN0ZXBzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0VG91cih0b29sTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdGVwQ29uZmlnOiBJbnRlcmFjdGl2ZVRvdXJPcHRpb25zID0gdGhpcy5pbnRlcmFjdGl2ZVRvdXJMb2FkZXIuZ2V0VG91ck9wdGlvbkRhdGEoXHJcbiAgICAgIHRvb2xOYW1lXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc2hlcGhlcmRTZXJ2aWNlLmRlZmF1bHRTdGVwT3B0aW9ucyA9IHtcclxuICAgICAgY2xhc3Nlczogc3RlcENvbmZpZy5jbGFzcyxcclxuICAgICAgaGlnaGxpZ2h0Q2xhc3M6IHN0ZXBDb25maWcuaGlnaGxpZ2h0Q2xhc3MsXHJcbiAgICAgIGNhbkNsaWNrVGFyZ2V0OiBzdGVwQ29uZmlnLmRpc2FibGVJbnRlcmFjdGlvblxyXG4gICAgICAgID8gIXN0ZXBDb25maWcuZGlzYWJsZUludGVyYWN0aW9uXHJcbiAgICAgICAgOiB0cnVlLFxyXG4gICAgICBjYW5jZWxJY29uOiB7XHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNoZXBoZXJkU3RlcHMgPSB0aGlzLmdldFNoZXBoZXJkU3RlcHMoc3RlcENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5zaGVwaGVyZFNlcnZpY2UubW9kYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5zaGVwaGVyZFNlcnZpY2UuY29uZmlybUNhbmNlbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaGVwaGVyZFNlcnZpY2UuYWRkU3RlcHMoc2hlcGhlcmRTdGVwcyk7XHJcblxyXG4gICAgdGhpcy5zaGVwaGVyZFNlcnZpY2UudG91ck9iamVjdC5vbignc2hvdycsIHRoaXMuYWRkUHJvZ3Jlc3MpO1xyXG4gICAgdGhpcy5zaGVwaGVyZFNlcnZpY2UudG91ck9iamVjdC5vbignY2FuY2VsJywgKGluZGV4KSA9PsKge1xyXG4gICAgICB0aGlzLmNoZWNrTmV4dChpbmRleCwgdGhpcy5zaGVwaGVyZFNlcnZpY2UudG91ck9iamVjdCwgdGhpcyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNoZXBoZXJkU2VydmljZS5zdGFydCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -24,9 +24,7 @@ function JsonDialogComponent_ng_template_4_ng_container_0_ng_container_1_ng_cont
24
24
  i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, property_r6.value, ctx_r8.getKey(baseKey_r4, property_r6.key)));
25
25
  } }
26
26
  function JsonDialogComponent_ng_template_4_ng_container_0_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelementStart(0, "p");
28
- i0.ɵɵelementStart(1, "span");
29
- i0.ɵɵelementStart(2, "b");
27
+ i0.ɵɵelementStart(0, "p")(1, "span")(2, "b");
30
28
  i0.ɵɵtext(3);
31
29
  i0.ɵɵelementEnd();
32
30
  i0.ɵɵtext(4, " : ");
@@ -93,24 +91,19 @@ JsonDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: JsonDia
93
91
  i0.ɵɵtemplate(3, JsonDialogComponent_ng_container_3_Template, 1, 0, "ng-container", 2);
94
92
  i0.ɵɵtemplate(4, JsonDialogComponent_ng_template_4_Template, 2, 3, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
95
93
  i0.ɵɵelementEnd();
96
- i0.ɵɵelementStart(6, "div", 4);
97
- i0.ɵɵelementStart(7, "button", 5);
94
+ i0.ɵɵelementStart(6, "div", 4)(7, "button", 5);
98
95
  i0.ɵɵlistener("click", function JsonDialogComponent_Template_button_click_7_listener() { return ctx.dialogRef.close(false); });
99
96
  i0.ɵɵtext(8, " OK ");
100
- i0.ɵɵelementEnd();
101
- i0.ɵɵelementEnd();
97
+ i0.ɵɵelementEnd()();
102
98
  } if (rf & 2) {
103
99
  const _r1 = i0.ɵɵreference(5);
104
100
  i0.ɵɵadvance(1);
105
101
  i0.ɵɵtextInterpolate(ctx.title);
106
102
  i0.ɵɵadvance(2);
107
103
  i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c1, ctx.data));
108
- } }, directives: [i1.MatDialogTitle, i1.MatDialogContent, i2.NgTemplateOutlet, i1.MatDialogActions, i3.MatButton, i2.NgForOf, i2.NgIf], pipes: [i4.KeyValuePipe], encapsulation: 2 });
104
+ } }, dependencies: [i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i3.MatButton, i1.MatDialogTitle, i1.MatDialogContent, i1.MatDialogActions, i4.KeyValuePipe], encapsulation: 2 });
109
105
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(JsonDialogComponent, [{
110
106
  type: Component,
111
- args: [{
112
- selector: 'igo-json-dialog',
113
- templateUrl: './json-dialog.component.html'
114
- }]
107
+ args: [{ selector: 'igo-json-dialog', template: "<h1 mat-dialog-title class=\"mat-typography\">{{ title }}</h1>\r\n\r\n<div mat-dialog-content class=\"mat-typography\">\r\n <ng-container *ngTemplateOutlet=\"loopObject;context:{ obj: data }\"></ng-container>\r\n\r\n <ng-template #loopObject let-obj='obj' let-baseKey='baseKey'>\r\n <ng-container *ngFor=\"let property of obj | keyvalue\">\r\n <ng-container *ngIf=\"ignoreKeys.indexOf(getKey(baseKey, property.key)) === -1\">\r\n\r\n <ng-container *ngIf=\"isObject(property.value); else notObject\">\r\n <ng-container *ngTemplateOutlet=\"loopObject;context:{ obj: property.value, baseKey: getKey(baseKey, property.key) }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #notObject>\r\n <p><span><b>{{getKey(baseKey, property.key)}}</b> : </span><span class=\"propertyValue\" [innerHtml]=\"property.value\"></span></p>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\"\r\n (click)=\"dialogRef.close(false)\">\r\n OK\r\n </button>\r\n</div>\r\n" }]
115
108
  }], function () { return [{ type: i1.MatDialogRef }]; }, null); })();
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvanNvbi1kaWFsb2cvanNvbi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvanNvbi1kaWFsb2cvanNvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ0d4Qyx3QkFBa0Y7OztJQU8xRSx3QkFBb0k7Ozs7SUFEdEksNkJBQStEO0lBQzdELGlKQUFvSTtJQUN0SSwwQkFBZTs7Ozs7O0lBREUsZUFBNkI7SUFBN0Isc0NBQTZCLHNIQUFBOzs7SUFJNUMseUJBQUc7SUFBQSw0QkFBTTtJQUFBLHlCQUFHO0lBQUEsWUFBaUM7SUFBQSxpQkFBSTtJQUFDLG1CQUFFO0lBQUEsaUJBQU87SUFBQSwyQkFBZ0U7SUFBQSxpQkFBSTs7Ozs7SUFBbkgsZUFBaUM7SUFBakMsaUVBQWlDO0lBQTBDLGVBQTRCO0lBQTVCLGdFQUE0Qjs7O0lBUHZILDZCQUErRTtJQUU3RSxrSUFFZTtJQUVmLGlLQUVjO0lBRWhCLDBCQUFlOzs7OztJQVJFLGVBQWdDO0lBQWhDLHlEQUFnQyxpQkFBQTs7O0lBSG5ELDZCQUFzRDtJQUNwRCxtSEFVZTtJQUNqQiwwQkFBZTs7Ozs7SUFYRSxlQUE4RDtJQUE5RCxtR0FBOEQ7OztJQUQvRSxvR0FZZTs7OztJQVpvQixzREFBaUI7OztBREN4RCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQW1CLFNBQTRDO1FBQTVDLGNBQVMsR0FBVCxTQUFTLENBQW1DO0lBQUcsQ0FBQztJQUVuRSxRQUFRLENBQUMsR0FBRztRQUNWLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHO1FBQ2pCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDOztzRkFiVSxtQkFBbUI7c0VBQW5CLG1CQUFtQjtRQ1BoQyw2QkFBNEM7UUFBQSxZQUFXO1FBQUEsaUJBQUs7UUFFNUQsOEJBQStDO1FBQzdDLHNGQUFrRjtRQUVsRixxSEFjYztRQUNoQixpQkFBTTtRQUVOLDhCQUF3QjtRQUN0QixpQ0FDeUM7UUFBakMsZ0dBQVMsb0JBQWdCLEtBQUssQ0FBQyxJQUFDO1FBQ3RDLG9CQUNGO1FBQUEsaUJBQVM7UUFDWCxpQkFBTTs7O1FBM0JzQyxlQUFXO1FBQVgsK0JBQVc7UUFHdEMsZUFBNkI7UUFBN0Isc0NBQTZCLGlFQUFBOzt1RkRJakMsbUJBQW1CO2NBSi9CLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixXQUFXLEVBQUUsOEJBQThCO2FBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1qc29uLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2pzb24tZGlhbG9nLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSnNvbkRpYWxvZ0NvbXBvbmVudCB7XHJcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XHJcbiAgcHVibGljIGRhdGE6IGFueTtcclxuICBwdWJsaWMgaWdub3JlS2V5czogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxKc29uRGlhbG9nQ29tcG9uZW50Pikge31cclxuXHJcbiAgaXNPYmplY3QodmFsKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKTtcclxuICB9XHJcblxyXG4gIGdldEtleShiYXNlS2V5LCBrZXkpIHtcclxuICAgIHJldHVybiAoYmFzZUtleSA/IGJhc2VLZXkgKyAnLicgOiAnJykgKyBrZXk7XHJcbiAgfVxyXG59XHJcbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj57eyB0aXRsZSB9fTwvaDE+XHJcblxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvb3BPYmplY3Q7Y29udGV4dDp7IG9iajogZGF0YSB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbG9vcE9iamVjdCBsZXQtb2JqPSdvYmonIGxldC1iYXNlS2V5PSdiYXNlS2V5Jz5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIG9iaiB8IGtleXZhbHVlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZ25vcmVLZXlzLmluZGV4T2YoZ2V0S2V5KGJhc2VLZXksIHByb3BlcnR5LmtleSkpID09PSAtMVwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPYmplY3QocHJvcGVydHkudmFsdWUpOyBlbHNlIG5vdE9iamVjdFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvb3BPYmplY3Q7Y29udGV4dDp7IG9iajogcHJvcGVydHkudmFsdWUsIGJhc2VLZXk6IGdldEtleShiYXNlS2V5LCBwcm9wZXJ0eS5rZXkpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RPYmplY3Q+XHJcbiAgICAgICAgICA8cD48c3Bhbj48Yj57e2dldEtleShiYXNlS2V5LCBwcm9wZXJ0eS5rZXkpfX08L2I+IDogPC9zcGFuPjxzcGFuIGNsYXNzPVwicHJvcGVydHlWYWx1ZVwiIFtpbm5lckh0bWxdPVwicHJvcGVydHkudmFsdWVcIj48L3NwYW4+PC9wPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKGZhbHNlKVwiPlxyXG4gICAgT0tcclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvanNvbi1kaWFsb2cvanNvbi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvanNvbi1kaWFsb2cvanNvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ0d4Qyx3QkFBa0Y7OztJQU8xRSx3QkFBb0k7Ozs7SUFEdEksNkJBQStEO0lBQzdELGlKQUFvSTtJQUN0SSwwQkFBZTs7Ozs7O0lBREUsZUFBNkI7SUFBN0Isc0NBQTZCLHNIQUFBOzs7SUFJNUMseUJBQUcsV0FBQSxRQUFBO0lBQVMsWUFBaUM7SUFBQSxpQkFBSTtJQUFDLG1CQUFFO0lBQUEsaUJBQU87SUFBQSwyQkFBZ0U7SUFBQSxpQkFBSTs7Ozs7SUFBbkgsZUFBaUM7SUFBakMsaUVBQWlDO0lBQTBDLGVBQTRCO0lBQTVCLGdFQUE0Qjs7O0lBUHZILDZCQUErRTtJQUU3RSxrSUFFZTtJQUVmLGlLQUVjO0lBRWhCLDBCQUFlOzs7OztJQVJFLGVBQWdDO0lBQWhDLHlEQUFnQyxpQkFBQTs7O0lBSG5ELDZCQUFzRDtJQUNwRCxtSEFVZTtJQUNqQiwwQkFBZTs7Ozs7SUFYRSxlQUE4RDtJQUE5RCxtR0FBOEQ7OztJQUQvRSxvR0FZZTs7OztJQVpvQixzREFBaUI7OztBREN4RCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQW1CLFNBQTRDO1FBQTVDLGNBQVMsR0FBVCxTQUFTLENBQW1DO0lBQUcsQ0FBQztJQUVuRSxRQUFRLENBQUMsR0FBRztRQUNWLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHO1FBQ2pCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDOztzRkFiVSxtQkFBbUI7c0VBQW5CLG1CQUFtQjtRQ1BoQyw2QkFBNEM7UUFBQSxZQUFXO1FBQUEsaUJBQUs7UUFFNUQsOEJBQStDO1FBQzdDLHNGQUFrRjtRQUVsRixxSEFjYztRQUNoQixpQkFBTTtRQUVOLDhCQUF3QixnQkFBQTtRQUVkLGdHQUFTLG9CQUFnQixLQUFLLENBQUMsSUFBQztRQUN0QyxvQkFDRjtRQUFBLGlCQUFTLEVBQUE7OztRQTFCaUMsZUFBVztRQUFYLCtCQUFXO1FBR3RDLGVBQTZCO1FBQTdCLHNDQUE2QixpRUFBQTs7dUZESWpDLG1CQUFtQjtjQUovQixTQUFTOzJCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tanNvbi1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9qc29uLWRpYWxvZy5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEpzb25EaWFsb2dDb21wb25lbnQge1xyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBkYXRhOiBhbnk7XHJcbiAgcHVibGljIGlnbm9yZUtleXM6IHN0cmluZ1tdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8SnNvbkRpYWxvZ0NvbXBvbmVudD4pIHt9XHJcblxyXG4gIGlzT2JqZWN0KHZhbCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbCk7XHJcbiAgfVxyXG5cclxuICBnZXRLZXkoYmFzZUtleSwga2V5KSB7XHJcbiAgICByZXR1cm4gKGJhc2VLZXkgPyBiYXNlS2V5ICsgJy4nIDogJycpICsga2V5O1xyXG4gIH1cclxufVxyXG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+e3sgdGl0bGUgfX08L2gxPlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb29wT2JqZWN0O2NvbnRleHQ6eyBvYmo6IGRhdGEgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2xvb3BPYmplY3QgbGV0LW9iaj0nb2JqJyBsZXQtYmFzZUtleT0nYmFzZUtleSc+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBvYmogfCBrZXl2YWx1ZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWdub3JlS2V5cy5pbmRleE9mKGdldEtleShiYXNlS2V5LCBwcm9wZXJ0eS5rZXkpKSA9PT0gLTFcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT2JqZWN0KHByb3BlcnR5LnZhbHVlKTsgZWxzZSBub3RPYmplY3RcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb29wT2JqZWN0O2NvbnRleHQ6eyBvYmo6IHByb3BlcnR5LnZhbHVlLCBiYXNlS2V5OiBnZXRLZXkoYmFzZUtleSwgcHJvcGVydHkua2V5KSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90T2JqZWN0PlxyXG4gICAgICAgICAgPHA+PHNwYW4+PGI+e3tnZXRLZXkoYmFzZUtleSwgcHJvcGVydHkua2V5KX19PC9iPiA6IDwvc3Bhbj48c3BhbiBjbGFzcz1cInByb3BlcnR5VmFsdWVcIiBbaW5uZXJIdG1sXT1cInByb3BlcnR5LnZhbHVlXCI+PC9zcGFuPjwvcD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZShmYWxzZSlcIj5cclxuICAgIE9LXHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -15,7 +15,7 @@ export class IgoJsonDialogModule {
15
15
  }
16
16
  IgoJsonDialogModule.ɵfac = function IgoJsonDialogModule_Factory(t) { return new (t || IgoJsonDialogModule)(); };
17
17
  IgoJsonDialogModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoJsonDialogModule });
18
- IgoJsonDialogModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [JsonDialogService], imports: [[CommonModule, MatButtonModule, MatDialogModule, IgoKeyValueModule]] });
18
+ IgoJsonDialogModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [JsonDialogService], imports: [CommonModule, MatButtonModule, MatDialogModule, IgoKeyValueModule] });
19
19
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoJsonDialogModule, [{
20
20
  type: NgModule,
21
21
  args: [{
@@ -26,4 +26,4 @@ IgoJsonDialogModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [Js
26
26
  }]
27
27
  }], null, null); })();
28
28
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoJsonDialogModule, { declarations: [JsonDialogComponent], imports: [CommonModule, MatButtonModule, MatDialogModule, IgoKeyValueModule], exports: [JsonDialogComponent] }); })();
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvanNvbi1kaWFsb2cvanNvbi1kaWFsb2cubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7U0FDOUIsQ0FBQztJQUNKLENBQUM7O3NGQUxVLG1CQUFtQjtxRUFBbkIsbUJBQW1COzBFQUZuQixDQUFDLGlCQUFpQixDQUFDLFlBSHJCLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7dUZBS2pFLG1CQUFtQjtjQU4vQixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7Z0JBQzVFLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUM5QixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbkMsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDL0I7O3dGQUNZLG1CQUFtQixtQkFIZixtQkFBbUIsYUFGeEIsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLGFBQ2pFLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBJZ29LZXlWYWx1ZU1vZHVsZSB9IGZyb20gJy4uL2tleXZhbHVlL2tleXZhbHVlLm1vZHVsZSc7XHJcblxyXG5pbXBvcnQgeyBKc29uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9qc29uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBKc29uRGlhbG9nU2VydmljZSB9IGZyb20gJy4vanNvbi1kaWFsb2cuc2VydmljZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBJZ29LZXlWYWx1ZU1vZHVsZV0sXHJcbiAgZXhwb3J0czogW0pzb25EaWFsb2dDb21wb25lbnRdLFxyXG4gIGRlY2xhcmF0aW9uczogW0pzb25EaWFsb2dDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW0pzb25EaWFsb2dTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSWdvSnNvbkRpYWxvZ01vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29Kc29uRGlhbG9nTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogSWdvSnNvbkRpYWxvZ01vZHVsZVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvanNvbi1kaWFsb2cvanNvbi1kaWFsb2cubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7U0FDOUIsQ0FBQztJQUNKLENBQUM7O3NGQUxVLG1CQUFtQjtxRUFBbkIsbUJBQW1COzBFQUZuQixDQUFDLGlCQUFpQixDQUFDLFlBSHBCLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGlCQUFpQjt1RkFLaEUsbUJBQW1CO2NBTi9CLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDNUUsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQzlCLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNuQyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzthQUMvQjs7d0ZBQ1ksbUJBQW1CLG1CQUhmLG1CQUFtQixhQUZ4QixZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsYUFDakUsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IElnb0tleVZhbHVlTW9kdWxlIH0gZnJvbSAnLi4va2V5dmFsdWUva2V5dmFsdWUubW9kdWxlJztcclxuXHJcbmltcG9ydCB7IEpzb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2pzb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEpzb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9qc29uLWRpYWxvZy5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIElnb0tleVZhbHVlTW9kdWxlXSxcclxuICBleHBvcnRzOiBbSnNvbkRpYWxvZ0NvbXBvbmVudF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbSnNvbkRpYWxvZ0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbSnNvbkRpYWxvZ1NlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ29Kc29uRGlhbG9nTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0pzb25EaWFsb2dNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBJZ29Kc29uRGlhbG9nTW9kdWxlXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -11,7 +11,7 @@ export class IgoKeyValueModule {
11
11
  }
12
12
  IgoKeyValueModule.ɵfac = function IgoKeyValueModule_Factory(t) { return new (t || IgoKeyValueModule)(); };
13
13
  IgoKeyValueModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoKeyValueModule });
14
- IgoKeyValueModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[]] });
14
+ IgoKeyValueModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
15
15
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoKeyValueModule, [{
16
16
  type: NgModule,
17
17
  args: [{
@@ -21,4 +21,4 @@ IgoKeyValueModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[]] })
21
21
  }]
22
22
  }], null, null); })();
23
23
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoKeyValueModule, { declarations: [KeyValuePipe], exports: [KeyValuePipe] }); })();
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5dmFsdWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIva2V5dmFsdWUva2V5dmFsdWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztJQUNKLENBQUM7O2tGQU5VLGlCQUFpQjttRUFBakIsaUJBQWlCO3VFQUpuQixFQUFFO3VGQUlBLGlCQUFpQjtjQUw3QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUM1QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDeEI7O3dGQUNZLGlCQUFpQixtQkFIYixZQUFZLGFBQ2pCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZVBpcGUgfSBmcm9tICcuL2tleXZhbHVlLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXSxcclxuICBkZWNsYXJhdGlvbnM6IFtLZXlWYWx1ZVBpcGVdLFxyXG4gIGV4cG9ydHM6IFtLZXlWYWx1ZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ29LZXlWYWx1ZU1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29LZXlWYWx1ZU1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IElnb0tleVZhbHVlTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5dmFsdWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIva2V5dmFsdWUva2V5dmFsdWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztJQUNKLENBQUM7O2tGQU5VLGlCQUFpQjttRUFBakIsaUJBQWlCOzt1RkFBakIsaUJBQWlCO2NBTDdCLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsRUFBRTtnQkFDWCxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4Qjs7d0ZBQ1ksaUJBQWlCLG1CQUhiLFlBQVksYUFDakIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEtleVZhbHVlUGlwZSB9IGZyb20gJy4va2V5dmFsdWUucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtdLFxyXG4gIGRlY2xhcmF0aW9uczogW0tleVZhbHVlUGlwZV0sXHJcbiAgZXhwb3J0czogW0tleVZhbHVlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIElnb0tleVZhbHVlTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0tleVZhbHVlTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogSWdvS2V5VmFsdWVNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW11cclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { Component, Input, ContentChildren, HostListener } from '@angular/core';
2
2
  import { ListItemDirective } from './list-item.directive';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/list";
5
- import * as i2 from "../clickout/clickout.directive";
6
- import * as i3 from "@angular/common";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/material/list";
6
+ import * as i3 from "../clickout/clickout.directive";
7
7
  const _c0 = function (a0) { return { "selectable": a0 }; };
8
8
  const _c1 = ["*"];
9
9
  export class ListComponent {
@@ -241,14 +241,10 @@ ListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListComponent
241
241
  i0.ɵɵelementEnd();
242
242
  } if (rf & 2) {
243
243
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c0, ctx.selection));
244
- } }, directives: [i1.MatList, i2.ClickoutDirective, i3.NgClass], styles: ["[_nghost-%COMP%]{display:block;height:100%;overflow:auto;position:relative}mat-list[_ngcontent-%COMP%]{padding-top:0}[_nghost-%COMP%]{position:static}[_nghost-%COMP%] .mat-list .mat-list-item .mat-list-text>*{white-space:normal;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;max-height:36px;line-height:18px;-webkit-box-orient:vertical;-webkit-line-clamp:2}[_nghost-%COMP%] .mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{display:-webkit-flex;height:46px;padding:3px}[_nghost-%COMP%] .mat-list .mat-list-item.mat-list-item-avatar{height:46px}[_nghost-%COMP%] .mat-list igo-collapsible>.mat-list-item>.mat-list-item-content>.mat-list-text>.mat-line{font-weight:bold;opacity:.9}[_nghost-%COMP%] .mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content>mat-icon{padding:8px}[_nghost-%COMP%] [igolistitem] mat-list-item [mat-list-avatar]{height:auto;width:40px}[_nghost-%COMP%] mat-list.selectable[_ngcontent-%COMP%] [igolistitem]:not(.igo-list-item-disabled) mat-list-item:hover{cursor:pointer}[_nghost-%COMP%] [igolistitem]:focus{outline:none}"] });
244
+ } }, dependencies: [i1.NgClass, i2.MatList, i3.ClickoutDirective], styles: ["[_nghost-%COMP%]{display:block;height:100%;overflow:auto;position:relative}mat-list[_ngcontent-%COMP%]{padding-top:0}[_nghost-%COMP%]{position:static}[_nghost-%COMP%] .mat-list .mat-list-item .mat-list-text>*{white-space:normal;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;max-height:36px;line-height:18px;-webkit-box-orient:vertical;-webkit-line-clamp:2}[_nghost-%COMP%] .mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{display:-webkit-flex;height:46px;padding:3px}[_nghost-%COMP%] .mat-list .mat-list-item.mat-list-item-avatar{height:46px}[_nghost-%COMP%] .mat-list igo-collapsible>.mat-list-item>.mat-list-item-content>.mat-list-text>.mat-line{font-weight:700;opacity:.9}[_nghost-%COMP%] .mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content>mat-icon{padding:8px}[_nghost-%COMP%] [igolistitem] mat-list-item [mat-list-avatar]{height:auto;width:40px}[_nghost-%COMP%] mat-list.selectable[_ngcontent-%COMP%] [igolistitem]:not(.igo-list-item-disabled) mat-list-item:hover{cursor:pointer}[_nghost-%COMP%] [igolistitem]:focus{outline:none}"] });
245
245
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListComponent, [{
246
246
  type: Component,
247
- args: [{
248
- selector: 'igo-list',
249
- templateUrl: './list.component.html',
250
- styleUrls: ['./list.component.scss']
251
- }]
247
+ args: [{ selector: 'igo-list', template: "<mat-list\r\n igoClickout\r\n [ngClass]=\"{'selectable': selection}\"\r\n (clickout)=\"disableNavigation()\"\r\n (click)=\"enableNavigation()\">\r\n <ng-content></ng-content>\r\n</mat-list>\r\n", styles: [":host{display:block;height:100%;overflow:auto;position:relative}mat-list{padding-top:0}:host{position:static}:host ::ng-deep .mat-list .mat-list-item .mat-list-text>*{white-space:normal;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;max-height:36px;line-height:18px;-webkit-box-orient:vertical;-webkit-line-clamp:2}:host ::ng-deep .mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{display:-webkit-flex;height:46px;padding:3px}:host ::ng-deep .mat-list .mat-list-item.mat-list-item-avatar{height:46px}:host ::ng-deep .mat-list ::ng-deep igo-collapsible>.mat-list-item>.mat-list-item-content>.mat-list-text>.mat-line{font-weight:700;opacity:.9}:host ::ng-deep .mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content>mat-icon{padding:8px}:host ::ng-deep [igolistitem] mat-list-item [mat-list-avatar]{height:auto;width:40px}:host mat-list.selectable ::ng-deep [igolistitem]:not(.igo-list-item-disabled) mat-list-item:hover{cursor:pointer}:host ::ng-deep [igolistitem]:focus{outline:none}\n"] }]
252
248
  }], function () { return [{ type: i0.ElementRef }]; }, { navigation: [{
253
249
  type: Input
254
250
  }], selection: [{
@@ -263,4 +259,4 @@ ListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListComponent
263
259
  type: HostListener,
264
260
  args: ['document:enter', ['$event']]
265
261
  }] }); })();
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2xpYi9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsS0FBSyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFPMUQsTUFBTSxPQUFPLGFBQWE7SUEyRHhCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBbkQxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQVNuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBcUJsQixrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFxQk4sQ0FBQztJQTFEdEMsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FB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LFFBQVEsQ0FBQzs7a0JBQzNDLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5wdXQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IExpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9saXN0LWl0ZW0uZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBnZXQgbmF2aWdhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uO1xyXG4gIH1cclxuICBzZXQgbmF2aWdhdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fbmF2aWdhdGlvbiA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9uYXZpZ2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgc2VsZWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbjtcclxuICB9XHJcbiAgc2V0IHNlbGVjdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gIGdldCBzZWxlY3RlZEl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtO1xyXG4gIH1cclxuICBzZXQgc2VsZWN0ZWRJdGVtKHZhbHVlOiBMaXN0SXRlbURpcmVjdGl2ZSkge1xyXG4gICAgdGhpcy5mb2N1c2VkSXRlbSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbTogTGlzdEl0ZW1EaXJlY3RpdmU7XHJcblxyXG4gIGdldCBmb2N1c2VkSXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkSXRlbTtcclxuICB9XHJcbiAgc2V0IGZvY3VzZWRJdGVtKHZhbHVlOiBMaXN0SXRlbURpcmVjdGl2ZSkge1xyXG4gICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZm9jdXNlZEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlO1xyXG5cclxuICBwcml2YXRlIG5hdmlnYXRpb25FbmFibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgbGlzdEl0ZW1zJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdEl0ZW1EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuICBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxMaXN0SXRlbURpcmVjdGl2ZT47XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmVudGVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmUgdG8gdGhlIGV2ZW50XHJcbiAgICAvLyBjb21wbGV0ZWx5IGJ1dCB1bnRpbCBFUzcgdGhpcyB3b24ndCBiZSBwb3NzaWJsZSBiZWNhdXNlXHJcbiAgICAvLyBkb2N1bWVudCBldmVudHMgYXJlIG5vdCBvYnNlcnZhYmxlc1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkVuYWJsZWQpIHtcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUoZXZlbnQua2V5KTtcclxuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLmZvY3VzZWRJdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVuYWJsZU5hdmlnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmxpc3RJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5saXN0SXRlbXMkJCA9IHRoaXMubGlzdEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoaXRlbXM6IExpc3RJdGVtRGlyZWN0aXZlW10pID0+IHRoaXMuaW5pdCgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmxpc3RJdGVtcyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBmb2N1cyhpdGVtPzogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5mb2N1cygpO1xyXG5cclxuICAgIC8vIFdlIG5lZWQgdG8gbWFrZSB0aGlzIGNoZWNrIGJlY2F1c2UgZHluYW1pY1xyXG4gICAgLy8gbGlzdHMgc3VjaCBhcyBpbiB0aGUgc2VhcmNoIHJlc3VsdHMgbGlzdCBtYXkgZmFpbFxyXG4gICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpdGVtLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5mb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5mb2N1c2VkSXRlbS5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb2N1c2VkSXRlbSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZvY3VzTmV4dCgpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5saXN0SXRlbXMudG9BcnJheSgpO1xyXG4gICAgbGV0IGl0ZW07XHJcbiAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IGRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuZ2V0Rm9jdXNlZEluZGV4KCk7XHJcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpbmRleCA9IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlIChkaXNhYmxlZCAmJiBpbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgaW5kZXggKz0gMTtcclxuICAgICAgaXRlbSA9IGl0ZW1zW2luZGV4XTtcclxuICAgICAgZGlzYWJsZWQgPSBpdGVtLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5mb2N1cyhpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWl0ZW1zW2luZGV4ICsgMV0pIHtcclxuICAgICAgaWdvTGlzdC5zY3JvbGxUb3AgPSBpZ29MaXN0LnNjcm9sbEhlaWdodCAtIGlnb0xpc3QuY2xpZW50SGVpZ2h0O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5pc1Njcm9sbGVkSW50b1ZpZXcoaXRlbS5lbC5uYXRpdmVFbGVtZW50KSkge1xyXG4gICAgICBpZ29MaXN0LnNjcm9sbFRvcCA9XHJcbiAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCArXHJcbiAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldEhlaWdodCAtXHJcbiAgICAgICAgaWdvTGlzdC5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c1ByZXZpb3VzKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCk7XHJcbiAgICBsZXQgaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmU7XHJcbiAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IGRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuZ2V0Rm9jdXNlZEluZGV4KCk7XHJcblxyXG4gICAgd2hpbGUgKGRpc2FibGVkICYmIGluZGV4ID4gMCkge1xyXG4gICAgICBpbmRleCAtPSAxO1xyXG4gICAgICBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICBkaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmZvY3VzKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXRlbXNbaW5kZXggLSAxXSkge1xyXG4gICAgICBpZ29MaXN0LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbSAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpdGVtLmVsLm5hdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgIGNvbnN0IHBhZGRpbmcgPSAzO1xyXG4gICAgICBpZ29MaXN0LnNjcm9sbFRvcCA9IGl0ZW0uZWwubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgLSBwYWRkaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0KGl0ZW0/OiBMaXN0SXRlbURpcmVjdGl2ZSkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51bnNlbGVjdCgpO1xyXG5cclxuICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bnNlbGVjdCgpIHtcclxuICAgIHRoaXMudW5mb2N1cygpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBlbmFibGVOYXZpZ2F0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbikge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25FbmFibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc2FibGVOYXZpZ2F0aW9uKCkge1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9JdGVtKGl0ZW06IExpc3RJdGVtRGlyZWN0aXZlKSB7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gaXRlbS5nZXRPZmZzZXRUb3AoKTtcclxuICB9XHJcblxyXG4gIGlzU2Nyb2xsZWRJbnRvVmlldyhlbGVtKSB7XHJcbiAgICBjb25zdCBkb2NWaWV3VG9wID1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICBjb25zdCBkb2NWaWV3Qm90dG9tID0gZG9jVmlld1RvcCArIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgY29uc3QgZWxlbVRvcCA9IGVsZW0ub2Zmc2V0VG9wO1xyXG4gICAgY29uc3QgZWxlbUJvdHRvbSA9IGVsZW1Ub3AgKyBlbGVtLmNoaWxkcmVuWzBdLm9mZnNldEhlaWdodDtcclxuICAgIHJldHVybiBlbGVtQm90dG9tIDw9IGRvY1ZpZXdCb3R0b20gJiYgZWxlbVRvcCA+PSBkb2NWaWV3VG9wO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZmluZFNlbGVjdGVkSXRlbSgpO1xyXG4gICAgdGhpcy5mb2N1c2VkSXRlbSA9IHRoaXMuZmluZEZvY3VzZWRJdGVtKCk7XHJcblxyXG4gICAgdGhpcy5lbmFibGVOYXZpZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgaXRlbS5iZWZvcmVTZWxlY3Quc3Vic2NyaWJlKChpdGVtMjogTGlzdEl0ZW1EaXJlY3RpdmUpID0+XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1CZWZvcmVTZWxlY3QoaXRlbTIpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgaXRlbS5zZWxlY3Quc3Vic2NyaWJlKChpdGVtMjogTGlzdEl0ZW1EaXJlY3RpdmUpID0+XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1TZWxlY3QoaXRlbTIpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgaXRlbS5iZWZvcmVGb2N1cy5zdWJzY3JpYmUoKGl0ZW0yOiBMaXN0SXRlbURpcmVjdGl2ZSkgPT5cclxuICAgICAgICAgIHRoaXMuaGFuZGxlSXRlbUJlZm9yZUZvY3VzKGl0ZW0yKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIGl0ZW0uZm9jdXMuc3Vic2NyaWJlKChpdGVtMjogTGlzdEl0ZW1EaXJlY3RpdmUpID0+XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1Gb2N1cyhpdGVtMilcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9LCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViOiBTdWJzY3JpcHRpb24pID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJdGVtQmVmb3JlRm9jdXMoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIGlmIChpdGVtICE9PSB0aGlzLmZvY3VzZWRJdGVtKSB7XHJcbiAgICAgIHRoaXMudW5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJdGVtRm9jdXMoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIHRoaXMuZm9jdXNlZEl0ZW0gPSBpdGVtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJdGVtQmVmb3JlU2VsZWN0KGl0ZW06IExpc3RJdGVtRGlyZWN0aXZlKSB7XHJcbiAgICBpZiAoaXRlbSAhPT0gdGhpcy5mb2N1c2VkSXRlbSkge1xyXG4gICAgICB0aGlzLnVuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUl0ZW1TZWxlY3QoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFNlbGVjdGVkSXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCkuZmluZChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRm9jdXNlZEl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbXMudG9BcnJheSgpLmZpbmQoaXRlbSA9PiBpdGVtLmZvY3VzZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb2N1c2VkSW5kZXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbXNcclxuICAgICAgLnRvQXJyYXkoKVxyXG4gICAgICAuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5mb2N1c2VkSXRlbSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdmlnYXRlKGtleTogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICB0aGlzLmZvY3VzTmV4dCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bWF0LWxpc3RcclxuICBpZ29DbGlja291dFxyXG4gIFtuZ0NsYXNzXT1cInsnc2VsZWN0YWJsZSc6IHNlbGVjdGlvbn1cIlxyXG4gIChjbGlja291dCk9XCJkaXNhYmxlTmF2aWdhdGlvbigpXCJcclxuICAoY2xpY2spPVwiZW5hYmxlTmF2aWdhdGlvbigpXCI+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L21hdC1saXN0PlxyXG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2xpYi9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBSVQsS0FBSyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFPMUQsTUFBTSxPQUFPLGFBQWE7SUEyRHhCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBbkQxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQVNuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBcUJsQixrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFxQk4sQ0FBQztJQTFEdEMsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FB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bXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5wdXQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IExpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9saXN0LWl0ZW0uZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBnZXQgbmF2aWdhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uO1xyXG4gIH1cclxuICBzZXQgbmF2aWdhdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fbmF2aWdhdGlvbiA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9uYXZpZ2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgc2VsZWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbjtcclxuICB9XHJcbiAgc2V0IHNlbGVjdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gIGdldCBzZWxlY3RlZEl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtO1xyXG4gIH1cclxuICBzZXQgc2VsZWN0ZWRJdGVtKHZhbHVlOiBMaXN0SXRlbURpcmVjdGl2ZSkge1xyXG4gICAgdGhpcy5mb2N1c2VkSXRlbSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbTogTGlzdEl0ZW1EaXJlY3RpdmU7XHJcblxyXG4gIGdldCBmb2N1c2VkSXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkSXRlbTtcclxuICB9XHJcbiAgc2V0IGZvY3VzZWRJdGVtKHZhbHVlOiBMaXN0SXRlbURpcmVjdGl2ZSkge1xyXG4gICAgdGhpcy5fZm9jdXNlZEl0ZW0gPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZm9jdXNlZEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlO1xyXG5cclxuICBwcml2YXRlIG5hdmlnYXRpb25FbmFibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgbGlzdEl0ZW1zJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdEl0ZW1EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuICBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxMaXN0SXRlbURpcmVjdGl2ZT47XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmVudGVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmUgdG8gdGhlIGV2ZW50XHJcbiAgICAvLyBjb21wbGV0ZWx5IGJ1dCB1bnRpbCBFUzcgdGhpcyB3b24ndCBiZSBwb3NzaWJsZSBiZWNhdXNlXHJcbiAgICAvLyBkb2N1bWVudCBldmVudHMgYXJlIG5vdCBvYnNlcnZhYmxlc1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkVuYWJsZWQpIHtcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUoZXZlbnQua2V5KTtcclxuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLmZvY3VzZWRJdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVuYWJsZU5hdmlnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmxpc3RJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5saXN0SXRlbXMkJCA9IHRoaXMubGlzdEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoaXRlbXM6IExpc3RJdGVtRGlyZWN0aXZlW10pID0+IHRoaXMuaW5pdCgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmxpc3RJdGVtcyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBmb2N1cyhpdGVtPzogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5mb2N1cygpO1xyXG5cclxuICAgIC8vIFdlIG5lZWQgdG8gbWFrZSB0aGlzIGNoZWNrIGJlY2F1c2UgZHluYW1pY1xyXG4gICAgLy8gbGlzdHMgc3VjaCBhcyBpbiB0aGUgc2VhcmNoIHJlc3VsdHMgbGlzdCBtYXkgZmFpbFxyXG4gICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpdGVtLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5mb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmZvY3VzZWRJdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5mb2N1c2VkSXRlbS5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb2N1c2VkSXRlbSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZvY3VzTmV4dCgpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5saXN0SXRlbXMudG9BcnJheSgpO1xyXG4gICAgbGV0IGl0ZW07XHJcbiAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IGRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuZ2V0Rm9jdXNlZEluZGV4KCk7XHJcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpbmRleCA9IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlIChkaXNhYmxlZCAmJiBpbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgaW5kZXggKz0gMTtcclxuICAgICAgaXRlbSA9IGl0ZW1zW2luZGV4XTtcclxuICAgICAgZGlzYWJsZWQgPSBpdGVtLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5mb2N1cyhpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWl0ZW1zW2luZGV4ICsgMV0pIHtcclxuICAgICAgaWdvTGlzdC5zY3JvbGxUb3AgPSBpZ29MaXN0LnNjcm9sbEhlaWdodCAtIGlnb0xpc3QuY2xpZW50SGVpZ2h0O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5pc1Njcm9sbGVkSW50b1ZpZXcoaXRlbS5lbC5uYXRpdmVFbGVtZW50KSkge1xyXG4gICAgICBpZ29MaXN0LnNjcm9sbFRvcCA9XHJcbiAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCArXHJcbiAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldEhlaWdodCAtXHJcbiAgICAgICAgaWdvTGlzdC5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c1ByZXZpb3VzKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCk7XHJcbiAgICBsZXQgaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmU7XHJcbiAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IGRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuZ2V0Rm9jdXNlZEluZGV4KCk7XHJcblxyXG4gICAgd2hpbGUgKGRpc2FibGVkICYmIGluZGV4ID4gMCkge1xyXG4gICAgICBpbmRleCAtPSAxO1xyXG4gICAgICBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICBkaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmZvY3VzKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXRlbXNbaW5kZXggLSAxXSkge1xyXG4gICAgICBpZ29MaXN0LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbSAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpdGVtLmVsLm5hdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgIGNvbnN0IHBhZGRpbmcgPSAzO1xyXG4gICAgICBpZ29MaXN0LnNjcm9sbFRvcCA9IGl0ZW0uZWwubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgLSBwYWRkaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0KGl0ZW0/OiBMaXN0SXRlbURpcmVjdGl2ZSkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51bnNlbGVjdCgpO1xyXG5cclxuICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bnNlbGVjdCgpIHtcclxuICAgIHRoaXMudW5mb2N1cygpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBlbmFibGVOYXZpZ2F0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbikge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25FbmFibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc2FibGVOYXZpZ2F0aW9uKCkge1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9JdGVtKGl0ZW06IExpc3RJdGVtRGlyZWN0aXZlKSB7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gaXRlbS5nZXRPZmZzZXRUb3AoKTtcclxuICB9XHJcblxyXG4gIGlzU2Nyb2xsZWRJbnRvVmlldyhlbGVtKSB7XHJcbiAgICBjb25zdCBkb2NWaWV3VG9wID1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICBjb25zdCBkb2NWaWV3Qm90dG9tID0gZG9jVmlld1RvcCArIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgY29uc3QgZWxlbVRvcCA9IGVsZW0ub2Zmc2V0VG9wO1xyXG4gICAgY29uc3QgZWxlbUJvdHRvbSA9IGVsZW1Ub3AgKyBlbGVtLmNoaWxkcmVuWzBdLm9mZnNldEhlaWdodDtcclxuICAgIHJldHVybiBlbGVtQm90dG9tIDw9IGRvY1ZpZXdCb3R0b20gJiYgZWxlbVRvcCA+PSBkb2NWaWV3VG9wO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuZmluZFNlbGVjdGVkSXRlbSgpO1xyXG4gICAgdGhpcy5mb2N1c2VkSXRlbSA9IHRoaXMuZmluZEZvY3VzZWRJdGVtKCk7XHJcblxyXG4gICAgdGhpcy5lbmFibGVOYXZpZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgaXRlbS5iZWZvcmVTZWxlY3Quc3Vic2NyaWJlKChpdGVtMjogTGlzdEl0ZW1EaXJlY3RpdmUpID0+XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1CZWZvcmVTZWxlY3QoaXRlbTIpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgaXRlbS5zZWxlY3Quc3Vic2NyaWJlKChpdGVtMjogTGlzdEl0ZW1EaXJlY3RpdmUpID0+XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1TZWxlY3QoaXRlbTIpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgaXRlbS5iZWZvcmVGb2N1cy5zdWJzY3JpYmUoKGl0ZW0yOiBMaXN0SXRlbURpcmVjdGl2ZSkgPT5cclxuICAgICAgICAgIHRoaXMuaGFuZGxlSXRlbUJlZm9yZUZvY3VzKGl0ZW0yKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIGl0ZW0uZm9jdXMuc3Vic2NyaWJlKChpdGVtMjogTGlzdEl0ZW1EaXJlY3RpdmUpID0+XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1Gb2N1cyhpdGVtMilcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9LCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViOiBTdWJzY3JpcHRpb24pID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJdGVtQmVmb3JlRm9jdXMoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIGlmIChpdGVtICE9PSB0aGlzLmZvY3VzZWRJdGVtKSB7XHJcbiAgICAgIHRoaXMudW5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJdGVtRm9jdXMoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIHRoaXMuZm9jdXNlZEl0ZW0gPSBpdGVtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJdGVtQmVmb3JlU2VsZWN0KGl0ZW06IExpc3RJdGVtRGlyZWN0aXZlKSB7XHJcbiAgICBpZiAoaXRlbSAhPT0gdGhpcy5mb2N1c2VkSXRlbSkge1xyXG4gICAgICB0aGlzLnVuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUl0ZW1TZWxlY3QoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFNlbGVjdGVkSXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCkuZmluZChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRm9jdXNlZEl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbXMudG9BcnJheSgpLmZpbmQoaXRlbSA9PiBpdGVtLmZvY3VzZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb2N1c2VkSW5kZXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbXNcclxuICAgICAgLnRvQXJyYXkoKVxyXG4gICAgICAuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5mb2N1c2VkSXRlbSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdmlnYXRlKGtleTogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICB0aGlzLmZvY3VzTmV4dCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bWF0LWxpc3RcclxuICBpZ29DbGlja291dFxyXG4gIFtuZ0NsYXNzXT1cInsnc2VsZWN0YWJsZSc6IHNlbGVjdGlvbn1cIlxyXG4gIChjbGlja291dCk9XCJkaXNhYmxlTmF2aWdhdGlvbigpXCJcclxuICAoY2xpY2spPVwiZW5hYmxlTmF2aWdhdGlvbigpXCI+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L21hdC1saXN0PlxyXG4iXX0=