@ng-atomic/components 18.2.0 → 18.4.0

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 (302) hide show
  1. package/atoms/smart-menu-button/smart-menu-button.atom.d.ts +3 -3
  2. package/components.module.d.ts +6 -1
  3. package/esm2022/atoms/icon/icon.atom.mjs +2 -2
  4. package/esm2022/atoms/smart-menu-button/smart-menu-button.atom.mjs +77 -114
  5. package/esm2022/components.module.mjs +7 -3
  6. package/esm2022/extras/editor/editor.component.mjs +78 -46
  7. package/esm2022/frames/app/app.frame.mjs +130 -70
  8. package/esm2022/frames/auto-layout/auto-layout.frame.mjs +29 -7
  9. package/esm2022/frames/columns/columns.frame.mjs +2 -2
  10. package/esm2022/frames/divider/divider.frame.mjs +2 -2
  11. package/esm2022/frames/drawer/drawer.frame.mjs +2 -2
  12. package/esm2022/frames/entrance/entrance.frame.mjs +2 -2
  13. package/esm2022/frames/fab/fab.frame.mjs +2 -2
  14. package/esm2022/frames/frames.module.mjs +3 -3
  15. package/esm2022/frames/line-up/line-up.animations.mjs +3 -7
  16. package/esm2022/frames/line-up/line-up.frame.mjs +2 -2
  17. package/esm2022/frames/loading/loading.frame.mjs +2 -2
  18. package/esm2022/frames/progress-bar/index.mjs +2 -0
  19. package/esm2022/frames/progress-bar/ng-atomic-components-frames-progress-bar.mjs +5 -0
  20. package/esm2022/frames/progress-bar/progress-bar.frame.mjs +53 -0
  21. package/esm2022/frames/router-outlet/router-outlet.frame.mjs +96 -41
  22. package/esm2022/frames/scroll/scroll.frame.mjs +32 -14
  23. package/esm2022/frames/scroll-v2/index.mjs +2 -2
  24. package/esm2022/frames/side-app/index.mjs +2 -0
  25. package/esm2022/frames/side-app/ng-atomic-components-frames-side-app.mjs +5 -0
  26. package/esm2022/frames/side-app/side-app.frame.mjs +74 -0
  27. package/esm2022/frames/side-nav/side-nav.frame.mjs +27 -21
  28. package/esm2022/frames/smart-menu/smart-menu.frame.mjs +2 -2
  29. package/esm2022/frames/tabs/tabs.frame.mjs +13 -7
  30. package/esm2022/frames/vertical-hide/vertical-hide.frame.mjs +11 -18
  31. package/esm2022/molecules/action-input-field/action-input-field.molecule.mjs +2 -2
  32. package/esm2022/molecules/actions-column/actions-column.molecule.mjs +13 -7
  33. package/esm2022/molecules/checkbox-column/checkbox-column.molecule.mjs +48 -21
  34. package/esm2022/molecules/date-input-field/date-input-field.molecule.mjs +2 -2
  35. package/esm2022/molecules/date-range-input-field/date-range-input-field.molecule.mjs +2 -2
  36. package/esm2022/molecules/file-input-field/file-input-field.molecule.mjs +2 -2
  37. package/esm2022/molecules/grid-item/grid-item.molecule.mjs +2 -2
  38. package/esm2022/molecules/list-item/index.mjs +2 -0
  39. package/esm2022/molecules/list-item/list-item.molecule.mjs +198 -0
  40. package/esm2022/molecules/list-item/ng-atomic-components-molecules-list-item.mjs +5 -0
  41. package/esm2022/molecules/loading-box/loading-box.molecule.mjs +2 -2
  42. package/esm2022/molecules/molecules.module.mjs +4 -1
  43. package/esm2022/molecules/navigation-list-item/navigation-list-item.molecule.mjs +2 -2
  44. package/esm2022/molecules/select-input-field/select-input-field.molecule.mjs +9 -5
  45. package/esm2022/molecules/smart-column/smart-column.molecule.mjs +129 -43
  46. package/esm2022/molecules/tree-column/tree-column.molecule.mjs +37 -25
  47. package/esm2022/organisms/action-buttons-section/action-buttons-section.organism.mjs +2 -2
  48. package/esm2022/organisms/action-input-section/action-input-section.organism.mjs +2 -2
  49. package/esm2022/organisms/agreement-input-section/agreement-input-section.organism.mjs +3 -3
  50. package/esm2022/organisms/card-input-section/card-input-section.organism.mjs +2 -2
  51. package/esm2022/organisms/cvc-and-exp-input-section/cvc-and-exp-input-section.organism.mjs +2 -2
  52. package/esm2022/organisms/date-input-section/date-input-section.organism.mjs +4 -4
  53. package/esm2022/organisms/date-range-input-section/date-range-input-section.organism.mjs +4 -4
  54. package/esm2022/organisms/definition-list/definition-list.organism.mjs +2 -2
  55. package/esm2022/organisms/file-input-section/file-input-section.organism.mjs +2 -2
  56. package/esm2022/organisms/filters-section/filters-section.organism.mjs +5 -5
  57. package/esm2022/organisms/graphql-editor/graphql-editor.organism.mjs +1 -1
  58. package/esm2022/organisms/grid-cards-section/grid-cards-section.organism.mjs +2 -2
  59. package/esm2022/organisms/heading/heading.organism.mjs +2 -2
  60. package/esm2022/{sheets/actions → organisms/list}/index.mjs +2 -2
  61. package/esm2022/organisms/list/list.organism.mjs +161 -0
  62. package/esm2022/{sheets/actions/ng-atomic-components-sheets-actions.mjs → organisms/list/ng-atomic-components-organisms-list.mjs} +1 -1
  63. package/esm2022/organisms/menu-footer/menu-footer.organism.mjs +2 -2
  64. package/esm2022/organisms/menu-header/menu-header.organism.mjs +2 -2
  65. package/esm2022/organisms/mermaid-section/mermaid-section.organism.mjs +39 -33
  66. package/esm2022/organisms/messages-section/messages-section.organism.mjs +2 -2
  67. package/esm2022/organisms/navigation-list/navigation-list.organism.mjs +2 -2
  68. package/esm2022/organisms/navigator/navigator.organism.mjs +49 -19
  69. package/esm2022/organisms/number-input-section/number-input-section.organism.mjs +2 -2
  70. package/esm2022/organisms/organisms.module.mjs +5 -5
  71. package/esm2022/organisms/paginator/paginator.organism.mjs +2 -2
  72. package/esm2022/organisms/password-input-section/password-input-section.organism.mjs +2 -2
  73. package/esm2022/organisms/select-input-section/select-input-section.organism.mjs +4 -4
  74. package/esm2022/organisms/selection-list/selection-list.organism.mjs +1 -1
  75. package/esm2022/organisms/slider-input-section/slider-input-section.organism.mjs +4 -4
  76. package/esm2022/organisms/social-login-section/social-login-section.organism.mjs +2 -2
  77. package/esm2022/organisms/table/index.mjs +2 -1
  78. package/esm2022/organisms/table/table.helpers.mjs +4 -4
  79. package/esm2022/organisms/table/table.organism.mjs +152 -141
  80. package/esm2022/organisms/text-input-section/text-input-section.organism.mjs +4 -4
  81. package/esm2022/organisms/textarea-section/textarea-section.organism.mjs +2 -2
  82. package/esm2022/organisms/thread-messages-section/thread-messages-section.organism.mjs +2 -2
  83. package/esm2022/organisms/tree-list/index.mjs +2 -0
  84. package/esm2022/organisms/tree-list/ng-atomic-components-organisms-tree-list.mjs +5 -0
  85. package/esm2022/organisms/tree-list/tree-list.organism.mjs +125 -0
  86. package/esm2022/pages/_index/index.page.mjs +169 -62
  87. package/esm2022/pages/columns/columns.page.mjs +10 -9
  88. package/esm2022/pages/form/form.page.mjs +27 -12
  89. package/esm2022/pages/terms/terms.page.mjs +2 -2
  90. package/esm2022/templates/_index/index.template.mjs +276 -155
  91. package/esm2022/templates/background/background.template.mjs +2 -2
  92. package/esm2022/templates/code-editor/code-editor.template.mjs +52 -15
  93. package/esm2022/templates/columns/columns.template.mjs +6 -4
  94. package/esm2022/templates/entrance/entrance.template.mjs +12 -11
  95. package/esm2022/templates/form/form.builder.mjs +93 -71
  96. package/esm2022/templates/form/form.template.mjs +47 -28
  97. package/esm2022/templates/icon-button-menu/icon-button-menu.template.mjs +69 -16
  98. package/esm2022/templates/menu/menu.template.mjs +2 -2
  99. package/esm2022/templates/messages/messages.template.mjs +71 -65
  100. package/esm2022/templates/selection/selection.template.mjs +2 -2
  101. package/esm2022/templates/settings/settings.template.mjs +2 -2
  102. package/extras/editor/editor.component.d.ts +19 -10
  103. package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
  104. package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs +76 -113
  105. package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs.map +1 -1
  106. package/fesm2022/ng-atomic-components-extras-editor.mjs +79 -47
  107. package/fesm2022/ng-atomic-components-extras-editor.mjs.map +1 -1
  108. package/fesm2022/ng-atomic-components-frames-app.mjs +129 -69
  109. package/fesm2022/ng-atomic-components-frames-app.mjs.map +1 -1
  110. package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +29 -7
  111. package/fesm2022/ng-atomic-components-frames-auto-layout.mjs.map +1 -1
  112. package/fesm2022/ng-atomic-components-frames-columns.mjs +2 -2
  113. package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
  114. package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -2
  115. package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
  116. package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
  117. package/fesm2022/ng-atomic-components-frames-line-up.mjs +4 -8
  118. package/fesm2022/ng-atomic-components-frames-line-up.mjs.map +1 -1
  119. package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
  120. package/fesm2022/ng-atomic-components-frames-progress-bar.mjs +60 -0
  121. package/fesm2022/ng-atomic-components-frames-progress-bar.mjs.map +1 -0
  122. package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +96 -41
  123. package/fesm2022/ng-atomic-components-frames-router-outlet.mjs.map +1 -1
  124. package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs +1 -48
  125. package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs.map +1 -1
  126. package/fesm2022/ng-atomic-components-frames-scroll.mjs +31 -13
  127. package/fesm2022/ng-atomic-components-frames-scroll.mjs.map +1 -1
  128. package/fesm2022/ng-atomic-components-frames-side-app.mjs +81 -0
  129. package/fesm2022/ng-atomic-components-frames-side-app.mjs.map +1 -0
  130. package/fesm2022/ng-atomic-components-frames-side-nav.mjs +26 -20
  131. package/fesm2022/ng-atomic-components-frames-side-nav.mjs.map +1 -1
  132. package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
  133. package/fesm2022/ng-atomic-components-frames-tabs.mjs +12 -6
  134. package/fesm2022/ng-atomic-components-frames-tabs.mjs.map +1 -1
  135. package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +10 -17
  136. package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs.map +1 -1
  137. package/fesm2022/ng-atomic-components-frames.mjs +2 -2
  138. package/fesm2022/ng-atomic-components-frames.mjs.map +1 -1
  139. package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs +1 -1
  140. package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs.map +1 -1
  141. package/fesm2022/ng-atomic-components-molecules-actions-column.mjs +12 -6
  142. package/fesm2022/ng-atomic-components-molecules-actions-column.mjs.map +1 -1
  143. package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs +47 -21
  144. package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs.map +1 -1
  145. package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
  146. package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
  147. package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs +1 -1
  148. package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs.map +1 -1
  149. package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
  150. package/fesm2022/ng-atomic-components-molecules-list-item.mjs +203 -0
  151. package/fesm2022/ng-atomic-components-molecules-list-item.mjs.map +1 -0
  152. package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
  153. package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +2 -2
  154. package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +8 -4
  155. package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs.map +1 -1
  156. package/fesm2022/ng-atomic-components-molecules-smart-column.mjs +128 -43
  157. package/fesm2022/ng-atomic-components-molecules-smart-column.mjs.map +1 -1
  158. package/fesm2022/ng-atomic-components-molecules-tree-column.mjs +36 -24
  159. package/fesm2022/ng-atomic-components-molecules-tree-column.mjs.map +1 -1
  160. package/fesm2022/ng-atomic-components-molecules.mjs +3 -0
  161. package/fesm2022/ng-atomic-components-molecules.mjs.map +1 -1
  162. package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
  163. package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
  164. package/fesm2022/ng-atomic-components-organisms-agreement-input-section.mjs +2 -2
  165. package/fesm2022/ng-atomic-components-organisms-agreement-input-section.mjs.map +1 -1
  166. package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
  167. package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
  168. package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +3 -3
  169. package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs.map +1 -1
  170. package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +3 -3
  171. package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs.map +1 -1
  172. package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
  173. package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
  174. package/fesm2022/ng-atomic-components-organisms-filters-section.mjs +4 -4
  175. package/fesm2022/ng-atomic-components-organisms-filters-section.mjs.map +1 -1
  176. package/fesm2022/ng-atomic-components-organisms-graphql-editor.mjs +1 -1
  177. package/fesm2022/ng-atomic-components-organisms-graphql-editor.mjs.map +1 -1
  178. package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
  179. package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
  180. package/fesm2022/ng-atomic-components-organisms-list.mjs +166 -0
  181. package/fesm2022/ng-atomic-components-organisms-list.mjs.map +1 -0
  182. package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
  183. package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +2 -2
  184. package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs +38 -32
  185. package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs.map +1 -1
  186. package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
  187. package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +2 -2
  188. package/fesm2022/ng-atomic-components-organisms-navigator.mjs +48 -18
  189. package/fesm2022/ng-atomic-components-organisms-navigator.mjs.map +1 -1
  190. package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
  191. package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs.map +1 -1
  192. package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
  193. package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
  194. package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs.map +1 -1
  195. package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +3 -3
  196. package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs.map +1 -1
  197. package/fesm2022/ng-atomic-components-organisms-selection-list.mjs +1 -1
  198. package/fesm2022/ng-atomic-components-organisms-selection-list.mjs.map +1 -1
  199. package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +3 -3
  200. package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs.map +1 -1
  201. package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
  202. package/fesm2022/ng-atomic-components-organisms-table.mjs +156 -145
  203. package/fesm2022/ng-atomic-components-organisms-table.mjs.map +1 -1
  204. package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +3 -3
  205. package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs.map +1 -1
  206. package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
  207. package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs.map +1 -1
  208. package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +2 -2
  209. package/fesm2022/ng-atomic-components-organisms-tree-list.mjs +132 -0
  210. package/fesm2022/ng-atomic-components-organisms-tree-list.mjs.map +1 -0
  211. package/fesm2022/ng-atomic-components-organisms.mjs +4 -4
  212. package/fesm2022/ng-atomic-components-organisms.mjs.map +1 -1
  213. package/fesm2022/ng-atomic-components-pages-_index.mjs +168 -62
  214. package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
  215. package/fesm2022/ng-atomic-components-pages-columns.mjs +9 -8
  216. package/fesm2022/ng-atomic-components-pages-columns.mjs.map +1 -1
  217. package/fesm2022/ng-atomic-components-pages-form.mjs +26 -11
  218. package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
  219. package/fesm2022/ng-atomic-components-pages-terms.mjs +1 -1
  220. package/fesm2022/ng-atomic-components-pages-terms.mjs.map +1 -1
  221. package/fesm2022/ng-atomic-components-templates-_index.mjs +276 -155
  222. package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
  223. package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
  224. package/fesm2022/ng-atomic-components-templates-code-editor.mjs +51 -14
  225. package/fesm2022/ng-atomic-components-templates-code-editor.mjs.map +1 -1
  226. package/fesm2022/ng-atomic-components-templates-columns.mjs +5 -3
  227. package/fesm2022/ng-atomic-components-templates-columns.mjs.map +1 -1
  228. package/fesm2022/ng-atomic-components-templates-entrance.mjs +11 -10
  229. package/fesm2022/ng-atomic-components-templates-entrance.mjs.map +1 -1
  230. package/fesm2022/ng-atomic-components-templates-form.mjs +139 -99
  231. package/fesm2022/ng-atomic-components-templates-form.mjs.map +1 -1
  232. package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +68 -15
  233. package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs.map +1 -1
  234. package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
  235. package/fesm2022/ng-atomic-components-templates-messages.mjs +71 -65
  236. package/fesm2022/ng-atomic-components-templates-messages.mjs.map +1 -1
  237. package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
  238. package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
  239. package/fesm2022/ng-atomic-components.mjs +7 -3
  240. package/fesm2022/ng-atomic-components.mjs.map +1 -1
  241. package/frames/app/app.frame.d.ts +13 -1
  242. package/frames/auto-layout/auto-layout.frame.d.ts +7 -1
  243. package/frames/progress-bar/index.d.ts +1 -0
  244. package/frames/progress-bar/progress-bar.frame.d.ts +14 -0
  245. package/frames/router-outlet/router-outlet.frame.d.ts +20 -9
  246. package/frames/scroll/scroll.frame.d.ts +5 -1
  247. package/frames/scroll-v2/index.d.ts +1 -1
  248. package/frames/side-app/index.d.ts +1 -0
  249. package/frames/side-app/side-app.frame.d.ts +20 -0
  250. package/frames/side-nav/side-nav.frame.d.ts +6 -2
  251. package/frames/tabs/tabs.frame.d.ts +2 -1
  252. package/frames/vertical-hide/vertical-hide.frame.d.ts +2 -2
  253. package/molecules/actions-column/actions-column.molecule.d.ts +3 -2
  254. package/molecules/checkbox-column/checkbox-column.molecule.d.ts +12 -4
  255. package/molecules/list-item/index.d.ts +1 -0
  256. package/molecules/list-item/list-item.molecule.d.ts +50 -0
  257. package/molecules/molecules.module.d.ts +3 -0
  258. package/molecules/smart-column/smart-column.molecule.d.ts +34 -9
  259. package/molecules/tree-column/tree-column.molecule.d.ts +6 -2
  260. package/organisms/list/index.d.ts +1 -0
  261. package/organisms/{smart-list/smart-list.organism.d.ts → list/list.organism.d.ts} +11 -11
  262. package/organisms/mermaid-section/mermaid-section.organism.d.ts +10 -10
  263. package/organisms/navigator/navigator.organism.d.ts +8 -6
  264. package/organisms/organisms.module.d.ts +1 -1
  265. package/organisms/table/index.d.ts +1 -0
  266. package/organisms/table/table.helpers.d.ts +1 -1
  267. package/organisms/table/table.organism.d.ts +32 -1
  268. package/organisms/tree-list/index.d.ts +1 -0
  269. package/organisms/tree-list/tree-list.organism.d.ts +33 -0
  270. package/package.json +37 -25
  271. package/pages/_index/index.page.d.ts +72 -43
  272. package/pages/columns/columns.page.d.ts +5 -2
  273. package/pages/form/form.page.d.ts +11 -2
  274. package/templates/_index/index.template.d.ts +40 -11
  275. package/templates/code-editor/code-editor.template.d.ts +6 -3
  276. package/templates/entrance/entrance.template.d.ts +1 -1
  277. package/templates/form/form.builder.d.ts +10 -3
  278. package/templates/form/form.template.d.ts +2 -1
  279. package/templates/icon-button-menu/icon-button-menu.template.d.ts +3 -2
  280. package/templates/messages/messages.template.d.ts +21 -17
  281. package/esm2022/frames/scroll-v2/scroll.frame.mjs +0 -46
  282. package/esm2022/organisms/smart-list/index.mjs +0 -2
  283. package/esm2022/organisms/smart-list/ng-atomic-components-organisms-smart-list.mjs +0 -5
  284. package/esm2022/organisms/smart-list/smart-list.organism.mjs +0 -218
  285. package/esm2022/sheets/actions/actions.sheet.mjs +0 -45
  286. package/esm2022/sheets/index.mjs +0 -3
  287. package/esm2022/sheets/ng-atomic-components-sheets.mjs +0 -5
  288. package/esm2022/sheets/sheets.module.mjs +0 -25
  289. package/esm2022/sheets/sheets.service.mjs +0 -20
  290. package/fesm2022/ng-atomic-components-organisms-smart-list.mjs +0 -223
  291. package/fesm2022/ng-atomic-components-organisms-smart-list.mjs.map +0 -1
  292. package/fesm2022/ng-atomic-components-sheets-actions.mjs +0 -52
  293. package/fesm2022/ng-atomic-components-sheets-actions.mjs.map +0 -1
  294. package/fesm2022/ng-atomic-components-sheets.mjs +0 -48
  295. package/fesm2022/ng-atomic-components-sheets.mjs.map +0 -1
  296. package/frames/scroll-v2/scroll.frame.d.ts +0 -9
  297. package/organisms/smart-list/index.d.ts +0 -1
  298. package/sheets/actions/actions.sheet.d.ts +0 -9
  299. package/sheets/actions/index.d.ts +0 -1
  300. package/sheets/index.d.ts +0 -2
  301. package/sheets/sheets.module.d.ts +0 -11
  302. package/sheets/sheets.service.d.ts +0 -10
@@ -1,30 +1,30 @@
1
1
  var IndexTemplateStore_1;
2
2
  import { __decorate, __metadata } from "tslib";
3
3
  import { ChangeDetectionStrategy, Component, Directive, PLATFORM_ID, inject, input, viewChild } from '@angular/core';
4
- import { isPlatformServer } from '@angular/common';
4
+ import { isPlatformServer, NgTemplateOutlet } from '@angular/common';
5
5
  import { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';
6
6
  import { ScrollFrame } from '@ng-atomic/components/frames/scroll';
7
7
  import { HeaderMoleculeStore } from '@ng-atomic/components/molecules/header';
8
8
  import { TableOrganism, TableOrganismStore, injectIndexForm } from '@ng-atomic/components/organisms/table';
9
- import { SmartListOrganism } from '@ng-atomic/components/organisms/smart-list';
9
+ import { ListOrganism } from '@ng-atomic/components/organisms/list';
10
10
  import { NavigatorOrganismStore } from '@ng-atomic/components/organisms/navigator';
11
11
  import { InjectableComponent, TokenizedType, _computed, computeFake } from '@ng-atomic/core';
12
- import { FiltersSectionOrganism } from '@ng-atomic/components/organisms/filters-section';
13
12
  import { DividerFrame } from '@ng-atomic/components/frames/divider';
14
13
  import { SelectionModel } from '@angular/cdk/collections';
15
- import { SelectionListOrganism } from '@ng-atomic/components/organisms/selection-list';
16
14
  import { Effect, NgAtomicComponent } from '@ng-atomic/core';
17
15
  import { QueryResolverService } from '@ng-atomic/common/services/query-resolver';
18
16
  import { NavActionId, call, injectNavStartActions, makeConfig } from '@ng-atomic/common/services/ui';
19
17
  import { IndexPipe } from '@ng-atomic/common/pipes/index';
20
18
  import { IndexLengthPipe } from '@ng-atomic/common/pipes/index-length';
21
- import { SortByPipe } from '@ng-atomic/common/pipes/sort-by';
22
19
  import { GridCardsSectionOrganism } from '@ng-atomic/components/organisms/grid-cards-section';
23
20
  import { injectModelName } from '@ng-atomic/common/pipes/domain';
24
- import { DataAccessorPipe } from '@ng-atomic/common/pipes/data-accessor';
21
+ import { FormControl } from '@angular/forms';
25
22
  import { computedRawValue } from '@ng-atomic/common/utils';
26
23
  import { toObservable } from '@angular/core/rxjs-interop';
27
24
  import { FlatTreeControl } from '@angular/cdk/tree';
25
+ import { TreeListOrganism, TreeListOrganismStore } from '@ng-atomic/components/organisms/tree-list';
26
+ import { TextInputFieldMolecule } from '@ng-atomic/components/molecules/text-input-field';
27
+ import { VerticalHideFrame } from '@ng-atomic/components/frames/vertical-hide';
28
28
  import * as i0 from "@angular/core";
29
29
  export var ActionId;
30
30
  (function (ActionId) {
@@ -47,6 +47,14 @@ export function getType(context) {
47
47
  default: return 'table';
48
48
  }
49
49
  }
50
+ export function convertToItemsMap(items) {
51
+ return {
52
+ 'default': {
53
+ items: items,
54
+ itemsLength: items?.length,
55
+ }
56
+ };
57
+ }
50
58
  let IndexTemplateStore = class IndexTemplateStore extends InjectableComponent {
51
59
  constructor() {
52
60
  super(...arguments);
@@ -60,8 +68,12 @@ let IndexTemplateStore = class IndexTemplateStore extends InjectableComponent {
60
68
  this.tableTreeControl = input(_computed(() => this.config().tableTreeControl));
61
69
  this.itemActions = input(_computed(() => this.config().itemActions));
62
70
  this.title = input(_computed(() => this.config().title));
71
+ this.titleControl = input(_computed(() => this.config().titleControl));
72
+ this.titleEditable = input(_computed(() => this.config().titleEditable));
63
73
  this.description = input(_computed(() => this.config().description));
64
74
  this.items = input(_computed(() => this.config().items));
75
+ this.itemsMap = input(_computed(() => convertToItemsMap(this.items())));
76
+ this.itemsMapKeys = input(_computed(() => Object.keys(this.itemsMap() ?? {})));
65
77
  this.itemsLength = input(_computed(() => this.config().itemsLength));
66
78
  this.navStartActions = input(_computed(() => this.config().navStartActions));
67
79
  this.navEndActions = input(_computed(() => this.config().navEndActions));
@@ -72,6 +84,7 @@ let IndexTemplateStore = class IndexTemplateStore extends InjectableComponent {
72
84
  this.selection = input(_computed(() => this.config().selection));
73
85
  this.highlight = input(_computed(() => this.config().highlight));
74
86
  this.queryLabel = input(_computed(() => this.config().queryLabel));
87
+ this.navMode = input(_computed(() => 'expanded'));
75
88
  this.form$ = toObservable(computeFake(this.form));
76
89
  this.formValue = computedRawValue(() => call(this.form()));
77
90
  this.pipes = { index: inject(IndexPipe), indexLength: inject(IndexLengthPipe) };
@@ -90,9 +103,19 @@ let IndexTemplateStore = class IndexTemplateStore extends InjectableComponent {
90
103
  default: return 'var(--page-width-lv2)';
91
104
  }
92
105
  }
106
+ function getType(context) {
107
+ switch (context.breakpoint) {
108
+ case 'xSmall': return 'list';
109
+ case 'small':
110
+ case 'medium':
111
+ case 'large':
112
+ case 'xLarge':
113
+ default: return 'table';
114
+ }
115
+ }
93
116
  const form = injectIndexForm();
94
117
  const navStartActions = injectNavStartActions();
95
- return () => ({
118
+ return (context) => ({
96
119
  form,
97
120
  toggleActions: [
98
121
  { id: ActionId.TOGGLE_TYPE, icon: 'grid_view', payload: 'grid' },
@@ -102,17 +125,19 @@ let IndexTemplateStore = class IndexTemplateStore extends InjectableComponent {
102
125
  gridToolbarActions: [],
103
126
  tableChildrenKey: null,
104
127
  tableIsHidden: (item) => false,
105
- tableTreeControl: new FlatTreeControl(n => n.level, n => n.isExpandable),
128
+ tableTreeControl: new FlatTreeControl(n => n.level, n => n.isExpandable, { trackBy: (n) => n.id }),
106
129
  itemActions: (item) => [{ id: ActionId.DETAIL, icon: 'open_in_new', payload: item }],
107
130
  items: [],
108
131
  itemsLength: 0,
109
132
  title: `${modelName()}一覧`,
133
+ titleControl: new FormControl(`${modelName()}一覧`),
134
+ titleEditable: false,
110
135
  description: ``,
111
136
  navStartActions: navStartActions(),
112
137
  navEndActions: [],
113
138
  groupedBy: null,
114
139
  groupKeys: [],
115
- type: 'table',
140
+ type: getType(context),
116
141
  pageSizeOptions: [5, 10, 25, 100],
117
142
  selection: new SelectionModel(true, []),
118
143
  highlight: new SelectionModel(true, []),
@@ -128,7 +153,7 @@ let IndexTemplateStore = class IndexTemplateStore extends InjectableComponent {
128
153
  });
129
154
  }
130
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexTemplateStore, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
131
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: IndexTemplateStore, isStandalone: true, selector: "templates-index", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, gridToolbarActions: { classPropertyName: "gridToolbarActions", publicName: "gridToolbarActions", isSignal: true, isRequired: false, transformFunction: null }, toggleActions: { classPropertyName: "toggleActions", publicName: "toggleActions", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: "tableChildrenKey", publicName: "tableChildrenKey", isSignal: true, isRequired: false, transformFunction: null }, tableIsHidden: { classPropertyName: "tableIsHidden", publicName: "tableIsHidden", isSignal: true, isRequired: false, transformFunction: null }, tableTreeControl: { classPropertyName: "tableTreeControl", publicName: "tableTreeControl", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: "itemActions", publicName: "itemActions", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: "itemsLength", publicName: "itemsLength", isSignal: true, isRequired: false, transformFunction: null }, navStartActions: { classPropertyName: "navStartActions", publicName: "navStartActions", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: "navEndActions", publicName: "navEndActions", isSignal: true, isRequired: false, transformFunction: null }, groupedBy: { classPropertyName: "groupedBy", publicName: "groupedBy", isSignal: true, isRequired: false, transformFunction: null }, groupKeys: { classPropertyName: "groupKeys", publicName: "groupKeys", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, queryLabel: { classPropertyName: "queryLabel", publicName: "queryLabel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
156
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: IndexTemplateStore, isStandalone: true, selector: "templates-index", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, gridToolbarActions: { classPropertyName: "gridToolbarActions", publicName: "gridToolbarActions", isSignal: true, isRequired: false, transformFunction: null }, toggleActions: { classPropertyName: "toggleActions", publicName: "toggleActions", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: "tableChildrenKey", publicName: "tableChildrenKey", isSignal: true, isRequired: false, transformFunction: null }, tableIsHidden: { classPropertyName: "tableIsHidden", publicName: "tableIsHidden", isSignal: true, isRequired: false, transformFunction: null }, tableTreeControl: { classPropertyName: "tableTreeControl", publicName: "tableTreeControl", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: "itemActions", publicName: "itemActions", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleControl: { classPropertyName: "titleControl", publicName: "titleControl", isSignal: true, isRequired: false, transformFunction: null }, titleEditable: { classPropertyName: "titleEditable", publicName: "titleEditable", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, itemsMap: { classPropertyName: "itemsMap", publicName: "itemsMap", isSignal: true, isRequired: false, transformFunction: null }, itemsMapKeys: { classPropertyName: "itemsMapKeys", publicName: "itemsMapKeys", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: "itemsLength", publicName: "itemsLength", isSignal: true, isRequired: false, transformFunction: null }, navStartActions: { classPropertyName: "navStartActions", publicName: "navStartActions", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: "navEndActions", publicName: "navEndActions", isSignal: true, isRequired: false, transformFunction: null }, groupedBy: { classPropertyName: "groupedBy", publicName: "groupedBy", isSignal: true, isRequired: false, transformFunction: null }, groupKeys: { classPropertyName: "groupKeys", publicName: "groupKeys", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, queryLabel: { classPropertyName: "queryLabel", publicName: "queryLabel", isSignal: true, isRequired: false, transformFunction: null }, navMode: { classPropertyName: "navMode", publicName: "navMode", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
132
157
  IndexPipe,
133
158
  IndexLengthPipe,
134
159
  ], usesInheritance: true, ngImport: i0 }); }
@@ -177,84 +202,129 @@ export class IndexTemplate extends NgAtomicComponent {
177
202
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
178
203
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: IndexTemplate, isStandalone: true, selector: "templates-index", host: { classAttribute: "template" }, providers: [
179
204
  QueryResolverService,
180
- ], viewQueries: [{ propertyName: "dividerFrame", first: true, predicate: DividerFrame, descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: IndexTemplateStore, inputs: ["gridToolbarActions", "gridToolbarActions", "tableChildrenKey", "tableChildrenKey", "tableIsHidden", "tableIsHidden", "tableTreeControl", "tableTreeControl", "form", "form", "title", "title", "description", "description", "items", "items", "itemsLength", "itemsLength", "itemActions", "itemActions", "navStartActions", "navStartActions", "navEndActions", "navEndActions", "groupedBy", "groupedBy", "groupKeys", "groupKeys", "selection", "selection", "pageSizeOptions", "pageSizeOptions", "type", "type", "highlight", "highlight", "queryLabel", "queryLabel"] }], ngImport: i0, template: `
205
+ ], viewQueries: [{ propertyName: "dividerFrame", first: true, predicate: DividerFrame, descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: IndexTemplateStore, inputs: ["gridToolbarActions", "gridToolbarActions", "tableChildrenKey", "tableChildrenKey", "tableIsHidden", "tableIsHidden", "tableTreeControl", "tableTreeControl", "form", "form", "title", "title", "titleControl", "titleControl", "titleEditable", "titleEditable", "description", "description", "items", "items", "itemsMap", "itemsMap", "itemsLength", "itemsLength", "itemActions", "itemActions", "navStartActions", "navStartActions", "navEndActions", "navEndActions", "navMode", "navMode", "groupedBy", "groupedBy", "groupKeys", "groupKeys", "selection", "selection", "pageSizeOptions", "pageSizeOptions", "type", "type", "highlight", "highlight", "queryLabel", "queryLabel"] }], ngImport: i0, template: `
181
206
  <frames-scroll>
182
- <organisms-navigator injectable
183
- [startActions]="store.navStartActions()"
184
- [endActions]="store.navEndActions()"
185
- (action)="dispatch($event)"
186
- navigator
187
- >
188
- <molecules-header injectable [title]="store.title()" [description]="store.description()"/>
189
- </organisms-navigator>
190
- <frames-auto-layout vertical contents>
191
- @switch(store.type()) {
192
- @case('list') {
193
- <organisms-smart-list
194
- [items]="store.items()"
195
- [itemActions]="store.itemActions()"
196
- [groupedBy]="store.groupedBy()"
197
- [groupKeys]="store.groupKeys()"
207
+ <frames-vertical-hide [mode]="store.navMode()" top>
208
+ <organisms-navigator injectable
209
+ [startActions]="store.navStartActions()"
210
+ [endActions]="store.navEndActions()"
211
+ (action)="dispatch($event)"
212
+ top
213
+ >
214
+ @if (store.titleEditable()) {
215
+ <molecules-text-input-field
216
+ [label]="'title'"
217
+ [placeholder]="'title'"
218
+ [control]="store.titleControl()"
219
+ [appearance]="'fill'"
220
+ />
221
+ } @else {
222
+ <molecules-header injectable [title]="store.title()" [description]="store.description()"/>
223
+ }
224
+ </organisms-navigator>
225
+ <div class="dashboard">
226
+ <ng-content first select="[navDashboard]" />
227
+ </div>
228
+ </frames-vertical-hide>
229
+ <frames-auto-layout [type]="'vertical'" contents>
230
+ @defer {
231
+ <frames-divider>
232
+ <ng-content first select="[dashboard]" />
233
+ <div style="display: flex; flex-direction: column; width: 100%; height: 100%;" second>
234
+ @if (store.gridToolbarActions() || true) {
235
+ @defer {
236
+ <organisms-grid-toolbar injectable
237
+ [actions]="store.gridToolbarActions()"
238
+ (action)="dispatch($event)"
239
+ />
240
+ }
241
+ }
242
+ @if (store.form().get(['query'])) {
243
+ <organisms-chips-input-section
244
+ [control]="store.form().get(['query'])"
245
+ [label]="store.queryLabel()"
246
+ />
247
+ }
248
+ @if (store.itemsMapKeys().length > 1) {
249
+ @defer {
250
+ <frames-tabs [labels]="store.itemsMapKeys()">
251
+ @for (key of store.itemsMapKeys(); track key;) {
252
+ <ng-template #tab>
253
+ <ng-container *ngTemplateOutlet="items; context: {map: store.itemsMap()[key]}"/>
254
+ </ng-template>
255
+ }
256
+ </frames-tabs>
257
+ }
258
+ } @else if(store.itemsMapKeys().length === 1) {
259
+ <ng-container *ngTemplateOutlet="items; context: {map: store.itemsMap()[store.itemsMapKeys()[0]]}"/>
260
+ } @else {
261
+
262
+ }
263
+
264
+ </div>
265
+ </frames-divider>
266
+ }
267
+ </frames-auto-layout>
268
+ </frames-scroll>
269
+
270
+ <ng-template #items let-map="map">
271
+ <!-- <div>
272
+ json: {{ map | json }}
273
+ </div> -->
274
+ @switch(map?.type ?? store.type()) {
275
+ @case('list') {
276
+ @if (map.childrenKey) {
277
+ <organisms-tree-list
278
+ [items]="map?.items ?? []"
279
+ [childrenKey]="map?.childrenKey ?? store.childrenKey()"
280
+ [treeControl]="map?.treeControl ?? store.tableTreeControl()"
281
+ (action)="dispatch($event)"
282
+ />
283
+ } @else {
284
+ <organisms-list
285
+ [items]="map?.items ?? []"
286
+ [itemActions]="map?.itemActions ?? store.itemActions()"
287
+ [groupedBy]="map?.groupedBy ?? store.groupedBy()"
288
+ [groupKeys]="map?.groupKeys ?? store.groupKeys()"
198
289
  (action)="dispatch($event)"
199
290
  />
200
291
  }
201
- @case ('grid') {
202
- @defer {
203
- <organisms-grid-cards-section
204
- [items]="store.items()"
205
- (action)="dispatch($event)"
206
- contents
207
- />
208
- }
292
+ }
293
+ @case ('grid') {
294
+ @defer {
295
+ <organisms-grid-cards-section
296
+ [items]="map?.items ?? []"
297
+ (action)="dispatch($event)"
298
+ contents
299
+ />
209
300
  }
210
- @default {
301
+ }
302
+ @default {
303
+ <organisms-table injectable
304
+ [items]="map?.items ?? []"
305
+ [itemActions]="map?.itemActions ?? store.itemActions()"
306
+ [selection]="map?.selection ?? store.selection()"
307
+ [form]="map?.form ?? store.form()"
308
+ [childrenKey]="map?.childrenKey ?? store.tableChildrenKey()"
309
+ [highlight]="map?.highlight ?? store.highlight()"
310
+ [isHidden]="map?.tableIsHidden ?? store.tableIsHidden()"
311
+ [treeControl]="map?.treeControl ?? store.tableTreeControl()"
312
+ (action)="dispatch($event)"
313
+ />
314
+ @if (map?.form?.get(['page']) ?? store.form().get(['page'])) {
211
315
  @defer {
212
- <frames-divider>
213
- <ng-content first select="[dashboard]" />
214
- <div style="display: flex; flex-direction: column; width: 100%; height: 100%;" second>
215
- @if (store.gridToolbarActions() || true) {
216
- @defer {
217
- <organisms-grid-toolbar injectable
218
- [actions]="store.gridToolbarActions()"
219
- (action)="dispatch($event)"
220
- />
221
- }
222
- }
223
- @if (store.form().get(['query'])) {
224
- <organisms-chips-input-section
225
- [control]="store.form().get(['query'])"
226
- [label]="store.queryLabel()"
227
- />
228
- }
229
- <organisms-table injectable
230
- [items]="store.items()"
231
- [itemActions]="store.itemActions()"
232
- [selection]="store.selection()"
233
- [form]="store.form()"
234
- [childrenKey]="store.tableChildrenKey()"
235
- [highlight]="store.highlight()"
236
- [isHidden]="store.tableIsHidden()"
237
- [treeControl]="store.tableTreeControl()"
238
- (action)="dispatch($event)"
239
- />
240
- @if (store.form().get(['page'])) {
241
- @defer {
242
- <organisms-paginator injectable
243
- [form]="store.form().get(['page'])"
244
- [itemLength]="store.itemsLength()"
245
- [pageSizeOptions]="store.pageSizeOptions()"
246
- />
247
- }
248
- }
249
- </div>
250
- </frames-divider>
316
+ <organisms-paginator injectable
317
+ [form]="map?.form?.get(['page']) ?? store.form().get(['page'])"
318
+ [itemLength]="map?.itemsLength ?? store.itemsLength()"
319
+ [pageSizeOptions]="map?.pageSizeOptions ?? store.pageSizeOptions()"
320
+ />
251
321
  }
252
322
  }
253
323
  }
254
- </frames-auto-layout>
255
- </frames-scroll>
256
- `, isInline: true, styles: [":host{width:100%;height:100%;background:#fff;display:block;--navigator-height: 56px;--navigator-height-SCOPED-IN-index-YSAV: var(--navigator-height);--primary-color: #404040;--primary-color-SCOPED-IN-index-YSAV: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-index-YSAV: var(--on-primary-color);--secondary-color: #f0f0f0;--secondary-color-SCOPED-IN-index-YSAV: var(--secondary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-index-YSAV: var(--surface-color);--on-surface-color: #000;--on-surface-color-SCOPED-IN-index-YSAV: var(--on-surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-index-YSAV: var(--background-color);--on-background-color: #000;--on-background-color-SCOPED-IN-index-YSAV: var(--on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-YSAV: var(--first-content-height);--navigator-background-color: var(--primary-color-SCOPED-IN-index-YSAV);--navigator-background-color-SCOPED-IN-index-YSAV: var(--navigator-background-color);--navigator-on-background-color: var(--on-primary-color-SCOPED-IN-index-YSAV);--navigator-on-background-color-SCOPED-IN-index-YSAV: var(--navigator-on-background-color);--table-background-color: var(--background-color-SCOPED-IN-index-YSAV);--table-background-color-SCOPED-IN-index-YSAV: var(--table-background-color);--table-on-background-color: var(--on-background-color-SCOPED-IN-index-YSAV);--table-on-background-color-SCOPED-IN-index-YSAV: var(--table-on-background-color);--min-first-content-height: 0px;--min-first-content-height-SCOPED-IN-index-YSAV: var(--min-first-content-height);--max-first-content-height: calc(100% - 80px) ;--max-first-content-height-SCOPED-IN-index-YSAV: var(--max-first-content-height)}:host{background-color:var(--background-color-SCOPED-IN-index-YSAV);color:var(--on-background-color-SCOPED-IN-index-YSAV);transition:background-color .5s ease-in-out}:host frames-auto-layout{--gap: 0;--vertical-padding: 0}:host frames-divider{--first-content-height: var(--first-content-height-SCOPED-IN-index-YSAV);--min-first-content-height: var(--min-first-content-height-SCOPED-IN-index-YSAV)}:host organisms-table{--background-color: var(--table-background-color-SCOPED-IN-index-YSAV);--on-background-color: var(--table-on-background-color-SCOPED-IN-index-YSAV)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-YSAV);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-YSAV);--surface-color: var(--surface-color-SCOPED-IN-index-YSAV);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-YSAV);--background-color: var(--background-color-SCOPED-IN-index-YSAV);--on-background-color: var(--on-background-color-SCOPED-IN-index-YSAV)}:host organisms-navigator{--background-color: var(--navigator-background-color-SCOPED-IN-index-YSAV);--on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-YSAV)}\n"], dependencies: [{ kind: "component", type: AutoLayoutFrame, selector: "frames-auto-layout" }, { kind: "component", type: ScrollFrame, selector: "frames-scroll" }, { kind: "component", type: SmartListOrganism, selector: "organisms-smart-list" }, { kind: "directive", type: NavigatorOrganismStore, selector: "organisms-navigator", inputs: ["startActions", "endActions", "title"] }, { kind: "directive", type: HeaderMoleculeStore, selector: "molecules-header", inputs: ["title", "description"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [GridCardsSectionOrganism], () => [import("@ng-atomic/components/organisms/chips-input-section").then(m => m.ChipsInputSectionOrganism), DividerFrame,
257
- TableOrganismStore], () => [import("@ng-atomic/components/organisms/grid-toolbar").then(m => m.GridToolbarOrganismStore)], () => [import("@ng-atomic/components/organisms/paginator").then(m => m.PaginatorOrganismStore)]] }); }
324
+ }
325
+ </ng-template>
326
+ `, isInline: true, styles: [":host{width:100%;height:100%;background:#fff;display:block;--navigator-height: 56px;--navigator-height-SCOPED-IN-index-xSSh: var(--navigator-height);--primary-color: #404040;--primary-color-SCOPED-IN-index-xSSh: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-index-xSSh: var(--on-primary-color);--secondary-color: #f0f0f0;--secondary-color-SCOPED-IN-index-xSSh: var(--secondary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-index-xSSh: var(--surface-color);--on-surface-color: #000;--on-surface-color-SCOPED-IN-index-xSSh: var(--on-surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-index-xSSh: var(--background-color);--on-background-color: #000;--on-background-color-SCOPED-IN-index-xSSh: var(--on-background-color);--navigator-background-color: var(--primary-color-SCOPED-IN-index-xSSh);--navigator-background-color-SCOPED-IN-index-xSSh: var(--navigator-background-color);--navigator-on-background-color: var(--on-primary-color-SCOPED-IN-index-xSSh);--navigator-on-background-color-SCOPED-IN-index-xSSh: var(--navigator-on-background-color);--table-background-color: var(--background-color-SCOPED-IN-index-xSSh);--table-background-color-SCOPED-IN-index-xSSh: var(--table-background-color);--table-on-background-color: var(--on-background-color-SCOPED-IN-index-xSSh);--table-on-background-color-SCOPED-IN-index-xSSh: var(--table-on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-xSSh: var(--first-content-height);--min-first-content-height: 0px;--min-first-content-height-SCOPED-IN-index-xSSh: var(--min-first-content-height);--max-first-content-height: calc(100% - 80px) ;--max-first-content-height-SCOPED-IN-index-xSSh: var(--max-first-content-height)}:host{background-color:var(--background-color-SCOPED-IN-index-xSSh);color:var(--on-background-color-SCOPED-IN-index-xSSh);transition:background-color .5s ease-in-out}:host frames-auto-layout{--gap: 0;--vertical-padding: 0}:host frames-divider{--first-content-height: var(--first-content-height-SCOPED-IN-index-xSSh);--min-first-content-height: var(--min-first-content-height-SCOPED-IN-index-xSSh)}:host organisms-table{--background-color: var(--table-background-color-SCOPED-IN-index-xSSh);--on-background-color: var(--table-on-background-color-SCOPED-IN-index-xSSh)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-xSSh);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-xSSh);--surface-color: var(--surface-color-SCOPED-IN-index-xSSh);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-xSSh);--background-color: var(--background-color-SCOPED-IN-index-xSSh);--on-background-color: var(--on-background-color-SCOPED-IN-index-xSSh)}:host organisms-navigator{--background-color: var(--navigator-background-color-SCOPED-IN-index-xSSh);--on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-xSSh)}\n"], dependencies: [{ kind: "component", type: AutoLayoutFrame, selector: "frames-auto-layout" }, { kind: "component", type: ScrollFrame, selector: "frames-scroll" }, { kind: "directive", type: TableOrganismStore, selector: "organisms-table", inputs: ["draggable", "form", "itemActions", "selection", "highlight", "childrenKey", "items", "treeControl", "isHidden"] }, { kind: "component", type: ListOrganism, selector: "organisms-list" }, { kind: "component", type: TreeListOrganism, selector: "organisms-tree-list" }, { kind: "directive", type: NavigatorOrganismStore, selector: "organisms-navigator", inputs: ["startActions", "resolvedStartActions", "endActions", "resolvedEndActions", "title"] }, { kind: "directive", type: HeaderMoleculeStore, selector: "molecules-header", inputs: ["title", "description"] }, { kind: "component", type: TextInputFieldMolecule, selector: "molecules-text-input-field" }, { kind: "component", type: VerticalHideFrame, selector: "frames-vertical-hide", inputs: ["mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import("@ng-atomic/components/organisms/chips-input-section").then(m => m.ChipsInputSectionOrganism), DividerFrame,
327
+ NgTemplateOutlet], () => [import("@ng-atomic/components/organisms/grid-toolbar").then(m => m.GridToolbarOrganismStore)], () => [NgTemplateOutlet, import("@ng-atomic/components/frames/tabs").then(m => m.TabsFrame)], () => [GridCardsSectionOrganism], () => [import("@ng-atomic/components/organisms/paginator").then(m => m.PaginatorOrganismStore)]] }); }
258
328
  }
259
329
  __decorate([
260
330
  Effect(TableOrganism.ActionId.HEADER_CLICK),
@@ -270,14 +340,15 @@ __decorate([
270
340
  ], IndexTemplate.prototype, "onCheckboxClickItem", null);
271
341
  __decorate([
272
342
  Effect(GridCardsSectionOrganism.ActionId.ITEM_CLICK),
273
- Effect(SmartListOrganism.ActionId.CLICK_ITEM),
343
+ Effect(ListOrganism.ActionId.CLICK_ITEM),
344
+ Effect(TreeListOrganismStore.ActionId.CLICK_ITEM),
274
345
  __metadata("design:type", Function),
275
346
  __metadata("design:paramtypes", [Object]),
276
347
  __metadata("design:returntype", void 0)
277
348
  ], IndexTemplate.prototype, "onItemClicked", null);
278
349
  __decorate([
279
350
  Effect(GridCardsSectionOrganism.ActionId.ITEM_MENU_CLICK),
280
- Effect(SmartListOrganism.ActionId.ITEM_BUTTON_CLICK),
351
+ Effect(ListOrganism.ActionId.ITEM_BUTTON_CLICK),
281
352
  __metadata("design:type", Function),
282
353
  __metadata("design:paramtypes", [Object]),
283
354
  __metadata("design:returntype", void 0)
@@ -294,10 +365,9 @@ __decorate([
294
365
  __metadata("design:paramtypes", []),
295
366
  __metadata("design:returntype", void 0)
296
367
  ], IndexTemplate.prototype, "back", null);
297
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ngImport: i0, type: IndexTemplate, resolveDeferredDeps: () => [import("@ng-atomic/components/organisms/chips-input-section").then(m => m.ChipsInputSectionOrganism), import("@ng-atomic/components/organisms/grid-toolbar").then(m => m.GridToolbarOrganismStore), import("@ng-atomic/components/organisms/paginator").then(m => m.PaginatorOrganismStore)], resolveMetadata: (ChipsInputSectionOrganism, GridToolbarOrganismStore, PaginatorOrganismStore) => ({ decorators: [{
368
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ngImport: i0, type: IndexTemplate, resolveDeferredDeps: () => [import("@ng-atomic/components/organisms/chips-input-section").then(m => m.ChipsInputSectionOrganism), import("@ng-atomic/components/organisms/grid-toolbar").then(m => m.GridToolbarOrganismStore), import("@ng-atomic/components/frames/tabs").then(m => m.TabsFrame), import("@ng-atomic/components/organisms/paginator").then(m => m.PaginatorOrganismStore)], resolveMetadata: (ChipsInputSectionOrganism, GridToolbarOrganismStore, TabsFrame, PaginatorOrganismStore) => ({ decorators: [{
298
369
  type: Component,
299
370
  args: [{ standalone: true, imports: [
300
- DataAccessorPipe,
301
371
  AutoLayoutFrame,
302
372
  ChipsInputSectionOrganism,
303
373
  ScrollFrame,
@@ -305,89 +375,136 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
305
375
  GridToolbarOrganismStore,
306
376
  PaginatorOrganismStore,
307
377
  TableOrganismStore,
308
- SmartListOrganism,
378
+ ListOrganism,
379
+ TreeListOrganism,
309
380
  GridCardsSectionOrganism,
310
- SelectionListOrganism,
311
381
  NavigatorOrganismStore,
312
- FiltersSectionOrganism,
313
382
  HeaderMoleculeStore,
314
- SortByPipe,
383
+ NgTemplateOutlet,
384
+ TabsFrame,
385
+ TextInputFieldMolecule,
386
+ VerticalHideFrame,
315
387
  ], selector: 'templates-index', template: `
316
388
  <frames-scroll>
317
- <organisms-navigator injectable
318
- [startActions]="store.navStartActions()"
319
- [endActions]="store.navEndActions()"
320
- (action)="dispatch($event)"
321
- navigator
322
- >
323
- <molecules-header injectable [title]="store.title()" [description]="store.description()"/>
324
- </organisms-navigator>
325
- <frames-auto-layout vertical contents>
326
- @switch(store.type()) {
327
- @case('list') {
328
- <organisms-smart-list
329
- [items]="store.items()"
330
- [itemActions]="store.itemActions()"
331
- [groupedBy]="store.groupedBy()"
332
- [groupKeys]="store.groupKeys()"
389
+ <frames-vertical-hide [mode]="store.navMode()" top>
390
+ <organisms-navigator injectable
391
+ [startActions]="store.navStartActions()"
392
+ [endActions]="store.navEndActions()"
393
+ (action)="dispatch($event)"
394
+ top
395
+ >
396
+ @if (store.titleEditable()) {
397
+ <molecules-text-input-field
398
+ [label]="'title'"
399
+ [placeholder]="'title'"
400
+ [control]="store.titleControl()"
401
+ [appearance]="'fill'"
402
+ />
403
+ } @else {
404
+ <molecules-header injectable [title]="store.title()" [description]="store.description()"/>
405
+ }
406
+ </organisms-navigator>
407
+ <div class="dashboard">
408
+ <ng-content first select="[navDashboard]" />
409
+ </div>
410
+ </frames-vertical-hide>
411
+ <frames-auto-layout [type]="'vertical'" contents>
412
+ @defer {
413
+ <frames-divider>
414
+ <ng-content first select="[dashboard]" />
415
+ <div style="display: flex; flex-direction: column; width: 100%; height: 100%;" second>
416
+ @if (store.gridToolbarActions() || true) {
417
+ @defer {
418
+ <organisms-grid-toolbar injectable
419
+ [actions]="store.gridToolbarActions()"
420
+ (action)="dispatch($event)"
421
+ />
422
+ }
423
+ }
424
+ @if (store.form().get(['query'])) {
425
+ <organisms-chips-input-section
426
+ [control]="store.form().get(['query'])"
427
+ [label]="store.queryLabel()"
428
+ />
429
+ }
430
+ @if (store.itemsMapKeys().length > 1) {
431
+ @defer {
432
+ <frames-tabs [labels]="store.itemsMapKeys()">
433
+ @for (key of store.itemsMapKeys(); track key;) {
434
+ <ng-template #tab>
435
+ <ng-container *ngTemplateOutlet="items; context: {map: store.itemsMap()[key]}"/>
436
+ </ng-template>
437
+ }
438
+ </frames-tabs>
439
+ }
440
+ } @else if(store.itemsMapKeys().length === 1) {
441
+ <ng-container *ngTemplateOutlet="items; context: {map: store.itemsMap()[store.itemsMapKeys()[0]]}"/>
442
+ } @else {
443
+
444
+ }
445
+
446
+ </div>
447
+ </frames-divider>
448
+ }
449
+ </frames-auto-layout>
450
+ </frames-scroll>
451
+
452
+ <ng-template #items let-map="map">
453
+ <!-- <div>
454
+ json: {{ map | json }}
455
+ </div> -->
456
+ @switch(map?.type ?? store.type()) {
457
+ @case('list') {
458
+ @if (map.childrenKey) {
459
+ <organisms-tree-list
460
+ [items]="map?.items ?? []"
461
+ [childrenKey]="map?.childrenKey ?? store.childrenKey()"
462
+ [treeControl]="map?.treeControl ?? store.tableTreeControl()"
463
+ (action)="dispatch($event)"
464
+ />
465
+ } @else {
466
+ <organisms-list
467
+ [items]="map?.items ?? []"
468
+ [itemActions]="map?.itemActions ?? store.itemActions()"
469
+ [groupedBy]="map?.groupedBy ?? store.groupedBy()"
470
+ [groupKeys]="map?.groupKeys ?? store.groupKeys()"
333
471
  (action)="dispatch($event)"
334
472
  />
335
473
  }
336
- @case ('grid') {
337
- @defer {
338
- <organisms-grid-cards-section
339
- [items]="store.items()"
340
- (action)="dispatch($event)"
341
- contents
342
- />
343
- }
474
+ }
475
+ @case ('grid') {
476
+ @defer {
477
+ <organisms-grid-cards-section
478
+ [items]="map?.items ?? []"
479
+ (action)="dispatch($event)"
480
+ contents
481
+ />
344
482
  }
345
- @default {
483
+ }
484
+ @default {
485
+ <organisms-table injectable
486
+ [items]="map?.items ?? []"
487
+ [itemActions]="map?.itemActions ?? store.itemActions()"
488
+ [selection]="map?.selection ?? store.selection()"
489
+ [form]="map?.form ?? store.form()"
490
+ [childrenKey]="map?.childrenKey ?? store.tableChildrenKey()"
491
+ [highlight]="map?.highlight ?? store.highlight()"
492
+ [isHidden]="map?.tableIsHidden ?? store.tableIsHidden()"
493
+ [treeControl]="map?.treeControl ?? store.tableTreeControl()"
494
+ (action)="dispatch($event)"
495
+ />
496
+ @if (map?.form?.get(['page']) ?? store.form().get(['page'])) {
346
497
  @defer {
347
- <frames-divider>
348
- <ng-content first select="[dashboard]" />
349
- <div style="display: flex; flex-direction: column; width: 100%; height: 100%;" second>
350
- @if (store.gridToolbarActions() || true) {
351
- @defer {
352
- <organisms-grid-toolbar injectable
353
- [actions]="store.gridToolbarActions()"
354
- (action)="dispatch($event)"
355
- />
356
- }
357
- }
358
- @if (store.form().get(['query'])) {
359
- <organisms-chips-input-section
360
- [control]="store.form().get(['query'])"
361
- [label]="store.queryLabel()"
362
- />
363
- }
364
- <organisms-table injectable
365
- [items]="store.items()"
366
- [itemActions]="store.itemActions()"
367
- [selection]="store.selection()"
368
- [form]="store.form()"
369
- [childrenKey]="store.tableChildrenKey()"
370
- [highlight]="store.highlight()"
371
- [isHidden]="store.tableIsHidden()"
372
- [treeControl]="store.tableTreeControl()"
373
- (action)="dispatch($event)"
374
- />
375
- @if (store.form().get(['page'])) {
376
- @defer {
377
- <organisms-paginator injectable
378
- [form]="store.form().get(['page'])"
379
- [itemLength]="store.itemsLength()"
380
- [pageSizeOptions]="store.pageSizeOptions()"
381
- />
382
- }
383
- }
384
- </div>
385
- </frames-divider>
498
+ <organisms-paginator injectable
499
+ [form]="map?.form?.get(['page']) ?? store.form().get(['page'])"
500
+ [itemLength]="map?.itemsLength ?? store.itemsLength()"
501
+ [pageSizeOptions]="map?.pageSizeOptions ?? store.pageSizeOptions()"
502
+ />
386
503
  }
387
504
  }
388
505
  }
389
- </frames-auto-layout>
390
- </frames-scroll>
506
+ }
507
+ </ng-template>
391
508
  `, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'template' }, hostDirectives: [
392
509
  {
393
510
  directive: IndexTemplateStore,
@@ -398,12 +515,16 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
398
515
  'tableTreeControl',
399
516
  'form',
400
517
  'title',
518
+ 'titleControl',
519
+ 'titleEditable',
401
520
  'description',
402
521
  'items',
522
+ 'itemsMap',
403
523
  'itemsLength',
404
524
  'itemActions',
405
525
  'navStartActions',
406
526
  'navEndActions',
527
+ 'navMode',
407
528
  'groupedBy',
408
529
  'groupKeys',
409
530
  'selection',
@@ -416,6 +537,6 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
416
537
  }
417
538
  ], providers: [
418
539
  QueryResolverService,
419
- ], styles: [":host{width:100%;height:100%;background:#fff;display:block;--navigator-height: 56px;--navigator-height-SCOPED-IN-index-YSAV: var(--navigator-height);--primary-color: #404040;--primary-color-SCOPED-IN-index-YSAV: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-index-YSAV: var(--on-primary-color);--secondary-color: #f0f0f0;--secondary-color-SCOPED-IN-index-YSAV: var(--secondary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-index-YSAV: var(--surface-color);--on-surface-color: #000;--on-surface-color-SCOPED-IN-index-YSAV: var(--on-surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-index-YSAV: var(--background-color);--on-background-color: #000;--on-background-color-SCOPED-IN-index-YSAV: var(--on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-YSAV: var(--first-content-height);--navigator-background-color: var(--primary-color-SCOPED-IN-index-YSAV);--navigator-background-color-SCOPED-IN-index-YSAV: var(--navigator-background-color);--navigator-on-background-color: var(--on-primary-color-SCOPED-IN-index-YSAV);--navigator-on-background-color-SCOPED-IN-index-YSAV: var(--navigator-on-background-color);--table-background-color: var(--background-color-SCOPED-IN-index-YSAV);--table-background-color-SCOPED-IN-index-YSAV: var(--table-background-color);--table-on-background-color: var(--on-background-color-SCOPED-IN-index-YSAV);--table-on-background-color-SCOPED-IN-index-YSAV: var(--table-on-background-color);--min-first-content-height: 0px;--min-first-content-height-SCOPED-IN-index-YSAV: var(--min-first-content-height);--max-first-content-height: calc(100% - 80px) ;--max-first-content-height-SCOPED-IN-index-YSAV: var(--max-first-content-height)}:host{background-color:var(--background-color-SCOPED-IN-index-YSAV);color:var(--on-background-color-SCOPED-IN-index-YSAV);transition:background-color .5s ease-in-out}:host frames-auto-layout{--gap: 0;--vertical-padding: 0}:host frames-divider{--first-content-height: var(--first-content-height-SCOPED-IN-index-YSAV);--min-first-content-height: var(--min-first-content-height-SCOPED-IN-index-YSAV)}:host organisms-table{--background-color: var(--table-background-color-SCOPED-IN-index-YSAV);--on-background-color: var(--table-on-background-color-SCOPED-IN-index-YSAV)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-YSAV);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-YSAV);--surface-color: var(--surface-color-SCOPED-IN-index-YSAV);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-YSAV);--background-color: var(--background-color-SCOPED-IN-index-YSAV);--on-background-color: var(--on-background-color-SCOPED-IN-index-YSAV)}:host organisms-navigator{--background-color: var(--navigator-background-color-SCOPED-IN-index-YSAV);--on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-YSAV)}\n"] }]
540
+ ], styles: [":host{width:100%;height:100%;background:#fff;display:block;--navigator-height: 56px;--navigator-height-SCOPED-IN-index-xSSh: var(--navigator-height);--primary-color: #404040;--primary-color-SCOPED-IN-index-xSSh: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-index-xSSh: var(--on-primary-color);--secondary-color: #f0f0f0;--secondary-color-SCOPED-IN-index-xSSh: var(--secondary-color);--surface-color: #f0f0f0;--surface-color-SCOPED-IN-index-xSSh: var(--surface-color);--on-surface-color: #000;--on-surface-color-SCOPED-IN-index-xSSh: var(--on-surface-color);--background-color: #f0f0f0;--background-color-SCOPED-IN-index-xSSh: var(--background-color);--on-background-color: #000;--on-background-color-SCOPED-IN-index-xSSh: var(--on-background-color);--navigator-background-color: var(--primary-color-SCOPED-IN-index-xSSh);--navigator-background-color-SCOPED-IN-index-xSSh: var(--navigator-background-color);--navigator-on-background-color: var(--on-primary-color-SCOPED-IN-index-xSSh);--navigator-on-background-color-SCOPED-IN-index-xSSh: var(--navigator-on-background-color);--table-background-color: var(--background-color-SCOPED-IN-index-xSSh);--table-background-color-SCOPED-IN-index-xSSh: var(--table-background-color);--table-on-background-color: var(--on-background-color-SCOPED-IN-index-xSSh);--table-on-background-color-SCOPED-IN-index-xSSh: var(--table-on-background-color);--first-content-height: 0px;--first-content-height-SCOPED-IN-index-xSSh: var(--first-content-height);--min-first-content-height: 0px;--min-first-content-height-SCOPED-IN-index-xSSh: var(--min-first-content-height);--max-first-content-height: calc(100% - 80px) ;--max-first-content-height-SCOPED-IN-index-xSSh: var(--max-first-content-height)}:host{background-color:var(--background-color-SCOPED-IN-index-xSSh);color:var(--on-background-color-SCOPED-IN-index-xSSh);transition:background-color .5s ease-in-out}:host frames-auto-layout{--gap: 0;--vertical-padding: 0}:host frames-divider{--first-content-height: var(--first-content-height-SCOPED-IN-index-xSSh);--min-first-content-height: var(--min-first-content-height-SCOPED-IN-index-xSSh)}:host organisms-table{--background-color: var(--table-background-color-SCOPED-IN-index-xSSh);--on-background-color: var(--table-on-background-color-SCOPED-IN-index-xSSh)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-xSSh);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-xSSh);--surface-color: var(--surface-color-SCOPED-IN-index-xSSh);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-xSSh);--background-color: var(--background-color-SCOPED-IN-index-xSSh);--on-background-color: var(--on-background-color-SCOPED-IN-index-xSSh)}:host organisms-navigator{--background-color: var(--navigator-background-color-SCOPED-IN-index-xSSh);--on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-xSSh)}\n"] }]
420
541
  }], ctorParameters: null, propDecorators: { onTableHeaderClick: [], onCheckboxClickItem: [], onItemClicked: [], onItemButtonClicked: [], onHeaderCheckboxClick: [], back: [] } }) });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbXBvbmVudHMvc3JjL2xpYi90ZW1wbGF0ZXMvX2luZGV4L2luZGV4LnRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFF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NEJBQ3RCLGtCQUFrQjs0QkFDbEIsaUJBQWlCOzRCQUNqQix3QkFBd0I7NEJBQ3hCLHFCQUFxQjs0QkFDckIsc0JBQXNCOzRCQUN0QixzQkFBc0I7NEJBQ3RCLG1CQUFtQjs0QkFDbkIsVUFBVTt5QkFDWCxZQUNTLGlCQUFpQixZQUNqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsa0JBQ1g7NEJBQ2Q7Z0NBQ0UsU0FBUyxFQUFFLGtCQUFrQjtnQ0FDN0IsTUFBTSxFQUFFO29DQUNOLG9CQUFvQjtvQ0FDcEIsa0JBQWtCO29DQUNsQixlQUFlO29DQUNmLGtCQUFrQjtvQ0FDbEIsTUFBTTtvQ0FDTixPQUFPO29DQUNQLGFBQWE7b0NBQ2IsT0FBTztvQ0FDUCxhQUFhO29DQUNiLGFBQWE7b0NBQ2IsaUJBQWlCO29DQUNqQixlQUFlO29DQUNmLFdBQVc7b0NBQ1gsV0FBVztvQ0FDWCxXQUFXO29DQUNYLGlCQUFpQjtvQ0FDakIsTUFBTTtvQ0FDTixXQUFXO29DQUNYLFlBQVk7aUNBQ2I7Z0NBQ0QsT0FBTyxFQUFFLEVBQUU7NkJBQ1o7eUJBQ0YsYUFDVTs0QkFDVCxvQkFBb0I7eUJBQ3JCO3dEQVVTLGtCQUFrQixNQUtsQixtQkFBbUIsTUFNbkIsYUFBYSxNQU1iLG1CQUFtQixNQUtuQixxQkFBcUIsTUFLckIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERpcmVjdGl2ZSwgUExBVEZPUk1fSUQsIGluamVjdCwgaW5wdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBdXRvTGF5b3V0RnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL2F1dG8tbGF5b3V0JztcbmltcG9ydCB7IFNjcm9sbEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9zY3JvbGwnO1xuaW1wb3J0IHsgSGVhZGVyTW9sZWN1bGVTdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9tb2xlY3VsZXMvaGVhZGVyJztcbmltcG9ydCB7IFRhYmxlT3JnYW5pc20sIFRhYmxlT3JnYW5pc21TdG9yZSwgaW5qZWN0SW5kZXhGb3JtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJsZSc7XG5pbXBvcnQgeyBTbWFydExpc3RPcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvc21hcnQtbGlzdCc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JPcmdhbmlzbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9uYXZpZ2F0b3InO1xuaW1wb3J0IHsgUGFnaW5hdG9yT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvcGFnaW5hdG9yJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9ucywgSW5qZWN0YWJsZUNvbXBvbmVudCwgVG9rZW5pemVkVHlwZSwgX2NvbXB1dGVkLCBjb21wdXRlRmFrZSB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBHcmlkVG9vbGJhck9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2dyaWQtdG9vbGJhcic7XG5pbXBvcnQgeyBGaWx0ZXJzU2VjdGlvbk9yZ2FuaXNtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9maWx0ZXJzLXNlY3Rpb24nO1xuaW1wb3J0IHsgRGl2aWRlckZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9kaXZpZGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFNlbGVjdGlvbkxpc3RPcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvc2VsZWN0aW9uLWxpc3QnO1xuaW1wb3J0IHsgRWZmZWN0LCBOZ0F0b21pY0NvbXBvbmVudCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBRdWVyeVJlc29sdmVyU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3F1ZXJ5LXJlc29sdmVyJztcbmltcG9ydCB7IE5hdkFjdGlvbklkLCBVSUNvbnRleHQsIGNhbGwsIGluamVjdE5hdlN0YXJ0QWN0aW9ucywgbWFrZUNvbmZpZyB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpJztcbmltcG9ydCB7IEluZGV4UGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2luZGV4JztcbmltcG9ydCB7IEluZGV4TGVuZ3RoUGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2luZGV4LWxlbmd0aCc7XG5pbXBvcnQgeyBTb3J0QnlQaXBlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvc29ydC1ieSc7XG5pbXBvcnQgeyBHcmlkQ2FyZHNTZWN0aW9uT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2dyaWQtY2FyZHMtc2VjdGlvbic7XG5pbXBvcnQgeyBpbmplY3RNb2RlbE5hbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9kb21haW4nO1xuaW1wb3J0IHsgRGF0YUFjY2Vzc29yUGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RhdGEtYWNjZXNzb3InO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcHV0ZWRSYXdWYWx1ZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENoaXBzSW5wdXRTZWN0aW9uT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoaXBzLWlucHV0LXNlY3Rpb24nO1xuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuXG5leHBvcnQgZW51bSBBY3Rpb25JZCB7XG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvaW5kZXhdIEJhY2snLFxuICBUQUJMRV9IRUFERVJfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvaW5kZXhdIFRhYmxlIEhlYWRlciBDbGljaycsXG4gIFRBQkxFX0hFQURFUl9DSEVDS0JPWF9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gVGFibGUgSGVhZGVyIENoZWNrYm94IENsaWNrJyxcbiAgVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvaW5kZXhdIFRhYmxlIENoZWNrYm94IENsaWNrJyxcbiAgSVRFTV9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gSXRlbSBDbGljaycsXG4gIERFVEFJTCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gRGV0YWlsJyxcbiAgTElTVF9JVEVNX0JVVFRPTl9DTElDS0VEID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2luZGV4XSBMaXN0IEl0ZW0gQnV0dG9uIENsaWNrZWQnLFxuICBUT0dHTEVfVFlQRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gVG9nZ2xlIFR5cGUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4VGVtcGxhdGVDb25maWc8VCBleHRlbmRzIHtpZDogc3RyaW5nfSA9IGFueT4ge1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIGdyaWRUb29sYmFyQWN0aW9uczogQWN0aW9uW107XG4gIG5hdlN0YXJ0QWN0aW9uczogQWN0aW9ucztcbiAgbmF2RW5kQWN0aW9uczogQWN0aW9ucztcbiAgaXRlbUFjdGlvbnM6IEFjdGlvbnM7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGl0ZW1zOiBUW11cbiAgdGFibGVDaGlsZHJlbktleToga2V5b2YgVDtcbiAgZ3JvdXBlZEJ5OiBrZXlvZiBUIHwgbnVsbDtcbiAgZ3JvdXBLZXlzOiBzdHJpbmdbXTtcbiAgdHlwZTogJ2xpc3QnIHwgJ3RhYmxlJyB8ICdncmlkJztcbiAgdG9nZ2xlQWN0aW9uczogQWN0aW9ucztcbiAgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXTtcbiAgd2lkdGg6IHN0cmluZztcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+O1xuICBoaWdobGlnaHQ6IFNlbGVjdGlvbk1vZGVsPHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlKGNvbnRleHQ6IFVJQ29udGV4dCkge1xuICBzd2l0Y2ggKGNvbnRleHQuYnJlYWtwb2ludCkge1xuICAgIGNhc2UgJ3hTbWFsbCc6IHJldHVybiAnbGlzdCc7XG4gICAgY2FzZSAnc21hbGwnOiByZXR1cm4gJ3RhYmxlJztcbiAgICBjYXNlICdtZWRpdW0nOiByZXR1cm4gJ3RhYmxlJztcbiAgICBjYXNlICdsYXJnZSc6IHJldHVybiAndGFibGUnO1xuICAgIGNhc2UgJ3hMYXJnZSc6IHJldHVybiAndGFibGUnO1xuICAgIGRlZmF1bHQ6IHJldHVybiAndGFibGUnO1xuICB9XG59XG5cbkBUb2tlbml6ZWRUeXBlKClcbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3RlbXBsYXRlcy1pbmRleCcsXG4gIHByb3ZpZGVyczogW1xuICAgIEluZGV4UGlwZSxcbiAgICBJbmRleExlbmd0aFBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEluZGV4VGVtcGxhdGVTdG9yZTxUIGV4dGVuZHMge2lkOiBzdHJpbmd9PiBleHRlbmRzIEluamVjdGFibGVDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgc3RhdGljIHJlYWRvbmx5IENvbmZpZyA9IG1ha2VDb25maWcoKCkgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGluamVjdE1vZGVsTmFtZSgpO1xuICAgIGZ1bmN0aW9uIGdldFdpZHRoKGNvbnRleHQ6IFVJQ29udGV4dCkge1xuICAgICAgc3dpdGNoIChjb250ZXh0LmJyZWFrcG9pbnQpIHtcbiAgICAgICAgY2FzZSAneFNtYWxsJzogcmV0dXJuICd2YXIoLS1wYWdlLXdpZHRoLWx2MSknXG4gICAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ3ZhcigtLXBhZ2Utd2lkdGgtbHYyKSc7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGZvcm0gPSBpbmplY3RJbmRleEZvcm0oKTtcbiAgICBjb25zdCBuYXZTdGFydEFjdGlvbnMgPSBpbmplY3ROYXZTdGFydEFjdGlvbnMoKTtcbiAgXG4gICAgcmV0dXJuICgpID0+ICh7XG4gICAgICBmb3JtLFxuICAgICAgdG9nZ2xlQWN0aW9uczogW1xuICAgICAgICB7IGlkOiBBY3Rpb25JZC5UT0dHTEVfVFlQRSwgaWNvbjogJ2dyaWRfdmlldycsIHBheWxvYWQ6ICdncmlkJyB9LFxuICAgICAgICB7IGlkOiBBY3Rpb25JZC5UT0dHTEVfVFlQRSwgaWNvbjogJ2xpc3QnLCBwYXlsb2FkOiAnbGlzdCcgfSxcbiAgICAgICAgeyBpZDogQWN0aW9uSWQuVE9HR0xFX1RZUEUsIGljb246ICd0YWJsZScsIHBheWxvYWQ6ICd0YWJsZScgfSxcbiAgICAgIF0gYXMgQWN0aW9uW10sXG4gICAgICBncmlkVG9vbGJhckFjdGlvbnM6IFtdIGFzIEFjdGlvbltdLFxuICAgICAgdGFibGVDaGlsZHJlbktleTogbnVsbCBhcyBzdHJpbmcsXG4gICAgICB0YWJsZUlzSGlkZGVuOiAoaXRlbTogYW55KSA9PiBmYWxzZSxcbiAgICAgIHRhYmxlVHJlZUNvbnRyb2w6IG5ldyBGbGF0VHJlZUNvbnRyb2w8YW55PihuID0+IG4ubGV2ZWwsIG4gPT4gbi5pc0V4cGFuZGFibGUpLFxuICAgICAgaXRlbUFjdGlvbnM6IChpdGVtKSA9PiBbe2lkOiBBY3Rpb25JZC5ERVRBSUwsIGljb246ICdvcGVuX2luX25ldycsIHBheWxvYWQ6IGl0ZW19XSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGl0ZW1zTGVuZ3RoOiAwLFxuICAgICAgdGl0bGU6IGAke21vZGVsTmFtZSgpfeS4gOimp2AsXG4gICAgICBkZXNjcmlwdGlvbjogYGAsXG4gICAgICBuYXZTdGFydEFjdGlvbnM6IG5hdlN0YXJ0QWN0aW9ucygpLFxuICAgICAgbmF2RW5kQWN0aW9uczogW10sXG4gICAgICBncm91cGVkQnk6IG51bGwsXG4gICAgICBncm91cEtleXM6IFtdLFxuICAgICAgdHlwZTogPCd0YWJsZScgfCAnbGlzdCcgfCAnZ3JpZCc+J3RhYmxlJyxcbiAgICAgIHBhZ2VTaXplT3B0aW9uczogWzUsIDEwLCAyNSwgMTAwXSxcbiAgICAgIHNlbGVjdGlvbjogbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4odHJ1ZSwgW10pLFxuICAgICAgaGlnaGxpZ2h0OiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSksXG4gICAgICBxdWVyeUxhYmVsOiAn44OV44Kj44Or44K/44O8JyxcbiAgICB9KTtcbiAgfSwgWydjb21wb25lbnRzJywgJ3RlbXBsYXRlcycsICdpbmRleCddKTtcbiAgc3RhdGljIHByb3ZpZGVUeXBlQ29uZmlnKCkge1xuICAgIHJldHVybiBJbmRleFRlbXBsYXRlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgdHlwZTogZ2V0VHlwZShjb250ZXh0KSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gSW5kZXhUZW1wbGF0ZVN0b3JlLkNvbmZpZy5pbmplY3QoKTtcbiAgcmVhZG9ubHkgaXNQbGF0Zm9ybVNlcnZlciA9IGlzUGxhdGZvcm1TZXJ2ZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5mb3JtKSk7XG4gIHJlYWRvbmx5IGdyaWRUb29sYmFyQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmdyaWRUb29sYmFyQWN0aW9ucykpO1xuICByZWFkb25seSB0b2dnbGVBY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudG9nZ2xlQWN0aW9ucykpO1xuICByZWFkb25seSB0YWJsZUNoaWxkcmVuS2V5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVDaGlsZHJlbktleSkpO1xuICByZWFkb25seSB0YWJsZUlzSGlkZGVuID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVJc0hpZGRlbikpO1xuICByZWFkb25seSB0YWJsZVRyZWVDb250cm9sID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVUcmVlQ29udHJvbCkpO1xuICByZWFkb25seSBpdGVtQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1BY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGl0bGUpKTtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5kZXNjcmlwdGlvbikpO1xuICByZWFkb25seSBpdGVtcyA9IGlucHV0PFRbXT4oX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXMpKTtcbiAgcmVhZG9ubHkgaXRlbXNMZW5ndGggPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtc0xlbmd0aCkpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZTdGFydEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZEJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZ3JvdXBlZEJ5KSk7XG4gIHJlYWRvbmx5IGdyb3VwS2V5cyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmdyb3VwS2V5cykpO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5wYWdlU2l6ZU9wdGlvbnMpKTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnR5cGUpKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2VsZWN0aW9uKSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhpZ2hsaWdodCkpO1xuICByZWFkb25seSBxdWVyeUxhYmVsID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkucXVlcnlMYWJlbCkpO1xuICByZWFkb25seSBmb3JtJCA9IHRvT2JzZXJ2YWJsZShjb21wdXRlRmFrZSh0aGlzLmZvcm0pKTtcbiAgcmVhZG9ubHkgZm9ybVZhbHVlID0gY29tcHV0ZWRSYXdWYWx1ZSgoKSA9PiBjYWxsKHRoaXMuZm9ybSgpKSk7XG4gIHJlYWRvbmx5IHBpcGVzID0geyBpbmRleDogaW5qZWN0KEluZGV4UGlwZSksIGluZGV4TGVuZ3RoOiBpbmplY3QoSW5kZXhMZW5ndGhQaXBlKX07XG4gIC8vIHJlYWRvbmx5IGl0ZW1zU2l6ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGlwZXMuaW5kZXhMZW5ndGgudHJhbnNmb3JtKHRoaXMuaXRlbXMoKSwgdGhpcy5mb3JtVmFsdWUoKSBhcyBhbnkpKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEYXRhQWNjZXNzb3JQaXBlLFxuICAgIEF1dG9MYXlvdXRGcmFtZSxcbiAgICBDaGlwc0lucHV0U2VjdGlvbk9yZ2FuaXNtLFxuICAgIFNjcm9sbEZyYW1lLFxuICAgIERpdmlkZXJGcmFtZSxcbiAgICBHcmlkVG9vbGJhck9yZ2FuaXNtU3RvcmUsXG4gICAgUGFnaW5hdG9yT3JnYW5pc21TdG9yZSxcbiAgICBUYWJsZU9yZ2FuaXNtU3RvcmUsXG4gICAgU21hcnRMaXN0T3JnYW5pc20sXG4gICAgR3JpZENhcmRzU2VjdGlvbk9yZ2FuaXNtLFxuICAgIFNlbGVjdGlvbkxpc3RPcmdhbmlzbSxcbiAgICBOYXZpZ2F0b3JPcmdhbmlzbVN0b3JlLFxuICAgIEZpbHRlcnNTZWN0aW9uT3JnYW5pc20sXG4gICAgSGVhZGVyTW9sZWN1bGVTdG9yZSxcbiAgICBTb3J0QnlQaXBlLFxuICBdLFxuICBzZWxlY3RvcjogJ3RlbXBsYXRlcy1pbmRleCcsXG4gIHRlbXBsYXRlOiBgXG4gIDxmcmFtZXMtc2Nyb2xsPlxuICAgIDxvcmdhbmlzbXMtbmF2aWdhdG9yIGluamVjdGFibGVcbiAgICAgIFtzdGFydEFjdGlvbnNdPVwic3RvcmUubmF2U3RhcnRBY3Rpb25zKClcIlxuICAgICAgW2VuZEFjdGlvbnNdPVwic3RvcmUubmF2RW5kQWN0aW9ucygpXCJcbiAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICBuYXZpZ2F0b3JcbiAgICA+XG4gICAgICA8bW9sZWN1bGVzLWhlYWRlciBpbmplY3RhYmxlIFt0aXRsZV09XCJzdG9yZS50aXRsZSgpXCIgW2Rlc2NyaXB0aW9uXT1cInN0b3JlLmRlc2NyaXB0aW9uKClcIi8+XG4gICAgPC9vcmdhbmlzbXMtbmF2aWdhdG9yPlxuICAgIDxmcmFtZXMtYXV0by1sYXlvdXQgdmVydGljYWwgY29udGVudHM+XG4gICAgICBAc3dpdGNoKHN0b3JlLnR5cGUoKSkge1xuICAgICAgICBAY2FzZSgnbGlzdCcpIHtcbiAgICAgICAgICA8b3JnYW5pc21zLXNtYXJ0LWxpc3RcbiAgICAgICAgICAgIFtpdGVtc109XCJzdG9yZS5pdGVtcygpXCJcbiAgICAgICAgICAgIFtpdGVtQWN0aW9uc109XCJzdG9yZS5pdGVtQWN0aW9ucygpXCJcbiAgICAgICAgICAgIFtncm91cGVkQnldPVwic3RvcmUuZ3JvdXBlZEJ5KClcIlxuICAgICAgICAgICAgW2dyb3VwS2V5c109XCJzdG9yZS5ncm91cEtleXMoKVwiXG4gICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncmlkJykge1xuICAgICAgICAgIEBkZWZlciB7XG4gICAgICAgICAgICA8b3JnYW5pc21zLWdyaWQtY2FyZHMtc2VjdGlvblxuICAgICAgICAgICAgICBbaXRlbXNdPVwic3RvcmUuaXRlbXMoKVwiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGNvbnRlbnRzXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxmcmFtZXMtZGl2aWRlcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgZmlyc3Qgc2VsZWN0PVwiW2Rhc2hib2FyZF1cIiAvPlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIiBzZWNvbmQ+XG4gICAgICAgICAgICAgIEBpZiAoc3RvcmUuZ3JpZFRvb2xiYXJBY3Rpb25zKCkgfHwgdHJ1ZSkge1xuICAgICAgICAgICAgICAgIEBkZWZlciB7XG4gICAgICAgICAgICAgICAgICA8b3JnYW5pc21zLWdyaWQtdG9vbGJhciBpbmplY3RhYmxlXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25zXT1cInN0b3JlLmdyaWRUb29sYmFyQWN0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc3RvcmUuZm9ybSgpLmdldChbJ3F1ZXJ5J10pKSB7XG4gICAgICAgICAgICAgICAgPG9yZ2FuaXNtcy1jaGlwcy1pbnB1dC1zZWN0aW9uXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJzdG9yZS5mb3JtKCkuZ2V0KFsncXVlcnknXSlcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInN0b3JlLnF1ZXJ5TGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxvcmdhbmlzbXMtdGFibGUgaW5qZWN0YWJsZVxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInN0b3JlLml0ZW1zKClcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1BY3Rpb25zXT1cInN0b3JlLml0ZW1BY3Rpb25zKClcIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJzdG9yZS5zZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICBbZm9ybV09XCJzdG9yZS5mb3JtKClcIlxuICAgICAgICAgICAgICAgICAgW2NoaWxkcmVuS2V5XT1cInN0b3JlLnRhYmxlQ2hpbGRyZW5LZXkoKVwiXG4gICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0XT1cInN0b3JlLmhpZ2hsaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgIFtpc0hpZGRlbl09XCJzdG9yZS50YWJsZUlzSGlkZGVuKClcIlxuICAgICAgICAgICAgICAgICAgW3RyZWVDb250cm9sXT1cInN0b3JlLnRhYmxlVHJlZUNvbnRyb2woKVwiXG4gICAgICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgQGlmIChzdG9yZS5mb3JtKCkuZ2V0KFsncGFnZSddKSkge1xuICAgICAgICAgICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgICAgICAgICAgPG9yZ2FuaXNtcy1wYWdpbmF0b3IgaW5qZWN0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKS5nZXQoWydwYWdlJ10pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaXRlbUxlbmd0aF09XCJzdG9yZS5pdGVtc0xlbmd0aCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInN0b3JlLnBhZ2VTaXplT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mcmFtZXMtZGl2aWRlcj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2ZyYW1lcy1hdXRvLWxheW91dD5cbiAgPC9mcmFtZXMtc2Nyb2xsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9pbmRleC50ZW1wbGF0ZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAndGVtcGxhdGUnIH0sXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBJbmRleFRlbXBsYXRlU3RvcmUsXG4gICAgICBpbnB1dHM6IFtcbiAgICAgICAgJ2dyaWRUb29sYmFyQWN0aW9ucycsXG4gICAgICAgICd0YWJsZUNoaWxkcmVuS2V5JyxcbiAgICAgICAgJ3RhYmxlSXNIaWRkZW4nLFxuICAgICAgICAndGFibGVUcmVlQ29udHJvbCcsXG4gICAgICAgICdmb3JtJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgJ2l0ZW1zJyxcbiAgICAgICAgJ2l0ZW1zTGVuZ3RoJyxcbiAgICAgICAgJ2l0ZW1BY3Rpb25zJyxcbiAgICAgICAgJ25hdlN0YXJ0QWN0aW9ucycsXG4gICAgICAgICduYXZFbmRBY3Rpb25zJyxcbiAgICAgICAgJ2dyb3VwZWRCeScsXG4gICAgICAgICdncm91cEtleXMnLFxuICAgICAgICAnc2VsZWN0aW9uJyxcbiAgICAgICAgJ3BhZ2VTaXplT3B0aW9ucycsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ2hpZ2hsaWdodCcsXG4gICAgICAgICdxdWVyeUxhYmVsJyxcbiAgICAgIF0sXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICB9XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFF1ZXJ5UmVzb2x2ZXJTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmRleFRlbXBsYXRlPFQ+IGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBzdGF0aWMgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgcHJvdGVjdGVkIEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChJbmRleFRlbXBsYXRlU3RvcmUpO1xuICBcbiAgcmVhZG9ubHkgZGl2aWRlckZyYW1lID0gdmlld0NoaWxkKERpdmlkZXJGcmFtZSk7XG5cbiAgQEVmZmVjdChUYWJsZU9yZ2FuaXNtLkFjdGlvbklkLkhFQURFUl9DTElDSylcbiAgcHJvdGVjdGVkIG9uVGFibGVIZWFkZXJDbGljayhjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssIHBheWxvYWQ6IGNvbHVtbn0pO1xuICB9XG5cbiAgQEVmZmVjdChUYWJsZU9yZ2FuaXNtLkFjdGlvbklkLkNIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25DaGVja2JveENsaWNrSXRlbShpdGVtOiBUKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLlRBQkxFX0NIRUNLQk9YX0NMSUNLLCBwYXlsb2FkOiBpdGVtfSk7XG4gIH1cblxuICBARWZmZWN0KEdyaWRDYXJkc1NlY3Rpb25PcmdhbmlzbS5BY3Rpb25JZC5JVEVNX0NMSUNLKVxuICBARWZmZWN0KFNtYXJ0TGlzdE9yZ2FuaXNtLkFjdGlvbklkLkNMSUNLX0lURU0pXG4gIHByb3RlY3RlZCBvbkl0ZW1DbGlja2VkKGl0ZW06IFQpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuSVRFTV9DTElDSywgcGF5bG9hZDogaXRlbX0pO1xuICB9XG5cbiAgQEVmZmVjdChHcmlkQ2FyZHNTZWN0aW9uT3JnYW5pc20uQWN0aW9uSWQuSVRFTV9NRU5VX0NMSUNLKVxuICBARWZmZWN0KFNtYXJ0TGlzdE9yZ2FuaXNtLkFjdGlvbklkLklURU1fQlVUVE9OX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25JdGVtQnV0dG9uQ2xpY2tlZChpdGVtOiBUKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLkxJU1RfSVRFTV9CVVRUT05fQ0xJQ0tFRCwgcGF5bG9hZDogaXRlbX0pO1xuICB9XG5cbiAgQEVmZmVjdChUYWJsZU9yZ2FuaXNtU3RvcmUuQWN0aW9uSWQuSEVBREVSX0NIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25IZWFkZXJDaGVja2JveENsaWNrKCkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0t9KTtcbiAgfVxuXG4gIEBFZmZlY3QoTmF2QWN0aW9uSWQuQkFDSylcbiAgcHJvdGVjdGVkIGJhY2soKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLkJBQ0t9KTtcbiAgfVxufVxuIl19
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbXBvbmVudHMvc3JjL2xpYi90ZW1wbGF0ZXMvX2luZGV4L2luZGV4LnRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFbkYsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzlHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pG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Q1gsV0FBVztvQ0FDWCxXQUFXO29DQUNYLGlCQUFpQjtvQ0FDakIsTUFBTTtvQ0FDTixXQUFXO29DQUNYLFlBQVk7aUNBQ2I7Z0NBQ0QsT0FBTyxFQUFFLEVBQUU7NkJBQ1o7eUJBQ0YsYUFDVTs0QkFDVCxvQkFBb0I7eUJBQ3JCO3dEQVVTLGtCQUFrQixNQUtsQixtQkFBbUIsTUFPbkIsYUFBYSxNQU1iLG1CQUFtQixNQUtuQixxQkFBcUIsTUFLckIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERpcmVjdGl2ZSwgUExBVEZPUk1fSUQsIGluamVjdCwgaW5wdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBdXRvTGF5b3V0RnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL2F1dG8tbGF5b3V0JztcbmltcG9ydCB7IFNjcm9sbEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9zY3JvbGwnO1xuaW1wb3J0IHsgSGVhZGVyTW9sZWN1bGVTdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9tb2xlY3VsZXMvaGVhZGVyJztcbmltcG9ydCB7IFRhYmxlT3JnYW5pc20sIFRhYmxlT3JnYW5pc21TdG9yZSwgaW5qZWN0SW5kZXhGb3JtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJsZSc7XG5pbXBvcnQgeyBMaXN0T3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2xpc3QnO1xuaW1wb3J0IHsgTmF2aWdhdG9yT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvbmF2aWdhdG9yJztcbmltcG9ydCB7IFBhZ2luYXRvck9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvbnMsIEluamVjdGFibGVDb21wb25lbnQsIFRva2VuaXplZFR5cGUsIF9jb21wdXRlZCwgY29tcHV0ZUZha2UgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgR3JpZFRvb2xiYXJPcmdhbmlzbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9ncmlkLXRvb2xiYXInO1xuaW1wb3J0IHsgRmlsdGVyc1NlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvZmlsdGVycy1zZWN0aW9uJztcbmltcG9ydCB7IERpdmlkZXJGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvZGl2aWRlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25MaXN0T3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlbGVjdGlvbi1saXN0JztcbmltcG9ydCB7IEVmZmVjdCwgTmdBdG9taWNDb21wb25lbnQgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgUXVlcnlSZXNvbHZlclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9xdWVyeS1yZXNvbHZlcic7XG5pbXBvcnQgeyBOYXZBY3Rpb25JZCwgVUlDb250ZXh0LCBjYWxsLCBpbmplY3ROYXZTdGFydEFjdGlvbnMsIG1ha2VDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBJbmRleFBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9pbmRleCc7XG5pbXBvcnQgeyBJbmRleExlbmd0aFBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9pbmRleC1sZW5ndGgnO1xuaW1wb3J0IHsgU29ydEJ5UGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL3NvcnQtYnknO1xuaW1wb3J0IHsgR3JpZENhcmRzU2VjdGlvbk9yZ2FuaXNtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9ncmlkLWNhcmRzLXNlY3Rpb24nO1xuaW1wb3J0IHsgaW5qZWN0TW9kZWxOYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZG9tYWluJztcbmltcG9ydCB7IERhdGFBY2Nlc3NvclBpcGUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9kYXRhLWFjY2Vzc29yJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wdXRlZFJhd1ZhbHVlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ2hpcHNJbnB1dFNlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hpcHMtaW5wdXQtc2VjdGlvbic7XG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBUcmVlTGlzdE9yZ2FuaXNtLCBUcmVlTGlzdE9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3RyZWUtbGlzdCc7XG5pbXBvcnQgeyBUYWJzRnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL3RhYnMnO1xuaW1wb3J0IHsgVGV4dElucHV0RmllbGRNb2xlY3VsZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9tb2xlY3VsZXMvdGV4dC1pbnB1dC1maWVsZCc7XG5pbXBvcnQgeyBWZXJ0aWNhbEhpZGVGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvdmVydGljYWwtaGlkZSc7XG5cbmV4cG9ydCBlbnVtIEFjdGlvbklkIHtcbiAgQkFDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gQmFjaycsXG4gIFRBQkxFX0hFQURFUl9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gVGFibGUgSGVhZGVyIENsaWNrJyxcbiAgVEFCTEVfSEVBREVSX0NIRUNLQk9YX0NMSUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2luZGV4XSBUYWJsZSBIZWFkZXIgQ2hlY2tib3ggQ2xpY2snLFxuICBUQUJMRV9DSEVDS0JPWF9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9pbmRleF0gVGFibGUgQ2hlY2tib3ggQ2xpY2snLFxuICBJVEVNX0NMSUNLID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2luZGV4XSBJdGVtIENsaWNrJyxcbiAgREVUQUlMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2luZGV4XSBEZXRhaWwnLFxuICBMSVNUX0lURU1fQlVUVE9OX0NMSUNLRUQgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvaW5kZXhdIExpc3QgSXRlbSBCdXR0b24gQ2xpY2tlZCcsXG4gIFRPR0dMRV9UWVBFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2luZGV4XSBUb2dnbGUgVHlwZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhUZW1wbGF0ZUNvbmZpZzxUIGV4dGVuZHMge2lkOiBzdHJpbmd9ID0gYW55PiB7XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgZ3JpZFRvb2xiYXJBY3Rpb25zOiBBY3Rpb25bXTtcbiAgbmF2U3RhcnRBY3Rpb25zOiBBY3Rpb25zO1xuICBuYXZFbmRBY3Rpb25zOiBBY3Rpb25zO1xuICBpdGVtQWN0aW9uczogQWN0aW9ucztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaXRlbXM6IFRbXVxuICB0YWJsZUNoaWxkcmVuS2V5OiBrZXlvZiBUO1xuICBncm91cGVkQnk6IGtleW9mIFQgfCBudWxsO1xuICBncm91cEtleXM6IHN0cmluZ1tdO1xuICB0eXBlOiAnbGlzdCcgfCAndGFibGUnIHwgJ2dyaWQnO1xuICB0b2dnbGVBY3Rpb25zOiBBY3Rpb25zO1xuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdO1xuICB3aWR0aDogc3RyaW5nO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPHN0cmluZz47XG4gIGhpZ2hsaWdodDogU2VsZWN0aW9uTW9kZWw8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGUoY29udGV4dDogVUlDb250ZXh0KSB7XG4gIHN3aXRjaCAoY29udGV4dC5icmVha3BvaW50KSB7XG4gICAgY2FzZSAneFNtYWxsJzogcmV0dXJuICdsaXN0JztcbiAgICBjYXNlICdzbWFsbCc6IHJldHVybiAndGFibGUnO1xuICAgIGNhc2UgJ21lZGl1bSc6IHJldHVybiAndGFibGUnO1xuICAgIGNhc2UgJ2xhcmdlJzogcmV0dXJuICd0YWJsZSc7XG4gICAgY2FzZSAneExhcmdlJzogcmV0dXJuICd0YWJsZSc7XG4gICAgZGVmYXVsdDogcmV0dXJuICd0YWJsZSc7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtc01hcDxUPiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBpdGVtczogVFtdO1xuICAgIGl0ZW1zTGVuZ3RoOiBudW1iZXI7XG4gICAgXG4gICAgdHlwZT86ICdsaXN0JyB8ICd0YWJsZScgfCAnZ3JpZCc7XG4gICAgY2hpbGRyZW5LZXk/OiBzdHJpbmc7XG4gICAgdHJlZUNvbnRyb2w/OiBGbGF0VHJlZUNvbnRyb2w8VD47XG4gICAgZ3JvdXBlZEJ5Pzogc3RyaW5nO1xuICAgIGdyb3VwS2V5cz86IHN0cmluZ1tdO1xuICAgIGl0ZW1BY3Rpb25zPzogQWN0aW9ucztcbiAgICBmb3JtPzogRm9ybUdyb3VwO1xuICAgIHNlbGVjdGlvbj86IFNlbGVjdGlvbk1vZGVsPHN0cmluZz47XG4gICAgaGlnaGxpZ2h0PzogU2VsZWN0aW9uTW9kZWw8c3RyaW5nPjtcbiAgICB0YWJsZUlzSGlkZGVuPzogKGl0ZW06IFQpID0+IGJvb2xlYW47XG4gICAgcGFnZVNpemVPcHRpb25zPzogbnVtYmVyW107XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0l0ZW1zTWFwPFQ+KGl0ZW1zKTogSXRlbXNNYXA8VD4ge1xuICByZXR1cm4ge1xuICAgICdkZWZhdWx0Jzoge1xuICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgaXRlbXNMZW5ndGg6IGl0ZW1zPy5sZW5ndGgsXG4gICAgfVxuICB9O1xufVxuXG5AVG9rZW5pemVkVHlwZSgpXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd0ZW1wbGF0ZXMtaW5kZXgnLFxuICBwcm92aWRlcnM6IFtcbiAgICBJbmRleFBpcGUsXG4gICAgSW5kZXhMZW5ndGhQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmRleFRlbXBsYXRlU3RvcmU8VCBleHRlbmRzIHtpZDogc3RyaW5nfT4gZXh0ZW5kcyBJbmplY3RhYmxlQ29tcG9uZW50IHtcbiAgc3RhdGljIHJlYWRvbmx5IEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHN0YXRpYyByZWFkb25seSBDb25maWcgPSBtYWtlQ29uZmlnKCgpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBpbmplY3RNb2RlbE5hbWUoKTtcbiAgICBmdW5jdGlvbiBnZXRXaWR0aChjb250ZXh0OiBVSUNvbnRleHQpIHtcbiAgICAgIHN3aXRjaCAoY29udGV4dC5icmVha3BvaW50KSB7XG4gICAgICAgIGNhc2UgJ3hTbWFsbCc6IHJldHVybiAndmFyKC0tcGFnZS13aWR0aC1sdjEpJ1xuICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgY2FzZSAneExhcmdlJzpcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuICd2YXIoLS1wYWdlLXdpZHRoLWx2MiknO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUeXBlKGNvbnRleHQ6IFVJQ29udGV4dCkge1xuICAgICAgc3dpdGNoIChjb250ZXh0LmJyZWFrcG9pbnQpIHtcbiAgICAgICAgY2FzZSAneFNtYWxsJzogcmV0dXJuICdsaXN0JztcbiAgICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICBjYXNlICdsYXJnZSc6XG4gICAgICAgIGNhc2UgJ3hMYXJnZSc6XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAndGFibGUnO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBmb3JtID0gaW5qZWN0SW5kZXhGb3JtKCk7XG4gICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0TmF2U3RhcnRBY3Rpb25zKCk7XG4gIFxuICAgIHJldHVybiAoY29udGV4dCkgPT4gKHtcbiAgICAgIGZvcm0sXG4gICAgICB0b2dnbGVBY3Rpb25zOiBbXG4gICAgICAgIHsgaWQ6IEFjdGlvbklkLlRPR0dMRV9UWVBFLCBpY29uOiAnZ3JpZF92aWV3JywgcGF5bG9hZDogJ2dyaWQnIH0sXG4gICAgICAgIHsgaWQ6IEFjdGlvbklkLlRPR0dMRV9UWVBFLCBpY29uOiAnbGlzdCcsIHBheWxvYWQ6ICdsaXN0JyB9LFxuICAgICAgICB7IGlkOiBBY3Rpb25JZC5UT0dHTEVfVFlQRSwgaWNvbjogJ3RhYmxlJywgcGF5bG9hZDogJ3RhYmxlJyB9LFxuICAgICAgXSBhcyBBY3Rpb25bXSxcbiAgICAgIGdyaWRUb29sYmFyQWN0aW9uczogW10gYXMgQWN0aW9uW10sXG4gICAgICB0YWJsZUNoaWxkcmVuS2V5OiBudWxsIGFzIHN0cmluZyxcbiAgICAgIHRhYmxlSXNIaWRkZW46IChpdGVtOiBhbnkpID0+IGZhbHNlLFxuICAgICAgdGFibGVUcmVlQ29udHJvbDogbmV3IEZsYXRUcmVlQ29udHJvbDxhbnk+KG4gPT4gbi5sZXZlbCwgbiA9PiBuLmlzRXhwYW5kYWJsZSwge3RyYWNrQnk6IChuOiBhbnkpID0+IG4uaWR9KSxcbiAgICAgIGl0ZW1BY3Rpb25zOiAoaXRlbSkgPT4gW3tpZDogQWN0aW9uSWQuREVUQUlMLCBpY29uOiAnb3Blbl9pbl9uZXcnLCBwYXlsb2FkOiBpdGVtfV0sXG4gICAgICBpdGVtczogW10sXG4gICAgICBpdGVtc0xlbmd0aDogMCxcbiAgICAgIHRpdGxlOiBgJHttb2RlbE5hbWUoKX3kuIDopqdgLFxuICAgICAgdGl0bGVDb250cm9sOiBuZXcgRm9ybUNvbnRyb2woYCR7bW9kZWxOYW1lKCl95LiA6KanYCksXG4gICAgICB0aXRsZUVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgYCxcbiAgICAgIG5hdlN0YXJ0QWN0aW9uczogbmF2U3RhcnRBY3Rpb25zKCksXG4gICAgICBuYXZFbmRBY3Rpb25zOiBbXSxcbiAgICAgIGdyb3VwZWRCeTogPHN0cmluZz5udWxsLFxuICAgICAgZ3JvdXBLZXlzOiA8c3RyaW5nW10+W10sXG4gICAgICB0eXBlOiA8J3RhYmxlJyB8ICdsaXN0JyB8ICdncmlkJz5nZXRUeXBlKGNvbnRleHQpLFxuICAgICAgcGFnZVNpemVPcHRpb25zOiBbNSwgMTAsIDI1LCAxMDBdLFxuICAgICAgc2VsZWN0aW9uOiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSksXG4gICAgICBoaWdobGlnaHQ6IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUsIFtdKSxcbiAgICAgIHF1ZXJ5TGFiZWw6ICfjg5XjgqPjg6vjgr/jg7wnLFxuICAgIH0pO1xuICB9LCBbJ2NvbXBvbmVudHMnLCAndGVtcGxhdGVzJywgJ2luZGV4J10pO1xuICBzdGF0aWMgcHJvdmlkZVR5cGVDb25maWcoKSB7XG4gICAgcmV0dXJuIEluZGV4VGVtcGxhdGVTdG9yZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICByZXR1cm4gKGNvbmZpZywgY29udGV4dCkgPT4gKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICB0eXBlOiBnZXRUeXBlKGNvbnRleHQpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkb25seSBjb25maWcgPSBJbmRleFRlbXBsYXRlU3RvcmUuQ29uZmlnLmluamVjdCgpO1xuICByZWFkb25seSBpc1BsYXRmb3JtU2VydmVyID0gaXNQbGF0Zm9ybVNlcnZlcihpbmplY3QoUExBVEZPUk1fSUQpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZvcm0pKTtcbiAgcmVhZG9ubHkgZ3JpZFRvb2xiYXJBY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZ3JpZFRvb2xiYXJBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRvZ2dsZUFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50b2dnbGVBY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRhYmxlQ2hpbGRyZW5LZXkgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50YWJsZUNoaWxkcmVuS2V5KSk7XG4gIHJlYWRvbmx5IHRhYmxlSXNIaWRkZW4gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50YWJsZUlzSGlkZGVuKSk7XG4gIHJlYWRvbmx5IHRhYmxlVHJlZUNvbnRyb2wgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50YWJsZVRyZWVDb250cm9sKSk7XG4gIHJlYWRvbmx5IGl0ZW1BY3Rpb25zID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbUFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50aXRsZSkpO1xuICByZWFkb25seSB0aXRsZUNvbnRyb2wgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS50aXRsZUNvbnRyb2wpKTtcbiAgcmVhZG9ubHkgdGl0bGVFZGl0YWJsZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnRpdGxlRWRpdGFibGUpKTtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5kZXNjcmlwdGlvbikpO1xuICByZWFkb25seSBpdGVtcyA9IGlucHV0PFRbXT4oX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXMpKTtcbiAgcmVhZG9ubHkgaXRlbXNNYXAgPSBpbnB1dDxJdGVtc01hcDxUPj4oX2NvbXB1dGVkKCgpID0+IGNvbnZlcnRUb0l0ZW1zTWFwKHRoaXMuaXRlbXMoKSkpKTtcbiAgcmVhZG9ubHkgaXRlbXNNYXBLZXlzID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKHRoaXMuaXRlbXNNYXAoKSA/PyB7fSkpKTtcbiAgcmVhZG9ubHkgaXRlbXNMZW5ndGggPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtc0xlbmd0aCkpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZTdGFydEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZEJ5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZ3JvdXBlZEJ5KSk7XG4gIHJlYWRvbmx5IGdyb3VwS2V5cyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmdyb3VwS2V5cykpO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5wYWdlU2l6ZU9wdGlvbnMpKTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnR5cGUpKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2VsZWN0aW9uKSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhpZ2hsaWdodCkpO1xuICByZWFkb25seSBxdWVyeUxhYmVsID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkucXVlcnlMYWJlbCkpO1xuICByZWFkb25seSBuYXZNb2RlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+ICdleHBhbmRlZCcpKTtcbiAgcmVhZG9ubHkgZm9ybSQgPSB0b09ic2VydmFibGUoY29tcHV0ZUZha2UodGhpcy5mb3JtKSk7XG4gIHJlYWRvbmx5IGZvcm1WYWx1ZSA9IGNvbXB1dGVkUmF3VmFsdWUoKCkgPT4gY2FsbCh0aGlzLmZvcm0oKSkpO1xuICByZWFkb25seSBwaXBlcyA9IHsgaW5kZXg6IGluamVjdChJbmRleFBpcGUpLCBpbmRleExlbmd0aDogaW5qZWN0KEluZGV4TGVuZ3RoUGlwZSl9O1xuICAvLyByZWFkb25seSBpdGVtc1NpemUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBpcGVzLmluZGV4TGVuZ3RoLnRyYW5zZm9ybSh0aGlzLml0ZW1zKCksIHRoaXMuZm9ybVZhbHVlKCkgYXMgYW55KSk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXV0b0xheW91dEZyYW1lLFxuICAgIENoaXBzSW5wdXRTZWN0aW9uT3JnYW5pc20sXG4gICAgU2Nyb2xsRnJhbWUsXG4gICAgRGl2aWRlckZyYW1lLFxuICAgIEdyaWRUb29sYmFyT3JnYW5pc21TdG9yZSxcbiAgICBQYWdpbmF0b3JPcmdhbmlzbVN0b3JlLFxuICAgIFRhYmxlT3JnYW5pc21TdG9yZSxcbiAgICBMaXN0T3JnYW5pc20sXG4gICAgVHJlZUxpc3RPcmdhbmlzbSxcbiAgICBHcmlkQ2FyZHNTZWN0aW9uT3JnYW5pc20sXG4gICAgTmF2aWdhdG9yT3JnYW5pc21TdG9yZSxcbiAgICBIZWFkZXJNb2xlY3VsZVN0b3JlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgVGFic0ZyYW1lLFxuICAgIFRleHRJbnB1dEZpZWxkTW9sZWN1bGUsXG4gICAgVmVydGljYWxIaWRlRnJhbWUsXG4gIF0sXG4gIHNlbGVjdG9yOiAndGVtcGxhdGVzLWluZGV4JyxcbiAgdGVtcGxhdGU6IGBcbiAgPGZyYW1lcy1zY3JvbGw+XG4gIDxmcmFtZXMtdmVydGljYWwtaGlkZSBbbW9kZV09XCJzdG9yZS5uYXZNb2RlKClcIiB0b3A+XG4gICAgICA8b3JnYW5pc21zLW5hdmlnYXRvciBpbmplY3RhYmxlXG4gICAgICAgIFtzdGFydEFjdGlvbnNdPVwic3RvcmUubmF2U3RhcnRBY3Rpb25zKClcIlxuICAgICAgICBbZW5kQWN0aW9uc109XCJzdG9yZS5uYXZFbmRBY3Rpb25zKClcIlxuICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICB0b3BcbiAgICAgID5cbiAgICAgIEBpZiAoc3RvcmUudGl0bGVFZGl0YWJsZSgpKSB7XG4gICAgICAgIDxtb2xlY3VsZXMtdGV4dC1pbnB1dC1maWVsZFxuICAgICAgICAgIFtsYWJlbF09XCIndGl0bGUnXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3RpdGxlJ1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwic3RvcmUudGl0bGVDb250cm9sKClcIlxuICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidmaWxsJ1wiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG1vbGVjdWxlcy1oZWFkZXIgaW5qZWN0YWJsZSBbdGl0bGVdPVwic3RvcmUudGl0bGUoKVwiIFtkZXNjcmlwdGlvbl09XCJzdG9yZS5kZXNjcmlwdGlvbigpXCIvPlxuICAgICAgfVxuICAgICAgPC9vcmdhbmlzbXMtbmF2aWdhdG9yPlxuICAgICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZFwiPlxuICAgICAgICA8bmctY29udGVudCBmaXJzdCBzZWxlY3Q9XCJbbmF2RGFzaGJvYXJkXVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZyYW1lcy12ZXJ0aWNhbC1oaWRlPlxuICAgIDxmcmFtZXMtYXV0by1sYXlvdXQgW3R5cGVdPVwiJ3ZlcnRpY2FsJ1wiIGNvbnRlbnRzPlxuICAgICAgQGRlZmVyIHtcbiAgICAgICAgPGZyYW1lcy1kaXZpZGVyPlxuICAgICAgICAgIDxuZy1jb250ZW50IGZpcnN0IHNlbGVjdD1cIltkYXNoYm9hcmRdXCIgLz5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIiBzZWNvbmQ+XG4gICAgICAgICAgICBAaWYgKHN0b3JlLmdyaWRUb29sYmFyQWN0aW9ucygpIHx8IHRydWUpIHtcbiAgICAgICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgICAgICA8b3JnYW5pc21zLWdyaWQtdG9vbGJhciBpbmplY3RhYmxlXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uc109XCJzdG9yZS5ncmlkVG9vbGJhckFjdGlvbnMoKVwiXG4gICAgICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc3RvcmUuZm9ybSgpLmdldChbJ3F1ZXJ5J10pKSB7XG4gICAgICAgICAgICAgIDxvcmdhbmlzbXMtY2hpcHMtaW5wdXQtc2VjdGlvblxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInN0b3JlLmZvcm0oKS5nZXQoWydxdWVyeSddKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInN0b3JlLnF1ZXJ5TGFiZWwoKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHN0b3JlLml0ZW1zTWFwS2V5cygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgICAgICA8ZnJhbWVzLXRhYnMgW2xhYmVsc109XCJzdG9yZS5pdGVtc01hcEtleXMoKVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoa2V5IG9mIHN0b3JlLml0ZW1zTWFwS2V5cygpOyB0cmFjayBrZXk7KSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtczsgY29udGV4dDoge21hcDogc3RvcmUuaXRlbXNNYXAoKVtrZXldfVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2ZyYW1lcy10YWJzPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIGlmKHN0b3JlLml0ZW1zTWFwS2V5cygpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbXM7IGNvbnRleHQ6IHttYXA6IHN0b3JlLml0ZW1zTWFwKClbc3RvcmUuaXRlbXNNYXBLZXlzKClbMF1dfVwiLz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mcmFtZXMtZGl2aWRlcj5cbiAgICAgIH1cbiAgICA8L2ZyYW1lcy1hdXRvLWxheW91dD5cbiAgPC9mcmFtZXMtc2Nyb2xsPlxuXG4gIDxuZy10ZW1wbGF0ZSAjaXRlbXMgbGV0LW1hcD1cIm1hcFwiPlxuICAgIDwhLS0gPGRpdj5cbiAgICAgIGpzb246IHt7IG1hcCB8IGpzb24gfX1cbiAgICA8L2Rpdj4gLS0+XG4gICAgQHN3aXRjaChtYXA/LnR5cGUgPz8gc3RvcmUudHlwZSgpKSB7XG4gICAgICBAY2FzZSgnbGlzdCcpIHtcbiAgICAgICAgQGlmIChtYXAuY2hpbGRyZW5LZXkpIHtcbiAgICAgICAgICA8b3JnYW5pc21zLXRyZWUtbGlzdFxuICAgICAgICAgICAgW2l0ZW1zXT1cIm1hcD8uaXRlbXMgPz8gW11cIlxuICAgICAgICAgICAgW2NoaWxkcmVuS2V5XT1cIm1hcD8uY2hpbGRyZW5LZXkgPz8gc3RvcmUuY2hpbGRyZW5LZXkoKVwiXG4gICAgICAgICAgICBbdHJlZUNvbnRyb2xdPVwibWFwPy50cmVlQ29udHJvbCA/PyBzdG9yZS50YWJsZVRyZWVDb250cm9sKClcIlxuICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8b3JnYW5pc21zLWxpc3RcbiAgICAgICAgICAgIFtpdGVtc109XCJtYXA/Lml0ZW1zID8/IFtdXCJcbiAgICAgICAgICAgIFtpdGVtQWN0aW9uc109XCJtYXA/Lml0ZW1BY3Rpb25zID8/IHN0b3JlLml0ZW1BY3Rpb25zKClcIlxuICAgICAgICAgICAgW2dyb3VwZWRCeV09XCJtYXA/Lmdyb3VwZWRCeSA/PyBzdG9yZS5ncm91cGVkQnkoKVwiXG4gICAgICAgICAgICBbZ3JvdXBLZXlzXT1cIm1hcD8uZ3JvdXBLZXlzID8/IHN0b3JlLmdyb3VwS2V5cygpXCJcbiAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGNhc2UgKCdncmlkJykge1xuICAgICAgICBAZGVmZXIge1xuICAgICAgICAgIDxvcmdhbmlzbXMtZ3JpZC1jYXJkcy1zZWN0aW9uXG4gICAgICAgICAgICBbaXRlbXNdPVwibWFwPy5pdGVtcyA/PyBbXVwiXG4gICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgY29udGVudHNcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIDxvcmdhbmlzbXMtdGFibGUgaW5qZWN0YWJsZVxuICAgICAgICAgIFtpdGVtc109XCJtYXA/Lml0ZW1zID8/IFtdXCJcbiAgICAgICAgICBbaXRlbUFjdGlvbnNdPVwibWFwPy5pdGVtQWN0aW9ucyA/PyBzdG9yZS5pdGVtQWN0aW9ucygpXCJcbiAgICAgICAgICBbc2VsZWN0aW9uXT1cIm1hcD8uc2VsZWN0aW9uID8/IHN0b3JlLnNlbGVjdGlvbigpXCJcbiAgICAgICAgICBbZm9ybV09XCJtYXA/LmZvcm0gPz8gc3RvcmUuZm9ybSgpXCJcbiAgICAgICAgICBbY2hpbGRyZW5LZXldPVwibWFwPy5jaGlsZHJlbktleSA/PyBzdG9yZS50YWJsZUNoaWxkcmVuS2V5KClcIlxuICAgICAgICAgIFtoaWdobGlnaHRdPVwibWFwPy5oaWdobGlnaHQgPz8gc3RvcmUuaGlnaGxpZ2h0KClcIlxuICAgICAgICAgIFtpc0hpZGRlbl09XCJtYXA/LnRhYmxlSXNIaWRkZW4gPz8gc3RvcmUudGFibGVJc0hpZGRlbigpXCJcbiAgICAgICAgICBbdHJlZUNvbnRyb2xdPVwibWFwPy50cmVlQ29udHJvbCA/PyBzdG9yZS50YWJsZVRyZWVDb250cm9sKClcIlxuICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAobWFwPy5mb3JtPy5nZXQoWydwYWdlJ10pID8/IHN0b3JlLmZvcm0oKS5nZXQoWydwYWdlJ10pKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtcGFnaW5hdG9yIGluamVjdGFibGVcbiAgICAgICAgICAgICAgW2Zvcm1dPVwibWFwPy5mb3JtPy5nZXQoWydwYWdlJ10pID8/IHN0b3JlLmZvcm0oKS5nZXQoWydwYWdlJ10pXCJcbiAgICAgICAgICAgICAgW2l0ZW1MZW5ndGhdPVwibWFwPy5pdGVtc0xlbmd0aCA/PyBzdG9yZS5pdGVtc0xlbmd0aCgpXCJcbiAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJtYXA/LnBhZ2VTaXplT3B0aW9ucyA/PyBzdG9yZS5wYWdlU2l6ZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vaW5kZXgudGVtcGxhdGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBjbGFzczogJ3RlbXBsYXRlJyB9LFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogSW5kZXhUZW1wbGF0ZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdncmlkVG9vbGJhckFjdGlvbnMnLFxuICAgICAgICAndGFibGVDaGlsZHJlbktleScsXG4gICAgICAgICd0YWJsZUlzSGlkZGVuJyxcbiAgICAgICAgJ3RhYmxlVHJlZUNvbnRyb2wnLFxuICAgICAgICAnZm9ybScsXG4gICAgICAgICd0aXRsZScsXG4gICAgICAgICd0aXRsZUNvbnRyb2wnLFxuICAgICAgICAndGl0bGVFZGl0YWJsZScsXG4gICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICdpdGVtcycsXG4gICAgICAgICdpdGVtc01hcCcsXG4gICAgICAgICdpdGVtc0xlbmd0aCcsXG4gICAgICAgICdpdGVtQWN0aW9ucycsXG4gICAgICAgICduYXZTdGFydEFjdGlvbnMnLFxuICAgICAgICAnbmF2RW5kQWN0aW9ucycsXG4gICAgICAgICduYXZNb2RlJyxcbiAgICAgICAgJ2dyb3VwZWRCeScsXG4gICAgICAgICdncm91cEtleXMnLFxuICAgICAgICAnc2VsZWN0aW9uJyxcbiAgICAgICAgJ3BhZ2VTaXplT3B0aW9ucycsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ2hpZ2hsaWdodCcsXG4gICAgICAgICdxdWVyeUxhYmVsJyxcbiAgICAgIF0sXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICB9XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFF1ZXJ5UmVzb2x2ZXJTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmRleFRlbXBsYXRlPFQ+IGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBzdGF0aWMgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgcHJvdGVjdGVkIEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChJbmRleFRlbXBsYXRlU3RvcmUpO1xuICBcbiAgcmVhZG9ubHkgZGl2aWRlckZyYW1lID0gdmlld0NoaWxkKERpdmlkZXJGcmFtZSk7XG5cbiAgQEVmZmVjdChUYWJsZU9yZ2FuaXNtLkFjdGlvbklkLkhFQURFUl9DTElDSylcbiAgcHJvdGVjdGVkIG9uVGFibGVIZWFkZXJDbGljayhjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssIHBheWxvYWQ6IGNvbHVtbn0pO1xuICB9XG5cbiAgQEVmZmVjdChUYWJsZU9yZ2FuaXNtLkFjdGlvbklkLkNIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgb25DaGVja2JveENsaWNrSXRlbShpdGVtOiBUKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLlRBQkxFX0NIRUNLQk9YX0NMSUNLLCBwYXlsb2FkOiBpdGVtfSk7XG4gIH1cblxuICBARWZmZWN0KEdyaWRDYXJkc1NlY3Rpb25PcmdhbmlzbS5BY3Rpb25JZC5JVEVNX0NMSUNLKVxuICBARWZmZWN0KExpc3RPcmdhbmlzbS5BY3Rpb25JZC5DTElDS19JVEVNKVxuICBARWZmZWN0KFRyZWVMaXN0T3JnYW5pc21TdG9yZS5BY3Rpb25JZC5DTElDS19JVEVNKVxuICBwcm90ZWN0ZWQgb25JdGVtQ2xpY2tlZChpdGVtOiBUKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLklURU1fQ0xJQ0ssIHBheWxvYWQ6IGl0ZW19KTtcbiAgfVxuXG4gIEBFZmZlY3QoR3JpZENhcmRzU2VjdGlvbk9yZ2FuaXNtLkFjdGlvbklkLklURU1fTUVOVV9DTElDSylcbiAgQEVmZmVjdChMaXN0T3JnYW5pc20uQWN0aW9uSWQuSVRFTV9CVVRUT05fQ0xJQ0spXG4gIHByb3RlY3RlZCBvbkl0ZW1CdXR0b25DbGlja2VkKGl0ZW06IFQpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuTElTVF9JVEVNX0JVVFRPTl9DTElDS0VELCBwYXlsb2FkOiBpdGVtfSk7XG4gIH1cblxuICBARWZmZWN0KFRhYmxlT3JnYW5pc21TdG9yZS5BY3Rpb25JZC5IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0spXG4gIHByb3RlY3RlZCBvbkhlYWRlckNoZWNrYm94Q2xpY2soKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEFjdGlvbklkLlRBQkxFX0hFQURFUl9DSEVDS0JPWF9DTElDS30pO1xuICB9XG5cbiAgQEVmZmVjdChOYXZBY3Rpb25JZC5CQUNLKVxuICBwcm90ZWN0ZWQgYmFjaygpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuQkFDS30pO1xuICB9XG59XG4iXX0=