desy-angular 8.0.0 → 9.0.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 (201) hide show
  1. package/esm2022/lib/desy-angular.module.mjs +5 -5
  2. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +4 -4
  3. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +4 -4
  4. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +4 -4
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +4 -4
  6. package/esm2022/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.mjs +4 -4
  7. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +4 -4
  8. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +4 -4
  9. package/esm2022/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.mjs +4 -4
  10. package/esm2022/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.mjs +4 -4
  11. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +5 -5
  12. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +5 -5
  13. package/esm2022/lib/desy-commons/components/content/content.component.mjs +4 -4
  14. package/esm2022/lib/desy-commons/components/description/description.component.mjs +4 -4
  15. package/esm2022/lib/desy-commons/components/divider/divider.component.mjs +4 -4
  16. package/esm2022/lib/desy-commons/components/icon/icon.component.mjs +4 -4
  17. package/esm2022/lib/desy-commons/components/title/title.component.mjs +4 -4
  18. package/esm2022/lib/desy-commons/desy-commons.module.mjs +5 -5
  19. package/esm2022/lib/desy-forms/components/character-count/character-count.component.mjs +4 -4
  20. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +5 -40
  21. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes-parent.component.mjs +4 -4
  22. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +5 -5
  23. package/esm2022/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +4 -4
  24. package/esm2022/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +4 -4
  25. package/esm2022/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +4 -4
  26. package/esm2022/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +4 -4
  27. package/esm2022/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +4 -4
  28. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +4 -4
  29. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +4 -4
  30. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +4 -4
  31. package/esm2022/lib/desy-forms/components/fieldset/legend/legend.component.mjs +4 -4
  32. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +4 -4
  33. package/esm2022/lib/desy-forms/components/form-field/form-field.component.mjs +4 -4
  34. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +4 -4
  35. package/esm2022/lib/desy-forms/components/input/input.component.mjs +4 -4
  36. package/esm2022/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +4 -4
  37. package/esm2022/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +4 -4
  38. package/esm2022/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +4 -4
  39. package/esm2022/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +4 -4
  40. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +4 -4
  41. package/esm2022/lib/desy-forms/components/label/label.component.mjs +4 -4
  42. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +5 -40
  43. package/esm2022/lib/desy-forms/components/radios/radios-parent.component.mjs +4 -4
  44. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +5 -5
  45. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +4 -4
  46. package/esm2022/lib/desy-forms/components/select/option/option.component.mjs +4 -4
  47. package/esm2022/lib/desy-forms/components/select/option-group/option-group.component.mjs +4 -4
  48. package/esm2022/lib/desy-forms/components/select/select-item/select-item.component.mjs +4 -4
  49. package/esm2022/lib/desy-forms/components/select/select.component.mjs +4 -4
  50. package/esm2022/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.mjs +4 -4
  51. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +4 -4
  52. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +4 -4
  53. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +4 -4
  54. package/esm2022/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +5 -5
  55. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +4 -4
  56. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +4 -4
  57. package/esm2022/lib/desy-forms/desy-forms.module.mjs +5 -5
  58. package/esm2022/lib/desy-forms/directives/condition.directive.mjs +4 -4
  59. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +4 -4
  60. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +4 -4
  61. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +4 -4
  62. package/esm2022/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +4 -4
  63. package/esm2022/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +4 -4
  64. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +5 -5
  65. package/esm2022/lib/desy-modals/desy-modals.module.mjs +5 -5
  66. package/esm2022/lib/desy-modals/services/dialog.service.mjs +4 -4
  67. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.mjs +4 -4
  68. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +4 -4
  69. package/esm2022/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.mjs +4 -4
  70. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +4 -4
  71. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +4 -4
  72. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +4 -4
  73. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +4 -4
  74. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +4 -4
  75. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +4 -4
  76. package/esm2022/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.mjs +4 -4
  77. package/esm2022/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +4 -4
  78. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +92 -0
  79. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +4 -4
  80. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -4
  81. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +4 -4
  82. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +4 -4
  83. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +5 -5
  84. package/esm2022/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +5 -5
  85. package/esm2022/lib/desy-nav/components/header/header.component.mjs +19 -8
  86. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +4 -4
  87. package/esm2022/lib/desy-nav/components/links-list/links-list-item-sub/links-list-item-sub.component.mjs +4 -4
  88. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +4 -4
  89. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +4 -4
  90. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +4 -4
  91. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +4 -4
  92. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +4 -4
  93. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +4 -4
  94. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +4 -6
  95. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +4 -4
  96. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +4 -4
  97. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +4 -4
  98. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +4 -4
  99. package/esm2022/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.mjs +4 -4
  100. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +4 -4
  101. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.mjs +4 -4
  102. package/esm2022/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +4 -4
  103. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +4 -4
  104. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +4 -4
  105. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +4 -4
  106. package/esm2022/lib/desy-nav/components/notification/notification-item/notification-item.component.mjs +4 -4
  107. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +9 -13
  108. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +18 -4
  109. package/esm2022/lib/desy-nav/desy-nav.module.mjs +10 -5
  110. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +2 -0
  111. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +1 -1
  112. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +4 -4
  113. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +4 -4
  114. package/esm2022/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.mjs +4 -4
  115. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +5 -5
  116. package/esm2022/lib/desy-tables/components/table/components/table-caption.component.mjs +4 -4
  117. package/esm2022/lib/desy-tables/components/table/components/table-cell.component.mjs +4 -4
  118. package/esm2022/lib/desy-tables/components/table/components/table-header.component.mjs +4 -4
  119. package/esm2022/lib/desy-tables/components/table/components/table-row.component.mjs +4 -4
  120. package/esm2022/lib/desy-tables/components/table/table.component.mjs +4 -4
  121. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +4 -4
  122. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +4 -4
  123. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.mjs +4 -4
  124. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +4 -4
  125. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +4 -4
  126. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +5 -5
  127. package/esm2022/lib/desy-tables/desy-tables.module.mjs +5 -5
  128. package/esm2022/lib/desy-tables/directives/cell.directive.mjs +4 -4
  129. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +4 -4
  130. package/esm2022/lib/desy-tables/directives/row.directive.mjs +4 -4
  131. package/esm2022/lib/desy-views/components/accordion/accordion-header/accordion-header.component.mjs +4 -4
  132. package/esm2022/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +4 -4
  133. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +5 -5
  134. package/esm2022/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +4 -4
  135. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +5 -5
  136. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.mjs +4 -4
  137. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.mjs +4 -4
  138. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -4
  139. package/esm2022/lib/desy-views/components/card/card-sectors/card-left.component.mjs +21 -0
  140. package/esm2022/lib/desy-views/components/card/card-sectors/card-right.component.mjs +21 -0
  141. package/esm2022/lib/desy-views/components/card/card-sectors/card-sub.component.mjs +21 -0
  142. package/esm2022/lib/desy-views/components/card/card-sectors/card-super.component.mjs +21 -0
  143. package/esm2022/lib/desy-views/components/card/card.component.mjs +47 -0
  144. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +5 -40
  145. package/esm2022/lib/desy-views/components/description-list/definition/definition.component.mjs +4 -4
  146. package/esm2022/lib/desy-views/components/description-list/description-item/description-item.component.mjs +4 -4
  147. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -4
  148. package/esm2022/lib/desy-views/components/description-list/term/term.component.mjs +4 -4
  149. package/esm2022/lib/desy-views/components/details/details.component.mjs +4 -4
  150. package/esm2022/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.mjs +4 -4
  151. package/esm2022/lib/desy-views/components/item/item-content-right/item-content-right.component.mjs +4 -4
  152. package/esm2022/lib/desy-views/components/item/item-item/item-item.component.mjs +4 -4
  153. package/esm2022/lib/desy-views/components/item/item.component.mjs +4 -4
  154. package/esm2022/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.mjs +4 -4
  155. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +4 -4
  156. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +4 -4
  157. package/esm2022/lib/desy-views/components/status/status.component.mjs +4 -4
  158. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +4 -4
  159. package/esm2022/lib/desy-views/components/tabs/panel/panel.component.mjs +4 -4
  160. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +4 -4
  161. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +12 -16
  162. package/esm2022/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.mjs +4 -4
  163. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +4 -4
  164. package/esm2022/lib/desy-views/desy-views.module.mjs +32 -7
  165. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  166. package/esm2022/lib/desy-views/services/alert.service.mjs +4 -4
  167. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +4 -4
  168. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +4 -4
  169. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +4 -4
  170. package/esm2022/lib/shared/components/content-base/content-base.component.mjs +4 -4
  171. package/esm2022/lib/shared/components/text-or-html-required/text-or-html-required.component.mjs +4 -4
  172. package/esm2022/lib/shared/directives/attribute-change.directive.mjs +4 -4
  173. package/esm2022/lib/shared/directives/click-outside.directive.mjs +4 -4
  174. package/esm2022/lib/shared/directives/content-change.directive.mjs +4 -4
  175. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +4 -4
  176. package/esm2022/lib/shared/directives/inner-content.directive.mjs +4 -4
  177. package/esm2022/lib/shared/pipes/external-href.pipe.mjs +4 -4
  178. package/esm2022/lib/shared/pipes/inner-html.pipe.mjs +4 -4
  179. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +4 -4
  180. package/esm2022/lib/shared/shared.module.mjs +5 -5
  181. package/esm2022/public-api.mjs +8 -1
  182. package/fesm2022/desy-angular.mjs +795 -662
  183. package/fesm2022/desy-angular.mjs.map +1 -1
  184. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +1 -5
  185. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +25 -0
  186. package/lib/desy-nav/components/header/header.component.d.ts +5 -1
  187. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +1 -2
  188. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +6 -2
  189. package/lib/desy-nav/desy-nav.module.d.ts +30 -29
  190. package/lib/desy-nav/interfaces/header-mobile-text-data.d.ts +6 -0
  191. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +0 -1
  192. package/lib/desy-views/components/card/card-sectors/card-left.component.d.ts +10 -0
  193. package/lib/desy-views/components/card/card-sectors/card-right.component.d.ts +9 -0
  194. package/lib/desy-views/components/card/card-sectors/card-sub.component.d.ts +10 -0
  195. package/lib/desy-views/components/card/card-sectors/card-super.component.d.ts +10 -0
  196. package/lib/desy-views/components/card/card.component.d.ts +18 -0
  197. package/lib/desy-views/components/tabs/tabs.component.d.ts +1 -4
  198. package/lib/desy-views/desy-views.module.d.ts +11 -6
  199. package/lib/desy-views/interfaces/tabs-items-data.d.ts +1 -0
  200. package/package.json +2 -2
  201. package/public-api.d.ts +7 -0
@@ -228,8 +228,8 @@ export class TableAdvancedComponent extends AccessibilityComponent {
228
228
  });
229
229
  }
230
230
  }
231
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TableAdvancedComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: TableAdvancedComponent, selector: "desy-table-advanced", inputs: { rows: "rows", head: "head", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", hasCheckboxes: "hasCheckboxes", idPrefix: "idPrefix", classes: "classes", checkboxClasses: "checkboxClasses", id: "id", wrapper: "wrapper" }, outputs: { rowsChange: "rowsChange", rowsChecked: "rowsChecked", recalculateTable: "recalculateTable" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableAdvancedHeaderComponent }, { propertyName: "rowComponentList", predicate: TableAdvancedRowComponent }], viewQueries: [{ propertyName: "rowData", predicate: RowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table role=\"grid\"\n [class]=\"['c-table-advanced border-t-2 border-b-2 border-neutral-base', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"getHeaderCells()\">\n <tr class=\"border-t border-neutral-base divide-x divide-neutral-base\">\n <th *ngIf=\"hasCheckboxes\" scope=\"col\" [class]=\"['align-top px-base py-xs', checkboxClasses] | makeHtmlList\">\n <span class=\"sr-only\">Seleccionar fila</span>\n </th>\n <th scope=\"col\" *ngFor=\"let item of getHeaderCells(); index as iHeader\" [id]=\"getIdHeader(iHeader)\"\n [attr.aria-sort]=\"item.orderBy ? getStringOrderBy(item.orderBy) : null\"\n [class]=\"['align-top px-base py-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\"\n [attr.colspan]=\"item.colspan ? item.colspan : null\"\n [attr.rowspan]=\"item.rowspan ? item.rowspan : null\"\n [attr.role]=\"item.role ? item.role : null\"\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\n\n <span *ngIf=\"item.orderBy\" class=\"inline-block relative\" (click)=\"handleSortByColumn(iHeader)\" desyFocusClickedCell\n [attr.tabindex]=\"item.orderBy ? -1 : null\"\n [attr.role]=\"item.orderBy ? 'button' : null\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n <span class=\"c-table-advanced__order\" *ngIf=\"item.orderBy\">\n <span class=\"sr-only\">Pulsa para ordenar por esta columna</span>\n <span class=\"c-table-advanced__ascending\" *ngIf=\"item.orderBy === orderByType.asc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M112.07 37.93l-35-35a10 10 0 00-14.14 0l-35 35a10 10 0 0014.14 14.14l13.66-13.66A2.5 2.5 0 0160 40.18V130a10 10 0 0020 0V40.18a2.5 2.5 0 014.27-1.77l13.66 13.66a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__descending\" *ngIf=\"item.orderBy === orderByType.desc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M27.93 102.07l35 35a10 10 0 0014.14 0l35-35a10 10 0 00-14.14-14.14l-13.66 13.66A2.5 2.5 0 0180 99.82V10a10 10 0 00-20 0v89.82a2.5 2.5 0 01-4.27 1.77L42.07 87.93a10 10 0 00-14.14 14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__none\" *ngIf=\"item.orderBy === orderByType.none\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" class=\"text-neutral-base\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M94.7 97.2l-17.2 17.19V25.61L94.7 42.8a7.5 7.5 0 0010.6-10.6l-30-30a7.49 7.49 0 00-10.6 0l-30 30a7.5 7.5 0 0010.6 10.6l17.2-17.19v88.78L45.3 97.2a7.5 7.5 0 10-10.6 10.6l30 30a7.48 7.48 0 0010.6 0l30-30a7.5 7.5 0 00-10.6-10.6z\" fill=\"currentColor\"/></svg>\n </span>\n </span>\n </span>\n\n <span *ngIf=\"!item.orderBy\" class=\"inline-block relative\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n </span>\n </th>\n </tr>\n </thead>\n\n <tbody>\n <tr class=\"divide-x divide-neutral-base\" *ngIf=\"hasFilters()\">\n <td *ngIf=\"hasCheckboxes\" [ngClass]=\"checkboxClasses\"></td>\n <td tabindex=\"-1\" *ngFor=\"let item of getHeaderCells(); index as iHead\" desyFocusClickedCell\n [class]=\"['align-top px-base pb-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\">\n <ng-container *ngIf=\"item.hasSelect && getSelectForItem(item) !== null\">\n <ng-container *ngTemplateOutlet=\"tableSelect; context: {selectable: getSelectForItem(item)}\"></ng-container>\n <ng-template #tableSelect let-selectable=\"selectable\">\n <desy-select [id]=\"getIdHeaderSelect(iHead)\"\n [labelData]=\"{ text: 'Filtrar en esta columna', classes: 'sr-only' }\"\n [classes]=\"selectable.classes ? selectable.classes : 'c-select--sm w-full mt-0'\"\n [formGroupClasses]=\"selectable.formGroupClasses ? selectable.formGroupClasses : 'mb-0'\"\n [name]=\"selectable.name\"\n [items]=\"getItemSelectOptions(selectable)\"\n [disabled]=\"selectable.disabled\"\n [describedBy]=\"getIdHeaderSelect(iHead)\"\n\n [(ngModel)]=\"item.valueSelect\" (ngModelChange)=\"handleInputSearch(item)\"\n\n [role]=\"selectable.role\"\n [ariaLabel]=\"selectable.ariaLabel\"\n [ariaDescribedBy]=\"selectable.ariaDescribedBy\"\n [ariaLabelledBy]=\"selectable.ariaLabelledBy\"\n [ariaHidden]=\"selectable.ariaHidden\"\n [ariaDisabled]=\"selectable.ariaDisabled\"\n [ariaControls]=\"selectable.ariaControls\"\n [ariaCurrent]=\"selectable.ariaCurrent\"\n [ariaLive]=\"selectable.ariaLive\"\n [ariaExpanded]=\"selectable.ariaExpanded\"\n [ariaErrorMessage]=\"selectable.ariaErrorMessage\"\n [ariaHasPopup]=\"selectable.ariaHasPopup\"\n [tabindex]=\"selectable.tabindex\">\n </desy-select>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"item.hasSelect && item.hasFilter\" class=\"pb-sm\"></div>\n\n <desy-search-bar *ngIf=\"item.hasFilter\"\n [(ngModel)]=\"item.valueFilter\" [ngModelOptions]=\"{standalone: true}\"\n (clickEvent)=\"handleInputSearch(item)\"\n (ngModelChange)=\"handleInputSearch(item)\"\n labelText=\"Buscar en esta columna\"\n [id]=\"getIdHeaderFilter(iHead)\"\n placeholder=\"Buscar\"\n [classes]=\"['c-input--sm', item.filterClasses] | makeHtmlList\"\n buttonClasses=\"m-xs p-0.5 text-xs\"\n [describedBy]=\"getIdHeader(iHead)\"> </desy-search-bar>\n </td>\n </tr>\n\n\n <tr *ngFor=\"let row of getVisibleRows(); index as iRow\" class=\"border-t border-b border-neutral-base hover:bg-neutral-lighter\"\n [desyRow]=\"row\"\n [ngClass]=\"{'bg-neutral-light': hasCheckboxes && row.checked }\">\n <td *ngIf=\"hasCheckboxes\" desyFocusClickedCell [class]=\"['px-base py-sm', checkboxClasses] | makeHtmlList\"\n tabindex=\"-1\" >\n <div class=\"c-checkboxes c-checkboxes--sm\">\n <div>\n <div class=\"relative flex items-start\">\n <div class=\"flex items-center mx-sm\">\n <input type=\"checkbox\" class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base text-primary-base\"\n [(ngModel)]=\"row.checked\" (ngModelChange)=\"handleCheckboxChange(row)\"\n [id]=\"getIdRowCheckbox(iRow)\"\n [name]=\"getIdRowCheckbox(iRow)\"\n [attr.aria-label]=\"'Fila ' + iRow\">\n </div>\n <div class=\"pt-0.5 leading-5\">\n <label class=\"sr-only block text-sm -mt-1\" [for]=\"getIdRowCheckbox(iRow)\">Selecciona fila {{ iRow }}</label>\n </div>\n </div>\n </div>\n </div>\n </td>\n <ng-container *ngFor=\"let cell of row.cellsList; first as isFirstCell; index as columnIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirstCell; else elseTd\" scope=\"row\"\n [class]=\"['px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td tabindex=\"-1\" desyFocusClickedCell\n [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : -1\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "component", type: i4.SelectComponent, selector: "desy-select", inputs: ["name", "items", "describedBy", "formGroupClasses", "classes"] }, { kind: "component", type: i5.SearchBarComponent, selector: "desy-search-bar", inputs: ["describedBy", "classes", "buttonClasses", "placeholder"], outputs: ["clickEvent"] }, { kind: "directive", type: i6.FocusClickedCellDirective, selector: "[desyFocusClickedCell]" }, { kind: "directive", type: i7.CellDirective, selector: "[desyCell]", inputs: ["row", "rowIndex", "columnIndex"] }, { kind: "directive", type: i8.RowDirective, selector: "[desyRow]", inputs: ["desyRow"] }, { kind: "pipe", type: i9.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
231
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableAdvancedComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
232
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableAdvancedComponent, selector: "desy-table-advanced", inputs: { rows: "rows", head: "head", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", hasCheckboxes: "hasCheckboxes", idPrefix: "idPrefix", classes: "classes", checkboxClasses: "checkboxClasses", id: "id", wrapper: "wrapper" }, outputs: { rowsChange: "rowsChange", rowsChecked: "rowsChecked", recalculateTable: "recalculateTable" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableAdvancedHeaderComponent }, { propertyName: "rowComponentList", predicate: TableAdvancedRowComponent }], viewQueries: [{ propertyName: "rowData", predicate: RowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table role=\"grid\"\n [class]=\"['c-table-advanced border-t-2 border-b-2 border-neutral-base', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"getHeaderCells()\">\n <tr class=\"border-t border-neutral-base divide-x divide-neutral-base\">\n <th *ngIf=\"hasCheckboxes\" scope=\"col\" [class]=\"['align-top px-base py-xs', checkboxClasses] | makeHtmlList\">\n <span class=\"sr-only\">Seleccionar fila</span>\n </th>\n <th scope=\"col\" *ngFor=\"let item of getHeaderCells(); index as iHeader\" [id]=\"getIdHeader(iHeader)\"\n [attr.aria-sort]=\"item.orderBy ? getStringOrderBy(item.orderBy) : null\"\n [class]=\"['align-top px-base py-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\"\n [attr.colspan]=\"item.colspan ? item.colspan : null\"\n [attr.rowspan]=\"item.rowspan ? item.rowspan : null\"\n [attr.role]=\"item.role ? item.role : null\"\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\n\n <span *ngIf=\"item.orderBy\" class=\"inline-block relative\" (click)=\"handleSortByColumn(iHeader)\" desyFocusClickedCell\n [attr.tabindex]=\"item.orderBy ? -1 : null\"\n [attr.role]=\"item.orderBy ? 'button' : null\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n <span class=\"c-table-advanced__order\" *ngIf=\"item.orderBy\">\n <span class=\"sr-only\">Pulsa para ordenar por esta columna</span>\n <span class=\"c-table-advanced__ascending\" *ngIf=\"item.orderBy === orderByType.asc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M112.07 37.93l-35-35a10 10 0 00-14.14 0l-35 35a10 10 0 0014.14 14.14l13.66-13.66A2.5 2.5 0 0160 40.18V130a10 10 0 0020 0V40.18a2.5 2.5 0 014.27-1.77l13.66 13.66a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__descending\" *ngIf=\"item.orderBy === orderByType.desc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M27.93 102.07l35 35a10 10 0 0014.14 0l35-35a10 10 0 00-14.14-14.14l-13.66 13.66A2.5 2.5 0 0180 99.82V10a10 10 0 00-20 0v89.82a2.5 2.5 0 01-4.27 1.77L42.07 87.93a10 10 0 00-14.14 14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__none\" *ngIf=\"item.orderBy === orderByType.none\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" class=\"text-neutral-base\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M94.7 97.2l-17.2 17.19V25.61L94.7 42.8a7.5 7.5 0 0010.6-10.6l-30-30a7.49 7.49 0 00-10.6 0l-30 30a7.5 7.5 0 0010.6 10.6l17.2-17.19v88.78L45.3 97.2a7.5 7.5 0 10-10.6 10.6l30 30a7.48 7.48 0 0010.6 0l30-30a7.5 7.5 0 00-10.6-10.6z\" fill=\"currentColor\"/></svg>\n </span>\n </span>\n </span>\n\n <span *ngIf=\"!item.orderBy\" class=\"inline-block relative\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n </span>\n </th>\n </tr>\n </thead>\n\n <tbody>\n <tr class=\"divide-x divide-neutral-base\" *ngIf=\"hasFilters()\">\n <td *ngIf=\"hasCheckboxes\" [ngClass]=\"checkboxClasses\"></td>\n <td tabindex=\"-1\" *ngFor=\"let item of getHeaderCells(); index as iHead\" desyFocusClickedCell\n [class]=\"['align-top px-base pb-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\">\n <ng-container *ngIf=\"item.hasSelect && getSelectForItem(item) !== null\">\n <ng-container *ngTemplateOutlet=\"tableSelect; context: {selectable: getSelectForItem(item)}\"></ng-container>\n <ng-template #tableSelect let-selectable=\"selectable\">\n <desy-select [id]=\"getIdHeaderSelect(iHead)\"\n [labelData]=\"{ text: 'Filtrar por esta columna', classes: 'sr-only' }\"\n [classes]=\"selectable.classes ? selectable.classes : 'c-select--sm w-full mt-0'\"\n [formGroupClasses]=\"selectable.formGroupClasses ? selectable.formGroupClasses : 'mb-0'\"\n [name]=\"selectable.name\"\n [items]=\"getItemSelectOptions(selectable)\"\n [disabled]=\"selectable.disabled\"\n [describedBy]=\"getIdHeaderSelect(iHead)\"\n\n [(ngModel)]=\"item.valueSelect\" (ngModelChange)=\"handleInputSearch(item)\"\n\n [role]=\"selectable.role\"\n [ariaLabel]=\"selectable.ariaLabel\"\n [ariaDescribedBy]=\"selectable.ariaDescribedBy\"\n [ariaLabelledBy]=\"selectable.ariaLabelledBy\"\n [ariaHidden]=\"selectable.ariaHidden\"\n [ariaDisabled]=\"selectable.ariaDisabled\"\n [ariaControls]=\"selectable.ariaControls\"\n [ariaCurrent]=\"selectable.ariaCurrent\"\n [ariaLive]=\"selectable.ariaLive\"\n [ariaExpanded]=\"selectable.ariaExpanded\"\n [ariaErrorMessage]=\"selectable.ariaErrorMessage\"\n [ariaHasPopup]=\"selectable.ariaHasPopup\"\n [tabindex]=\"selectable.tabindex\">\n </desy-select>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"item.hasSelect && item.hasFilter\" class=\"pb-sm\"></div>\n\n <desy-search-bar *ngIf=\"item.hasFilter\"\n [(ngModel)]=\"item.valueFilter\" [ngModelOptions]=\"{standalone: true}\"\n (clickEvent)=\"handleInputSearch(item)\"\n (ngModelChange)=\"handleInputSearch(item)\"\n labelText=\"Buscar en esta columna\"\n [id]=\"getIdHeaderFilter(iHead)\"\n placeholder=\"Buscar\"\n [classes]=\"['c-input--sm', item.filterClasses] | makeHtmlList\"\n buttonClasses=\"m-xs p-0.5 text-xs\"\n [describedBy]=\"getIdHeader(iHead)\"> </desy-search-bar>\n </td>\n </tr>\n\n\n <tr *ngFor=\"let row of getVisibleRows(); index as iRow\" class=\"border-t border-b border-neutral-base hover:bg-neutral-lighter\"\n [desyRow]=\"row\">\n <td *ngIf=\"hasCheckboxes\" desyFocusClickedCell [class]=\"['px-base py-sm', checkboxClasses] | makeHtmlList\"\n tabindex=\"-1\" >\n <div class=\"c-checkboxes c-checkboxes--sm\">\n <div>\n <div class=\"relative flex items-start\">\n <div class=\"flex items-center mx-sm\">\n <input type=\"checkbox\" class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base text-primary-base\"\n [(ngModel)]=\"row.checked\" (ngModelChange)=\"handleCheckboxChange(row)\"\n [id]=\"getIdRowCheckbox(iRow)\"\n [name]=\"getIdRowCheckbox(iRow)\"\n [attr.aria-label]=\"'Fila ' + iRow\">\n </div>\n <div class=\"pt-0.5 leading-5\">\n <label class=\"sr-only block text-sm -mt-1\" [for]=\"getIdRowCheckbox(iRow)\">Selecciona fila {{ iRow }}</label>\n </div>\n </div>\n </div>\n </div>\n </td>\n <ng-container *ngFor=\"let cell of row.cellsList; first as isFirstCell; index as columnIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirstCell; else elseTd\" scope=\"row\"\n [class]=\"['px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td tabindex=\"-1\" desyFocusClickedCell\n [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : -1\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "component", type: i4.SelectComponent, selector: "desy-select", inputs: ["name", "items", "describedBy", "formGroupClasses", "classes"] }, { kind: "component", type: i5.SearchBarComponent, selector: "desy-search-bar", inputs: ["describedBy", "classes", "buttonClasses", "placeholder"], outputs: ["clickEvent"] }, { kind: "directive", type: i6.FocusClickedCellDirective, selector: "[desyFocusClickedCell]" }, { kind: "directive", type: i7.CellDirective, selector: "[desyCell]", inputs: ["row", "rowIndex", "columnIndex"] }, { kind: "directive", type: i8.RowDirective, selector: "[desyRow]", inputs: ["desyRow"] }, { kind: "pipe", type: i9.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
233
233
  }
234
234
  __decorate([
235
235
  DesyContentChild(),
@@ -239,9 +239,9 @@ __decorate([
239
239
  DesyContentChild(),
240
240
  __metadata("design:type", TableAdvancedHeaderComponent)
241
241
  ], TableAdvancedComponent.prototype, "headerComponent", void 0);
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TableAdvancedComponent, decorators: [{
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableAdvancedComponent, decorators: [{
243
243
  type: Component,
244
- args: [{ selector: 'desy-table-advanced', template: "<ng-template #tableContent>\n <table role=\"grid\"\n [class]=\"['c-table-advanced border-t-2 border-b-2 border-neutral-base', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"getHeaderCells()\">\n <tr class=\"border-t border-neutral-base divide-x divide-neutral-base\">\n <th *ngIf=\"hasCheckboxes\" scope=\"col\" [class]=\"['align-top px-base py-xs', checkboxClasses] | makeHtmlList\">\n <span class=\"sr-only\">Seleccionar fila</span>\n </th>\n <th scope=\"col\" *ngFor=\"let item of getHeaderCells(); index as iHeader\" [id]=\"getIdHeader(iHeader)\"\n [attr.aria-sort]=\"item.orderBy ? getStringOrderBy(item.orderBy) : null\"\n [class]=\"['align-top px-base py-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\"\n [attr.colspan]=\"item.colspan ? item.colspan : null\"\n [attr.rowspan]=\"item.rowspan ? item.rowspan : null\"\n [attr.role]=\"item.role ? item.role : null\"\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\n\n <span *ngIf=\"item.orderBy\" class=\"inline-block relative\" (click)=\"handleSortByColumn(iHeader)\" desyFocusClickedCell\n [attr.tabindex]=\"item.orderBy ? -1 : null\"\n [attr.role]=\"item.orderBy ? 'button' : null\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n <span class=\"c-table-advanced__order\" *ngIf=\"item.orderBy\">\n <span class=\"sr-only\">Pulsa para ordenar por esta columna</span>\n <span class=\"c-table-advanced__ascending\" *ngIf=\"item.orderBy === orderByType.asc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M112.07 37.93l-35-35a10 10 0 00-14.14 0l-35 35a10 10 0 0014.14 14.14l13.66-13.66A2.5 2.5 0 0160 40.18V130a10 10 0 0020 0V40.18a2.5 2.5 0 014.27-1.77l13.66 13.66a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__descending\" *ngIf=\"item.orderBy === orderByType.desc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M27.93 102.07l35 35a10 10 0 0014.14 0l35-35a10 10 0 00-14.14-14.14l-13.66 13.66A2.5 2.5 0 0180 99.82V10a10 10 0 00-20 0v89.82a2.5 2.5 0 01-4.27 1.77L42.07 87.93a10 10 0 00-14.14 14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__none\" *ngIf=\"item.orderBy === orderByType.none\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" class=\"text-neutral-base\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M94.7 97.2l-17.2 17.19V25.61L94.7 42.8a7.5 7.5 0 0010.6-10.6l-30-30a7.49 7.49 0 00-10.6 0l-30 30a7.5 7.5 0 0010.6 10.6l17.2-17.19v88.78L45.3 97.2a7.5 7.5 0 10-10.6 10.6l30 30a7.48 7.48 0 0010.6 0l30-30a7.5 7.5 0 00-10.6-10.6z\" fill=\"currentColor\"/></svg>\n </span>\n </span>\n </span>\n\n <span *ngIf=\"!item.orderBy\" class=\"inline-block relative\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n </span>\n </th>\n </tr>\n </thead>\n\n <tbody>\n <tr class=\"divide-x divide-neutral-base\" *ngIf=\"hasFilters()\">\n <td *ngIf=\"hasCheckboxes\" [ngClass]=\"checkboxClasses\"></td>\n <td tabindex=\"-1\" *ngFor=\"let item of getHeaderCells(); index as iHead\" desyFocusClickedCell\n [class]=\"['align-top px-base pb-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\">\n <ng-container *ngIf=\"item.hasSelect && getSelectForItem(item) !== null\">\n <ng-container *ngTemplateOutlet=\"tableSelect; context: {selectable: getSelectForItem(item)}\"></ng-container>\n <ng-template #tableSelect let-selectable=\"selectable\">\n <desy-select [id]=\"getIdHeaderSelect(iHead)\"\n [labelData]=\"{ text: 'Filtrar en esta columna', classes: 'sr-only' }\"\n [classes]=\"selectable.classes ? selectable.classes : 'c-select--sm w-full mt-0'\"\n [formGroupClasses]=\"selectable.formGroupClasses ? selectable.formGroupClasses : 'mb-0'\"\n [name]=\"selectable.name\"\n [items]=\"getItemSelectOptions(selectable)\"\n [disabled]=\"selectable.disabled\"\n [describedBy]=\"getIdHeaderSelect(iHead)\"\n\n [(ngModel)]=\"item.valueSelect\" (ngModelChange)=\"handleInputSearch(item)\"\n\n [role]=\"selectable.role\"\n [ariaLabel]=\"selectable.ariaLabel\"\n [ariaDescribedBy]=\"selectable.ariaDescribedBy\"\n [ariaLabelledBy]=\"selectable.ariaLabelledBy\"\n [ariaHidden]=\"selectable.ariaHidden\"\n [ariaDisabled]=\"selectable.ariaDisabled\"\n [ariaControls]=\"selectable.ariaControls\"\n [ariaCurrent]=\"selectable.ariaCurrent\"\n [ariaLive]=\"selectable.ariaLive\"\n [ariaExpanded]=\"selectable.ariaExpanded\"\n [ariaErrorMessage]=\"selectable.ariaErrorMessage\"\n [ariaHasPopup]=\"selectable.ariaHasPopup\"\n [tabindex]=\"selectable.tabindex\">\n </desy-select>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"item.hasSelect && item.hasFilter\" class=\"pb-sm\"></div>\n\n <desy-search-bar *ngIf=\"item.hasFilter\"\n [(ngModel)]=\"item.valueFilter\" [ngModelOptions]=\"{standalone: true}\"\n (clickEvent)=\"handleInputSearch(item)\"\n (ngModelChange)=\"handleInputSearch(item)\"\n labelText=\"Buscar en esta columna\"\n [id]=\"getIdHeaderFilter(iHead)\"\n placeholder=\"Buscar\"\n [classes]=\"['c-input--sm', item.filterClasses] | makeHtmlList\"\n buttonClasses=\"m-xs p-0.5 text-xs\"\n [describedBy]=\"getIdHeader(iHead)\"> </desy-search-bar>\n </td>\n </tr>\n\n\n <tr *ngFor=\"let row of getVisibleRows(); index as iRow\" class=\"border-t border-b border-neutral-base hover:bg-neutral-lighter\"\n [desyRow]=\"row\"\n [ngClass]=\"{'bg-neutral-light': hasCheckboxes && row.checked }\">\n <td *ngIf=\"hasCheckboxes\" desyFocusClickedCell [class]=\"['px-base py-sm', checkboxClasses] | makeHtmlList\"\n tabindex=\"-1\" >\n <div class=\"c-checkboxes c-checkboxes--sm\">\n <div>\n <div class=\"relative flex items-start\">\n <div class=\"flex items-center mx-sm\">\n <input type=\"checkbox\" class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base text-primary-base\"\n [(ngModel)]=\"row.checked\" (ngModelChange)=\"handleCheckboxChange(row)\"\n [id]=\"getIdRowCheckbox(iRow)\"\n [name]=\"getIdRowCheckbox(iRow)\"\n [attr.aria-label]=\"'Fila ' + iRow\">\n </div>\n <div class=\"pt-0.5 leading-5\">\n <label class=\"sr-only block text-sm -mt-1\" [for]=\"getIdRowCheckbox(iRow)\">Selecciona fila {{ iRow }}</label>\n </div>\n </div>\n </div>\n </div>\n </td>\n <ng-container *ngFor=\"let cell of row.cellsList; first as isFirstCell; index as columnIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirstCell; else elseTd\" scope=\"row\"\n [class]=\"['px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td tabindex=\"-1\" desyFocusClickedCell\n [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : -1\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
244
+ args: [{ selector: 'desy-table-advanced', template: "<ng-template #tableContent>\n <table role=\"grid\"\n [class]=\"['c-table-advanced border-t-2 border-b-2 border-neutral-base', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"getHeaderCells()\">\n <tr class=\"border-t border-neutral-base divide-x divide-neutral-base\">\n <th *ngIf=\"hasCheckboxes\" scope=\"col\" [class]=\"['align-top px-base py-xs', checkboxClasses] | makeHtmlList\">\n <span class=\"sr-only\">Seleccionar fila</span>\n </th>\n <th scope=\"col\" *ngFor=\"let item of getHeaderCells(); index as iHeader\" [id]=\"getIdHeader(iHeader)\"\n [attr.aria-sort]=\"item.orderBy ? getStringOrderBy(item.orderBy) : null\"\n [class]=\"['align-top px-base py-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\"\n [attr.colspan]=\"item.colspan ? item.colspan : null\"\n [attr.rowspan]=\"item.rowspan ? item.rowspan : null\"\n [attr.role]=\"item.role ? item.role : null\"\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\n\n <span *ngIf=\"item.orderBy\" class=\"inline-block relative\" (click)=\"handleSortByColumn(iHeader)\" desyFocusClickedCell\n [attr.tabindex]=\"item.orderBy ? -1 : null\"\n [attr.role]=\"item.orderBy ? 'button' : null\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n <span class=\"c-table-advanced__order\" *ngIf=\"item.orderBy\">\n <span class=\"sr-only\">Pulsa para ordenar por esta columna</span>\n <span class=\"c-table-advanced__ascending\" *ngIf=\"item.orderBy === orderByType.asc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M112.07 37.93l-35-35a10 10 0 00-14.14 0l-35 35a10 10 0 0014.14 14.14l13.66-13.66A2.5 2.5 0 0160 40.18V130a10 10 0 0020 0V40.18a2.5 2.5 0 014.27-1.77l13.66 13.66a10 10 0 0014.14-14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__descending\" *ngIf=\"item.orderBy === orderByType.desc\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M27.93 102.07l35 35a10 10 0 0014.14 0l35-35a10 10 0 00-14.14-14.14l-13.66 13.66A2.5 2.5 0 0180 99.82V10a10 10 0 00-20 0v89.82a2.5 2.5 0 01-4.27 1.77L42.07 87.93a10 10 0 00-14.14 14.14z\" fill=\"currentColor\"/></svg>\n </span>\n <span class=\"c-table-advanced__none\" *ngIf=\"item.orderBy === orderByType.none\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" class=\"text-neutral-base\" aria-hidden=\"true\" width=\"1em\" height=\"1em\"><path d=\"M94.7 97.2l-17.2 17.19V25.61L94.7 42.8a7.5 7.5 0 0010.6-10.6l-30-30a7.49 7.49 0 00-10.6 0l-30 30a7.5 7.5 0 0010.6 10.6l17.2-17.19v88.78L45.3 97.2a7.5 7.5 0 10-10.6 10.6l30 30a7.48 7.48 0 0010.6 0l30-30a7.5 7.5 0 00-10.6-10.6z\" fill=\"currentColor\"/></svg>\n </span>\n </span>\n </span>\n\n <span *ngIf=\"!item.orderBy\" class=\"inline-block relative\">\n <ng-container *ngIf=\"item.text\">{{item.text}}</ng-container>\n <ng-container *ngIf=\"item.contentComponent\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent }\"></ng-container>\n </ng-container>\n </span>\n </th>\n </tr>\n </thead>\n\n <tbody>\n <tr class=\"divide-x divide-neutral-base\" *ngIf=\"hasFilters()\">\n <td *ngIf=\"hasCheckboxes\" [ngClass]=\"checkboxClasses\"></td>\n <td tabindex=\"-1\" *ngFor=\"let item of getHeaderCells(); index as iHead\" desyFocusClickedCell\n [class]=\"['align-top px-base pb-sm border-neutral-base border-b-0 text-left text-sm font-normal text-neutral-dark', item.classes] | makeHtmlList\">\n <ng-container *ngIf=\"item.hasSelect && getSelectForItem(item) !== null\">\n <ng-container *ngTemplateOutlet=\"tableSelect; context: {selectable: getSelectForItem(item)}\"></ng-container>\n <ng-template #tableSelect let-selectable=\"selectable\">\n <desy-select [id]=\"getIdHeaderSelect(iHead)\"\n [labelData]=\"{ text: 'Filtrar por esta columna', classes: 'sr-only' }\"\n [classes]=\"selectable.classes ? selectable.classes : 'c-select--sm w-full mt-0'\"\n [formGroupClasses]=\"selectable.formGroupClasses ? selectable.formGroupClasses : 'mb-0'\"\n [name]=\"selectable.name\"\n [items]=\"getItemSelectOptions(selectable)\"\n [disabled]=\"selectable.disabled\"\n [describedBy]=\"getIdHeaderSelect(iHead)\"\n\n [(ngModel)]=\"item.valueSelect\" (ngModelChange)=\"handleInputSearch(item)\"\n\n [role]=\"selectable.role\"\n [ariaLabel]=\"selectable.ariaLabel\"\n [ariaDescribedBy]=\"selectable.ariaDescribedBy\"\n [ariaLabelledBy]=\"selectable.ariaLabelledBy\"\n [ariaHidden]=\"selectable.ariaHidden\"\n [ariaDisabled]=\"selectable.ariaDisabled\"\n [ariaControls]=\"selectable.ariaControls\"\n [ariaCurrent]=\"selectable.ariaCurrent\"\n [ariaLive]=\"selectable.ariaLive\"\n [ariaExpanded]=\"selectable.ariaExpanded\"\n [ariaErrorMessage]=\"selectable.ariaErrorMessage\"\n [ariaHasPopup]=\"selectable.ariaHasPopup\"\n [tabindex]=\"selectable.tabindex\">\n </desy-select>\n </ng-template>\n </ng-container>\n\n <div *ngIf=\"item.hasSelect && item.hasFilter\" class=\"pb-sm\"></div>\n\n <desy-search-bar *ngIf=\"item.hasFilter\"\n [(ngModel)]=\"item.valueFilter\" [ngModelOptions]=\"{standalone: true}\"\n (clickEvent)=\"handleInputSearch(item)\"\n (ngModelChange)=\"handleInputSearch(item)\"\n labelText=\"Buscar en esta columna\"\n [id]=\"getIdHeaderFilter(iHead)\"\n placeholder=\"Buscar\"\n [classes]=\"['c-input--sm', item.filterClasses] | makeHtmlList\"\n buttonClasses=\"m-xs p-0.5 text-xs\"\n [describedBy]=\"getIdHeader(iHead)\"> </desy-search-bar>\n </td>\n </tr>\n\n\n <tr *ngFor=\"let row of getVisibleRows(); index as iRow\" class=\"border-t border-b border-neutral-base hover:bg-neutral-lighter\"\n [desyRow]=\"row\">\n <td *ngIf=\"hasCheckboxes\" desyFocusClickedCell [class]=\"['px-base py-sm', checkboxClasses] | makeHtmlList\"\n tabindex=\"-1\" >\n <div class=\"c-checkboxes c-checkboxes--sm\">\n <div>\n <div class=\"relative flex items-start\">\n <div class=\"flex items-center mx-sm\">\n <input type=\"checkbox\" class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base text-primary-base\"\n [(ngModel)]=\"row.checked\" (ngModelChange)=\"handleCheckboxChange(row)\"\n [id]=\"getIdRowCheckbox(iRow)\"\n [name]=\"getIdRowCheckbox(iRow)\"\n [attr.aria-label]=\"'Fila ' + iRow\">\n </div>\n <div class=\"pt-0.5 leading-5\">\n <label class=\"sr-only block text-sm -mt-1\" [for]=\"getIdRowCheckbox(iRow)\">Selecciona fila {{ iRow }}</label>\n </div>\n </div>\n </div>\n </div>\n </td>\n <ng-container *ngFor=\"let cell of row.cellsList; first as isFirstCell; index as columnIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirstCell; else elseTd\" scope=\"row\"\n [class]=\"['px-base py-xs border-neutral-base border-b-0 border-r text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : null\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td tabindex=\"-1\" desyFocusClickedCell\n [class]=\"['px-base py-sm', cell.classes] | makeHtmlList\"\n desyCell [row]=\"row\" [rowIndex]=\"iRow\" [columnIndex]=\"columnIndex\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.role]=\"cell.role ? cell.role : null\"\n [attr.aria-label]=\"cell.ariaLabel ? cell.ariaLabel : null\"\n [attr.aria-describedby]=\"cell.ariaDescribedBy ? cell.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"cell.ariaLabelledBy ? cell.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"cell.ariaHidden ? cell.ariaHidden : null\"\n [attr.aria-disabled]=\"cell.ariaDisabled ? cell.ariaDisabled : null\"\n [attr.aria-controls]=\"cell.ariaControls ? cell.ariaControls : null\"\n [attr.aria-current]=\"cell.ariaCurrent ? cell.ariaCurrent : null\"\n [attr.aria-live]=\"cell.ariaLive ? cell.ariaLive : null\"\n [attr.aria-expanded]=\"cell.ariaExpanded ? cell.ariaExpanded : null\"\n [attr.aria-errormessage]=\"cell.ariaErrorMessage ? cell.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"cell.ariaHasPopup ? cell.ariaHasPopup : null\"\n [attr.tabindex]=\"cell.tabindex ? cell.tabindex : -1\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
245
245
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { rows: [{
246
246
  type: Input
247
247
  }], head: [{
@@ -283,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
283
283
  }], recalculateTable: [{
284
284
  type: Output
285
285
  }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWR2YW5jZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC90YWJsZS1hZHZhbmNlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkL3RhYmxlLWFkdmFuY2VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBb0IsT0FBTyxFQUF1QixNQUFNLGtCQUFrQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7Ozs7QUFRekYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQWlDaEUsWUFBb0IsRUFBYyxFQUFVLGNBQWlDO1FBQzNF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O3NCQUF2RCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFHUyxlQUFlO3NCQUE3RCxlQUFlO3VCQUFDLDRCQUE0QjtnQkFFRCxnQkFBZ0I7c0JBQTNELGVBQWU7dUJBQUMseUJBQXlCO2dCQUNkLE9BQU87c0JBQWxDLFlBQVk7dUJBQUMsWUFBWTtnQkFFaEIsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2Nlc3NpYmlsaXR5Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQge1NlYXJjaFV0aWxzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvc2VhcmNoLXV0aWxzJztcbmltcG9ydCB7SGVhZENlbGxNb2RlbERhdGEsIE9yZGVyQnksIFJvd0RhdGEsIFdyYXBwZXJEYXRhfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7VGFibGVDYXB0aW9uQ29tcG9uZW50fSBmcm9tICcuLi90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNhcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVBZHZhbmNlZEhlYWRlckNlbGxDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYmxlQWR2YW5jZWRSb3dDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7Q2VsbERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1Jvd0RpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7UmVjYWxjdWxhdGVUYWJsZVBhcmFtc30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZWNhbGN1bGF0ZS10YWJsZS1wYXJhbXMnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IFRhYmxlQWR2YW5jZWRTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RJdGVtRGF0YSB9IGZyb20gJy4uLy4uLy4uL2Rlc3ktZm9ybXMvaW50ZXJmYWNlcy9zZWxlY3QtaXRlbS1kYXRhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10YWJsZS1hZHZhbmNlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1hZHZhbmNlZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVBZHZhbmNlZENvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSByb3dzOiBSb3dEYXRhW107IC8vIG9yaWdpbmFsIGRhdGFcbiAgQElucHV0KCkgaGVhZDogSGVhZENlbGxNb2RlbERhdGFbXTtcblxuICBASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhcHRpb25DbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpcnN0Q2VsbElzSGVhZGVyOiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNDaGVja2JveGVzOiBib29sZWFuO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNoZWNrYm94Q2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB3cmFwcGVyOiBXcmFwcGVyRGF0YTtcblxuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUNhcHRpb25Db21wb25lbnQpIGNhcHRpb25Db21wb25lbnQ6IFRhYmxlQ2FwdGlvbkNvbXBvbmVudDtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVBZHZhbmNlZEhlYWRlckNvbXBvbmVudCkgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCkgcm93Q29tcG9uZW50TGlzdDogUXVlcnlMaXN0PFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkcmVuKFJvd0RpcmVjdGl2ZSkgcm93RGF0YTogUXVlcnlMaXN0PFJvd0RpcmVjdGl2ZT47XG5cbiAgQE91dHB1dCgpIHJvd3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByb3dzQ2hlY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlY2FsY3VsYXRlVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2FsY3VsYXRlVGFibGVQYXJhbXM+KCk7XG5cbiAgdmlzaWJsZVJvd3M6IFJvd0RhdGFbXXxUYWJsZUFkdmFuY2VkUm93Q29tcG9uZW50W107XG4gIG9yZGVyQnlUeXBlID0gT3JkZXJCeTtcbiAgaXNSZXNldDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbW50c0ZvY3VzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1t0YWJpbmRleF0nKTtcbiAgICBpZiAoZWxlbW50c0ZvY3VzKSB7XG4gICAgICBlbGVtbnRzRm9jdXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgfVxuICAgIHRoaXMucmVjYWxjdWxhdGVWaXNpYmxlRWxlbWVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNjYSBsYXMgZmlsYXMgdmlzaWJsZXMgdHJhcyByZWFsaXphcnNlIHVuYSBiw7pzcXVlZGEgbyB1bmEgb3JkZW5hY2nDs25cbiAgICovXG4gIHJlY2FsY3VsYXRlVmlzaWJsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY2FsY3VsYXRlUGFyYW1zID0gdGhpcy5idWlsZFJlY2FsY3VsYXRlUGFyYW1zKCk7XG5cbiAgICAvLyBTaSBzZSBjYXB0dXJhIGVsIGV2ZW50byByZWNhbGN1bGF0ZVRhYmxlIHNlIGRlamEgYWwgdXN1YXJpbyBsYSByZXNwb25zYWJpbGlkYWQgZGUgZmlsdHJhciB5IG9yZGVuYXIgbG9zIGVsZW1lbnRvcy5cbiAgICBpZiAodGhpcy5yZWNhbGN1bGF0ZVRhYmxlLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlY2FsY3VsYXRlVGFibGUuZW1pdChyZWNhbGN1bGF0ZVBhcmFtcyk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIC8vIFNlIGRlYmVuIG1vc3RyYXIgdG9kYXMgbGFzIGZpbGFzIHRlbXBvcmFsbWVudGUgcGFyYSBwb2RlciBhcGxpY2FyIGVsIGZpbHRybyB5IGxhIG9yZGVuYWNpw7NuIHNvYnJlIGVsIGNvbnRlbmlkbyBpbnNlcnRhZG9cbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBTZSBhcGxpY2EgZWwgZmlsdHJvIHkgbGEgb3JkZW5hY2nDs25cbiAgICAgIGxldCByb3dEYXRhID0gdGhpcy5maWx0ZXJSb3dzKHJlY2FsY3VsYXRlUGFyYW1zLCB0aGlzLnJvd0RhdGEudG9BcnJheSgpKTtcbiAgICAgIHJvd0RhdGEgPSB0aGlzLnNvcnRSb3dzKHJlY2FsY3VsYXRlUGFyYW1zLCByb3dEYXRhKTtcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSByb3dEYXRhLm1hcChyID0+IHIuZGVzeVJvdykgYXMgUm93RGF0YVtdfFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnRbXTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnV5ZSBsb3MgcGFyw6FtZXRyb3MgbmVjZXNhcmlvcyBwYXJhIHJlY2FsY3VsYXIgbGEgdGFibGEsIGluZGljYW5kbyBsb3MgZmlsdHJvcyB5IGxhIG9yZGVuYWNpw7NuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUmVjYWxjdWxhdGVQYXJhbXMoKTogUmVjYWxjdWxhdGVUYWJsZVBhcmFtcyB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZmlsdGVyczogW10sXG4gICAgICBzb3J0OiBudWxsXG4gICAgfTtcblxuICAgIGNvbnN0IGhlYWQgPSB0aGlzLmdldEhlYWRlckNlbGxzKCkgYXMgKEhlYWRDZWxsTW9kZWxEYXRhfFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50KVtdO1xuICAgIGlmIChoZWFkKSB7XG4gICAgICBoZWFkLmZvckVhY2goKGhlYWRlckNlbGwsIGhlYWRlckNlbGxJbmRleCkgPT4ge1xuICAgICAgICBpZiAoaGVhZGVyQ2VsbC5oYXNGaWx0ZXIgJiYgaGVhZGVyQ2VsbC5hY3RpdmVGaWx0ZXIpIHtcbiAgICAgICAgICBwYXJhbXMuZmlsdGVycy5wdXNoKHsgY29sdW1uSW5kZXg6IGhlYWRlckNlbGxJbmRleCwgZmlsdGVyVGV4dDogaGVhZGVyQ2VsbC52YWx1ZUZpbHRlciB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZihoZWFkZXJDZWxsLmhhc1NlbGVjdCAmJiBoZWFkZXJDZWxsLmFjdGl2ZVNlbGVjdCl7XG4gICAgICAgICAgcGFyYW1zLmZpbHRlcnMucHVzaCh7IGNvbHVtbkluZGV4OiBoZWFkZXJDZWxsSW5kZXgsIGZpbHRlclRleHQ6IGhlYWRlckNlbGwudmFsdWVTZWxlY3QgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBvcmRlckJ5Q29sdW1uSW5kZXggPSBoZWFkLmZpbmRJbmRleChjZWxsID0+IGNlbGwub3JkZXJCeSAmJiBjZWxsLm9yZGVyQnkgIT09IE9yZGVyQnkubm9uZSk7XG4gICAgICBwYXJhbXMuc29ydCA9IChvcmRlckJ5Q29sdW1uSW5kZXggPj0gMCkgPyB7IGNvbHVtbkluZGV4OiBvcmRlckJ5Q29sdW1uSW5kZXgsIG9yZGVyOiBoZWFkW29yZGVyQnlDb2x1bW5JbmRleF0ub3JkZXJCeSB9IDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIGZ1bmNpb25lcyBkZSByZWNvZ2VyIGlkcywgeSBjYXJhY3RlcmlzdGljYXNcbiAgICovXG5cbiAgaGFzRmlsdGVycygpOiBib29sZWFuIHtcbiAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkZXJDZWxscygpO1xuICAgIHJldHVybiBoZWFkID8gaGVhZC5maW5kSW5kZXgoY2VsbCA9PiAoY2VsbC5oYXNGaWx0ZXIpIHx8IChjZWxsLmhhc1NlbGVjdCkpID49IDAgOiBmYWxzZTtcbiAgfVxuXG4gIGdldEhlYWRlckNlbGxzKCk6IEhlYWRDZWxsTW9kZWxEYXRhW118VGFibGVBZHZhbmNlZEhlYWRlckNlbGxDb21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyQ29tcG9uZW50ICYmIHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzLmxlbmd0aCA+IDAgPyB0aGlzLmhlYWRlckNvbXBvbmVudC5jZWxscy50b0FycmF5KCkgOiB0aGlzLmhlYWQ7XG4gIH1cblxuICBnZXRSb3dzKCl7XG4gICAgbGV0IHJvd3MgPSBbXTtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MgPSB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dzKSB7XG4gICAgICByb3dzID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaSBzZSBzb2JyZWVzY3JpYmUgIGVsIGNvbXBvcnRhbWllbnRvIHBvciBkZWZlY3RvIGRlIGZpbHRyYWRvIHkgb3JkZW5hY2nDs24sIHNlIHV0aWxpemFyw6FuIGxhcyBpbmRpY2FkYXMgZGVzZGUgZnVlcmEgZGVsXG4gICAqIGNvbXBvbmVudGUgKHlhIHNlYSBwb3IgcGFyw6FtZXRybyBvIHBvciBjb250ZW5pZG8pLlxuICAgKiBTaSBubyBzZSBzb2JyZWVzY3JpYmUsIGRldnVlbHZlIGxhcyBmaWxhcyBjYWxjdWxhZGFzLlxuICAgKi9cbiAgZ2V0VmlzaWJsZVJvd3MoKXtcbiAgICByZXR1cm4gdGhpcy5yZWNhbGN1bGF0ZVRhYmxlLm9ic2VydmVycy5sZW5ndGggPiAwID8gdGhpcy5nZXRSb3dzKCkgOiB0aGlzLnZpc2libGVSb3dzO1xuICB9XG5cbiAgZ2V0SWRQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZFByZWZpeCA/IHRoaXMuaWRQcmVmaXggOiAnaWQtdGFibGUtcm93JztcbiAgfVxuXG4gIGdldElkSGVhZGVyKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldElkUHJlZml4KCkgKyAnLWhlYWRlci0nICsgaW5kZXg7XG4gIH1cblxuICBnZXRJZFJvd0NoZWNrYm94KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldElkUHJlZml4KCkgKyAnLWNoZWNrYm94LScgKyBpbmRleDtcbiAgfVxuXG4gIGdldElkSGVhZGVyRmlsdGVyKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldElkUHJlZml4KCkgKyAnLWhlYWRlci1maWx0ZXItJyArIGluZGV4O1xuICB9XG5cbiAgZ2V0SWRIZWFkZXJTZWxlY3QoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SWRQcmVmaXgoKSArICctaGVhZGVyLXNlbGVjdC0nICsgaW5kZXg7XG4gIH1cblxuICBnZXRDYXB0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0aW9uQ29tcG9uZW50ID8gdGhpcy5jYXB0aW9uQ29tcG9uZW50LmNsYXNzZXMgOiB0aGlzLmNhcHRpb25DbGFzc2VzO1xuICB9XG5cbiAgZ2V0U3RyaW5nT3JkZXJCeShvcmRlckJ5OiBPcmRlckJ5KTogc3RyaW5nIHtcbiAgICBpZiAob3JkZXJCeSA9PT0gT3JkZXJCeS5hc2Mpe1xuICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIH0gZWxzZSBpZiAob3JkZXJCeSA9PT0gT3JkZXJCeS5kZXNjKXtcbiAgICAgIHJldHVybiAnZGVzY2VuZGluZyc7XG4gICAgfSBlbHNlIGlmIChvcmRlckJ5ID09PSBPcmRlckJ5Lm5vbmUpe1xuICAgICAgcmV0dXJuICdub25lJztcbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RGb3JJdGVtKGl0ZW06IGFueSk6IFRhYmxlQWR2YW5jZWRTZWxlY3RDb21wb25lbnR7XG4gICAgcmV0dXJuIGl0ZW0uc2VsZWN0Q29tcG9uZW50ID8gaXRlbS5zZWxlY3RDb21wb25lbnQgOiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbVNlbGVjdE9wdGlvbnMoaXRlbTogVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudCk6IFNlbGVjdEl0ZW1EYXRhW10ge1xuICAgIHJldHVybiBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0ICYmIGl0ZW0uc2VsZWN0SXRlbUNvbXBvbmVudExpc3QubGVuZ3RoID4gMCA/XG4gICAgICBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0LnRvQXJyYXkoKSA6IGl0ZW0uaXRlbXM7XG4gIH1cblxuICBnZXRDb250ZW50Q29tcG9uZW50KGl0ZW06IFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50KTogQ29udGVudENvbXBvbmVudHtcbiAgICByZXR1cm4gaXRlbS5jb250ZW50Q29tcG9uZW50ID8gaXRlbS5jb250ZW50Q29tcG9uZW50IDogbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGNoZWNrc1xuICAgKi9cbiAgaGFuZGxlQ2hlY2tib3hDaGFuZ2Uocm93OiBSb3dEYXRhfFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAocm93IGluc3RhbmNlb2YgVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCkge1xuICAgICAgcm93LmNoZWNrZWRDaGFuZ2UuZW1pdChyb3cuY2hlY2tlZCk7XG4gICAgfVxuICAgIHRoaXMubm90aWZ5Q2hlY2tlZENoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1pdGUgZGVzbWFyY2FyIHRvZGFzIGxhcyBmaWxhc1xuICAgKi9cbiAgcHJpdmF0ZSB1bmNoZWNrQWxsKCk6IHZvaWR7XG4gICAgdGhpcy5nZXRSb3dzKCkuZm9yRWFjaChyID0+IHtcbiAgICAgIGNvbnN0IG11c3RFbWl0ID0gci5jaGVja2VkICYmIHIgaW5zdGFuY2VvZiBUYWJsZUFkdmFuY2VkUm93Q29tcG9uZW50O1xuICAgICAgci5jaGVja2VkID0gZmFsc2U7XG4gICAgICBpZiAobXVzdEVtaXQpIHtcbiAgICAgICAgKHIgYXMgVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCkuY2hlY2tlZENoYW5nZS5lbWl0KHIuY2hlY2tlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ub3RpZnlDaGVja2VkQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpY2EgY2FtYmlvcyBlbiBsYXMgZmlsYXNcbiAgICovXG4gIHByaXZhdGUgbm90aWZ5Q2hlY2tlZENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yb3dzQ2hhbmdlLmVtaXQodGhpcy5yb3dzKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3dDaGVja3M6IGFueSA9IHt9O1xuICAgIHRoaXMuZ2V0Um93cygpLmZvckVhY2gociA9PiByb3dDaGVja3Nbci5pZF0gPSAhIXIuY2hlY2tlZCk7IC8vIFNlIGFwbGljYW4gdGFtYmnDqW4gYSBsYXMgbm8gdmlzaWJsZXNcbiAgICB0aGlzLnJvd3NDaGVja2VkLmVtaXQocm93Q2hlY2tzKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGJ1c3F1ZWRhXG4gICAqL1xuICBoYW5kbGVJbnB1dFNlYXJjaChpdGVtOiBIZWFkQ2VsbE1vZGVsRGF0YSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmhhc0ZpbHRlcikgeyAvLyBzaSB0aWVuZSBidXNjYWRvclxuICAgICAgaXRlbS5hY3RpdmVGaWx0ZXIgPSAhIWl0ZW0udmFsdWVGaWx0ZXI7XG4gICAgICB0aGlzLnVuY2hlY2tBbGwoKTtcbiAgICB9XG4gICAgaWYoaXRlbS5oYXNTZWxlY3QpeyAvL1NpIHRpZW5lIHNlbGVjY2lvbmFibGVcbiAgICAgIGl0ZW0uYWN0aXZlU2VsZWN0ID0gISFpdGVtLnZhbHVlU2VsZWN0O1xuICAgICAgdGhpcy51bmNoZWNrQWxsKCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWNhbGN1bGF0ZVZpc2libGVFbGVtZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlIGZpbHRyYW4gbGFzIGZpbGFzIHNlZ8O6biBsbyBlc3BlY2lmaWNhZG8gZW4gbGEgYmFycmEgZGUgYsO6c3F1ZWRhIGRlIGNhZGEgY29sdW1uYS5cbiAgICogU2kgbm8gaGF5IGLDunNxdWVkYSBzc2UgZGV2dWVsdmVuIHRvZGFzIGxhcyBmaWxhcy5cbiAgICogQHBhcmFtIHJlY2FsY3VsYXRlUGFyYW1zIHBhcmFtZXRyb3MgcGFyYSByZWNhbGN1bGFyIGxvcyBlbGVtZW50b3MgdmlzaWJsZXNcbiAgICogQHBhcmFtIHJvd3MgbGlzdGEgY29uIHRvZGFzIGxhcyBmaWxhc1xuICAgKiBAcmV0dXJuIGxpc3RhIGRlIGZpbGFzIGZpbHRyYWRhXG4gICAqL1xuICBwcml2YXRlIGZpbHRlclJvd3MocmVjYWxjdWxhdGVQYXJhbXM6IFJlY2FsY3VsYXRlVGFibGVQYXJhbXMsIHJvd3M6IFJvd0RpcmVjdGl2ZVtdKTogUm93RGlyZWN0aXZlW10ge1xuICAgIGxldCBmaWx0ZXJlZFJvd3MgPSByb3dzO1xuICAgIHJlY2FsY3VsYXRlUGFyYW1zLmZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgZmlsdGVyZWRSb3dzID0gZmlsdGVyZWRSb3dzLmZpbHRlcihyb3cgPT5cbiAgICAgICAgU2VhcmNoVXRpbHMuY29udGFpbnNBbnlXb3JkRnJvbShyb3cuZ2V0Q2VsbChmaWx0ZXIuY29sdW1uSW5kZXgpLmdldENvbnRlbnQoKSwgZmlsdGVyLmZpbHRlclRleHQpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWRSb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqIG9yZGVuYWNpb25cbiAgICovXG5cbiAgLyoqXG4gICAqIFBlcm1pdGUgaW5kaWNhciBxdWUgc2UgZGViZSBvcmRlbmFyIGxhIHRhYmxhXG4gICAqIEBwYXJhbSBpbmRleCBpbmRpY2UgZGUgbGEgY29sdW1uYVxuICAgKi9cbiAgaGFuZGxlU29ydEJ5Q29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkZXJDZWxscygpO1xuICAgIGlmIChoZWFkKSB7XG4gICAgICBoZWFkLmZvckVhY2goKGNlbGwsIGNlbGxJbmRleCkgPT4ge1xuICAgICAgICBpZiAoY2VsbC5vcmRlckJ5KSB7XG4gICAgICAgICAgY2VsbC5vcmRlckJ5ID0gY2VsbEluZGV4ID09PSBpbmRleCA/IHRoaXMuZ2V0TmV4dERpcmVjdGlvbihjZWxsKSA6IE9yZGVyQnkubm9uZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWNhbGN1bGF0ZVZpc2libGVFbGVtZW50cygpO1xuICB9XG5cblxuICAvKipcbiAgICogT3JkZW5hIGxhcyBmaWxhcyBpbmRpY2FkYXMgc2Vnw7puIGxhIGNvbHVtbmEgZXNwZWNpZmljYWRhIGVuIGxhIGNhYmVjZXJhXG4gICAqIEBwYXJhbSByZWNhbGN1bGF0ZVBhcmFtcyBwYXJhbWV0cm9zIHBhcmEgcmVjYWxjdWxhciBsb3MgZWxlbWVudG9zIHZpc2libGVzXG4gICAqIEBwYXJhbSByb3dzIGZpbGFzIGRlIGxhIHRhYmxhIGEgb3JkZW5hclxuICAgKiBAcmV0dXJuIG1pc21hcyBmaWxhcyBwZXJvIG9yZGVuYWRhcyBwb3IgbGEgY29sdW1uYSBpbmRpY2FkYVxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0Um93cyhyZWNhbGN1bGF0ZVBhcmFtczogUmVjYWxjdWxhdGVUYWJsZVBhcmFtcywgcm93czogUm93RGlyZWN0aXZlW10pOiBSb3dEaXJlY3RpdmVbXSB7XG4gICAgbGV0IHNvcnRlZFJvd3MgPSByb3dzO1xuICAgIGlmIChyZWNhbGN1bGF0ZVBhcmFtcy5zb3J0KSB7XG4gICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHJlY2FsY3VsYXRlUGFyYW1zLnNvcnQuY29sdW1uSW5kZXg7XG4gICAgICBjb25zdCBpc0FzYyA9IHJlY2FsY3VsYXRlUGFyYW1zLnNvcnQub3JkZXIgPT09IE9yZGVyQnkuYXNjO1xuICAgICAgc29ydGVkUm93cyA9IHJvd3Muc29ydCgoYSwgYikgPT5cbiAgICAgICAgdGhpcy5jb21wYXJlQ2VsbENvbnRlbnQoYS5nZXRDZWxsKGNvbHVtbkluZGV4KSwgYi5nZXRDZWxsKGNvbHVtbkluZGV4KSwgaXNBc2MpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc29ydGVkUm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJhIGVsIGNvbnRlbmlkbyBkZSBkb3MgY2VsZGFzLiBFc3RlIHNlIGludmllcnRlIHNpIGVsIG9yZGVuIGVzcGVjaWZpY2FkbyBlcyBkZXNjZW5kZW50ZS5cbiAgICovXG4gIGNvbXBhcmVDZWxsQ29udGVudChhOiBDZWxsRGlyZWN0aXZlLCBiOiBDZWxsRGlyZWN0aXZlLCBpc0FzYzogYm9vbGVhbik6IG51bWJlcntcbiAgICBsZXQgcmVzdWx0O1xuICAgIGNvbnN0IGFDb21wYXJhYmxlID0gdGhpcy5jbGVhbkN1cnJlbmN5KGEuZ2V0Q29udGVudCgpKTtcbiAgICBjb25zdCBiQ29tcGFyYWJsZSA9IHRoaXMuY2xlYW5DdXJyZW5jeShiLmdldENvbnRlbnQoKSk7XG5cbiAgICBpZiAoaXNOYU4oK2FDb21wYXJhYmxlKSAmJiBpc05hTigrYkNvbXBhcmFibGUpICkgeyAvLyBzb24gdGV4dG9zXG4gICAgICByZXN1bHQgPSBhQ29tcGFyYWJsZS5sb2NhbGVDb21wYXJlKGJDb21wYXJhYmxlLCAnZXMnLCB7IHNlbnNpdGl2aXR5OiAnYmFzZScsIGlnbm9yZVB1bmN0dWF0aW9uOiB0cnVlIH0pO1xuICAgIH1lbHNleyAvLyBzb24gbnVtZXJvc1xuICAgICAgcmVzdWx0ID0gYUNvbXBhcmFibGUubG9jYWxlQ29tcGFyZShiQ29tcGFyYWJsZSwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCAqIChpc0FzYyA/IDEgOiAtMSk7XG4gIH1cblxuICAvKipcbiAgICogc2UgY2FsY3VsYSBsYSBvcmRlbmFjacOzbiBudWV2YVxuICAgKi9cbiAgcHJpdmF0ZSBnZXROZXh0RGlyZWN0aW9uKGl0ZW06IEhlYWRDZWxsTW9kZWxEYXRhKTogT3JkZXJCeSB7XG4gICAgaWYgKGl0ZW0ub3JkZXJCeSA9PT0gT3JkZXJCeS5ub25lIHx8IGl0ZW0ub3JkZXJCeSA9PT0gT3JkZXJCeS5kZXNjKSB7XG4gICAgICByZXR1cm4gT3JkZXJCeS5hc2M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBPcmRlckJ5LmRlc2M7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNpIGVzIHVuYSBjYW50aWRhZCBkZSBkaW5lcm8gc2UgcXVpdGEg4oKsIHBhcmEgcG9kZXIgY29tcGFyYXIgbG9zIG51bWVyb3NcbiAgICovXG4gIHByaXZhdGUgY2xlYW5DdXJyZW5jeSh0eHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKC9bXFxkLixdK1tcXOKCrF0vZy50ZXN0KHR4dCkpIHtcbiAgICAgIHR4dCA9IHR4dC5yZXBsYWNlKC/igqwvZywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gdHh0O1xuICB9XG5cbiAgc2VsZWN0RmlsdGVyKGl0ZW06IFRhYmxlQWR2YW5jZWRTZWxlY3RDb21wb25lbnQsIGl0ZW1WYWx1ZTogYW55KTogdm9pZCB7XG4gICAgaXRlbS52YWx1ZUNoYW5nZS5lbWl0KGl0ZW1WYWx1ZSk7XG5cbiAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkZXJDZWxscygpO1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICBpZiAoaGVhZCAmJiByb3dzKSB7XG4gICAgICBoZWFkLmZvckVhY2goKGNlbGw6IFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50LCBjZWxsSW5kZXgpID0+IHtcbiAgICAgIH0pO1xuICAgICAgcm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGFibGVDb250ZW50PlxuICA8dGFibGUgcm9sZT1cImdyaWRcIlxuICAgICAgICAgIFtjbGFzc109XCJbJ2MtdGFibGUtYWR2YW5jZWQgYm9yZGVyLXQtMiBib3JkZXItYi0yIGJvcmRlci1uZXV0cmFsLWJhc2UnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uQ29tcG9uZW50XCIgW2NsYXNzXT1cImdldENhcHRpb25DbGFzcygpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2FwdGlvbkNvbXBvbmVudCwgdGV4dDogY2FwdGlvbiA/IGNhcHRpb24gOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2FwdGlvbj5cbiAgICAgIDx0aGVhZCAqbmdJZj1cImdldEhlYWRlckNlbGxzKClcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItbmV1dHJhbC1iYXNlIGRpdmlkZS14IGRpdmlkZS1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiaGFzQ2hlY2tib3hlc1wiIHNjb3BlPVwiY29sXCIgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHkteHMnLCBjaGVja2JveENsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TZWxlY2Npb25hciBmaWxhPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRIZWFkZXJDZWxscygpOyBpbmRleCBhcyBpSGVhZGVyXCIgW2lkXT1cImdldElkSGVhZGVyKGlIZWFkZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNvcnRdPVwiaXRlbS5vcmRlckJ5ID8gZ2V0U3RyaW5nT3JkZXJCeShpdGVtLm9yZGVyQnkpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHktc20gYm9yZGVyLW5ldXRyYWwtYmFzZSBib3JkZXItYi0wIHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbmV1dHJhbC1kYXJrJywgaXRlbS5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJpdGVtLmNvbHNwYW4gPyBpdGVtLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJpdGVtLnJvd3NwYW4gPyBpdGVtLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJpdGVtLnJvbGUgPyBpdGVtLnJvbGUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsID8gaXRlbS5hcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIml0ZW0uYXJpYURlc2NyaWJlZEJ5ID8gaXRlbS5hcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeSA/IGl0ZW0uYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW4gPyBpdGVtLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkID8gaXRlbS5hcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzID8gaXRlbS5hcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudCA/IGl0ZW0uYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiaXRlbS5hcmlhTGl2ZSA/IGl0ZW0uYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkID8gaXRlbS5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJpdGVtLmFyaWFFcnJvck1lc3NhZ2UgPyBpdGVtLmFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwID8gaXRlbS5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6IG51bGxcIj5cblxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLm9yZGVyQnlcIiBjbGFzcz1cImlubGluZS1ibG9jayByZWxhdGl2ZVwiIChjbGljayk9XCJoYW5kbGVTb3J0QnlDb2x1bW4oaUhlYWRlcilcIiBkZXN5Rm9jdXNDbGlja2VkQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5vcmRlckJ5ID8gLTEgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiaXRlbS5vcmRlckJ5ID8gJ2J1dHRvbicgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnRleHRcIj57e2l0ZW0udGV4dH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmNvbnRlbnRDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGl0ZW0uY29udGVudENvbXBvbmVudCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtdGFibGUtYWR2YW5jZWRfX29yZGVyXCIgKm5nSWY9XCJpdGVtLm9yZGVyQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlB1bHNhIHBhcmEgb3JkZW5hciBwb3IgZXN0YSBjb2x1bW5hPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjLXRhYmxlLWFkdmFuY2VkX19hc2NlbmRpbmdcIiAqbmdJZj1cIml0ZW0ub3JkZXJCeSA9PT0gb3JkZXJCeVR5cGUuYXNjXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTQwIDE0MFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHdpZHRoPVwiMWVtXCIgaGVpZ2h0PVwiMWVtXCI+PHBhdGggZD1cIk0xMTIuMDcgMzcuOTNsLTM1LTM1YTEwIDEwIDAgMDAtMTQuMTQgMGwtMzUgMzVhMTAgMTAgMCAwMDE0LjE0IDE0LjE0bDEzLjY2LTEzLjY2QTIuNSAyLjUgMCAwMTYwIDQwLjE4VjEzMGExMCAxMCAwIDAwMjAgMFY0MC4xOGEyLjUgMi41IDAgMDE0LjI3LTEuNzdsMTMuNjYgMTMuNjZhMTAgMTAgMCAwMDE0LjE0LTE0LjE0elwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtdGFibGUtYWR2YW5jZWRfX2Rlc2NlbmRpbmdcIiAqbmdJZj1cIml0ZW0ub3JkZXJCeSA9PT0gb3JkZXJCeVR5cGUuZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB3aWR0aD1cIjFlbVwiIGhlaWdodD1cIjFlbVwiPjxwYXRoIGQ9XCJNMjcuOTMgMTAyLjA3bDM1IDM1YTEwIDEwIDAgMDAxNC4xNCAwbDM1LTM1YTEwIDEwIDAgMDAtMTQuMTQtMTQuMTRsLTEzLjY2IDEzLjY2QTIuNSAyLjUgMCAwMTgwIDk5LjgyVjEwYTEwIDEwIDAgMDAtMjAgMHY4OS44MmEyLjUgMi41IDAgMDEtNC4yNyAxLjc3TDQyLjA3IDg3LjkzYTEwIDEwIDAgMDAtMTQuMTQgMTQuMTR6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy10YWJsZS1hZHZhbmNlZF9fbm9uZVwiICAqbmdJZj1cIml0ZW0ub3JkZXJCeSA9PT0gb3JkZXJCeVR5cGUubm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiBjbGFzcz1cInRleHQtbmV1dHJhbC1iYXNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgd2lkdGg9XCIxZW1cIiBoZWlnaHQ9XCIxZW1cIj48cGF0aCBkPVwiTTk0LjcgOTcuMmwtMTcuMiAxNy4xOVYyNS42MUw5NC43IDQyLjhhNy41IDcuNSAwIDAwMTAuNi0xMC42bC0zMC0zMGE3LjQ5IDcuNDkgMCAwMC0xMC42IDBsLTMwIDMwYTcuNSA3LjUgMCAwMDEwLjYgMTAuNmwxNy4yLTE3LjE5djg4Ljc4TDQ1LjMgOTcuMmE3LjUgNy41IDAgMTAtMTAuNiAxMC42bDMwIDMwYTcuNDggNy40OCAwIDAwMTAuNiAwbDMwLTMwYTcuNSA3LjUgMCAwMC0xMC42LTEwLjZ6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLm9yZGVyQnlcIiBjbGFzcz1cImlubGluZS1ibG9jayByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50ZXh0XCI+e3tpdGVtLnRleHR9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb250ZW50Q29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBpdGVtLmNvbnRlbnRDb21wb25lbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cblxuICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciBjbGFzcz1cImRpdmlkZS14IGRpdmlkZS1uZXV0cmFsLWJhc2VcIiAqbmdJZj1cImhhc0ZpbHRlcnMoKVwiPlxuICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJoYXNDaGVja2JveGVzXCIgW25nQ2xhc3NdPVwiY2hlY2tib3hDbGFzc2VzXCI+PC90ZD5cbiAgICAgICAgICAgICAgPHRkIHRhYmluZGV4PVwiLTFcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRIZWFkZXJDZWxscygpOyBpbmRleCBhcyBpSGVhZFwiIGRlc3lGb2N1c0NsaWNrZWRDZWxsXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiWydhbGlnbi10b3AgcHgtYmFzZSBwYi1zbSBib3JkZXItbmV1dHJhbC1iYXNlIGJvcmRlci1iLTAgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uZXV0cmFsLWRhcmsnLCBpdGVtLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5oYXNTZWxlY3QgJiYgZ2V0U2VsZWN0Rm9ySXRlbShpdGVtKSAhPT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVTZWxlY3Q7IGNvbnRleHQ6IHtzZWxlY3RhYmxlOiBnZXRTZWxlY3RGb3JJdGVtKGl0ZW0pfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlU2VsZWN0IGxldC1zZWxlY3RhYmxlPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkZXN5LXNlbGVjdCBbaWRdPVwiZ2V0SWRIZWFkZXJTZWxlY3QoaUhlYWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwieyB0ZXh0OiAnRmlsdHJhciBlbiBlc3RhIGNvbHVtbmEnLCBjbGFzc2VzOiAnc3Itb25seScgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJzZWxlY3RhYmxlLmNsYXNzZXMgPyBzZWxlY3RhYmxlLmNsYXNzZXMgOiAnYy1zZWxlY3QtLXNtIHctZnVsbCBtdC0wJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJzZWxlY3RhYmxlLmZvcm1Hcm91cENsYXNzZXMgPyBzZWxlY3RhYmxlLmZvcm1Hcm91cENsYXNzZXMgOiAnbWItMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2VsZWN0YWJsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJnZXRJdGVtU2VsZWN0T3B0aW9ucyhzZWxlY3RhYmxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0YWJsZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpYmVkQnldPVwiZ2V0SWRIZWFkZXJTZWxlY3QoaUhlYWQpXCJcblxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlU2VsZWN0XCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlSW5wdXRTZWFyY2goaXRlbSlcIlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJzZWxlY3RhYmxlLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJzZWxlY3RhYmxlLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cInNlbGVjdGFibGUuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJzZWxlY3RhYmxlLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cInNlbGVjdGFibGUuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cInNlbGVjdGFibGUuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwic2VsZWN0YWJsZS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cInNlbGVjdGFibGUuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cInNlbGVjdGFibGUuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJzZWxlY3RhYmxlLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJzZWxlY3RhYmxlLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJzZWxlY3RhYmxlLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwic2VsZWN0YWJsZS50YWJpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGVzeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaGFzU2VsZWN0ICYmIGl0ZW0uaGFzRmlsdGVyXCIgY2xhc3M9XCJwYi1zbVwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGVzeS1zZWFyY2gtYmFyICpuZ0lmPVwiaXRlbS5oYXNGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVGaWx0ZXJcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrRXZlbnQpPVwiaGFuZGxlSW5wdXRTZWFyY2goaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVJbnB1dFNlYXJjaChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dD1cIkJ1c2NhciBlbiBlc3RhIGNvbHVtbmFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0SWRIZWFkZXJGaWx0ZXIoaUhlYWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJCdXNjYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJbJ2MtaW5wdXQtLXNtJywgaXRlbS5maWx0ZXJDbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsYXNzZXM9XCJtLXhzIHAtMC41IHRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpYmVkQnldPVwiZ2V0SWRIZWFkZXIoaUhlYWQpXCI+IDwvZGVzeS1zZWFyY2gtYmFyPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG5cblxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGdldFZpc2libGVSb3dzKCk7IGluZGV4IGFzIGlSb3dcIiBjbGFzcz1cImJvcmRlci10IGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2UgaG92ZXI6YmctbmV1dHJhbC1saWdodGVyXCJcbiAgICAgICAgICAgICAgW2Rlc3lSb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiZy1uZXV0cmFsLWxpZ2h0JzogaGFzQ2hlY2tib3hlcyAmJiByb3cuY2hlY2tlZCB9XCI+XG4gICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImhhc0NoZWNrYm94ZXNcIiBkZXN5Rm9jdXNDbGlja2VkQ2VsbCBbY2xhc3NdPVwiWydweC1iYXNlIHB5LXNtJywgY2hlY2tib3hDbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCIgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjLWNoZWNrYm94ZXMgYy1jaGVja2JveGVzLS1zbVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXgtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInctNiBoLTYgdHJhbnNpdGlvbiBkdXJhdGlvbi0xNTAgZWFzZS1pbi1vdXQgYm9yZGVyLWJsYWNrIGZvY3VzOmJvcmRlci1ibGFjayBmb2N1czpzaGFkb3ctb3V0bGluZS1mb2N1cy1pbnB1dCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1vZmZzZXQtMCBmb2N1czpyaW5nLXdhcm5pbmctYmFzZSBkaXNhYmxlZDpiZy1uZXV0cmFsLWxpZ2h0IGRpc2FibGVkOmJvcmRlci1uZXV0cmFsLWJhc2UgdGV4dC1wcmltYXJ5LWJhc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93LmNoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVDaGVja2JveENoYW5nZShyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0SWRSb3dDaGVja2JveChpUm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0SWRSb3dDaGVja2JveChpUm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRmlsYSAnICsgaVJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0wLjUgbGVhZGluZy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5IGJsb2NrIHRleHQtc20gLW10LTFcIiBbZm9yXT1cImdldElkUm93Q2hlY2tib3goaVJvdylcIj5TZWxlY2Npb25hIGZpbGEge3sgaVJvdyB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNlbGwgb2Ygcm93LmNlbGxzTGlzdDsgZmlyc3QgYXMgaXNGaXJzdENlbGw7IGluZGV4IGFzIGNvbHVtbkluZGV4XCI+XG4gICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJmaXJzdENlbGxJc0hlYWRlciAmJiBpc0ZpcnN0Q2VsbDsgZWxzZSBlbHNlVGRcIiBzY29wZT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlsncHgtYmFzZSBweS14cyBib3JkZXItbmV1dHJhbC1iYXNlIGJvcmRlci1iLTAgYm9yZGVyLXIgdGV4dC1sZWZ0IGZvbnQtbm9ybWFsIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmsnLCBjZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZXN5Q2VsbCBbcm93XT1cInJvd1wiIFtyb3dJbmRleF09XCJpUm93XCIgW2NvbHVtbkluZGV4XT1cImNvbHVtbkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhbiA/IGNlbGwuY29sc3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA/IGNlbGwucm93c3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjZWxsLmlkID8gY2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiY2VsbC5yb2xlID8gY2VsbC5yb2xlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjZWxsLmFyaWFMYWJlbCA/IGNlbGwuYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjZWxsLmFyaWFEZXNjcmliZWRCeSA/IGNlbGwuYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImNlbGwuYXJpYUxhYmVsbGVkQnkgPyBjZWxsLmFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiY2VsbC5hcmlhSGlkZGVuID8gY2VsbC5hcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjZWxsLmFyaWFEaXNhYmxlZCA/IGNlbGwuYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJjZWxsLmFyaWFDb250cm9scyA/IGNlbGwuYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImNlbGwuYXJpYUN1cnJlbnQgPyBjZWxsLmFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImNlbGwuYXJpYUxpdmUgPyBjZWxsLmFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJjZWxsLmFyaWFFeHBhbmRlZCA/IGNlbGwuYXJpYUV4cGFuZGVkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiY2VsbC5hcmlhRXJyb3JNZXNzYWdlID8gY2VsbC5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJjZWxsLmFyaWFIYXNQb3B1cCA/IGNlbGwuYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiY2VsbC50YWJpbmRleCA/IGNlbGwudGFiaW5kZXggOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2VsbCwgaHRtbDogY2VsbC5odG1sLCB0ZXh0OiBjZWxsLnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0YWJpbmRleD1cIi0xXCIgZGVzeUZvY3VzQ2xpY2tlZENlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlsncHgtYmFzZSBweS1zbScsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN5Q2VsbCBbcm93XT1cInJvd1wiIFtyb3dJbmRleF09XCJpUm93XCIgW2NvbHVtbkluZGV4XT1cImNvbHVtbkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuID8gY2VsbC5yb3dzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjZWxsLmlkID8gY2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImNlbGwucm9sZSA/IGNlbGwucm9sZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNlbGwuYXJpYUxhYmVsID8gY2VsbC5hcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjZWxsLmFyaWFEZXNjcmliZWRCeSA/IGNlbGwuYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjZWxsLmFyaWFMYWJlbGxlZEJ5ID8gY2VsbC5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJjZWxsLmFyaWFIaWRkZW4gPyBjZWxsLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjZWxsLmFyaWFEaXNhYmxlZCA/IGNlbGwuYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY2VsbC5hcmlhQ29udHJvbHMgPyBjZWxsLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiY2VsbC5hcmlhQ3VycmVudCA/IGNlbGwuYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImNlbGwuYXJpYUxpdmUgPyBjZWxsLmFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2VsbC5hcmlhRXhwYW5kZWQgPyBjZWxsLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJjZWxsLmFyaWFFcnJvck1lc3NhZ2UgPyBjZWxsLmFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJjZWxsLmFyaWFIYXNQb3B1cCA/IGNlbGwuYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNlbGwudGFiaW5kZXggPyBjZWxsLnRhYmluZGV4IDogLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2VsbCwgaHRtbDogY2VsbC5odG1sLCB0ZXh0OiBjZWxsLnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHRhYmxlQ29udGVudFwiIFtjbGFzc109XCJ3cmFwcGVyLmNsYXNzZXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWR2YW5jZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC90YWJsZS1hZHZhbmNlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkL3RhYmxlLWFkdmFuY2VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBb0IsT0FBTyxFQUF1QixNQUFNLGtCQUFrQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7Ozs7QUFRekYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQWlDaEUsWUFBb0IsRUFBYyxFQUFVLGNBQWlDO1FBQzNF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O3NCQUF2RCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFHUyxlQUFlO3NCQUE3RCxlQUFlO3VCQUFDLDRCQUE0QjtnQkFFRCxnQkFBZ0I7c0JBQTNELGVBQWU7dUJBQUMseUJBQXlCO2dCQUNkLE9BQU87c0JBQWxDLFlBQVk7dUJBQUMsWUFBWTtnQkFFaEIsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2Nlc3NpYmlsaXR5Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQge1NlYXJjaFV0aWxzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvc2VhcmNoLXV0aWxzJztcbmltcG9ydCB7SGVhZENlbGxNb2RlbERhdGEsIE9yZGVyQnksIFJvd0RhdGEsIFdyYXBwZXJEYXRhfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7VGFibGVDYXB0aW9uQ29tcG9uZW50fSBmcm9tICcuLi90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNhcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVBZHZhbmNlZEhlYWRlckNlbGxDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYmxlQWR2YW5jZWRSb3dDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7Q2VsbERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1Jvd0RpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7UmVjYWxjdWxhdGVUYWJsZVBhcmFtc30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZWNhbGN1bGF0ZS10YWJsZS1wYXJhbXMnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IFRhYmxlQWR2YW5jZWRTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RJdGVtRGF0YSB9IGZyb20gJy4uLy4uLy4uL2Rlc3ktZm9ybXMvaW50ZXJmYWNlcy9zZWxlY3QtaXRlbS1kYXRhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10YWJsZS1hZHZhbmNlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1hZHZhbmNlZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVBZHZhbmNlZENvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSByb3dzOiBSb3dEYXRhW107IC8vIG9yaWdpbmFsIGRhdGFcbiAgQElucHV0KCkgaGVhZDogSGVhZENlbGxNb2RlbERhdGFbXTtcblxuICBASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhcHRpb25DbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpcnN0Q2VsbElzSGVhZGVyOiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNDaGVja2JveGVzOiBib29sZWFuO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNoZWNrYm94Q2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB3cmFwcGVyOiBXcmFwcGVyRGF0YTtcblxuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUNhcHRpb25Db21wb25lbnQpIGNhcHRpb25Db21wb25lbnQ6IFRhYmxlQ2FwdGlvbkNvbXBvbmVudDtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVBZHZhbmNlZEhlYWRlckNvbXBvbmVudCkgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCkgcm93Q29tcG9uZW50TGlzdDogUXVlcnlMaXN0PFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkcmVuKFJvd0RpcmVjdGl2ZSkgcm93RGF0YTogUXVlcnlMaXN0PFJvd0RpcmVjdGl2ZT47XG5cbiAgQE91dHB1dCgpIHJvd3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByb3dzQ2hlY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlY2FsY3VsYXRlVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2FsY3VsYXRlVGFibGVQYXJhbXM+KCk7XG5cbiAgdmlzaWJsZVJvd3M6IFJvd0RhdGFbXXxUYWJsZUFkdmFuY2VkUm93Q29tcG9uZW50W107XG4gIG9yZGVyQnlUeXBlID0gT3JkZXJCeTtcbiAgaXNSZXNldDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbW50c0ZvY3VzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1t0YWJpbmRleF0nKTtcbiAgICBpZiAoZWxlbW50c0ZvY3VzKSB7XG4gICAgICBlbGVtbnRzRm9jdXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgfVxuICAgIHRoaXMucmVjYWxjdWxhdGVWaXNpYmxlRWxlbWVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNjYSBsYXMgZmlsYXMgdmlzaWJsZXMgdHJhcyByZWFsaXphcnNlIHVuYSBiw7pzcXVlZGEgbyB1bmEgb3JkZW5hY2nDs25cbiAgICovXG4gIHJlY2FsY3VsYXRlVmlzaWJsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY2FsY3VsYXRlUGFyYW1zID0gdGhpcy5idWlsZFJlY2FsY3VsYXRlUGFyYW1zKCk7XG5cbiAgICAvLyBTaSBzZSBjYXB0dXJhIGVsIGV2ZW50byByZWNhbGN1bGF0ZVRhYmxlIHNlIGRlamEgYWwgdXN1YXJpbyBsYSByZXNwb25zYWJpbGlkYWQgZGUgZmlsdHJhciB5IG9yZGVuYXIgbG9zIGVsZW1lbnRvcy5cbiAgICBpZiAodGhpcy5yZWNhbGN1bGF0ZVRhYmxlLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlY2FsY3VsYXRlVGFibGUuZW1pdChyZWNhbGN1bGF0ZVBhcmFtcyk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIC8vIFNlIGRlYmVuIG1vc3RyYXIgdG9kYXMgbGFzIGZpbGFzIHRlbXBvcmFsbWVudGUgcGFyYSBwb2RlciBhcGxpY2FyIGVsIGZpbHRybyB5IGxhIG9yZGVuYWNpw7NuIHNvYnJlIGVsIGNvbnRlbmlkbyBpbnNlcnRhZG9cbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBTZSBhcGxpY2EgZWwgZmlsdHJvIHkgbGEgb3JkZW5hY2nDs25cbiAgICAgIGxldCByb3dEYXRhID0gdGhpcy5maWx0ZXJSb3dzKHJlY2FsY3VsYXRlUGFyYW1zLCB0aGlzLnJvd0RhdGEudG9BcnJheSgpKTtcbiAgICAgIHJvd0RhdGEgPSB0aGlzLnNvcnRSb3dzKHJlY2FsY3VsYXRlUGFyYW1zLCByb3dEYXRhKTtcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSByb3dEYXRhLm1hcChyID0+IHIuZGVzeVJvdykgYXMgUm93RGF0YVtdfFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnRbXTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnV5ZSBsb3MgcGFyw6FtZXRyb3MgbmVjZXNhcmlvcyBwYXJhIHJlY2FsY3VsYXIgbGEgdGFibGEsIGluZGljYW5kbyBsb3MgZmlsdHJvcyB5IGxhIG9yZGVuYWNpw7NuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUmVjYWxjdWxhdGVQYXJhbXMoKTogUmVjYWxjdWxhdGVUYWJsZVBhcmFtcyB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZmlsdGVyczogW10sXG4gICAgICBzb3J0OiBudWxsXG4gICAgfTtcblxuICAgIGNvbnN0IGhlYWQgPSB0aGlzLmdldEhlYWRlckNlbGxzKCkgYXMgKEhlYWRDZWxsTW9kZWxEYXRhfFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50KVtdO1xuICAgIGlmIChoZWFkKSB7XG4gICAgICBoZWFkLmZvckVhY2goKGhlYWRlckNlbGwsIGhlYWRlckNlbGxJbmRleCkgPT4ge1xuICAgICAgICBpZiAoaGVhZGVyQ2VsbC5oYXNGaWx0ZXIgJiYgaGVhZGVyQ2VsbC5hY3RpdmVGaWx0ZXIpIHtcbiAgICAgICAgICBwYXJhbXMuZmlsdGVycy5wdXNoKHsgY29sdW1uSW5kZXg6IGhlYWRlckNlbGxJbmRleCwgZmlsdGVyVGV4dDogaGVhZGVyQ2VsbC52YWx1ZUZpbHRlciB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZihoZWFkZXJDZWxsLmhhc1NlbGVjdCAmJiBoZWFkZXJDZWxsLmFjdGl2ZVNlbGVjdCl7XG4gICAgICAgICAgcGFyYW1zLmZpbHRlcnMucHVzaCh7IGNvbHVtbkluZGV4OiBoZWFkZXJDZWxsSW5kZXgsIGZpbHRlclRleHQ6IGhlYWRlckNlbGwudmFsdWVTZWxlY3QgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBvcmRlckJ5Q29sdW1uSW5kZXggPSBoZWFkLmZpbmRJbmRleChjZWxsID0+IGNlbGwub3JkZXJCeSAmJiBjZWxsLm9yZGVyQnkgIT09IE9yZGVyQnkubm9uZSk7XG4gICAgICBwYXJhbXMuc29ydCA9IChvcmRlckJ5Q29sdW1uSW5kZXggPj0gMCkgPyB7IGNvbHVtbkluZGV4OiBvcmRlckJ5Q29sdW1uSW5kZXgsIG9yZGVyOiBoZWFkW29yZGVyQnlDb2x1bW5JbmRleF0ub3JkZXJCeSB9IDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIGZ1bmNpb25lcyBkZSByZWNvZ2VyIGlkcywgeSBjYXJhY3RlcmlzdGljYXNcbiAgICovXG5cbiAgaGFzRmlsdGVycygpOiBib29sZWFuIHtcbiAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkZXJDZWxscygpO1xuICAgIHJldHVybiBoZWFkID8gaGVhZC5maW5kSW5kZXgoY2VsbCA9PiAoY2VsbC5oYXNGaWx0ZXIpIHx8IChjZWxsLmhhc1NlbGVjdCkpID49IDAgOiBmYWxzZTtcbiAgfVxuXG4gIGdldEhlYWRlckNlbGxzKCk6IEhlYWRDZWxsTW9kZWxEYXRhW118VGFibGVBZHZhbmNlZEhlYWRlckNlbGxDb21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyQ29tcG9uZW50ICYmIHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzLmxlbmd0aCA+IDAgPyB0aGlzLmhlYWRlckNvbXBvbmVudC5jZWxscy50b0FycmF5KCkgOiB0aGlzLmhlYWQ7XG4gIH1cblxuICBnZXRSb3dzKCl7XG4gICAgbGV0IHJvd3MgPSBbXTtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MgPSB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dzKSB7XG4gICAgICByb3dzID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaSBzZSBzb2JyZWVzY3JpYmUgIGVsIGNvbXBvcnRhbWllbnRvIHBvciBkZWZlY3RvIGRlIGZpbHRyYWRvIHkgb3JkZW5hY2nDs24sIHNlIHV0aWxpemFyw6FuIGxhcyBpbmRpY2FkYXMgZGVzZGUgZnVlcmEgZGVsXG4gICAqIGNvbXBvbmVudGUgKHlhIHNlYSBwb3IgcGFyw6FtZXRybyBvIHBvciBjb250ZW5pZG8pLlxuICAgKiBTaSBubyBzZSBzb2JyZWVzY3JpYmUsIGRldnVlbHZlIGxhcyBmaWxhcyBjYWxjdWxhZGFzLlxuICAgKi9cbiAgZ2V0VmlzaWJsZVJvd3MoKXtcbiAgICByZXR1cm4gdGhpcy5yZWNhbGN1bGF0ZVRhYmxlLm9ic2VydmVycy5sZW5ndGggPiAwID8gdGhpcy5nZXRSb3dzKCkgOiB0aGlzLnZpc2libGVSb3dzO1xuICB9XG5cbiAgZ2V0SWRQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZFByZWZpeCA/IHRoaXMuaWRQcmVmaXggOiAnaWQtdGFibGUtcm93JztcbiAgfVxuXG4gIGdldElkSGVhZGVyKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldElkUHJlZml4KCkgKyAnLWhlYWRlci0nICsgaW5kZXg7XG4gIH1cblxuICBnZXRJZFJvd0NoZWNrYm94KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldElkUHJlZml4KCkgKyAnLWNoZWNrYm94LScgKyBpbmRleDtcbiAgfVxuXG4gIGdldElkSGVhZGVyRmlsdGVyKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldElkUHJlZml4KCkgKyAnLWhlYWRlci1maWx0ZXItJyArIGluZGV4O1xuICB9XG5cbiAgZ2V0SWRIZWFkZXJTZWxlY3QoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SWRQcmVmaXgoKSArICctaGVhZGVyLXNlbGVjdC0nICsgaW5kZXg7XG4gIH1cblxuICBnZXRDYXB0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0aW9uQ29tcG9uZW50ID8gdGhpcy5jYXB0aW9uQ29tcG9uZW50LmNsYXNzZXMgOiB0aGlzLmNhcHRpb25DbGFzc2VzO1xuICB9XG5cbiAgZ2V0U3RyaW5nT3JkZXJCeShvcmRlckJ5OiBPcmRlckJ5KTogc3RyaW5nIHtcbiAgICBpZiAob3JkZXJCeSA9PT0gT3JkZXJCeS5hc2Mpe1xuICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIH0gZWxzZSBpZiAob3JkZXJCeSA9PT0gT3JkZXJCeS5kZXNjKXtcbiAgICAgIHJldHVybiAnZGVzY2VuZGluZyc7XG4gICAgfSBlbHNlIGlmIChvcmRlckJ5ID09PSBPcmRlckJ5Lm5vbmUpe1xuICAgICAgcmV0dXJuICdub25lJztcbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RGb3JJdGVtKGl0ZW06IGFueSk6IFRhYmxlQWR2YW5jZWRTZWxlY3RDb21wb25lbnR7XG4gICAgcmV0dXJuIGl0ZW0uc2VsZWN0Q29tcG9uZW50ID8gaXRlbS5zZWxlY3RDb21wb25lbnQgOiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbVNlbGVjdE9wdGlvbnMoaXRlbTogVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudCk6IFNlbGVjdEl0ZW1EYXRhW10ge1xuICAgIHJldHVybiBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0ICYmIGl0ZW0uc2VsZWN0SXRlbUNvbXBvbmVudExpc3QubGVuZ3RoID4gMCA/XG4gICAgICBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0LnRvQXJyYXkoKSA6IGl0ZW0uaXRlbXM7XG4gIH1cblxuICBnZXRDb250ZW50Q29tcG9uZW50KGl0ZW06IFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50KTogQ29udGVudENvbXBvbmVudHtcbiAgICByZXR1cm4gaXRlbS5jb250ZW50Q29tcG9uZW50ID8gaXRlbS5jb250ZW50Q29tcG9uZW50IDogbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGNoZWNrc1xuICAgKi9cbiAgaGFuZGxlQ2hlY2tib3hDaGFuZ2Uocm93OiBSb3dEYXRhfFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAocm93IGluc3RhbmNlb2YgVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCkge1xuICAgICAgcm93LmNoZWNrZWRDaGFuZ2UuZW1pdChyb3cuY2hlY2tlZCk7XG4gICAgfVxuICAgIHRoaXMubm90aWZ5Q2hlY2tlZENoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1pdGUgZGVzbWFyY2FyIHRvZGFzIGxhcyBmaWxhc1xuICAgKi9cbiAgcHJpdmF0ZSB1bmNoZWNrQWxsKCk6IHZvaWR7XG4gICAgdGhpcy5nZXRSb3dzKCkuZm9yRWFjaChyID0+IHtcbiAgICAgIGNvbnN0IG11c3RFbWl0ID0gci5jaGVja2VkICYmIHIgaW5zdGFuY2VvZiBUYWJsZUFkdmFuY2VkUm93Q29tcG9uZW50O1xuICAgICAgci5jaGVja2VkID0gZmFsc2U7XG4gICAgICBpZiAobXVzdEVtaXQpIHtcbiAgICAgICAgKHIgYXMgVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCkuY2hlY2tlZENoYW5nZS5lbWl0KHIuY2hlY2tlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ub3RpZnlDaGVja2VkQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpY2EgY2FtYmlvcyBlbiBsYXMgZmlsYXNcbiAgICovXG4gIHByaXZhdGUgbm90aWZ5Q2hlY2tlZENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yb3dzQ2hhbmdlLmVtaXQodGhpcy5yb3dzKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3dDaGVja3M6IGFueSA9IHt9O1xuICAgIHRoaXMuZ2V0Um93cygpLmZvckVhY2gociA9PiByb3dDaGVja3Nbci5pZF0gPSAhIXIuY2hlY2tlZCk7IC8vIFNlIGFwbGljYW4gdGFtYmnDqW4gYSBsYXMgbm8gdmlzaWJsZXNcbiAgICB0aGlzLnJvd3NDaGVja2VkLmVtaXQocm93Q2hlY2tzKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGJ1c3F1ZWRhXG4gICAqL1xuICBoYW5kbGVJbnB1dFNlYXJjaChpdGVtOiBIZWFkQ2VsbE1vZGVsRGF0YSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmhhc0ZpbHRlcikgeyAvLyBzaSB0aWVuZSBidXNjYWRvclxuICAgICAgaXRlbS5hY3RpdmVGaWx0ZXIgPSAhIWl0ZW0udmFsdWVGaWx0ZXI7XG4gICAgICB0aGlzLnVuY2hlY2tBbGwoKTtcbiAgICB9XG4gICAgaWYoaXRlbS5oYXNTZWxlY3QpeyAvL1NpIHRpZW5lIHNlbGVjY2lvbmFibGVcbiAgICAgIGl0ZW0uYWN0aXZlU2VsZWN0ID0gISFpdGVtLnZhbHVlU2VsZWN0O1xuICAgICAgdGhpcy51bmNoZWNrQWxsKCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWNhbGN1bGF0ZVZpc2libGVFbGVtZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlIGZpbHRyYW4gbGFzIGZpbGFzIHNlZ8O6biBsbyBlc3BlY2lmaWNhZG8gZW4gbGEgYmFycmEgZGUgYsO6c3F1ZWRhIGRlIGNhZGEgY29sdW1uYS5cbiAgICogU2kgbm8gaGF5IGLDunNxdWVkYSBzc2UgZGV2dWVsdmVuIHRvZGFzIGxhcyBmaWxhcy5cbiAgICogQHBhcmFtIHJlY2FsY3VsYXRlUGFyYW1zIHBhcmFtZXRyb3MgcGFyYSByZWNhbGN1bGFyIGxvcyBlbGVtZW50b3MgdmlzaWJsZXNcbiAgICogQHBhcmFtIHJvd3MgbGlzdGEgY29uIHRvZGFzIGxhcyBmaWxhc1xuICAgKiBAcmV0dXJuIGxpc3RhIGRlIGZpbGFzIGZpbHRyYWRhXG4gICAqL1xuICBwcml2YXRlIGZpbHRlclJvd3MocmVjYWxjdWxhdGVQYXJhbXM6IFJlY2FsY3VsYXRlVGFibGVQYXJhbXMsIHJvd3M6IFJvd0RpcmVjdGl2ZVtdKTogUm93RGlyZWN0aXZlW10ge1xuICAgIGxldCBmaWx0ZXJlZFJvd3MgPSByb3dzO1xuICAgIHJlY2FsY3VsYXRlUGFyYW1zLmZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgZmlsdGVyZWRSb3dzID0gZmlsdGVyZWRSb3dzLmZpbHRlcihyb3cgPT5cbiAgICAgICAgU2VhcmNoVXRpbHMuY29udGFpbnNBbnlXb3JkRnJvbShyb3cuZ2V0Q2VsbChmaWx0ZXIuY29sdW1uSW5kZXgpLmdldENvbnRlbnQoKSwgZmlsdGVyLmZpbHRlclRleHQpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWRSb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqIG9yZGVuYWNpb25cbiAgICovXG5cbiAgLyoqXG4gICAqIFBlcm1pdGUgaW5kaWNhciBxdWUgc2UgZGViZSBvcmRlbmFyIGxhIHRhYmxhXG4gICAqIEBwYXJhbSBpbmRleCBpbmRpY2UgZGUgbGEgY29sdW1uYVxuICAgKi9cbiAgaGFuZGxlU29ydEJ5Q29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkZXJDZWxscygpO1xuICAgIGlmIChoZWFkKSB7XG4gICAgICBoZWFkLmZvckVhY2goKGNlbGwsIGNlbGxJbmRleCkgPT4ge1xuICAgICAgICBpZiAoY2VsbC5vcmRlckJ5KSB7XG4gICAgICAgICAgY2VsbC5vcmRlckJ5ID0gY2VsbEluZGV4ID09PSBpbmRleCA/IHRoaXMuZ2V0TmV4dERpcmVjdGlvbihjZWxsKSA6IE9yZGVyQnkubm9uZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWNhbGN1bGF0ZVZpc2libGVFbGVtZW50cygpO1xuICB9XG5cblxuICAvKipcbiAgICogT3JkZW5hIGxhcyBmaWxhcyBpbmRpY2FkYXMgc2Vnw7puIGxhIGNvbHVtbmEgZXNwZWNpZmljYWRhIGVuIGxhIGNhYmVjZXJhXG4gICAqIEBwYXJhbSByZWNhbGN1bGF0ZVBhcmFtcyBwYXJhbWV0cm9zIHBhcmEgcmVjYWxjdWxhciBsb3MgZWxlbWVudG9zIHZpc2libGVzXG4gICAqIEBwYXJhbSByb3dzIGZpbGFzIGRlIGxhIHRhYmxhIGEgb3JkZW5hclxuICAgKiBAcmV0dXJuIG1pc21hcyBmaWxhcyBwZXJvIG9yZGVuYWRhcyBwb3IgbGEgY29sdW1uYSBpbmRpY2FkYVxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0Um93cyhyZWNhbGN1bGF0ZVBhcmFtczogUmVjYWxjdWxhdGVUYWJsZVBhcmFtcywgcm93czogUm93RGlyZWN0aXZlW10pOiBSb3dEaXJlY3RpdmVbXSB7XG4gICAgbGV0IHNvcnRlZFJvd3MgPSByb3dzO1xuICAgIGlmIChyZWNhbGN1bGF0ZVBhcmFtcy5zb3J0KSB7XG4gICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHJlY2FsY3VsYXRlUGFyYW1zLnNvcnQuY29sdW1uSW5kZXg7XG4gICAgICBjb25zdCBpc0FzYyA9IHJlY2FsY3VsYXRlUGFyYW1zLnNvcnQub3JkZXIgPT09IE9yZGVyQnkuYXNjO1xuICAgICAgc29ydGVkUm93cyA9IHJvd3Muc29ydCgoYSwgYikgPT5cbiAgICAgICAgdGhpcy5jb21wYXJlQ2VsbENvbnRlbnQoYS5nZXRDZWxsKGNvbHVtbkluZGV4KSwgYi5nZXRDZWxsKGNvbHVtbkluZGV4KSwgaXNBc2MpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc29ydGVkUm93cztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJhIGVsIGNvbnRlbmlkbyBkZSBkb3MgY2VsZGFzLiBFc3RlIHNlIGludmllcnRlIHNpIGVsIG9yZGVuIGVzcGVjaWZpY2FkbyBlcyBkZXNjZW5kZW50ZS5cbiAgICovXG4gIGNvbXBhcmVDZWxsQ29udGVudChhOiBDZWxsRGlyZWN0aXZlLCBiOiBDZWxsRGlyZWN0aXZlLCBpc0FzYzogYm9vbGVhbik6IG51bWJlcntcbiAgICBsZXQgcmVzdWx0O1xuICAgIGNvbnN0IGFDb21wYXJhYmxlID0gdGhpcy5jbGVhbkN1cnJlbmN5KGEuZ2V0Q29udGVudCgpKTtcbiAgICBjb25zdCBiQ29tcGFyYWJsZSA9IHRoaXMuY2xlYW5DdXJyZW5jeShiLmdldENvbnRlbnQoKSk7XG5cbiAgICBpZiAoaXNOYU4oK2FDb21wYXJhYmxlKSAmJiBpc05hTigrYkNvbXBhcmFibGUpICkgeyAvLyBzb24gdGV4dG9zXG4gICAgICByZXN1bHQgPSBhQ29tcGFyYWJsZS5sb2NhbGVDb21wYXJlKGJDb21wYXJhYmxlLCAnZXMnLCB7IHNlbnNpdGl2aXR5OiAnYmFzZScsIGlnbm9yZVB1bmN0dWF0aW9uOiB0cnVlIH0pO1xuICAgIH1lbHNleyAvLyBzb24gbnVtZXJvc1xuICAgICAgcmVzdWx0ID0gYUNvbXBhcmFibGUubG9jYWxlQ29tcGFyZShiQ29tcGFyYWJsZSwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCAqIChpc0FzYyA/IDEgOiAtMSk7XG4gIH1cblxuICAvKipcbiAgICogc2UgY2FsY3VsYSBsYSBvcmRlbmFjacOzbiBudWV2YVxuICAgKi9cbiAgcHJpdmF0ZSBnZXROZXh0RGlyZWN0aW9uKGl0ZW06IEhlYWRDZWxsTW9kZWxEYXRhKTogT3JkZXJCeSB7XG4gICAgaWYgKGl0ZW0ub3JkZXJCeSA9PT0gT3JkZXJCeS5ub25lIHx8IGl0ZW0ub3JkZXJCeSA9PT0gT3JkZXJCeS5kZXNjKSB7XG4gICAgICByZXR1cm4gT3JkZXJCeS5hc2M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBPcmRlckJ5LmRlc2M7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNpIGVzIHVuYSBjYW50aWRhZCBkZSBkaW5lcm8gc2UgcXVpdGEg4oKsIHBhcmEgcG9kZXIgY29tcGFyYXIgbG9zIG51bWVyb3NcbiAgICovXG4gIHByaXZhdGUgY2xlYW5DdXJyZW5jeSh0eHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKC9bXFxkLixdK1tcXOKCrF0vZy50ZXN0KHR4dCkpIHtcbiAgICAgIHR4dCA9IHR4dC5yZXBsYWNlKC/igqwvZywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gdHh0O1xuICB9XG5cbiAgc2VsZWN0RmlsdGVyKGl0ZW06IFRhYmxlQWR2YW5jZWRTZWxlY3RDb21wb25lbnQsIGl0ZW1WYWx1ZTogYW55KTogdm9pZCB7XG4gICAgaXRlbS52YWx1ZUNoYW5nZS5lbWl0KGl0ZW1WYWx1ZSk7XG5cbiAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkZXJDZWxscygpO1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICBpZiAoaGVhZCAmJiByb3dzKSB7XG4gICAgICBoZWFkLmZvckVhY2goKGNlbGw6IFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50LCBjZWxsSW5kZXgpID0+IHtcbiAgICAgIH0pO1xuICAgICAgcm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGFibGVDb250ZW50PlxuICA8dGFibGUgcm9sZT1cImdyaWRcIlxuICAgICAgICAgIFtjbGFzc109XCJbJ2MtdGFibGUtYWR2YW5jZWQgYm9yZGVyLXQtMiBib3JkZXItYi0yIGJvcmRlci1uZXV0cmFsLWJhc2UnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uQ29tcG9uZW50XCIgW2NsYXNzXT1cImdldENhcHRpb25DbGFzcygpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2FwdGlvbkNvbXBvbmVudCwgdGV4dDogY2FwdGlvbiA/IGNhcHRpb24gOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2FwdGlvbj5cbiAgICAgIDx0aGVhZCAqbmdJZj1cImdldEhlYWRlckNlbGxzKClcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItbmV1dHJhbC1iYXNlIGRpdmlkZS14IGRpdmlkZS1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiaGFzQ2hlY2tib3hlc1wiIHNjb3BlPVwiY29sXCIgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHkteHMnLCBjaGVja2JveENsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TZWxlY2Npb25hciBmaWxhPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRIZWFkZXJDZWxscygpOyBpbmRleCBhcyBpSGVhZGVyXCIgW2lkXT1cImdldElkSGVhZGVyKGlIZWFkZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNvcnRdPVwiaXRlbS5vcmRlckJ5ID8gZ2V0U3RyaW5nT3JkZXJCeShpdGVtLm9yZGVyQnkpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHktc20gYm9yZGVyLW5ldXRyYWwtYmFzZSBib3JkZXItYi0wIHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbmV1dHJhbC1kYXJrJywgaXRlbS5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJpdGVtLmNvbHNwYW4gPyBpdGVtLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJpdGVtLnJvd3NwYW4gPyBpdGVtLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJpdGVtLnJvbGUgPyBpdGVtLnJvbGUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsID8gaXRlbS5hcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIml0ZW0uYXJpYURlc2NyaWJlZEJ5ID8gaXRlbS5hcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeSA/IGl0ZW0uYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW4gPyBpdGVtLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkID8gaXRlbS5hcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzID8gaXRlbS5hcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudCA/IGl0ZW0uYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiaXRlbS5hcmlhTGl2ZSA/IGl0ZW0uYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkID8gaXRlbS5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJpdGVtLmFyaWFFcnJvck1lc3NhZ2UgPyBpdGVtLmFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwID8gaXRlbS5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6IG51bGxcIj5cblxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLm9yZGVyQnlcIiBjbGFzcz1cImlubGluZS1ibG9jayByZWxhdGl2ZVwiIChjbGljayk9XCJoYW5kbGVTb3J0QnlDb2x1bW4oaUhlYWRlcilcIiBkZXN5Rm9jdXNDbGlja2VkQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5vcmRlckJ5ID8gLTEgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiaXRlbS5vcmRlckJ5ID8gJ2J1dHRvbicgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnRleHRcIj57e2l0ZW0udGV4dH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmNvbnRlbnRDb21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGl0ZW0uY29udGVudENvbXBvbmVudCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtdGFibGUtYWR2YW5jZWRfX29yZGVyXCIgKm5nSWY9XCJpdGVtLm9yZGVyQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlB1bHNhIHBhcmEgb3JkZW5hciBwb3IgZXN0YSBjb2x1bW5hPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjLXRhYmxlLWFkdmFuY2VkX19hc2NlbmRpbmdcIiAqbmdJZj1cIml0ZW0ub3JkZXJCeSA9PT0gb3JkZXJCeVR5cGUuYXNjXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTQwIDE0MFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHdpZHRoPVwiMWVtXCIgaGVpZ2h0PVwiMWVtXCI+PHBhdGggZD1cIk0xMTIuMDcgMzcuOTNsLTM1LTM1YTEwIDEwIDAgMDAtMTQuMTQgMGwtMzUgMzVhMTAgMTAgMCAwMDE0LjE0IDE0LjE0bDEzLjY2LTEzLjY2QTIuNSAyLjUgMCAwMTYwIDQwLjE4VjEzMGExMCAxMCAwIDAwMjAgMFY0MC4xOGEyLjUgMi41IDAgMDE0LjI3LTEuNzdsMTMuNjYgMTMuNjZhMTAgMTAgMCAwMDE0LjE0LTE0LjE0elwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtdGFibGUtYWR2YW5jZWRfX2Rlc2NlbmRpbmdcIiAqbmdJZj1cIml0ZW0ub3JkZXJCeSA9PT0gb3JkZXJCeVR5cGUuZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB3aWR0aD1cIjFlbVwiIGhlaWdodD1cIjFlbVwiPjxwYXRoIGQ9XCJNMjcuOTMgMTAyLjA3bDM1IDM1YTEwIDEwIDAgMDAxNC4xNCAwbDM1LTM1YTEwIDEwIDAgMDAtMTQuMTQtMTQuMTRsLTEzLjY2IDEzLjY2QTIuNSAyLjUgMCAwMTgwIDk5LjgyVjEwYTEwIDEwIDAgMDAtMjAgMHY4OS44MmEyLjUgMi41IDAgMDEtNC4yNyAxLjc3TDQyLjA3IDg3LjkzYTEwIDEwIDAgMDAtMTQuMTQgMTQuMTR6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy10YWJsZS1hZHZhbmNlZF9fbm9uZVwiICAqbmdJZj1cIml0ZW0ub3JkZXJCeSA9PT0gb3JkZXJCeVR5cGUubm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIiBjbGFzcz1cInRleHQtbmV1dHJhbC1iYXNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgd2lkdGg9XCIxZW1cIiBoZWlnaHQ9XCIxZW1cIj48cGF0aCBkPVwiTTk0LjcgOTcuMmwtMTcuMiAxNy4xOVYyNS42MUw5NC43IDQyLjhhNy41IDcuNSAwIDAwMTAuNi0xMC42bC0zMC0zMGE3LjQ5IDcuNDkgMCAwMC0xMC42IDBsLTMwIDMwYTcuNSA3LjUgMCAwMDEwLjYgMTAuNmwxNy4yLTE3LjE5djg4Ljc4TDQ1LjMgOTcuMmE3LjUgNy41IDAgMTAtMTAuNiAxMC42bDMwIDMwYTcuNDggNy40OCAwIDAwMTAuNiAwbDMwLTMwYTcuNSA3LjUgMCAwMC0xMC42LTEwLjZ6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLm9yZGVyQnlcIiBjbGFzcz1cImlubGluZS1ibG9jayByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50ZXh0XCI+e3tpdGVtLnRleHR9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb250ZW50Q29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBpdGVtLmNvbnRlbnRDb21wb25lbnQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cblxuICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciBjbGFzcz1cImRpdmlkZS14IGRpdmlkZS1uZXV0cmFsLWJhc2VcIiAqbmdJZj1cImhhc0ZpbHRlcnMoKVwiPlxuICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJoYXNDaGVja2JveGVzXCIgW25nQ2xhc3NdPVwiY2hlY2tib3hDbGFzc2VzXCI+PC90ZD5cbiAgICAgICAgICAgICAgPHRkIHRhYmluZGV4PVwiLTFcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRIZWFkZXJDZWxscygpOyBpbmRleCBhcyBpSGVhZFwiIGRlc3lGb2N1c0NsaWNrZWRDZWxsXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiWydhbGlnbi10b3AgcHgtYmFzZSBwYi1zbSBib3JkZXItbmV1dHJhbC1iYXNlIGJvcmRlci1iLTAgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uZXV0cmFsLWRhcmsnLCBpdGVtLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5oYXNTZWxlY3QgJiYgZ2V0U2VsZWN0Rm9ySXRlbShpdGVtKSAhPT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVTZWxlY3Q7IGNvbnRleHQ6IHtzZWxlY3RhYmxlOiBnZXRTZWxlY3RGb3JJdGVtKGl0ZW0pfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlU2VsZWN0IGxldC1zZWxlY3RhYmxlPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkZXN5LXNlbGVjdCBbaWRdPVwiZ2V0SWRIZWFkZXJTZWxlY3QoaUhlYWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwieyB0ZXh0OiAnRmlsdHJhciBwb3IgZXN0YSBjb2x1bW5hJywgY2xhc3NlczogJ3NyLW9ubHknIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwic2VsZWN0YWJsZS5jbGFzc2VzID8gc2VsZWN0YWJsZS5jbGFzc2VzIDogJ2Mtc2VsZWN0LS1zbSB3LWZ1bGwgbXQtMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwic2VsZWN0YWJsZS5mb3JtR3JvdXBDbGFzc2VzID8gc2VsZWN0YWJsZS5mb3JtR3JvdXBDbGFzc2VzIDogJ21iLTAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNlbGVjdGFibGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZ2V0SXRlbVNlbGVjdE9wdGlvbnMoc2VsZWN0YWJsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGFibGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cImdldElkSGVhZGVyU2VsZWN0KGlIZWFkKVwiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVNlbGVjdFwiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZUlucHV0U2VhcmNoKGl0ZW0pXCJcblxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwic2VsZWN0YWJsZS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwic2VsZWN0YWJsZS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJzZWxlY3RhYmxlLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwic2VsZWN0YWJsZS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJzZWxlY3RhYmxlLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJzZWxlY3RhYmxlLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cInNlbGVjdGFibGUuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJzZWxlY3RhYmxlLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJzZWxlY3RhYmxlLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwic2VsZWN0YWJsZS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwic2VsZWN0YWJsZS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwic2VsZWN0YWJsZS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNlbGVjdGFibGUudGFiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rlc3ktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmhhc1NlbGVjdCAmJiBpdGVtLmhhc0ZpbHRlclwiIGNsYXNzPVwicGItc21cIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRlc3ktc2VhcmNoLWJhciAqbmdJZj1cIml0ZW0uaGFzRmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlRmlsdGVyXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja0V2ZW50KT1cImhhbmRsZUlucHV0U2VhcmNoKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlSW5wdXRTZWFyY2goaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQ9XCJCdXNjYXIgZW4gZXN0YSBjb2x1bW5hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldElkSGVhZGVyRmlsdGVyKGlIZWFkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQnVzY2FyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiWydjLWlucHV0LS1zbScsIGl0ZW0uZmlsdGVyQ2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25DbGFzc2VzPVwibS14cyBwLTAuNSB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cImdldElkSGVhZGVyKGlIZWFkKVwiPiA8L2Rlc3ktc2VhcmNoLWJhcj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG5cbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBnZXRWaXNpYmxlUm93cygpOyBpbmRleCBhcyBpUm93XCIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlIGhvdmVyOmJnLW5ldXRyYWwtbGlnaHRlclwiXG4gICAgICAgICAgICAgIFtkZXN5Um93XT1cInJvd1wiPlxuICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJoYXNDaGVja2JveGVzXCIgZGVzeUZvY3VzQ2xpY2tlZENlbGwgW2NsYXNzXT1cIlsncHgtYmFzZSBweS1zbScsIGNoZWNrYm94Q2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYy1jaGVja2JveGVzIGMtY2hlY2tib3hlcy0tc21cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG14LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJ3LTYgaC02IHRyYW5zaXRpb24gZHVyYXRpb24tMTUwIGVhc2UtaW4tb3V0IGJvcmRlci1ibGFjayBmb2N1czpib3JkZXItYmxhY2sgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMtaW5wdXQgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctb2Zmc2V0LTAgZm9jdXM6cmluZy13YXJuaW5nLWJhc2UgZGlzYWJsZWQ6YmctbmV1dHJhbC1saWdodCBkaXNhYmxlZDpib3JkZXItbmV1dHJhbC1iYXNlIHRleHQtcHJpbWFyeS1iYXNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvdy5jaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ2hlY2tib3hDaGFuZ2Uocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldElkUm93Q2hlY2tib3goaVJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldElkUm93Q2hlY2tib3goaVJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZpbGEgJyArIGlSb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMC41IGxlYWRpbmctNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seSBibG9jayB0ZXh0LXNtIC1tdC0xXCIgW2Zvcl09XCJnZXRJZFJvd0NoZWNrYm94KGlSb3cpXCI+U2VsZWNjaW9uYSBmaWxhIHt7IGlSb3cgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjZWxsIG9mIHJvdy5jZWxsc0xpc3Q7IGZpcnN0IGFzIGlzRmlyc3RDZWxsOyBpbmRleCBhcyBjb2x1bW5JbmRleFwiPlxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZmlyc3RDZWxsSXNIZWFkZXIgJiYgaXNGaXJzdENlbGw7IGVsc2UgZWxzZVRkXCIgc2NvcGU9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJbJ3B4LWJhc2UgcHkteHMgYm9yZGVyLW5ldXRyYWwtYmFzZSBib3JkZXItYi0wIGJvcmRlci1yIHRleHQtbGVmdCBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrJywgY2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVzeUNlbGwgW3Jvd109XCJyb3dcIiBbcm93SW5kZXhdPVwiaVJvd1wiIFtjb2x1bW5JbmRleF09XCJjb2x1bW5JbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4gPyBjZWxsLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY2VsbC5pZCA/IGNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cImNlbGwucm9sZSA/IGNlbGwucm9sZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2VsbC5hcmlhTGFiZWwgPyBjZWxsLmFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiY2VsbC5hcmlhRGVzY3JpYmVkQnkgPyBjZWxsLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjZWxsLmFyaWFMYWJlbGxlZEJ5ID8gY2VsbC5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImNlbGwuYXJpYUhpZGRlbiA/IGNlbGwuYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiY2VsbC5hcmlhRGlzYWJsZWQgPyBjZWxsLmFyaWFEaXNhYmxlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY2VsbC5hcmlhQ29udHJvbHMgPyBjZWxsLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJjZWxsLmFyaWFDdXJyZW50ID8gY2VsbC5hcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJjZWxsLmFyaWFMaXZlID8gY2VsbC5hcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2VsbC5hcmlhRXhwYW5kZWQgPyBjZWxsLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImNlbGwuYXJpYUVycm9yTWVzc2FnZSA/IGNlbGwuYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiY2VsbC5hcmlhSGFzUG9wdXAgPyBjZWxsLmFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNlbGwudGFiaW5kZXggPyBjZWxsLnRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNlbGwsIGh0bWw6IGNlbGwuaHRtbCwgdGV4dDogY2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgdGFiaW5kZXg9XCItMVwiIGRlc3lGb2N1c0NsaWNrZWRDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJbJ3B4LWJhc2UgcHktc20nLCBjZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzeUNlbGwgW3Jvd109XCJyb3dcIiBbcm93SW5kZXhdPVwiaVJvd1wiIFtjb2x1bW5JbmRleF09XCJjb2x1bW5JbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA/IGNlbGwucm93c3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY2VsbC5pZCA/IGNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJjZWxsLnJvbGUgPyBjZWxsLnJvbGUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjZWxsLmFyaWFMYWJlbCA/IGNlbGwuYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiY2VsbC5hcmlhRGVzY3JpYmVkQnkgPyBjZWxsLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiY2VsbC5hcmlhTGFiZWxsZWRCeSA/IGNlbGwuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiY2VsbC5hcmlhSGlkZGVuID8gY2VsbC5hcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiY2VsbC5hcmlhRGlzYWJsZWQgPyBjZWxsLmFyaWFEaXNhYmxlZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNlbGwuYXJpYUNvbnRyb2xzID8gY2VsbC5hcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImNlbGwuYXJpYUN1cnJlbnQgPyBjZWxsLmFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJjZWxsLmFyaWFMaXZlID8gY2VsbC5hcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNlbGwuYXJpYUV4cGFuZGVkID8gY2VsbC5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiY2VsbC5hcmlhRXJyb3JNZXNzYWdlID8gY2VsbC5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiY2VsbC5hcmlhSGFzUG9wdXAgPyBjZWxsLmFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJjZWxsLnRhYmluZGV4ID8gY2VsbC50YWJpbmRleCA6IC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNlbGwsIGh0bWw6IGNlbGwuaHRtbCwgdGV4dDogY2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2ICpuZ0lmPVwid3JhcHBlcjsgZWxzZSB0YWJsZUNvbnRlbnRcIiBbY2xhc3NdPVwid3JhcHBlci5jbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -20,8 +20,8 @@ import { TableAdvancedRowCellComponent } from './components/table-advanced/compo
20
20
  import { TableAdvancedSelectComponent } from './components/table-advanced/components/table-advanced-select.component';
21
21
  import * as i0 from "@angular/core";
22
22
  export class DesyTablesModule {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DesyTablesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: DesyTablesModule, declarations: [TableComponent,
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DesyTablesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DesyTablesModule, declarations: [TableComponent,
25
25
  TableCaptionComponent,
26
26
  TableCellComponent,
27
27
  TableHeaderComponent,
@@ -50,14 +50,14 @@ export class DesyTablesModule {
50
50
  TableAdvancedRowComponent,
51
51
  TableAdvancedRowCellComponent,
52
52
  TableAdvancedSelectComponent] }); }
53
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DesyTablesModule, imports: [CommonModule,
53
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DesyTablesModule, imports: [CommonModule,
54
54
  FormsModule,
55
55
  ReactiveFormsModule,
56
56
  A11yModule,
57
57
  SharedModule,
58
58
  DesyFormsModule] }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DesyTablesModule, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DesyTablesModule, decorators: [{
61
61
  type: NgModule,
62
62
  args: [{
63
63
  declarations: [
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
99
99
  ]
100
100
  }]
101
101
  }] });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzeS10YWJsZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvZGVzeS10YWJsZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDdEgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDL0gsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDaEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwwRUFBMEUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7QUEyQ3RILE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQXRDekIsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsNEJBQTRCO1lBQzVCLGdDQUFnQztZQUNoQyx5QkFBeUI7WUFDekIsNkJBQTZCO1lBQzdCLDRCQUE0QjtZQUU1Qix5QkFBeUI7WUFDekIsYUFBYTtZQUNiLFlBQVksYUFHWixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixVQUFVO1lBQ1YsWUFBWTtZQUNaLGVBQWUsYUFHZixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLHNCQUFzQjtZQUN0Qiw0QkFBNEI7WUFDNUIsZ0NBQWdDO1lBQ2hDLHlCQUF5QjtZQUN6Qiw2QkFBNkI7WUFDN0IsNEJBQTRCOytHQUduQixnQkFBZ0IsWUFyQnpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFVBQVU7WUFDVixZQUFZO1lBQ1osZUFBZTs7MkZBZ0JOLGdCQUFnQjtrQkF4QzVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsZ0NBQWdDO3dCQUNoQyx5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUU1Qix5QkFBeUI7d0JBQ3pCLGFBQWE7d0JBQ2IsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGVBQWU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0Qiw0QkFBNEI7d0JBQzVCLGdDQUFnQzt3QkFDaEMseUJBQXlCO3dCQUN6Qiw2QkFBNkI7d0JBQzdCLDRCQUE0QjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IERlc3lGb3Jtc01vZHVsZSB9IGZyb20gJy4uL2Rlc3ktZm9ybXMvZGVzeS1mb3Jtcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC90YWJsZS1hZHZhbmNlZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9jdXNDbGlja2VkQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9mb2N1cy1jbGlja2VkLWNlbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZVJvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtY2FwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZEhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RhYmxlQWR2YW5jZWRSb3dDZWxsQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1yb3ctY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLXNlbGVjdC5jb21wb25lbnQnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ2FwdGlvbkNvbXBvbmVudCxcbiAgICBUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgVGFibGVIZWFkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZENvbXBvbmVudCxcbiAgICBUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFJvd0NlbGxDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudCxcblxuICAgIEZvY3VzQ2xpY2tlZENlbGxEaXJlY3RpdmUsXG4gICAgQ2VsbERpcmVjdGl2ZSxcbiAgICBSb3dEaXJlY3RpdmUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBEZXN5Rm9ybXNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ2FwdGlvbkNvbXBvbmVudCxcbiAgICBUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgVGFibGVIZWFkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZENvbXBvbmVudCxcbiAgICBUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFJvd0NlbGxDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERlc3lUYWJsZXNNb2R1bGUgeyB9XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzeS10YWJsZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvZGVzeS10YWJsZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDdEgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDL0gsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDaEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwwRUFBMEUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7QUEyQ3RILE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLGlCQXRDekIsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsNEJBQTRCO1lBQzVCLGdDQUFnQztZQUNoQyx5QkFBeUI7WUFDekIsNkJBQTZCO1lBQzdCLDRCQUE0QjtZQUU1Qix5QkFBeUI7WUFDekIsYUFBYTtZQUNiLFlBQVksYUFHWixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixVQUFVO1lBQ1YsWUFBWTtZQUNaLGVBQWUsYUFHZixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLHNCQUFzQjtZQUN0Qiw0QkFBNEI7WUFDNUIsZ0NBQWdDO1lBQ2hDLHlCQUF5QjtZQUN6Qiw2QkFBNkI7WUFDN0IsNEJBQTRCO2dIQUduQixnQkFBZ0IsWUFyQnpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFVBQVU7WUFDVixZQUFZO1lBQ1osZUFBZTs7NEZBZ0JOLGdCQUFnQjtrQkF4QzVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsZ0NBQWdDO3dCQUNoQyx5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUU1Qix5QkFBeUI7d0JBQ3pCLGFBQWE7d0JBQ2IsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGVBQWU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0Qiw0QkFBNEI7d0JBQzVCLGdDQUFnQzt3QkFDaEMseUJBQXlCO3dCQUN6Qiw2QkFBNkI7d0JBQzdCLDRCQUE0QjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IERlc3lGb3Jtc01vZHVsZSB9IGZyb20gJy4uL2Rlc3ktZm9ybXMvZGVzeS1mb3Jtcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC90YWJsZS1hZHZhbmNlZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9jdXNDbGlja2VkQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9mb2N1cy1jbGlja2VkLWNlbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZVJvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtY2FwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZEhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZFJvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RhYmxlQWR2YW5jZWRSb3dDZWxsQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1yb3ctY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC9jb21wb25lbnRzL3RhYmxlLWFkdmFuY2VkLXNlbGVjdC5jb21wb25lbnQnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ2FwdGlvbkNvbXBvbmVudCxcbiAgICBUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgVGFibGVIZWFkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZENvbXBvbmVudCxcbiAgICBUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFJvd0NlbGxDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudCxcblxuICAgIEZvY3VzQ2xpY2tlZENlbGxEaXJlY3RpdmUsXG4gICAgQ2VsbERpcmVjdGl2ZSxcbiAgICBSb3dEaXJlY3RpdmUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBEZXN5Rm9ybXNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlQ2FwdGlvbkNvbXBvbmVudCxcbiAgICBUYWJsZUNlbGxDb21wb25lbnQsXG4gICAgVGFibGVIZWFkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZENvbXBvbmVudCxcbiAgICBUYWJsZUFkdmFuY2VkSGVhZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFJvd0NlbGxDb21wb25lbnQsXG4gICAgVGFibGVBZHZhbmNlZFNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERlc3lUYWJsZXNNb2R1bGUgeyB9XG4iXX0=
@@ -7,10 +7,10 @@ export class CellDirective {
7
7
  getContent() {
8
8
  return this.element.nativeElement.textContent;
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CellDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: CellDirective, selector: "[desyCell]", inputs: { row: "row", rowIndex: "rowIndex", columnIndex: "columnIndex" }, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CellDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CellDirective, selector: "[desyCell]", inputs: { row: "row", rowIndex: "rowIndex", columnIndex: "columnIndex" }, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CellDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CellDirective, decorators: [{
14
14
  type: Directive,
15
15
  args: [{
16
16
  selector: '[desyCell]'
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
22
22
  }], columnIndex: [{
23
23
  type: Input
24
24
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9kaXJlY3RpdmVzL2NlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFVM0QsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBb0IsT0FBbUI7UUFBbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUFJLENBQUM7SUFFckMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ2hELENBQUM7OEdBVlUsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2QjtpR0FHVSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um93RGF0YX0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1RhYmxlQWR2YW5jZWRSb3dDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1yb3cuY29tcG9uZW50JztcblxuLyoqXG4gKiBQZXJtaXRlIGdlc3Rpb25hciBjZWxkYXMgZGUgdW5hIGZpbGEgZGUgbGEgdGFibGFcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Rlc3lDZWxsXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2VsbERpcmVjdGl2ZSB7XG5cbiAgQElucHV0KCkgcm93OiBSb3dEYXRhfFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQ7XG4gIEBJbnB1dCgpIHJvd0luZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbHVtbkluZGV4OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cblxuICBwdWJsaWMgZ2V0Q29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgfVxufVxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9kaXJlY3RpdmVzL2NlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFVM0QsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBb0IsT0FBbUI7UUFBbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUFJLENBQUM7SUFFckMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ2hELENBQUM7K0dBVlUsYUFBYTttR0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2QjtpR0FHVSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um93RGF0YX0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1RhYmxlQWR2YW5jZWRSb3dDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUtYWR2YW5jZWQvY29tcG9uZW50cy90YWJsZS1hZHZhbmNlZC1yb3cuY29tcG9uZW50JztcblxuLyoqXG4gKiBQZXJtaXRlIGdlc3Rpb25hciBjZWxkYXMgZGUgdW5hIGZpbGEgZGUgbGEgdGFibGFcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Rlc3lDZWxsXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2VsbERpcmVjdGl2ZSB7XG5cbiAgQElucHV0KCkgcm93OiBSb3dEYXRhfFRhYmxlQWR2YW5jZWRSb3dDb21wb25lbnQ7XG4gIEBJbnB1dCgpIHJvd0luZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbHVtbkluZGV4OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cblxuICBwdWJsaWMgZ2V0Q29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgfVxufVxuIl19
@@ -63,10 +63,10 @@ export class FocusClickedCellDirective {
63
63
  }
64
64
  return index;
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FocusClickedCellDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
67
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: FocusClickedCellDirective, selector: "[desyFocusClickedCell]", host: { listeners: { "click": "onClick()", "keydown": "manageArrows($event)" } }, ngImport: i0 }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FocusClickedCellDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
67
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FocusClickedCellDirective, selector: "[desyFocusClickedCell]", host: { listeners: { "click": "onClick()", "keydown": "manageArrows($event)" } }, ngImport: i0 }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FocusClickedCellDirective, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FocusClickedCellDirective, decorators: [{
70
70
  type: Directive,
71
71
  args: [{
72
72
  selector: '[desyFocusClickedCell]'
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
78
78
  type: HostListener,
79
79
  args: ['keydown', ['$event']]
80
80
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtY2xpY2tlZC1jZWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdGFibGVzL2RpcmVjdGl2ZXMvZm9jdXMtY2xpY2tlZC1jZWxsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3BFLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBRyxDQUFDO0lBR3RDLE9BQU87UUFDTCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFFLEtBQUssTUFBTSxRQUFRLElBQUksWUFBWSxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUFZLENBQUMsS0FBSztRQUNoQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFDO1lBQ3RILElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFDO2dCQUN6RCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtvQkFDOUIsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDMUQ7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDbkMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDOUQ7Z0JBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNqRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7WUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUM3RCxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLEdBQUc7b0JBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTt3QkFDL0IsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztxQkFDaEM7eUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTt3QkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztxQkFDcEM7aUJBQ0YsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2FBQ2xEO1lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBQztnQkFDeEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtTQUNGO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUM7Z0JBQ2hDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ1YsTUFBTTthQUNQO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBckVVLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DO2lHQU1DLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQVdyQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Rlc3lGb2N1c0NsaWNrZWRDZWxsXSdcbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNDbGlja2VkQ2VsbERpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdEVsZW0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7IC8vIGxhIHRhYmxhIC0gb2Zmc2V0UGFyZW50XG4gICAgY29uc3QgZWxlbW50c0ZvY3VzID0gaG9zdEVsZW0ub2Zmc2V0UGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1t0YWJpbmRleF0nKTsgLy8gYnVzY2Ftb3MgdG9kb3MgcXVlIHB1ZWRlbiB0ZW5lciB0YWJpbmRleFxuICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZWxlbW50c0ZvY3VzKSB7XG4gICAgICBpdGVyYXRvci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7IC8vIHNlIGxlcyBxdWl0YVxuICAgIH1cbiAgICB0aGlzLmFjdGl2ZVRhYmluZGV4KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgbWFuYWdlQXJyb3dzKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJyB8fCBldmVudC5jb2RlID09PSAnQXJyb3dSaWdodCcgfHwgZXZlbnQuY29kZSA9PT0gJ0Fycm93TGVmdCcpe1xuICAgICAgbGV0IG5leHQgPSBudWxsO1xuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJyl7XG4gICAgICAgIGxldCB0ciA9IG51bGw7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIHRyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgIHRyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgfVxuXG4gICAgICAgIG5leHQgPSB0ciA/IHRyLmNoaWxkcmVuW3RoaXMuZmluZEluZGV4KCldIDogbnVsbDtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0JyB8fCBldmVudC5jb2RlID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICBuZXh0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChuZXh0ICYmICFuZXh0LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0ICYmIG5leHQuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpKXtcbiAgICAgICAgdGhpcy5pbmFjdGl2ZVRhYmluZGV4KCk7XG4gICAgICAgIG5leHQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgIG5leHQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZVRhYmluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5hY3RpdmVUYWJpbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSW5kZXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBteW5vZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvdGhlck5vZGUgPSBwYXJlbnROb2RlLmNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAobXlub2RlLmlzRXF1YWxOb2RlKG90aGVyTm9kZSkpe1xuICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxufVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtY2xpY2tlZC1jZWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdGFibGVzL2RpcmVjdGl2ZXMvZm9jdXMtY2xpY2tlZC1jZWxsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3BFLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBRyxDQUFDO0lBR3RDLE9BQU87UUFDTCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFFLEtBQUssTUFBTSxRQUFRLElBQUksWUFBWSxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUFZLENBQUMsS0FBSztRQUNoQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFDO1lBQ3RILElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFDO2dCQUN6RCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtvQkFDOUIsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDMUQ7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDbkMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDOUQ7Z0JBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNqRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7WUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUM3RCxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLEdBQUc7b0JBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTt3QkFDL0IsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztxQkFDaEM7eUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTt3QkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztxQkFDcEM7aUJBQ0YsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2FBQ2xEO1lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBQztnQkFDeEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtTQUNGO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUM7Z0JBQ2hDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ1YsTUFBTTthQUNQO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBckVVLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DO2lHQU1DLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQVdyQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Rlc3lGb2N1c0NsaWNrZWRDZWxsXSdcbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNDbGlja2VkQ2VsbERpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdEVsZW0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7IC8vIGxhIHRhYmxhIC0gb2Zmc2V0UGFyZW50XG4gICAgY29uc3QgZWxlbW50c0ZvY3VzID0gaG9zdEVsZW0ub2Zmc2V0UGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1t0YWJpbmRleF0nKTsgLy8gYnVzY2Ftb3MgdG9kb3MgcXVlIHB1ZWRlbiB0ZW5lciB0YWJpbmRleFxuICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZWxlbW50c0ZvY3VzKSB7XG4gICAgICBpdGVyYXRvci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7IC8vIHNlIGxlcyBxdWl0YVxuICAgIH1cbiAgICB0aGlzLmFjdGl2ZVRhYmluZGV4KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgbWFuYWdlQXJyb3dzKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJyB8fCBldmVudC5jb2RlID09PSAnQXJyb3dSaWdodCcgfHwgZXZlbnQuY29kZSA9PT0gJ0Fycm93TGVmdCcpe1xuICAgICAgbGV0IG5leHQgPSBudWxsO1xuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJyl7XG4gICAgICAgIGxldCB0ciA9IG51bGw7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIHRyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgIHRyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgfVxuXG4gICAgICAgIG5leHQgPSB0ciA/IHRyLmNoaWxkcmVuW3RoaXMuZmluZEluZGV4KCldIDogbnVsbDtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0JyB8fCBldmVudC5jb2RlID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICBuZXh0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgICAgICAgIG5leHQgPSBuZXh0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChuZXh0ICYmICFuZXh0LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0ICYmIG5leHQuZ2V0QXR0cmlidXRlKCd0YWJpbmRleCcpKXtcbiAgICAgICAgdGhpcy5pbmFjdGl2ZVRhYmluZGV4KCk7XG4gICAgICAgIG5leHQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgIG5leHQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2ZVRhYmluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5hY3RpdmVUYWJpbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSW5kZXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBteW5vZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvdGhlck5vZGUgPSBwYXJlbnROb2RlLmNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAobXlub2RlLmlzRXF1YWxOb2RlKG90aGVyTm9kZSkpe1xuICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxufVxuIl19