@ng-atomic/components 17.9.0 → 17.11.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 (170) hide show
  1. package/esm2022/atoms/icon/icon.atom.mjs +2 -2
  2. package/esm2022/components.module.mjs +3 -2
  3. package/esm2022/frames/app/app.frame.mjs +192 -16
  4. package/esm2022/frames/auto-layout/auto-layout.frame.mjs +2 -2
  5. package/esm2022/frames/columns/columns.frame.mjs +4 -4
  6. package/esm2022/frames/divider/divider.frame.mjs +2 -2
  7. package/esm2022/frames/drawer/drawer.frame.mjs +2 -2
  8. package/esm2022/frames/entrance/entrance.frame.mjs +2 -2
  9. package/esm2022/frames/fab/fab.frame.mjs +2 -2
  10. package/esm2022/frames/frames.module.mjs +2 -1
  11. package/esm2022/frames/line-up/line-up.frame.mjs +2 -2
  12. package/esm2022/frames/loading/loading.frame.mjs +2 -2
  13. package/esm2022/frames/router-outlet/router-outlet.frame.mjs +11 -4
  14. package/esm2022/frames/scroll/scroll.frame.mjs +2 -2
  15. package/esm2022/frames/scroll-v2/scroll.frame.mjs +2 -2
  16. package/esm2022/frames/side-nav/side-nav.frame.mjs +34 -28
  17. package/esm2022/frames/smart-menu/smart-menu.frame.mjs +2 -2
  18. package/esm2022/frames/vertical-hide/vertical-hide.frame.mjs +2 -2
  19. package/esm2022/molecules/checkbox-column/checkbox-column.molecule.mjs +48 -11
  20. package/esm2022/molecules/date-input-field/date-input-field.molecule.mjs +2 -2
  21. package/esm2022/molecules/date-range-input-field/date-range-input-field.molecule.mjs +2 -2
  22. package/esm2022/molecules/grid-item/grid-item.molecule.mjs +2 -2
  23. package/esm2022/molecules/loading-box/loading-box.molecule.mjs +2 -2
  24. package/esm2022/molecules/navigation-list-item/navigation-list-item.molecule.mjs +11 -8
  25. package/esm2022/molecules/select-input-field/select-input-field.molecule.mjs +2 -2
  26. package/esm2022/organisms/action-buttons-section/action-buttons-section.organism.mjs +2 -2
  27. package/esm2022/organisms/action-input-section/action-input-section.organism.mjs +2 -2
  28. package/esm2022/organisms/card-input-section/card-input-section.organism.mjs +2 -2
  29. package/esm2022/organisms/cvc-and-exp-input-section/cvc-and-exp-input-section.organism.mjs +2 -2
  30. package/esm2022/organisms/date-input-section/date-input-section.organism.mjs +2 -2
  31. package/esm2022/organisms/date-range-input-section/date-range-input-section.organism.mjs +2 -2
  32. package/esm2022/organisms/definition-list/definition-list.organism.mjs +2 -2
  33. package/esm2022/organisms/file-input-section/file-input-section.organism.mjs +2 -2
  34. package/esm2022/organisms/grid-cards-section/grid-cards-section.organism.mjs +2 -2
  35. package/esm2022/organisms/heading/heading.organism.mjs +2 -2
  36. package/esm2022/organisms/menu-footer/menu-footer.organism.mjs +2 -2
  37. package/esm2022/organisms/menu-header/menu-header.organism.mjs +4 -5
  38. package/esm2022/organisms/messages-section/messages-section.organism.mjs +2 -2
  39. package/esm2022/organisms/navigation-list/navigation-list.organism.mjs +51 -20
  40. package/esm2022/organisms/navigator/navigator.organism.mjs +3 -3
  41. package/esm2022/organisms/number-input-section/number-input-section.organism.mjs +2 -2
  42. package/esm2022/organisms/paginator/paginator.organism.mjs +2 -2
  43. package/esm2022/organisms/password-input-section/password-input-section.organism.mjs +2 -2
  44. package/esm2022/organisms/select-input-section/select-input-section.organism.mjs +2 -2
  45. package/esm2022/organisms/slider-input-section/slider-input-section.organism.mjs +4 -4
  46. package/esm2022/organisms/smart-list/smart-list.organism.mjs +11 -3
  47. package/esm2022/organisms/social-login-section/social-login-section.organism.mjs +2 -2
  48. package/esm2022/organisms/table/index.helpers.mjs +3 -1
  49. package/esm2022/organisms/table/table.organism.mjs +205 -101
  50. package/esm2022/organisms/text-input-section/text-input-section.organism.mjs +2 -2
  51. package/esm2022/organisms/textarea-section/textarea-section.organism.mjs +2 -2
  52. package/esm2022/organisms/thread-messages-section/thread-messages-section.organism.mjs +2 -2
  53. package/esm2022/pages/_index/index.page.mjs +242 -50
  54. package/esm2022/pages/form/form.page.mjs +71 -46
  55. package/esm2022/pages/pages.module.mjs +3 -4
  56. package/esm2022/templates/_index/index.template.mjs +66 -28
  57. package/esm2022/templates/background/background.template.mjs +2 -2
  58. package/esm2022/templates/entrance/entrance.template.mjs +2 -2
  59. package/esm2022/templates/form/form.builder.mjs +12 -2
  60. package/esm2022/templates/form/form.template.mjs +2 -2
  61. package/esm2022/templates/icon-button-menu/icon-button-menu.template.mjs +2 -2
  62. package/esm2022/templates/menu/menu.template.mjs +3 -3
  63. package/esm2022/templates/selection/selection.template.mjs +2 -2
  64. package/esm2022/templates/settings/settings.template.mjs +2 -2
  65. package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
  66. package/fesm2022/ng-atomic-components-frames-app.mjs +191 -15
  67. package/fesm2022/ng-atomic-components-frames-app.mjs.map +1 -1
  68. package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +2 -2
  69. package/fesm2022/ng-atomic-components-frames-columns.mjs +3 -3
  70. package/fesm2022/ng-atomic-components-frames-columns.mjs.map +1 -1
  71. package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
  72. package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -2
  73. package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
  74. package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
  75. package/fesm2022/ng-atomic-components-frames-line-up.mjs +2 -2
  76. package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
  77. package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +10 -3
  78. package/fesm2022/ng-atomic-components-frames-router-outlet.mjs.map +1 -1
  79. package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs +2 -2
  80. package/fesm2022/ng-atomic-components-frames-scroll.mjs +2 -2
  81. package/fesm2022/ng-atomic-components-frames-side-nav.mjs +33 -27
  82. package/fesm2022/ng-atomic-components-frames-side-nav.mjs.map +1 -1
  83. package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
  84. package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +2 -2
  85. package/fesm2022/ng-atomic-components-frames.mjs +1 -0
  86. package/fesm2022/ng-atomic-components-frames.mjs.map +1 -1
  87. package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs +47 -10
  88. package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs.map +1 -1
  89. package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
  90. package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
  91. package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
  92. package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
  93. package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +10 -7
  94. package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs.map +1 -1
  95. package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +2 -2
  96. package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
  97. package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
  98. package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
  99. package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
  100. package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +2 -2
  101. package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +2 -2
  102. package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
  103. package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
  104. package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
  105. package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
  106. package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
  107. package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +3 -4
  108. package/fesm2022/ng-atomic-components-organisms-menu-header.mjs.map +1 -1
  109. package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
  110. package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +50 -19
  111. package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs.map +1 -1
  112. package/fesm2022/ng-atomic-components-organisms-navigator.mjs +2 -2
  113. package/fesm2022/ng-atomic-components-organisms-navigator.mjs.map +1 -1
  114. package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
  115. package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
  116. package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
  117. package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +2 -2
  118. package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +3 -3
  119. package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs.map +1 -1
  120. package/fesm2022/ng-atomic-components-organisms-smart-list.mjs +10 -2
  121. package/fesm2022/ng-atomic-components-organisms-smart-list.mjs.map +1 -1
  122. package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
  123. package/fesm2022/ng-atomic-components-organisms-table.mjs +206 -100
  124. package/fesm2022/ng-atomic-components-organisms-table.mjs.map +1 -1
  125. package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +2 -2
  126. package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
  127. package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +2 -2
  128. package/fesm2022/ng-atomic-components-pages-_index.mjs +242 -50
  129. package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
  130. package/fesm2022/ng-atomic-components-pages-form.mjs +71 -46
  131. package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
  132. package/fesm2022/ng-atomic-components-pages.mjs +2 -3
  133. package/fesm2022/ng-atomic-components-pages.mjs.map +1 -1
  134. package/fesm2022/ng-atomic-components-templates-_index.mjs +65 -27
  135. package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
  136. package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
  137. package/fesm2022/ng-atomic-components-templates-entrance.mjs +2 -2
  138. package/fesm2022/ng-atomic-components-templates-form.mjs +13 -3
  139. package/fesm2022/ng-atomic-components-templates-form.mjs.map +1 -1
  140. package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +2 -2
  141. package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
  142. package/fesm2022/ng-atomic-components-templates-menu.mjs.map +1 -1
  143. package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
  144. package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
  145. package/fesm2022/ng-atomic-components.mjs +2 -1
  146. package/fesm2022/ng-atomic-components.mjs.map +1 -1
  147. package/frames/app/app.frame.d.ts +69 -52
  148. package/frames/columns/columns.frame.d.ts +3 -3
  149. package/frames/fab/fab.frame.d.ts +3 -3
  150. package/frames/router-outlet/router-outlet.frame.d.ts +4 -3
  151. package/frames/side-nav/side-nav.frame.d.ts +16 -12
  152. package/molecules/actions-column/actions-column.molecule.d.ts +3 -3
  153. package/molecules/checkbox-column/checkbox-column.molecule.d.ts +8 -2
  154. package/molecules/chips-input-field/chips-input-field.molecule.d.ts +3 -3
  155. package/molecules/loading-box/loading-box.molecule.d.ts +3 -3
  156. package/molecules/navigation-list-item/navigation-list-item.molecule.d.ts +3 -2
  157. package/organisms/menu-header/menu-header.organism.d.ts +10 -4
  158. package/organisms/navigation-list/navigation-list.organism.d.ts +2 -1
  159. package/organisms/navigator/navigator.organism.d.ts +3 -3
  160. package/organisms/slider-input-section/slider-input-section.organism.d.ts +3 -3
  161. package/organisms/smart-list/smart-list.organism.d.ts +14 -13
  162. package/organisms/stripe-input-section/stripe-input-section.organism.d.ts +3 -3
  163. package/organisms/table/index.helpers.d.ts +1 -0
  164. package/organisms/table/table.organism.d.ts +39 -9
  165. package/package.json +3 -3
  166. package/pages/_index/index.page.d.ts +123 -82
  167. package/pages/form/form.page.d.ts +69 -56
  168. package/pages/terms/terms.page.d.ts +3 -3
  169. package/templates/_index/index.template.d.ts +27 -15
  170. package/templates/form/form.template.d.ts +3 -3
@@ -63,7 +63,7 @@ export class ThreadMessagesSectionOrganism extends NgAtomicComponent {
63
63
  </div>
64
64
  <mat-divider />
65
65
  }
66
- `, isInline: true, styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-%COMP%-Aiop: var(--primary-color);--on-primary-color: inherit;--on-primary-color-SCOPED-IN-%COMP%-Aiop: var(--on-primary-color);--surface-color: inherit;--surface-color-SCOPED-IN-%COMP%-Aiop: var(--surface-color);--on-surface-color: inherit;--on-surface-color-SCOPED-IN-%COMP%-Aiop: var(--on-surface-color);--background-color: inherit;--background-color-SCOPED-IN-%COMP%-Aiop: var(--background-color);--on-background-color: inherit;--on-background-color-SCOPED-IN-%COMP%-Aiop: var(--on-background-color)}:host{display:flex;flex-direction:column;justify-content:flex-start;color:var(--on-surface-color-SCOPED-IN-%COMP%-Aiop)}:host .message{padding:8px 16px}:host .message .header{display:flex;justify-content:flex-start;align-items:center;padding:8px 0;box-sizing:border-box;gap:8px}:host .message .header .name{font-size:14px;font-weight:700}:host .message .header .description{display:flex;justify-content:flex-start;gap:4px;font-size:12px}:host .message .header img{width:40px;height:40px;border-radius:50%;background-color:var(--primary-color-SCOPED-IN-%COMP%-Aiop)}:host .message .content{font-size:14px;padding-bottom:24px;box-sizing:border-box}:host .message .bottom.actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}:host .message .bottom.actions button{height:32px;padding:0 8px;--mdc-outlined-button-label-text-size: 12px}:host mat-divider{width:calc(100% - 16px);box-sizing:border-box;margin:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: ActionsPipe, name: "resolveActions" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: DataAccessorPipe, name: "dataAccessor" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: FallbackSrcDirective, selector: "[fallbackSrc]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
+ `, isInline: true, styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-%COMP%-ADBN: var(--primary-color);--on-primary-color: inherit;--on-primary-color-SCOPED-IN-%COMP%-ADBN: var(--on-primary-color);--surface-color: inherit;--surface-color-SCOPED-IN-%COMP%-ADBN: var(--surface-color);--on-surface-color: inherit;--on-surface-color-SCOPED-IN-%COMP%-ADBN: var(--on-surface-color);--background-color: inherit;--background-color-SCOPED-IN-%COMP%-ADBN: var(--background-color);--on-background-color: inherit;--on-background-color-SCOPED-IN-%COMP%-ADBN: var(--on-background-color)}:host{display:flex;flex-direction:column;justify-content:flex-start;color:var(--on-surface-color-SCOPED-IN-%COMP%-ADBN)}:host .message{padding:8px 16px}:host .message .header{display:flex;justify-content:flex-start;align-items:center;padding:8px 0;box-sizing:border-box;gap:8px}:host .message .header .name{font-size:14px;font-weight:700}:host .message .header .description{display:flex;justify-content:flex-start;gap:4px;font-size:12px}:host .message .header img{width:40px;height:40px;border-radius:50%;background-color:var(--primary-color-SCOPED-IN-%COMP%-ADBN)}:host .message .content{font-size:14px;padding-bottom:24px;box-sizing:border-box}:host .message .bottom.actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}:host .message .bottom.actions button{height:32px;padding:0 8px;--mdc-outlined-button-label-text-size: 12px}:host mat-divider{width:calc(100% - 16px);box-sizing:border-box;margin:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: ActionsPipe, name: "resolveActions" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: DataAccessorPipe, name: "dataAccessor" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: FallbackSrcDirective, selector: "[fallbackSrc]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
67
  }
68
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThreadMessagesSectionOrganism, decorators: [{
69
69
  type: Component,
@@ -114,6 +114,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
114
114
  directive: ThreadMessagesSectionOrganismStore,
115
115
  inputs: ['comments', 'noCommentMessage', 'commentActions']
116
116
  }
117
- ], styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-%COMP%-Aiop: var(--primary-color);--on-primary-color: inherit;--on-primary-color-SCOPED-IN-%COMP%-Aiop: var(--on-primary-color);--surface-color: inherit;--surface-color-SCOPED-IN-%COMP%-Aiop: var(--surface-color);--on-surface-color: inherit;--on-surface-color-SCOPED-IN-%COMP%-Aiop: var(--on-surface-color);--background-color: inherit;--background-color-SCOPED-IN-%COMP%-Aiop: var(--background-color);--on-background-color: inherit;--on-background-color-SCOPED-IN-%COMP%-Aiop: var(--on-background-color)}:host{display:flex;flex-direction:column;justify-content:flex-start;color:var(--on-surface-color-SCOPED-IN-%COMP%-Aiop)}:host .message{padding:8px 16px}:host .message .header{display:flex;justify-content:flex-start;align-items:center;padding:8px 0;box-sizing:border-box;gap:8px}:host .message .header .name{font-size:14px;font-weight:700}:host .message .header .description{display:flex;justify-content:flex-start;gap:4px;font-size:12px}:host .message .header img{width:40px;height:40px;border-radius:50%;background-color:var(--primary-color-SCOPED-IN-%COMP%-Aiop)}:host .message .content{font-size:14px;padding-bottom:24px;box-sizing:border-box}:host .message .bottom.actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}:host .message .bottom.actions button{height:32px;padding:0 8px;--mdc-outlined-button-label-text-size: 12px}:host mat-divider{width:calc(100% - 16px);box-sizing:border-box;margin:0 8px}\n"] }]
117
+ ], styles: [":host{display:block;--primary-color: inherit;--primary-color-SCOPED-IN-%COMP%-ADBN: var(--primary-color);--on-primary-color: inherit;--on-primary-color-SCOPED-IN-%COMP%-ADBN: var(--on-primary-color);--surface-color: inherit;--surface-color-SCOPED-IN-%COMP%-ADBN: var(--surface-color);--on-surface-color: inherit;--on-surface-color-SCOPED-IN-%COMP%-ADBN: var(--on-surface-color);--background-color: inherit;--background-color-SCOPED-IN-%COMP%-ADBN: var(--background-color);--on-background-color: inherit;--on-background-color-SCOPED-IN-%COMP%-ADBN: var(--on-background-color)}:host{display:flex;flex-direction:column;justify-content:flex-start;color:var(--on-surface-color-SCOPED-IN-%COMP%-ADBN)}:host .message{padding:8px 16px}:host .message .header{display:flex;justify-content:flex-start;align-items:center;padding:8px 0;box-sizing:border-box;gap:8px}:host .message .header .name{font-size:14px;font-weight:700}:host .message .header .description{display:flex;justify-content:flex-start;gap:4px;font-size:12px}:host .message .header img{width:40px;height:40px;border-radius:50%;background-color:var(--primary-color-SCOPED-IN-%COMP%-ADBN)}:host .message .content{font-size:14px;padding-bottom:24px;box-sizing:border-box}:host .message .bottom.actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}:host .message .bottom.actions button{height:32px;padding:0 8px;--mdc-outlined-button-label-text-size: 12px}:host mat-divider{width:calc(100% - 16px);box-sizing:border-box;margin:0 8px}\n"] }]
118
118
  }] });
119
119
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkLW1lc3NhZ2VzLXNlY3Rpb24ub3JnYW5pc20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbXBvbmVudHMvc3JjL2xpYi9vcmdhbmlzbXMvdGhyZWFkLW1lc3NhZ2VzLXNlY3Rpb24vdGhyZWFkLW1lc3NhZ2VzLXNlY3Rpb24ub3JnYW5pc20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFXLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUc5RCxNQUFNLE9BQU8sa0NBQWtDO0lBRC9DO1FBRVcsYUFBUSxHQUFHLEtBQUssQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUMxQixxQkFBZ0IsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxLQUFLLENBQVUsRUFBRSxDQUFDLENBQUM7S0FDOUM7OEdBSlksa0NBQWtDO2tHQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRDlDLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOztBQStEL0IsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGlCQUFpQjtJQXhEcEU7O1FBeURZLFVBQUssR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztLQUM5RDs4R0FGWSw2QkFBNkI7a0dBQTdCLDZCQUE2QixpSEE5RDdCLGtDQUFrQywySUFpQm5DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVCx5aURBMUNDLFlBQVksMEJBQ1osV0FBVyxzREFDWCxlQUFlLHVOQUNmLGdCQUFnQixvREFDaEIsZ0JBQWdCLG1JQUNoQixvQkFBb0I7OzJGQStDWCw2QkFBNkI7a0JBeER6QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjtxQkFDckIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1QsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0sa0JBQy9CO3dCQUNkOzRCQUNFLFNBQVMsRUFBRSxrQ0FBa0M7NEJBQzdDLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDM0Q7cUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbnMsIE5nQXRvbWljQ29tcG9uZW50IH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IEZhbGxiYWNrU3JjRGlyZWN0aXZlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vZGlyZWN0aXZlcy9mYWxsYmFjay1zcmMnO1xuaW1wb3J0IHsgRGF0YUFjY2Vzc29yUGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RhdGEtYWNjZXNzb3InO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEFjdGlvbnNQaXBlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvYWN0aW9ucyc7XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgVGhyZWFkTWVzc2FnZXNTZWN0aW9uT3JnYW5pc21TdG9yZTxUPiB7XG4gIHJlYWRvbmx5IGNvbW1lbnRzID0gaW5wdXQ8VFtdPihbXSk7XG4gIHJlYWRvbmx5IG5vQ29tbWVudE1lc3NhZ2UgPSBpbnB1dCgn44G+44Gg44Kz44Oh44Oz44OI44Gv44GC44KK44G+44Gb44KT44CCJyk7XG4gIHJlYWRvbmx5IGNvbW1lbnRBY3Rpb25zID0gaW5wdXQ8QWN0aW9ucz4oW10pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvcmdhbmlzbXMtdGhyZWFkLXNlY3Rpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFjdGlvbnNQaXBlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBEYXRhQWNjZXNzb3JQaXBlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgRmFsbGJhY2tTcmNEaXJlY3RpdmUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIEBpZiAoc3RvcmUuY29tbWVudHMoKT8ubGVuZ3RoID09PSAwKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxzcGFuPnt7IHN0b3JlLm5vQ29tbWVudE1lc3NhZ2UoKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGZvciAoY29tbWVudCBvZiBzdG9yZS5jb21tZW50cygpID8/IFtdOyB0cmFjayBjb21tZW50KSB7XG4gICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cImNvbW1lbnQgfCBkYXRhQWNjZXNzb3I6J2ljb25VcmwnXCIgZmFsbGJhY2tTcmMgYWx0PVwiXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgY29tbWVudCB8IGRhdGFBY2Nlc3NvcjonYXV0aG9yTmFtZScgfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBjb21tZW50IHwgZGF0YUFjY2Vzc29yOidkZXNjcmlwdGlvbicgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8c3Bhbj57eyBjb21tZW50IHwgZGF0YUFjY2Vzc29yOidjb250ZW50JyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbSBhY3Rpb25zXCI+XG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBzdG9yZS5jb21tZW50QWN0aW9ucygpIHwgcmVzb2x2ZUFjdGlvbnM6Y29tbWVudDsgdHJhY2sgYWN0aW9uLmlkKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BhdGNoKGFjdGlvbilcIlxuICAgICAgICAgID57eyBhY3Rpb24ubmFtZSB9fTwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWRpdmlkZXIgLz5cbiAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi90aHJlYWQtbWVzc2FnZXMtc2VjdGlvbi5vcmdhbmlzbS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogVGhyZWFkTWVzc2FnZXNTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICAgIGlucHV0czogWydjb21tZW50cycsICdub0NvbW1lbnRNZXNzYWdlJywgJ2NvbW1lbnRBY3Rpb25zJ11cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhyZWFkTWVzc2FnZXNTZWN0aW9uT3JnYW5pc20gZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChUaHJlYWRNZXNzYWdlc1NlY3Rpb25PcmdhbmlzbVN0b3JlKTtcbn1cbiJdfQ==
@@ -1,25 +1,41 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, Directive, computed, inject, input, signal } from '@angular/core';
2
+ import { Component, Directive, InjectionToken, Injector, computed, effect, inject, input, runInInjectionContext, signal } from '@angular/core';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { SelectionModel } from '@angular/cdk/collections';
3
5
  import { RouterOutletFrame } from '@ng-atomic/components/frames/router-outlet';
4
6
  import { getType, IndexTemplate } from '@ng-atomic/components/templates/_index';
5
7
  import { injectAll } from '@ng-atomic/common/stores/entities';
6
8
  import { injectModel, injectModelName } from '@ng-atomic/common/pipes/domain';
7
- import { Effect, InjectableComponent, NgAtomicComponent, _computed } from '@ng-atomic/core';
8
- import { ActivatedRoute, Router } from '@angular/router';
9
+ import { Effect, InjectableComponent, NgAtomicComponent, _computed, applyToInput, provideEffect } from '@ng-atomic/core';
9
10
  import { buildColumns, injectIndexForm } from '@ng-atomic/components/organisms/table';
10
11
  import { injectIsRootPage, injectNavStartActions, injectSideAppNavStartActions, makeConfig, NavActionId } from '@ng-atomic/common/services/ui';
11
- import { SelectionModel } from '@angular/cdk/collections';
12
- import { initializeStore, injectEntityIdName, provideStoreInitializer } from '@ng-atomic/components/pages/form';
13
- import { injectChildRouteParam } from "@ng-atomic/common/utils";
12
+ import { injectEntityIdName } from '@ng-atomic/components/pages/form';
13
+ import { computedRawValue, injectChildRouteParam, injectHasNext } from "@ng-atomic/common/utils";
14
+ import { AppService } from '@ng-atomic/common/services/app';
15
+ import { IndexPipe } from '@ng-atomic/common/pipes/index';
16
+ import { map } from 'rxjs';
17
+ import { computedAsync } from 'ngxtension/computed-async';
18
+ import { makeInitializerConfig } from '@ng-atomic/common/services/initializer';
19
+ import { FormGroup } from '@angular/forms';
20
+ import { IndexLengthPipe } from '@ng-atomic/common/pipes/index-length';
14
21
  import * as i0 from "@angular/core";
15
22
  export function injectHighlight(key) {
16
- const transferId = injectChildRouteParam(key);
17
- return computed(() => new SelectionModel(true, [transferId()]));
23
+ const itemId = injectChildRouteParam(key);
24
+ return computed(() => new SelectionModel(true, itemId() ? [itemId()] : []));
25
+ }
26
+ const FILTER_FUNC = new InjectionToken('FILTER_FUNC');
27
+ export function provideFilterFunc(useFactory) {
28
+ const wrapped = () => (injector = inject(Injector)) => runInInjectionContext(injector, useFactory);
29
+ return { provide: FILTER_FUNC, useFactory: wrapped };
30
+ }
31
+ export function injectFilterFunc() {
32
+ return (inject(FILTER_FUNC, { optional: true }) ?? (() => () => true))();
18
33
  }
19
34
  var ActionId;
20
35
  (function (ActionId) {
21
- ActionId["BACK"] = "[@ng-atomic/components/pages] Back";
36
+ ActionId["BACK"] = "[@ng-atomic/components:pages/index] Back";
22
37
  ActionId["CHECKBOX_CLICK"] = "[@ng-atomic/components/pages] CheckboxClick";
38
+ ActionId["HEADER_CHECKBOX_CLICK"] = "[@ng-atomic/components/pages] HeaderCheckboxClick";
23
39
  ActionId["ADD"] = "[@ng-atomic/components/pages] Add";
24
40
  ActionId["DETAIL"] = "[@ng-atomic/components/pages] Detail";
25
41
  ActionId["CLOSE"] = "[@ng-atomic/components/pages] Close";
@@ -30,45 +46,205 @@ export class IndexPageStore extends InjectableComponent {
30
46
  const highlight = injectHighlight(injectEntityIdName());
31
47
  const isRootPage = injectIsRootPage();
32
48
  const navStartActions = injectNavStartActions(isRootPage);
33
- return (_, context) => ({
49
+ const filterFunc = injectFilterFunc();
50
+ const modelName = injectModelName();
51
+ return () => ({
34
52
  style: {
35
53
  width: 'var(--page-width-lv3)',
36
54
  },
37
55
  items: [],
38
- itemActions: () => [],
39
- title: `${injectModelName()()}一覧`,
40
- type: getType(context),
56
+ itemActions: (() => []),
57
+ itemsMapper: undefined,
58
+ itemsLength: 0,
59
+ filterFunc,
60
+ title: modelName() ? `${modelName()}一覧` : `取得中...`,
61
+ type: 'table',
41
62
  selection: new SelectionModel(true, []),
42
63
  highlight: highlight(),
43
- form: injectIndexForm({
64
+ form: new FormGroup({}),
65
+ tableChildrenKey: null,
66
+ navStartActions: navStartActions(),
67
+ navEndActions: [],
68
+ });
69
+ }, ['components', 'pages', 'index']); }
70
+ static provideTypeConfig() {
71
+ return IndexPageStore.Config.provide(() => {
72
+ return (config, context) => ({ ...config, type: getType(context) });
73
+ });
74
+ }
75
+ static provideItemsFromRepository() {
76
+ return IndexPageStore.Config.provide(() => {
77
+ const Model = injectModel();
78
+ const items = Model ? injectAll(Model) : signal([]);
79
+ return (config) => ({ ...config, items: items() });
80
+ });
81
+ }
82
+ static provideSideAppNavStartActions() {
83
+ return IndexPageStore.Config.provide(() => {
84
+ const isRootPage = injectIsRootPage();
85
+ const navStartActions = injectSideAppNavStartActions(isRootPage);
86
+ return (config) => ({
87
+ ...config,
88
+ navStartActions: navStartActions(),
89
+ });
90
+ });
91
+ }
92
+ static { this.Initializer = makeInitializerConfig(IndexPageStore); }
93
+ static provideFormInitializer() {
94
+ return IndexPageStore.Initializer.provide((store) => {
95
+ const form = injectIndexForm({
44
96
  columns: buildColumns([
45
97
  'id',
46
98
  'createdAt',
47
99
  'updatedAt',
48
100
  (item) => [{ id: ActionId.DETAIL, icon: 'open_in_new', name: '詳細', payload: item }],
49
101
  ]),
102
+ });
103
+ applyToInput(store, 'form', form);
104
+ });
105
+ }
106
+ static provideFormValueStorageInitializer() {
107
+ return IndexPageStore.Initializer.provide((store) => {
108
+ let route = inject(ActivatedRoute);
109
+ const paths = route.pathFromRoot.map(r => r?.routeConfig?.path);
110
+ const key = `@ng-atomic/components/pages/index:${paths.filter((path) => !!path).join('/')}`;
111
+ store.form().patchValue(JSON.parse(localStorage.getItem(key) || '{}'));
112
+ store.form().valueChanges.subscribe(value => {
113
+ localStorage.setItem(key, JSON.stringify(value));
114
+ });
115
+ });
116
+ }
117
+ static provideItemsLengthInitializer() {
118
+ return [
119
+ IndexLengthPipe,
120
+ IndexPageStore.Initializer.provide((store) => {
121
+ const pipe = inject(IndexLengthPipe);
122
+ const formValue = computedRawValue(() => store.form());
123
+ effect(() => {
124
+ const itemsLength = pipe.transform(store.items(), formValue());
125
+ applyToInput(store, 'itemsLength', itemsLength);
126
+ }, { allowSignalWrites: true });
50
127
  }),
51
- tableChildrenKey: null,
52
- navStartActions: navStartActions(),
53
- navEndActions: [],
54
- filterFunc: (item) => true,
128
+ ];
129
+ }
130
+ static provideItemsMapperInitializer() {
131
+ return [
132
+ IndexPipe,
133
+ IndexPageStore.Initializer.provide((store) => {
134
+ const formValue = computedRawValue(() => store.form());
135
+ const indexPipe = inject(IndexPipe);
136
+ effect(() => {
137
+ const value = formValue();
138
+ const itemsMapper = (items) => {
139
+ // const filterFuncs = store.filterFuncs();
140
+ // console.debug('filterFuncs:', filterFuncs);
141
+ // for (const func of filterFuncs ?? []) {
142
+ // console.debug('items:', items);
143
+ // items = items.filter(func);
144
+ // console.debug('filteredItems:', items);
145
+ // }
146
+ return indexPipe.transform(items, value);
147
+ };
148
+ applyToInput(store, 'itemsMapper', itemsMapper);
149
+ }, { allowSignalWrites: true });
150
+ }),
151
+ ];
152
+ }
153
+ static provideDefaultInitializer() {
154
+ return [
155
+ IndexPageStore.provideFormInitializer(),
156
+ IndexPageStore.provideFormValueStorageInitializer(),
157
+ IndexPageStore.provideItemsLengthInitializer(),
158
+ IndexPageStore.provideItemsMapperInitializer(),
159
+ ];
160
+ }
161
+ static provideBackEffect() {
162
+ return provideEffect(IndexPageStore.ActionId.BACK, () => {
163
+ return () => history.back();
55
164
  });
56
- }, ['components', 'pages', 'index']); }
57
- static { this.provideItemsFromRepository = () => IndexPageStore.Config.provide(() => {
58
- const Model = injectModel();
59
- const items = Model ? injectAll(Model) : signal([]);
60
- return (config) => ({ ...config, items: items() });
61
- }); }
62
- static { this.provideSideAppNavStartActions = () => IndexPageStore.Config.provide(() => {
63
- const isRootPage = injectIsRootPage();
64
- const navStartActions = injectSideAppNavStartActions(isRootPage);
65
- return (config) => ({
66
- ...config,
67
- navStartActions: navStartActions(),
165
+ }
166
+ static provideDetailEffect() {
167
+ return provideEffect(IndexPageStore.ActionId.DETAIL, () => {
168
+ const app = inject(AppService);
169
+ const store = inject(IndexPageStore);
170
+ const hasNext = injectHasNext();
171
+ return (item) => {
172
+ app.router.navigate([item.id], {
173
+ relativeTo: store.route,
174
+ replaceUrl: hasNext(),
175
+ });
176
+ };
177
+ });
178
+ }
179
+ static provideAddEffect() {
180
+ return provideEffect(IndexPageStore.ActionId.ADD, () => {
181
+ const app = inject(AppService);
182
+ const hasNext = injectHasNext();
183
+ const route = inject(ActivatedRoute);
184
+ return () => {
185
+ app.router.navigate(['new'], {
186
+ relativeTo: route,
187
+ replaceUrl: !!hasNext(),
188
+ });
189
+ };
190
+ });
191
+ }
192
+ static provideCheckboxClickEffect() {
193
+ return provideEffect(IndexTemplate.ActionId.TABLE_CHECKBOX_CLICK, () => {
194
+ const store = inject(IndexPageStore);
195
+ return (item) => {
196
+ store.selection().toggle(item.id);
197
+ };
198
+ });
199
+ }
200
+ static provideTableHeaderClickEffect() {
201
+ return provideEffect(IndexTemplate.ActionId.TABLE_HEADER_CLICK, () => {
202
+ const store = inject(IndexPageStore);
203
+ return (key) => {
204
+ const sort = store.form().get(['sort']).value;
205
+ const order = key === sort.key && sort.order === 'asc' ? 'desc' : 'asc';
206
+ store.form().patchValue({ sort: { key, order } });
207
+ };
208
+ });
209
+ }
210
+ static provideSideNavEffects() {
211
+ return provideEffect(NavActionId.TOGGLE_SIDE_NAV, () => {
212
+ const app = inject(AppService);
213
+ return () => app.sideNav.toggle();
68
214
  });
69
- }); }
70
- static { this.provideInitializer = (provideStoreInitializer); }
71
- static { this.provideDefaultInitializer = () => provideStoreInitializer(() => { }); }
215
+ }
216
+ static provideHeaderCheckboxClickEffect() {
217
+ return provideEffect(IndexPageStore.ActionId.HEADER_CHECKBOX_CLICK, () => {
218
+ const store = inject(IndexPageStore);
219
+ return () => {
220
+ if (store.isAllSelected()) {
221
+ store.selection().clear();
222
+ }
223
+ else {
224
+ store.displayedItems().forEach(entry => store.selection().select(entry.id));
225
+ }
226
+ };
227
+ });
228
+ }
229
+ static provideDefaultEffects() {
230
+ return [
231
+ IndexPageStore.provideDetailEffect(),
232
+ IndexPageStore.provideAddEffect(),
233
+ IndexPageStore.provideBackEffect(),
234
+ IndexPageStore.provideHeaderCheckboxClickEffect(),
235
+ IndexPageStore.provideCheckboxClickEffect(),
236
+ IndexPageStore.provideTableHeaderClickEffect(),
237
+ IndexPageStore.provideSideNavEffects(),
238
+ ];
239
+ }
240
+ static provideDefault() {
241
+ return [
242
+ IndexPageStore.Config.provide(),
243
+ IndexPageStore.provideTypeConfig(),
244
+ IndexPageStore.provideDefaultInitializer(),
245
+ IndexPageStore.provideDefaultEffects(),
246
+ ];
247
+ }
72
248
  constructor() {
73
249
  super();
74
250
  this.config = IndexPageStore.Config.inject();
@@ -83,12 +259,25 @@ export class IndexPageStore extends InjectableComponent {
83
259
  this.navStartActions = input(_computed(() => this.config().navStartActions));
84
260
  this.navEndActions = input(_computed(() => this.config().navEndActions));
85
261
  this.filterFunc = input(_computed(() => this.config().filterFunc));
86
- this.filteredItems = computed(() => (this.items() ?? []).filter(this.filterFunc()));
262
+ this.itemsMapper = input(_computed(() => this.config().itemsMapper));
87
263
  this.tableChildrenKey = input(_computed(() => this.config().tableChildrenKey));
88
- initializeStore(this);
264
+ this.itemsLength = input(_computed(() => this.config().itemsLength));
265
+ this.displayedItems = computed(() => {
266
+ let items = this.items() ?? [];
267
+ const filterFunc = this.filterFunc();
268
+ items = filterFunc ? items.filter(filterFunc) : items;
269
+ const itemsMapper = this.itemsMapper();
270
+ return itemsMapper ? itemsMapper(items) : items;
271
+ });
272
+ this.selectedIds = computedAsync(() => this.selection().changed.pipe(map(() => this.selection()?.selected ?? [])), { initialValue: [] });
273
+ this.selected = computed(() => this.items().filter(entry => this.selectedIds().includes(entry.id)));
274
+ this.isAllSelected = computed(() => {
275
+ return this.displayedItems().every(entry => this.selectedIds().includes(entry.id));
276
+ });
277
+ IndexPageStore.Initializer.initializeStore(this);
89
278
  }
90
279
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: IndexPageStore, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
91
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.2.2", type: IndexPageStore, isStandalone: true, inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", 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 }, form: { classPropertyName: "form", publicName: "form", 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 }, navStartActions: { classPropertyName: "navStartActions", publicName: "navStartActions", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: "navEndActions", publicName: "navEndActions", isSignal: true, isRequired: false, transformFunction: null }, filterFunc: { classPropertyName: "filterFunc", publicName: "filterFunc", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: "tableChildrenKey", publicName: "tableChildrenKey", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
280
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.2.2", type: IndexPageStore, isStandalone: true, inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", 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 }, form: { classPropertyName: "form", publicName: "form", 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 }, navStartActions: { classPropertyName: "navStartActions", publicName: "navStartActions", isSignal: true, isRequired: false, transformFunction: null }, navEndActions: { classPropertyName: "navEndActions", publicName: "navEndActions", isSignal: true, isRequired: false, transformFunction: null }, filterFunc: { classPropertyName: "filterFunc", publicName: "filterFunc", isSignal: true, isRequired: false, transformFunction: null }, itemsMapper: { classPropertyName: "itemsMapper", publicName: "itemsMapper", isSignal: true, isRequired: false, transformFunction: null }, tableChildrenKey: { classPropertyName: "tableChildrenKey", publicName: "tableChildrenKey", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: "itemsLength", publicName: "itemsLength", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
92
281
  }
93
282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: IndexPageStore, decorators: [{
94
283
  type: Directive,
@@ -101,17 +290,17 @@ export class IndexPage extends NgAtomicComponent {
101
290
  this.router = inject(Router);
102
291
  }
103
292
  back() {
104
- this.dispatch({ id: ActionId.BACK });
293
+ this.dispatch({ id: IndexPageStore.ActionId.BACK });
105
294
  }
106
295
  close() {
107
296
  this.dispatch({ id: ActionId.CLOSE });
108
297
  }
109
- checkboxClick(item) {
110
- this.store.selection().toggle(item.id);
111
- }
112
298
  itemClick(item) {
113
299
  this.dispatch({ id: ActionId.DETAIL, payload: item });
114
300
  }
301
+ onCheckboxClick(item) {
302
+ this.dispatch({ id: IndexPageStore.ActionId.HEADER_CHECKBOX_CLICK, payload: item });
303
+ }
115
304
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: IndexPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
116
305
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: IndexPage, isStandalone: true, selector: "pages-index", usesInheritance: true, hostDirectives: [{ directive: IndexPageStore, inputs: ["items", "items"] }], ngImport: i0, template: `
117
306
  <frames-router-outlet>
@@ -120,7 +309,8 @@ export class IndexPage extends NgAtomicComponent {
120
309
  [title]="store.title()"
121
310
  [type]="store.type()"
122
311
  [tableChildrenKey]="store.tableChildrenKey()"
123
- [items]="store.filteredItems()"
312
+ [items]="store.displayedItems()"
313
+ [itemsLength]="store.itemsLength()"
124
314
  [itemActions]="store.itemActions()"
125
315
  [form]="store.form()"
126
316
  [selection]="store.selection()"
@@ -130,7 +320,7 @@ export class IndexPage extends NgAtomicComponent {
130
320
  (action)="dispatch($event)"
131
321
  />
132
322
  </frames-router-outlet>
133
- `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-xJWs: var(--page-width-lv3);--primary-color-SCOPED-IN-index-xJWs: var(--primary-color);--on-primary-color-SCOPED-IN-index-xJWs: var(--on-primary-color);--surface-color-SCOPED-IN-index-xJWs: var(--surface-color);--on-surface-color-SCOPED-IN-index-xJWs: var(--on-surface-color);--on-background-color-SCOPED-IN-index-xJWs: var(--on-background-color);--background-color-SCOPED-IN-index-xJWs: var(--background-color);--navigator-background-color-SCOPED-IN-index-xJWs: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-xJWs: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-xJWs: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-xJWs: var(--table-on-background-color)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-xJWs)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-xJWs);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-xJWs);--surface-color: var(--surface-color-SCOPED-IN-index-xJWs);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-xJWs);--background-color: var(--background-color-SCOPED-IN-index-xJWs);--on-background-color: var(--on-background-color-SCOPED-IN-index-xJWs);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-xJWs);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-xJWs);--table-background-color: var(--table-background-color-SCOPED-IN-index-xJWs);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-xJWs)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet" }, { kind: "component", type: IndexTemplate, selector: "templates-index" }] }); }
323
+ `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-Zi6m: var(--page-width-lv3);--primary-color-SCOPED-IN-index-Zi6m: var(--primary-color);--on-primary-color-SCOPED-IN-index-Zi6m: var(--on-primary-color);--surface-color-SCOPED-IN-index-Zi6m: var(--surface-color);--on-surface-color-SCOPED-IN-index-Zi6m: var(--on-surface-color);--on-background-color-SCOPED-IN-index-Zi6m: var(--on-background-color);--background-color-SCOPED-IN-index-Zi6m: var(--background-color);--navigator-background-color-SCOPED-IN-index-Zi6m: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-Zi6m: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-Zi6m: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-Zi6m: var(--table-on-background-color)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-Zi6m)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-Zi6m);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-Zi6m);--surface-color: var(--surface-color-SCOPED-IN-index-Zi6m);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-Zi6m);--background-color: var(--background-color-SCOPED-IN-index-Zi6m);--on-background-color: var(--on-background-color-SCOPED-IN-index-Zi6m);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-Zi6m);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-Zi6m);--table-background-color: var(--table-background-color-SCOPED-IN-index-Zi6m);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-Zi6m)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet" }, { kind: "component", type: IndexTemplate, selector: "templates-index" }] }); }
134
324
  }
135
325
  __decorate([
136
326
  Effect(IndexTemplate.ActionId.BACK),
@@ -145,22 +335,23 @@ __decorate([
145
335
  __metadata("design:returntype", void 0)
146
336
  ], IndexPage.prototype, "close", null);
147
337
  __decorate([
148
- Effect(IndexTemplate.ActionId.CHECKBOX_CLICK),
338
+ Effect(IndexTemplate.ActionId.ITEM_CLICK),
149
339
  __metadata("design:type", Function),
150
340
  __metadata("design:paramtypes", [Object]),
151
341
  __metadata("design:returntype", void 0)
152
- ], IndexPage.prototype, "checkboxClick", null);
342
+ ], IndexPage.prototype, "itemClick", null);
153
343
  __decorate([
154
- Effect(IndexTemplate.ActionId.ITEM_CLICK),
344
+ Effect(IndexTemplate.ActionId.TABLE_HEADER_CHECKBOX_CLICK),
155
345
  __metadata("design:type", Function),
156
346
  __metadata("design:paramtypes", [Object]),
157
347
  __metadata("design:returntype", void 0)
158
- ], IndexPage.prototype, "itemClick", null);
348
+ ], IndexPage.prototype, "onCheckboxClick", null);
159
349
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: IndexPage, decorators: [{
160
350
  type: Component,
161
351
  args: [{ selector: 'pages-index', standalone: true, imports: [
162
352
  RouterOutletFrame,
163
353
  IndexTemplate,
354
+ IndexLengthPipe,
164
355
  ], template: `
165
356
  <frames-router-outlet>
166
357
  <templates-index
@@ -168,7 +359,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
168
359
  [title]="store.title()"
169
360
  [type]="store.type()"
170
361
  [tableChildrenKey]="store.tableChildrenKey()"
171
- [items]="store.filteredItems()"
362
+ [items]="store.displayedItems()"
363
+ [itemsLength]="store.itemsLength()"
172
364
  [itemActions]="store.itemActions()"
173
365
  [form]="store.form()"
174
366
  [selection]="store.selection()"
@@ -183,6 +375,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
183
375
  directive: IndexPageStore,
184
376
  inputs: ['items'],
185
377
  },
186
- ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-xJWs: var(--page-width-lv3);--primary-color-SCOPED-IN-index-xJWs: var(--primary-color);--on-primary-color-SCOPED-IN-index-xJWs: var(--on-primary-color);--surface-color-SCOPED-IN-index-xJWs: var(--surface-color);--on-surface-color-SCOPED-IN-index-xJWs: var(--on-surface-color);--on-background-color-SCOPED-IN-index-xJWs: var(--on-background-color);--background-color-SCOPED-IN-index-xJWs: var(--background-color);--navigator-background-color-SCOPED-IN-index-xJWs: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-xJWs: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-xJWs: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-xJWs: var(--table-on-background-color)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-xJWs)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-xJWs);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-xJWs);--surface-color: var(--surface-color-SCOPED-IN-index-xJWs);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-xJWs);--background-color: var(--background-color-SCOPED-IN-index-xJWs);--on-background-color: var(--on-background-color-SCOPED-IN-index-xJWs);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-xJWs);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-xJWs);--table-background-color: var(--table-background-color-SCOPED-IN-index-xJWs);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-xJWs)}\n"] }]
187
- }], propDecorators: { back: [], close: [], checkboxClick: [], itemClick: [] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL19pbmRleC9pbmRleC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQVcsTUFBTSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9JLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRWhFLE1BQU0s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QUUsY0FBYzs0QkFDekIsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDO3lCQUNsQjtxQkFDRjs4QkFRUyxJQUFJLE1BS0osS0FBSyxNQUtMLGFBQWEsTUFLYixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEaXJlY3RpdmUsIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyT3V0bGV0RnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL3JvdXRlci1vdXRsZXQnO1xuaW1wb3J0IHsgZ2V0VHlwZSwgSW5kZXhUZW1wbGF0ZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvX2luZGV4JztcbmltcG9ydCB7IGluamVjdEFsbCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3N0b3Jlcy9lbnRpdGllcyc7XG5pbXBvcnQgeyBpbmplY3RNb2RlbCwgaW5qZWN0TW9kZWxOYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZG9tYWluJztcbmltcG9ydCB7IEFjdGlvbnMsIEVmZmVjdCwgSW5qZWN0YWJsZUNvbXBvbmVudCwgTmdBdG9taWNDb21wb25lbnQsIF9jb21wdXRlZCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGJ1aWxkQ29sdW1ucywgaW5qZWN0SW5kZXhGb3JtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJsZSc7XG5pbXBvcnQgeyBpbmplY3RJc1Jvb3RQYWdlLCBpbmplY3ROYXZTdGFydEFjdGlvbnMsIGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMsIG1ha2VDb25maWcsIE5hdkFjdGlvbklkIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWknO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZVN0b3JlLCBpbmplY3RFbnRpdHlJZE5hbWUsIHByb3ZpZGVTdG9yZUluaXRpYWxpemVyIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2Zvcm0nO1xuaW1wb3J0IHsgaW5qZWN0Q2hpbGRSb3V0ZVBhcmFtIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIaWdobGlnaHQoa2V5OiBzdHJpbmcpOiBTaWduYWw8U2VsZWN0aW9uTW9kZWw8c3RyaW5nPj4ge1xuICBjb25zdCB0cmFuc2ZlcklkID0gaW5qZWN0Q2hpbGRSb3V0ZVBhcmFtKGtleSk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbdHJhbnNmZXJJZCgpXSkpO1xufVxuXG5lbnVtIEFjdGlvbklkIHtcbiAgQkFDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzXSBCYWNrJyxcbiAgQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlc10gQ2hlY2tib3hDbGljaycsXG4gIEFERCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzXSBBZGQnLFxuICBERVRBSUwgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlc10gRGV0YWlsJyxcbiAgQ0xPU0UgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlc10gQ2xvc2UnLFxufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEluZGV4UGFnZVN0b3JlIGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICBzdGF0aWMgcmVhZG9ubHkgQ29uZmlnID0gbWFrZUNvbmZpZygoKSA9PiB7XG4gICAgY29uc3QgaGlnaGxpZ2h0ID0gaW5qZWN0SGlnaGxpZ2h0KGluamVjdEVudGl0eUlkTmFtZSgpKTtcbiAgICBjb25zdCBpc1Jvb3RQYWdlID0gaW5qZWN0SXNSb290UGFnZSgpO1xuICAgIGNvbnN0IG5hdlN0YXJ0QWN0aW9ucyA9IGluamVjdE5hdlN0YXJ0QWN0aW9ucyhpc1Jvb3RQYWdlKTtcbiAgXG4gICAgcmV0dXJuIChfLCBjb250ZXh0KSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgd2lkdGg6ICd2YXIoLS1wYWdlLXdpZHRoLWx2MyknLFxuICAgICAgfSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGl0ZW1BY3Rpb25zOiA8QWN0aW9ucz4oKSA9PiBbXSxcbiAgICAgIHRpdGxlOiBgJHtpbmplY3RNb2RlbE5hbWUoKSgpfeS4gOimp2AsXG4gICAgICB0eXBlOiBnZXRUeXBlKGNvbnRleHQpLFxuICAgICAgc2VsZWN0aW9uOiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSksXG4gICAgICBoaWdobGlnaHQ6IGhpZ2hsaWdodCgpLFxuICAgICAgZm9ybTogaW5qZWN0SW5kZXhGb3JtKHtcbiAgICAgICAgY29sdW1uczogYnVpbGRDb2x1bW5zKFtcbiAgICAgICAgICAnaWQnLCBcbiAgICAgICAgICAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAndXBkYXRlZEF0JyxcbiAgICAgICAgICAoaXRlbToge2lkOiBzdHJpbmd9KSA9PiBbeyBpZDogQWN0aW9uSWQuREVUQUlMLCBpY29uOiAnb3Blbl9pbl9uZXcnLCBuYW1lOiAn6Kmz57SwJywgcGF5bG9hZDogaXRlbSB9XSxcbiAgICAgICAgXSksXG4gICAgICB9KSxcbiAgICAgIHRhYmxlQ2hpbGRyZW5LZXk6IG51bGwsXG4gICAgICBuYXZTdGFydEFjdGlvbnM6IG5hdlN0YXJ0QWN0aW9ucygpLFxuICAgICAgbmF2RW5kQWN0aW9uczogPEFjdGlvbnM+W10sXG4gICAgICBmaWx0ZXJGdW5jOiAoaXRlbTogYW55KSA9PiB0cnVlLFxuICAgIH0pO1xuICB9LCBbJ2NvbXBvbmVudHMnLCAncGFnZXMnLCAnaW5kZXgnXSk7XG4gIHN0YXRpYyBwcm92aWRlSXRlbXNGcm9tUmVwb3NpdG9yeSA9ICgpID0+IEluZGV4UGFnZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICBjb25zdCBNb2RlbCA9IGluamVjdE1vZGVsKCk7XG4gICAgY29uc3QgaXRlbXMgPSBNb2RlbCA/IGluamVjdEFsbChNb2RlbCkgOiBzaWduYWwoW10pO1xuICAgIHJldHVybiAoY29uZmlnKSA9PiAoey4uLmNvbmZpZywgaXRlbXM6IGl0ZW1zKCl9KTtcbiAgfSk7XG4gIHN0YXRpYyBwcm92aWRlU2lkZUFwcE5hdlN0YXJ0QWN0aW9ucyA9ICgpID0+IEluZGV4UGFnZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICBjb25zdCBpc1Jvb3RQYWdlID0gaW5qZWN0SXNSb290UGFnZSgpO1xuICAgIGNvbnN0IG5hdlN0YXJ0QWN0aW9ucyA9IGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMoaXNSb290UGFnZSk7XG4gICAgcmV0dXJuIChjb25maWcpID0+ICh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYXZTdGFydEFjdGlvbnM6IG5hdlN0YXJ0QWN0aW9ucygpLFxuICAgIH0pO1xuICB9KTtcbiAgc3RhdGljIHByb3ZpZGVJbml0aWFsaXplciA9IHByb3ZpZGVTdG9yZUluaXRpYWxpemVyPEluZGV4UGFnZVN0b3JlPjtcbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0SW5pdGlhbGl6ZXIgPSAoKSA9PiBwcm92aWRlU3RvcmVJbml0aWFsaXplcjxJbmRleFBhZ2VTdG9yZT4oKCkgPT4geyB9KTtcblxuICByZWFkb25seSBjb25maWcgPSBJbmRleFBhZ2VTdG9yZS5Db25maWcuaW5qZWN0KCk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnR5cGUpKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtcykpO1xuICByZWFkb25seSBpdGVtQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1BY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGl0bGUpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZvcm0pKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2VsZWN0aW9uKSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhpZ2hsaWdodCkpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZTdGFydEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgZmlsdGVyRnVuYyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZpbHRlckZ1bmMpKTtcbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLml0ZW1zKCkgPz8gW10pLmZpbHRlcih0aGlzLmZpbHRlckZ1bmMoKSkpO1xuICByZWFkb25seSB0YWJsZUNoaWxkcmVuS2V5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVDaGlsZHJlbktleSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaW5pdGlhbGl6ZVN0b3JlKHRoaXMpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VzLWluZGV4JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck91dGxldEZyYW1lLFxuICAgIEluZGV4VGVtcGxhdGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIDxmcmFtZXMtcm91dGVyLW91dGxldD5cbiAgICA8dGVtcGxhdGVzLWluZGV4XG4gICAgICBbc3R5bGUud2lkdGhdPVwic3RvcmUuY29uZmlnKCkuc3R5bGUud2lkdGhcIlxuICAgICAgW3RpdGxlXT1cInN0b3JlLnRpdGxlKClcIlxuICAgICAgW3R5cGVdPVwic3RvcmUudHlwZSgpXCJcbiAgICAgIFt0YWJsZUNoaWxkcmVuS2V5XT1cInN0b3JlLnRhYmxlQ2hpbGRyZW5LZXkoKVwiXG4gICAgICBbaXRlbXNdPVwic3RvcmUuZmlsdGVyZWRJdGVtcygpXCJcbiAgICAgIFtpdGVtQWN0aW9uc109XCJzdG9yZS5pdGVtQWN0aW9ucygpXCJcbiAgICAgIFtmb3JtXT1cInN0b3JlLmZvcm0oKVwiXG4gICAgICBbc2VsZWN0aW9uXT1cInN0b3JlLnNlbGVjdGlvbigpXCJcbiAgICAgIFtoaWdobGlnaHRdPVwic3RvcmUuaGlnaGxpZ2h0KClcIlxuICAgICAgW25hdlN0YXJ0QWN0aW9uc109XCJzdG9yZS5uYXZTdGFydEFjdGlvbnMoKVwiXG4gICAgICBbbmF2RW5kQWN0aW9uc109XCJzdG9yZS5uYXZFbmRBY3Rpb25zKClcIlxuICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAvPlxuICA8L2ZyYW1lcy1yb3V0ZXItb3V0bGV0PlxuICBgLFxuICBzdHlsZVVybDogJy4vaW5kZXgucGFnZS5zY3NzJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IEluZGV4UGFnZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbJ2l0ZW1zJ10sXG4gICAgfSxcbiAgXSxcbiAgLy8gcHJvdmlkZXJzOiBbRWZmZWN0UmVkdWNlcl0sXG59KVxuZXhwb3J0IGNsYXNzIEluZGV4UGFnZSBleHRlbmRzIE5nQXRvbWljQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5CQUNLKVxuICBwcm90ZWN0ZWQgYmFjaygpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuQkFDS30pO1xuICB9XG5cbiAgQEVmZmVjdChOYXZBY3Rpb25JZC5DTE9TRSlcbiAgcHJvdGVjdGVkIGNsb3NlKCkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5DTE9TRX0pO1xuICB9XG5cbiAgQEVmZmVjdChJbmRleFRlbXBsYXRlLkFjdGlvbklkLkNIRUNLQk9YX0NMSUNLKVxuICBwcm90ZWN0ZWQgY2hlY2tib3hDbGljayhpdGVtOiB7aWQ6IHN0cmluZ30pIHtcbiAgICB0aGlzLnN0b3JlLnNlbGVjdGlvbigpLnRvZ2dsZShpdGVtLmlkKTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5JVEVNX0NMSUNLKVxuICBwcm90ZWN0ZWQgaXRlbUNsaWNrKGl0ZW06IHtpZDogc3RyaW5nfSkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5ERVRBSUwsIHBheWxvYWQ6IGl0ZW19KTtcbiAgfVxuXG4gIC8vIEBFZmZlY3QoQWN0aW9uSWQuREVUQUlMKVxuICAvLyBwcm90ZWN0ZWQgZGV0YWlsKGl0ZW06IHtpZDogc3RyaW5nfSkge1xuICAvLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtPy5pZCA/PyAnbmV3J10sIHtyZWxhdGl2ZVRvOiB0aGlzLnN0b3JlLnJvdXRlfSk7XG4gIC8vIH1cbn1cbiJdfQ==
378
+ ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv3-SCOPED-IN-index-Zi6m: var(--page-width-lv3);--primary-color-SCOPED-IN-index-Zi6m: var(--primary-color);--on-primary-color-SCOPED-IN-index-Zi6m: var(--on-primary-color);--surface-color-SCOPED-IN-index-Zi6m: var(--surface-color);--on-surface-color-SCOPED-IN-index-Zi6m: var(--on-surface-color);--on-background-color-SCOPED-IN-index-Zi6m: var(--on-background-color);--background-color-SCOPED-IN-index-Zi6m: var(--background-color);--navigator-background-color-SCOPED-IN-index-Zi6m: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-index-Zi6m: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-index-Zi6m: var(--table-background-color);--table-on-background-color-SCOPED-IN-index-Zi6m: var(--table-on-background-color)}:host .template{width:var(--page-width-lv3-SCOPED-IN-index-Zi6m)}:host *{--primary-color: var(--primary-color-SCOPED-IN-index-Zi6m);--on-primary-color: var(--on-primary-color-SCOPED-IN-index-Zi6m);--surface-color: var(--surface-color-SCOPED-IN-index-Zi6m);--on-surface-color: var(--on-surface-color-SCOPED-IN-index-Zi6m);--background-color: var(--background-color-SCOPED-IN-index-Zi6m);--on-background-color: var(--on-background-color-SCOPED-IN-index-Zi6m);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-index-Zi6m);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-index-Zi6m);--table-background-color: var(--table-background-color-SCOPED-IN-index-Zi6m);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-index-Zi6m)}\n"] }]
379
+ }], propDecorators: { back: [], close: [], itemClick: [], onCheckboxClick: [] } });
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL19pbmRleC9pbmRleC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQVcsTUFBTSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxn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RSxTQUFTLEVBQUUsY0FBYzs0QkFDekIsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDO3lCQUNsQjtxQkFDRjs4QkFPUyxJQUFJLE1BS0osS0FBSyxNQUtMLFNBQVMsTUFLVCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBydW5JbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBSb3V0ZXJPdXRsZXRGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvcm91dGVyLW91dGxldCc7XG5pbXBvcnQgeyBnZXRUeXBlLCBJbmRleFRlbXBsYXRlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9faW5kZXgnO1xuaW1wb3J0IHsgaW5qZWN0QWxsIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc3RvcmVzL2VudGl0aWVzJztcbmltcG9ydCB7IGluamVjdE1vZGVsLCBpbmplY3RNb2RlbE5hbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9kb21haW4nO1xuaW1wb3J0IHsgQWN0aW9ucywgRWZmZWN0LCBJbmplY3RhYmxlQ29tcG9uZW50LCBOZ0F0b21pY0NvbXBvbmVudCwgX2NvbXB1dGVkLCBhcHBseVRvSW5wdXQsIHByb3ZpZGVFZmZlY3QgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgYnVpbGRDb2x1bW5zLCBpbmplY3RJbmRleEZvcm0gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3RhYmxlJztcbmltcG9ydCB7IGluamVjdElzUm9vdFBhZ2UsIGluamVjdE5hdlN0YXJ0QWN0aW9ucywgaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucywgbWFrZUNvbmZpZywgTmF2QWN0aW9uSWQgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBpbmplY3RFbnRpdHlJZE5hbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvZm9ybSc7XG5pbXBvcnQgeyBjb21wdXRlZFJhd1ZhbHVlLCBpbmplY3RDaGlsZFJvdXRlUGFyYW0sIGluamVjdEhhc05leHQgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vdXRpbHNcIjtcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9hcHAnO1xuaW1wb3J0IHsgSW5kZXhQaXBlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvaW5kZXgnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb21wdXRlZEFzeW5jIH0gZnJvbSAnbmd4dGVuc2lvbi9jb21wdXRlZC1hc3luYyc7XG5pbXBvcnQgeyBtYWtlSW5pdGlhbGl6ZXJDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9pbml0aWFsaXplcic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEluZGV4TGVuZ3RoUGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2luZGV4LWxlbmd0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIaWdobGlnaHQoa2V5OiBzdHJpbmcpOiBTaWduYWw8U2VsZWN0aW9uTW9kZWw8c3RyaW5nPj4ge1xuICBjb25zdCBpdGVtSWQgPSBpbmplY3RDaGlsZFJvdXRlUGFyYW0oa2V5KTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IG5ldyBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+KHRydWUsIGl0ZW1JZCgpID8gW2l0ZW1JZCgpXSA6IFtdKSk7XG59XG5cbnR5cGUgRmlsdGVyRnVuYyA9IChpdGVtOiB7aWQ6IHN0cmluZ30pID0+IGJvb2xlYW47XG5jb25zdCBGSUxURVJfRlVOQyA9IG5ldyBJbmplY3Rpb25Ub2tlbjwoaW5qZWN0b3I/OiBJbmplY3RvcikgPT4gRmlsdGVyRnVuYz4oJ0ZJTFRFUl9GVU5DJyk7XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpbHRlckZ1bmModXNlRmFjdG9yeTogKCkgPT4gRmlsdGVyRnVuYykge1xuICBjb25zdCB3cmFwcGVkID0gKCkgPT4gKGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSkgPT4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCB1c2VGYWN0b3J5KTtcblx0cmV0dXJuIHsgcHJvdmlkZTogRklMVEVSX0ZVTkMsIHVzZUZhY3Rvcnk6IHdyYXBwZWQgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RGaWx0ZXJGdW5jKCkge1xuICByZXR1cm4gKGluamVjdChGSUxURVJfRlVOQywge29wdGlvbmFsOiB0cnVlfSkgPz8gKCgpID0+ICgpID0+IHRydWUpKSgpO1xufVxuXG5lbnVtIEFjdGlvbklkIHtcbiAgQkFDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzOnBhZ2VzL2luZGV4XSBCYWNrJyxcbiAgQ0hFQ0tCT1hfQ0xJQ0sgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50cy9wYWdlc10gQ2hlY2tib3hDbGljaycsXG4gIEhFQURFUl9DSEVDS0JPWF9DTElDSyA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzXSBIZWFkZXJDaGVja2JveENsaWNrJyxcbiAgQUREID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXNdIEFkZCcsXG4gIERFVEFJTCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzXSBEZXRhaWwnLFxuICBDTE9TRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzXSBDbG9zZScsXG59XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgSW5kZXhQYWdlU3RvcmUgZXh0ZW5kcyBJbmplY3RhYmxlQ29tcG9uZW50IHtcbiAgc3RhdGljIHJlYWRvbmx5IEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHN0YXRpYyByZWFkb25seSBDb25maWcgPSBtYWtlQ29uZmlnKCgpID0+IHtcbiAgICBjb25zdCBoaWdobGlnaHQgPSBpbmplY3RIaWdobGlnaHQoaW5qZWN0RW50aXR5SWROYW1lKCkpO1xuICAgIGNvbnN0IGlzUm9vdFBhZ2UgPSBpbmplY3RJc1Jvb3RQYWdlKCk7XG4gICAgY29uc3QgbmF2U3RhcnRBY3Rpb25zID0gaW5qZWN0TmF2U3RhcnRBY3Rpb25zKGlzUm9vdFBhZ2UpOyAgXG4gICAgY29uc3QgZmlsdGVyRnVuYyA9IGluamVjdEZpbHRlckZ1bmMoKTtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBpbmplY3RNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gKCkgPT4gKHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHdpZHRoOiAndmFyKC0tcGFnZS13aWR0aC1sdjMpJyxcbiAgICAgIH0sXG4gICAgICBpdGVtczogW10sXG4gICAgICBpdGVtQWN0aW9uczogKCgpID0+IFtdKSBhcyBBY3Rpb25zLFxuICAgICAgaXRlbXNNYXBwZXI6IDwoaXRlbXM6IGFueVtdKSA9PiBhbnlbXT51bmRlZmluZWQsXG4gICAgICBpdGVtc0xlbmd0aDogMCxcbiAgICAgIGZpbHRlckZ1bmMsXG4gICAgICB0aXRsZTogbW9kZWxOYW1lKCkgPyBgJHttb2RlbE5hbWUoKX3kuIDopqdgIDogYOWPluW+l+S4rS4uLmAsXG4gICAgICB0eXBlOiAndGFibGUnLFxuICAgICAgc2VsZWN0aW9uOiBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPih0cnVlLCBbXSksXG4gICAgICBoaWdobGlnaHQ6IGhpZ2hsaWdodCgpLFxuICAgICAgZm9ybTogbmV3IEZvcm1Hcm91cCh7fSkgYXMgQWJzdHJhY3RDb250cm9sLFxuICAgICAgdGFibGVDaGlsZHJlbktleTogbnVsbCxcbiAgICAgIG5hdlN0YXJ0QWN0aW9uczogbmF2U3RhcnRBY3Rpb25zKCksXG4gICAgICBuYXZFbmRBY3Rpb25zOiA8QWN0aW9ucz5bXSxcbiAgICB9KTtcbiAgfSwgWydjb21wb25lbnRzJywgJ3BhZ2VzJywgJ2luZGV4J10pO1xuXG4gIHN0YXRpYyBwcm92aWRlVHlwZUNvbmZpZygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7Li4uY29uZmlnLCB0eXBlOiBnZXRUeXBlKGNvbnRleHQpfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUl0ZW1zRnJvbVJlcG9zaXRvcnkoKSB7XG4gICAgcmV0dXJuIEluZGV4UGFnZVN0b3JlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICAgIGNvbnN0IE1vZGVsID0gaW5qZWN0TW9kZWwoKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gTW9kZWwgPyBpbmplY3RBbGwoTW9kZWwpIDogc2lnbmFsKFtdKTtcbiAgICAgIHJldHVybiAoY29uZmlnKSA9PiAoey4uLmNvbmZpZywgaXRlbXM6IGl0ZW1zKCl9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlU2lkZUFwcE5hdlN0YXJ0QWN0aW9ucygpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuQ29uZmlnLnByb3ZpZGUoKCkgPT4ge1xuICAgICAgY29uc3QgaXNSb290UGFnZSA9IGluamVjdElzUm9vdFBhZ2UoKTtcbiAgICAgIGNvbnN0IG5hdlN0YXJ0QWN0aW9ucyA9IGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMoaXNSb290UGFnZSk7XG4gICAgICByZXR1cm4gKGNvbmZpZykgPT4gKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBuYXZTdGFydEFjdGlvbnM6IG5hdlN0YXJ0QWN0aW9ucygpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgSW5pdGlhbGl6ZXIgPSBtYWtlSW5pdGlhbGl6ZXJDb25maWcoSW5kZXhQYWdlU3RvcmUpO1xuICBzdGF0aWMgcHJvdmlkZUZvcm1Jbml0aWFsaXplcigpIHtcbiAgICByZXR1cm4gSW5kZXhQYWdlU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoc3RvcmUpID0+IHtcbiAgICAgIGNvbnN0IGZvcm0gPSBpbmplY3RJbmRleEZvcm0oe1xuICAgICAgICBjb2x1bW5zOiBidWlsZENvbHVtbnMoW1xuICAgICAgICAgICdpZCcsIFxuICAgICAgICAgICdjcmVhdGVkQXQnLFxuICAgICAgICAgICd1cGRhdGVkQXQnLFxuICAgICAgICAgIChpdGVtOiB7aWQ6IHN0cmluZ30pID0+IFt7IGlkOiBBY3Rpb25JZC5ERVRBSUwsIGljb246ICdvcGVuX2luX25ldycsIG5hbWU6ICfoqbPntLAnLCBwYXlsb2FkOiBpdGVtIH1dLFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnZm9ybScsIGZvcm0pO1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBwcm92aWRlRm9ybVZhbHVlU3RvcmFnZUluaXRpYWxpemVyKCkge1xuICAgIHJldHVybiBJbmRleFBhZ2VTdG9yZS5Jbml0aWFsaXplci5wcm92aWRlKChzdG9yZSkgPT4ge1xuICAgICAgbGV0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIGNvbnN0IHBhdGhzID0gcm91dGUucGF0aEZyb21Sb290Lm1hcChyID0+IHI/LnJvdXRlQ29uZmlnPy5wYXRoKTtcbiAgICAgIGNvbnN0IGtleSA9IGBAbmctYXRvbWljL2NvbXBvbmVudHMvcGFnZXMvaW5kZXg6JHtwYXRocy5maWx0ZXIoKHBhdGgpID0+ICEhcGF0aCkuam9pbignLycpfWA7XG4gICAgICBzdG9yZS5mb3JtKCkucGF0Y2hWYWx1ZShKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJ3t9JykpO1xuICAgICAgc3RvcmUuZm9ybSgpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSXRlbXNMZW5ndGhJbml0aWFsaXplcigpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhMZW5ndGhQaXBlLFxuICAgICAgSW5kZXhQYWdlU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoc3RvcmUpID0+IHtcbiAgICAgICAgY29uc3QgcGlwZSA9IGluamVjdChJbmRleExlbmd0aFBpcGUpO1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBjb21wdXRlZFJhd1ZhbHVlKCgpID0+IHN0b3JlLmZvcm0oKSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbXNMZW5ndGggPSBwaXBlLnRyYW5zZm9ybShzdG9yZS5pdGVtcygpLCBmb3JtVmFsdWUoKSk7XG4gICAgICAgICAgYXBwbHlUb0lucHV0KHN0b3JlLCAnaXRlbXNMZW5ndGgnLCBpdGVtc0xlbmd0aCk7XG4gICAgICAgIH0sIHthbGxvd1NpZ25hbFdyaXRlczogdHJ1ZX0pO1xuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlSXRlbXNNYXBwZXJJbml0aWFsaXplcigpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhQaXBlLFxuXHRcdFx0SW5kZXhQYWdlU3RvcmUuSW5pdGlhbGl6ZXIucHJvdmlkZSgoc3RvcmUpID0+IHtcblx0XHRcdFx0Y29uc3QgZm9ybVZhbHVlID0gY29tcHV0ZWRSYXdWYWx1ZSgoKSA9PiBzdG9yZS5mb3JtKCkpO1xuXHRcdFx0XHRjb25zdCBpbmRleFBpcGUgPSBpbmplY3QoSW5kZXhQaXBlKTtcblx0XHRcdFx0ZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZSgpIGFzIGFueTtcblx0XHRcdFx0ICBjb25zdCBpdGVtc01hcHBlciA9IChpdGVtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIC8vIGNvbnN0IGZpbHRlckZ1bmNzID0gc3RvcmUuZmlsdGVyRnVuY3MoKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUuZGVidWcoJ2ZpbHRlckZ1bmNzOicsIGZpbHRlckZ1bmNzKTtcbiAgICAgICAgICAgIC8vIGZvciAoY29uc3QgZnVuYyBvZiBmaWx0ZXJGdW5jcyA/PyBbXSkge1xuICAgICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKCdpdGVtczonLCBpdGVtcyk7XG4gICAgICAgICAgICAvLyAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKGZ1bmMpO1xuICAgICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKCdmaWx0ZXJlZEl0ZW1zOicsIGl0ZW1zKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBpbmRleFBpcGUudHJhbnNmb3JtKGl0ZW1zLCB2YWx1ZSk7XG4gICAgICAgICAgfTtcblx0XHRcdFx0XHRhcHBseVRvSW5wdXQoc3RvcmUsICdpdGVtc01hcHBlcicsIGl0ZW1zTWFwcGVyKTtcblx0XHRcdFx0fSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcblx0XHRcdH0pLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURlZmF1bHRJbml0aWFsaXplcigpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUZvcm1Jbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUZvcm1WYWx1ZVN0b3JhZ2VJbml0aWFsaXplcigpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUl0ZW1zTGVuZ3RoSW5pdGlhbGl6ZXIoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVJdGVtc01hcHBlckluaXRpYWxpemVyKCksXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlQmFja0VmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5CQUNLLCAoKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4gaGlzdG9yeS5iYWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZURldGFpbEVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5ERVRBSUwsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgICByZXR1cm4gKGl0ZW06IHtpZDogc3RyaW5nfSkgPT4ge1xuICAgICAgICBhcHAucm91dGVyLm5hdmlnYXRlKFtpdGVtLmlkXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHN0b3JlLnJvdXRlLFxuICAgICAgICAgIHJlcGxhY2VVcmw6IGhhc05leHQoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUFkZEVmZmVjdCgpIHtcbiAgICByZXR1cm4gcHJvdmlkZUVmZmVjdChJbmRleFBhZ2VTdG9yZS5BY3Rpb25JZC5BREQsICgpID0+IHtcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgICAgIGNvbnN0IGhhc05leHQgPSBpbmplY3RIYXNOZXh0KCk7XG4gICAgICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBhcHAucm91dGVyLm5hdmlnYXRlKFsnbmV3J10sIHtcbiAgICAgICAgICByZWxhdGl2ZVRvOiByb3V0ZSxcbiAgICAgICAgICByZXBsYWNlVXJsOiAhIWhhc05leHQoKSxcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVDaGVja2JveENsaWNrRWZmZWN0KCkge1xuICAgIHJldHVybiBwcm92aWRlRWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuVEFCTEVfQ0hFQ0tCT1hfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoaXRlbToge2lkOiBzdHJpbmd9KSA9PiB7XG4gICAgICAgIHN0b3JlLnNlbGVjdGlvbigpLnRvZ2dsZShpdGVtLmlkKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZVRhYmxlSGVhZGVyQ2xpY2tFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0xJQ0ssICgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KEluZGV4UGFnZVN0b3JlKTtcbiAgICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc29ydCA9IHN0b3JlLmZvcm0oKS5nZXQoWydzb3J0J10pLnZhbHVlO1xuICAgICAgICBjb25zdCBvcmRlciA9IGtleSA9PT0gc29ydC5rZXkgJiYgc29ydC5vcmRlciA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICAgICAgc3RvcmUuZm9ybSgpLnBhdGNoVmFsdWUoe3NvcnQ6IHtrZXksIG9yZGVyfX0pO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlU2lkZU5hdkVmZmVjdHMoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gICAgICByZXR1cm4gKCkgPT4gYXBwLnNpZGVOYXYudG9nZ2xlKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZUhlYWRlckNoZWNrYm94Q2xpY2tFZmZlY3QoKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVFZmZlY3QoSW5kZXhQYWdlU3RvcmUuQWN0aW9uSWQuSEVBREVSX0NIRUNLQk9YX0NMSUNLLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoc3RvcmUuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgc3RvcmUuc2VsZWN0aW9uKCkuY2xlYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdG9yZS5kaXNwbGF5ZWRJdGVtcygpLmZvckVhY2goZW50cnkgPT4gc3RvcmUuc2VsZWN0aW9uKCkuc2VsZWN0KGVudHJ5LmlkKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBwcm92aWRlRGVmYXVsdEVmZmVjdHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVEZXRhaWxFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVBZGRFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVCYWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlSGVhZGVyQ2hlY2tib3hDbGlja0VmZmVjdCgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZUNoZWNrYm94Q2xpY2tFZmZlY3QoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVUYWJsZUhlYWRlckNsaWNrRWZmZWN0KCksXG4gICAgICBJbmRleFBhZ2VTdG9yZS5wcm92aWRlU2lkZU5hdkVmZmVjdHMoKSxcbiAgICBdO1xuICB9XG5cbiAgc3RhdGljIHByb3ZpZGVEZWZhdWx0KCkge1xuICAgIHJldHVybiBbXG4gICAgICBJbmRleFBhZ2VTdG9yZS5Db25maWcucHJvdmlkZSgpLFxuICAgICAgSW5kZXhQYWdlU3RvcmUucHJvdmlkZVR5cGVDb25maWcoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0SW5pdGlhbGl6ZXIoKSxcbiAgICAgIEluZGV4UGFnZVN0b3JlLnByb3ZpZGVEZWZhdWx0RWZmZWN0cygpLFxuICAgIF07XG4gIH1cblxuICByZWFkb25seSBjb25maWcgPSBJbmRleFBhZ2VTdG9yZS5Db25maWcuaW5qZWN0KCk7XG4gIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnR5cGUpKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtcykpO1xuICByZWFkb25seSBpdGVtQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLml0ZW1BY3Rpb25zKSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGl0bGUpKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZvcm0pKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuc2VsZWN0aW9uKSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodCA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmhpZ2hsaWdodCkpO1xuICByZWFkb25seSBuYXZTdGFydEFjdGlvbnMgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uYXZTdGFydEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgbmF2RW5kQWN0aW9ucyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLm5hdkVuZEFjdGlvbnMpKTtcbiAgcmVhZG9ubHkgZmlsdGVyRnVuYyA9IGlucHV0KF9jb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmZpbHRlckZ1bmMpKTtcbiAgcmVhZG9ubHkgaXRlbXNNYXBwZXIgPSBpbnB1dChfY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pdGVtc01hcHBlcikpO1xuICByZWFkb25seSB0YWJsZUNoaWxkcmVuS2V5ID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGFibGVDaGlsZHJlbktleSkpO1xuXG4gIHJlYWRvbmx5IGl0ZW1zTGVuZ3RoID0gaW5wdXQoX2NvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuaXRlbXNMZW5ndGgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtcygpID8/IFtdO1xuICAgIGNvbnN0IGZpbHRlckZ1bmMgPSB0aGlzLmZpbHRlckZ1bmMoKTtcbiAgICBpdGVtcyA9IGZpbHRlckZ1bmMgPyBpdGVtcy5maWx0ZXIoZmlsdGVyRnVuYykgOiBpdGVtcztcbiAgICBjb25zdCBpdGVtc01hcHBlciA9IHRoaXMuaXRlbXNNYXBwZXIoKTtcbiAgICByZXR1cm4gaXRlbXNNYXBwZXIgPyBpdGVtc01hcHBlcihpdGVtcykgOiBpdGVtcztcbiAgfSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkSWRzID0gY29tcHV0ZWRBc3luYygoKSA9PiB0aGlzLnNlbGVjdGlvbigpLmNoYW5nZWQucGlwZShcbiAgICBtYXAoKCkgPT4gdGhpcy5zZWxlY3Rpb24oKT8uc2VsZWN0ZWQgPz8gW10pLFxuICApLCB7aW5pdGlhbFZhbHVlOiBbXX0pO1xuICByZWFkb25seSBzZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXRlbXMoKS5maWx0ZXIoZW50cnkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmluY2x1ZGVzKGVudHJ5LmlkKSkpO1xuICByZWFkb25seSBpc0FsbFNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZEl0ZW1zKCkuZXZlcnkoZW50cnkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmluY2x1ZGVzKGVudHJ5LmlkKSk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgSW5kZXhQYWdlU3RvcmUuSW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZVN0b3JlKHRoaXMpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VzLWluZGV4JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck91dGxldEZyYW1lLFxuICAgIEluZGV4VGVtcGxhdGUsXG4gICAgSW5kZXhMZW5ndGhQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICA8ZnJhbWVzLXJvdXRlci1vdXRsZXQ+XG4gICAgPHRlbXBsYXRlcy1pbmRleFxuICAgICAgW3N0eWxlLndpZHRoXT1cInN0b3JlLmNvbmZpZygpLnN0eWxlLndpZHRoXCJcbiAgICAgIFt0aXRsZV09XCJzdG9yZS50aXRsZSgpXCJcbiAgICAgIFt0eXBlXT1cInN0b3JlLnR5cGUoKVwiXG4gICAgICBbdGFibGVDaGlsZHJlbktleV09XCJzdG9yZS50YWJsZUNoaWxkcmVuS2V5KClcIlxuICAgICAgW2l0ZW1zXT1cInN0b3JlLmRpc3BsYXllZEl0ZW1zKClcIlxuICAgICAgW2l0ZW1zTGVuZ3RoXT1cInN0b3JlLml0ZW1zTGVuZ3RoKClcIlxuICAgICAgW2l0ZW1BY3Rpb25zXT1cInN0b3JlLml0ZW1BY3Rpb25zKClcIlxuICAgICAgW2Zvcm1dPVwic3RvcmUuZm9ybSgpXCJcbiAgICAgIFtzZWxlY3Rpb25dPVwic3RvcmUuc2VsZWN0aW9uKClcIlxuICAgICAgW2hpZ2hsaWdodF09XCJzdG9yZS5oaWdobGlnaHQoKVwiXG4gICAgICBbbmF2U3RhcnRBY3Rpb25zXT1cInN0b3JlLm5hdlN0YXJ0QWN0aW9ucygpXCJcbiAgICAgIFtuYXZFbmRBY3Rpb25zXT1cInN0b3JlLm5hdkVuZEFjdGlvbnMoKVwiXG4gICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgIC8+XG4gIDwvZnJhbWVzLXJvdXRlci1vdXRsZXQ+XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9pbmRleC5wYWdlLnNjc3MnLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogSW5kZXhQYWdlU3RvcmUsXG4gICAgICBpbnB1dHM6IFsnaXRlbXMnXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmRleFBhZ2UgZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChJbmRleFBhZ2VTdG9yZSk7XG4gIHByb3RlY3RlZCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBARWZmZWN0KEluZGV4VGVtcGxhdGUuQWN0aW9uSWQuQkFDSylcbiAgcHJvdGVjdGVkIGJhY2soKSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkJBQ0t9KTtcbiAgfVxuXG4gIEBFZmZlY3QoTmF2QWN0aW9uSWQuQ0xPU0UpXG4gIHByb3RlY3RlZCBjbG9zZSgpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuQ0xPU0V9KTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5JVEVNX0NMSUNLKVxuICBwcm90ZWN0ZWQgaXRlbUNsaWNrKGl0ZW06IHtpZDogc3RyaW5nfSkge1xuICAgIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5ERVRBSUwsIHBheWxvYWQ6IGl0ZW19KTtcbiAgfVxuXG4gIEBFZmZlY3QoSW5kZXhUZW1wbGF0ZS5BY3Rpb25JZC5UQUJMRV9IRUFERVJfQ0hFQ0tCT1hfQ0xJQ0spXG4gIHByb3RlY3RlZCBvbkNoZWNrYm94Q2xpY2soaXRlbToge2lkOiBzdHJpbmd9KSB7XG4gICAgdGhpcy5kaXNwYXRjaCh7aWQ6IEluZGV4UGFnZVN0b3JlLkFjdGlvbklkLkhFQURFUl9DSEVDS0JPWF9DTElDSywgcGF5bG9hZDogaXRlbX0pO1xuICB9XG59XG4iXX0=