@acorex/components 16.0.16 → 16.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. package/esm2022/index.mjs +1 -1
  2. package/esm2022/lib/accordion/accordion.component.mjs +11 -11
  3. package/esm2022/lib/accordion/accordion.module.mjs +5 -5
  4. package/esm2022/lib/base/base-page.class.mjs +8 -8
  5. package/esm2022/lib/base/components.class.mjs +7 -7
  6. package/esm2022/lib/base/element.class.mjs +44 -38
  7. package/esm2022/lib/button/button.component.mjs +5 -5
  8. package/esm2022/lib/button/button.module.mjs +5 -5
  9. package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +5 -5
  10. package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +5 -5
  11. package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +10 -10
  12. package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +1 -1
  13. package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +5 -5
  14. package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +5 -5
  15. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +5 -5
  16. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +5 -5
  17. package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +5 -5
  18. package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +5 -5
  19. package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +5 -5
  20. package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +4 -4
  21. package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +5 -5
  22. package/esm2022/lib/checkbox/checkbox.component.mjs +5 -5
  23. package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
  24. package/esm2022/lib/color-picker/color-box/color-box.component.mjs +5 -5
  25. package/esm2022/lib/color-picker/color-picker.component.mjs +5 -5
  26. package/esm2022/lib/color-picker/color-picker.module.mjs +5 -5
  27. package/esm2022/lib/context-menu/context-menu.component.mjs +5 -5
  28. package/esm2022/lib/context-menu/context-menu.directive.mjs +5 -5
  29. package/esm2022/lib/context-menu/context-menu.module.mjs +5 -5
  30. package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +5 -5
  31. package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +5 -5
  32. package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +5 -5
  33. package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +5 -5
  34. package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +5 -5
  35. package/esm2022/lib/data-filter/filter.class.mjs +5 -5
  36. package/esm2022/lib/data-filter/filter.module.mjs +5 -5
  37. package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +5 -5
  38. package/esm2022/lib/data-list/core/data-list.component.mjs +4 -4
  39. package/esm2022/lib/data-list/list/list.component.mjs +5 -5
  40. package/esm2022/lib/data-list/list/list.module.mjs +5 -5
  41. package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +5 -5
  42. package/esm2022/lib/data-source/datasource.component.mjs +4 -4
  43. package/esm2022/lib/data-source/datasource.module.mjs +5 -5
  44. package/esm2022/lib/date-picker/date-picker.component.mjs +5 -5
  45. package/esm2022/lib/date-picker/date-picker.module.mjs +7 -6
  46. package/esm2022/lib/dialog/dialog.component.mjs +5 -5
  47. package/esm2022/lib/dialog/dialog.module.mjs +5 -5
  48. package/esm2022/lib/dialog/dialog.service.mjs +5 -5
  49. package/esm2022/lib/drawer/content.component.mjs +5 -5
  50. package/esm2022/lib/drawer/drawer-container.component.mjs +5 -5
  51. package/esm2022/lib/drawer/drawer.component.mjs +5 -5
  52. package/esm2022/lib/drawer/drawer.module.mjs +5 -5
  53. package/esm2022/lib/dropdown/dropdown.component.mjs +5 -5
  54. package/esm2022/lib/dropdown/dropdown.module.mjs +5 -5
  55. package/esm2022/lib/fieldset/fieldset.component.mjs +4 -4
  56. package/esm2022/lib/fieldset/fieldset.module.mjs +5 -5
  57. package/esm2022/lib/form-group/form-group.component.mjs +5 -5
  58. package/esm2022/lib/form-group/form-group.module.mjs +5 -5
  59. package/esm2022/lib/label/label.component.mjs +5 -5
  60. package/esm2022/lib/label/label.module.mjs +5 -5
  61. package/esm2022/lib/loading/loading-indicator.component.mjs +5 -5
  62. package/esm2022/lib/loading/loading-panel.component.mjs +5 -5
  63. package/esm2022/lib/loading/loading.module.mjs +5 -5
  64. package/esm2022/lib/loading/loading.service.mjs +5 -5
  65. package/esm2022/lib/menu/menu-item.component.mjs +5 -5
  66. package/esm2022/lib/menu/menu.component.mjs +5 -5
  67. package/esm2022/lib/menu/menu.module.mjs +5 -5
  68. package/esm2022/lib/menu/menu2.component.mjs +5 -5
  69. package/esm2022/lib/number-box/number-box.component.mjs +5 -5
  70. package/esm2022/lib/number-box/number-box.module.mjs +5 -5
  71. package/esm2022/lib/page/content.component.mjs +5 -5
  72. package/esm2022/lib/page/footer.component.mjs +4 -4
  73. package/esm2022/lib/page/page.component.mjs +5 -5
  74. package/esm2022/lib/page/page.module.mjs +5 -5
  75. package/esm2022/lib/panel-box/panel-box.component.mjs +4 -4
  76. package/esm2022/lib/panel-box/panel-box.module.mjs +5 -5
  77. package/esm2022/lib/password-box/password-box.component.mjs +5 -5
  78. package/esm2022/lib/password-box/password-box.module.mjs +5 -5
  79. package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +9 -9
  80. package/esm2022/lib/popover/overlay.service.mjs +5 -5
  81. package/esm2022/lib/popover/popover.component.mjs +5 -5
  82. package/esm2022/lib/popover/popover.module.mjs +5 -5
  83. package/esm2022/lib/popup/popup.component.mjs +6 -6
  84. package/esm2022/lib/popup/popup.module.mjs +5 -5
  85. package/esm2022/lib/popup/popup.service.mjs +5 -5
  86. package/esm2022/lib/progress-bar/progress-bar.component.mjs +4 -4
  87. package/esm2022/lib/progress-bar/progress-bar.module.mjs +5 -5
  88. package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +5 -5
  89. package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +5 -5
  90. package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +5 -5
  91. package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +6 -6
  92. package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +5 -5
  93. package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +6 -6
  94. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +5 -5
  95. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +6 -6
  96. package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +5 -5
  97. package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +6 -6
  98. package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +5 -5
  99. package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +10 -10
  100. package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +5 -5
  101. package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +6 -6
  102. package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +5 -5
  103. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +5 -5
  104. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +6 -6
  105. package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +5 -5
  106. package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +5 -5
  107. package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +5 -5
  108. package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +6 -6
  109. package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +5 -5
  110. package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +11 -11
  111. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +5 -5
  112. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +10 -10
  113. package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +5 -5
  114. package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +10 -10
  115. package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +5 -5
  116. package/esm2022/lib/property-editor/property-editor.class.mjs +5 -5
  117. package/esm2022/lib/property-editor/property-editor.module.mjs +5 -5
  118. package/esm2022/lib/query-builder/query-builder-group.component.mjs +5 -5
  119. package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +5 -5
  120. package/esm2022/lib/query-builder/query-builder-rule.component.mjs +5 -5
  121. package/esm2022/lib/query-builder/query-builder.component.mjs +6 -6
  122. package/esm2022/lib/query-builder/query-builder.module.mjs +5 -5
  123. package/esm2022/lib/query-builder/query-builder.service.mjs +5 -5
  124. package/esm2022/lib/search-bar/search-bar.component.mjs +5 -5
  125. package/esm2022/lib/search-bar/search-bar.module.mjs +5 -5
  126. package/esm2022/lib/searchbox/searchbox.component.mjs +5 -5
  127. package/esm2022/lib/searchbox/searchbox.module.mjs +5 -5
  128. package/esm2022/lib/selectbox/selectbox.component.mjs +5 -5
  129. package/esm2022/lib/selectbox/selectbox.module.mjs +9 -8
  130. package/esm2022/lib/selectbox/selectbox2.component.mjs +5 -5
  131. package/esm2022/lib/selection-list/selection-list.component.mjs +5 -5
  132. package/esm2022/lib/selection-list/selection-list.module.mjs +5 -5
  133. package/esm2022/lib/switch/switch.component.mjs +6 -6
  134. package/esm2022/lib/switch/switch.module.mjs +5 -5
  135. package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +5 -5
  136. package/esm2022/lib/tab-page/tab-page-host.component.mjs +5 -5
  137. package/esm2022/lib/tab-page/tab-page.module.mjs +5 -5
  138. package/esm2022/lib/tab-page/tab-page.service.mjs +5 -5
  139. package/esm2022/lib/tab-strip/tab-strip.component.mjs +5 -5
  140. package/esm2022/lib/tab-strip/tab-strip.module.mjs +5 -5
  141. package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +5 -5
  142. package/esm2022/lib/tab-view/tab-view.component.mjs +6 -6
  143. package/esm2022/lib/tab-view/tab-view.module.mjs +5 -5
  144. package/esm2022/lib/tab-view/tab.component.mjs +4 -4
  145. package/esm2022/lib/textarea/textarea.component.mjs +5 -5
  146. package/esm2022/lib/textarea/textarea.module.mjs +5 -5
  147. package/esm2022/lib/textbox/textbox.component.mjs +5 -5
  148. package/esm2022/lib/textbox/textbox.module.mjs +5 -5
  149. package/esm2022/lib/time-picker/time-picker.component.mjs +5 -5
  150. package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
  151. package/esm2022/lib/toast/toast-message/toast-message.component.mjs +5 -5
  152. package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +5 -5
  153. package/esm2022/lib/toast/toast.module.mjs +5 -5
  154. package/esm2022/lib/toast/toast.service.mjs +5 -5
  155. package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +5 -5
  156. package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +5 -5
  157. package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +5 -5
  158. package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +5 -5
  159. package/esm2022/lib/toolbar/toolbar.component.mjs +5 -5
  160. package/esm2022/lib/toolbar/toolbar.module.mjs +5 -5
  161. package/esm2022/lib/tooltip/tooltip.directive.mjs +5 -5
  162. package/esm2022/lib/tooltip/tooltip.module.mjs +5 -5
  163. package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +5 -5
  164. package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +5 -5
  165. package/esm2022/lib/tree-view/tree-view.component.mjs +5 -5
  166. package/esm2022/lib/tree-view/tree-view.module.mjs +5 -5
  167. package/esm2022/lib/upload-file/upload-file.component.mjs +5 -5
  168. package/esm2022/lib/upload-file/upload-file.module.mjs +5 -5
  169. package/esm2022/lib/validation/validation-form.component.mjs +5 -5
  170. package/esm2022/lib/validation/validation-rule.widget.mjs +6 -6
  171. package/esm2022/lib/validation/validation.component.mjs +9 -9
  172. package/esm2022/lib/validation/validation.module.mjs +6 -6
  173. package/fesm2022/acorex-components.mjs +765 -757
  174. package/fesm2022/acorex-components.mjs.map +1 -1
  175. package/lib/accordion/accordion.component.d.ts +2 -2
  176. package/lib/base/element.class.d.ts +2 -2
  177. package/package.json +6 -6
@@ -633,13 +633,13 @@ export class AXTreeSideMenuComponent extends AXBaseComponent {
633
633
  });
634
634
  return keyFields;
635
635
  }
636
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
637
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXTreeSideMenuComponent, selector: "ax-tree-side-menu", inputs: { cssClass: "cssClass", selectionMode: "selectionMode", selectionLevel: "selectionLevel", selectedFieldName: "selectedFieldName", selectNodesRecursive: "selectNodesRecursive", seletedKeyFields: "seletedKeyFields", keyField: "keyField", textField: "textField", hasChildField: "hasChildField", bordered: "bordered", lazyLoading: "lazyLoading", allowDrag: "allowDrag", size: "size", iconStart: "iconStart", closeIconName: "closeIconName", openIconName: "openIconName", contextMenuItems: "contextMenuItems" }, outputs: { selectionChanged: "selectionChanged", onItemOpening: "onItemOpening", onItemClick: "onItemClick", onItemClosing: "onItemClosing", onItemDrag: "onItemDrag", onItemMoved: "onItemMoved", onContextMenuItemClick: "onContextMenuItemClick" }, queries: [{ propertyName: "nodeTemplate", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ul class=\"ax-tree-side-menu {{size}} {{cssClass}}\">\n <ng-template #recursiveList let-list>\n <ng-container *ngFor=\"let item of list\">\n <li (click)=\"handleOnNodeClick($event,item,true)\"\n class=\"{{item[hasChildField] ? '':'node'}} {{!!item.toggle ? 'active':''}}\" style=\"display: flex;\"\n [class.selected]=\"item.select\">\n <div class=\"ax-tree-side-menu-item\" (click)=\"handleOnNodeClick($event,item,true)\">\n\n \n\n <div (click)=\"handleOnNodeClick($event,item,true)\" (dblclick)=\"itemdbClick($event,item)\">\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #elseTemplate>\n {{item[textField]}}\n </ng-template>\n </div>\n\n <div class=\"start-side\" *ngIf=\"iconStart\">\n <div *ngIf=\"item[hasChildField]\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n\n <div class=\"start-side\" *ngIf=\"!iconStart\">\n <div *ngIf=\"item[hasChildField]\" (click)=\"handleOnNodeClick($event,item,true)\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n </div>\n <ul class=\"ax-tree-side-menu-child\" *ngIf=\"item.toggle\">\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\"></ng-container>\n </ul>\n </li>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\n</ul>", dependencies: [{ 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"] }], encapsulation: i0.ViewEncapsulation.None });
636
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AXTreeSideMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
637
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: AXTreeSideMenuComponent, selector: "ax-tree-side-menu", inputs: { cssClass: "cssClass", selectionMode: "selectionMode", selectionLevel: "selectionLevel", selectedFieldName: "selectedFieldName", selectNodesRecursive: "selectNodesRecursive", seletedKeyFields: "seletedKeyFields", keyField: "keyField", textField: "textField", hasChildField: "hasChildField", bordered: "bordered", lazyLoading: "lazyLoading", allowDrag: "allowDrag", size: "size", iconStart: "iconStart", closeIconName: "closeIconName", openIconName: "openIconName", contextMenuItems: "contextMenuItems" }, outputs: { selectionChanged: "selectionChanged", onItemOpening: "onItemOpening", onItemClick: "onItemClick", onItemClosing: "onItemClosing", onItemDrag: "onItemDrag", onItemMoved: "onItemMoved", onContextMenuItemClick: "onContextMenuItemClick" }, queries: [{ propertyName: "nodeTemplate", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ul class=\"ax-tree-side-menu {{size}} {{cssClass}}\">\n <ng-template #recursiveList let-list>\n <ng-container *ngFor=\"let item of list\">\n <li (click)=\"handleOnNodeClick($event,item,true)\"\n class=\"{{item[hasChildField] ? '':'node'}} {{!!item.toggle ? 'active':''}}\" style=\"display: flex;\"\n [class.selected]=\"item.select\">\n <div class=\"ax-tree-side-menu-item\" (click)=\"handleOnNodeClick($event,item,true)\">\n\n \n\n <div (click)=\"handleOnNodeClick($event,item,true)\" (dblclick)=\"itemdbClick($event,item)\">\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #elseTemplate>\n {{item[textField]}}\n </ng-template>\n </div>\n\n <div class=\"start-side\" *ngIf=\"iconStart\">\n <div *ngIf=\"item[hasChildField]\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n\n <div class=\"start-side\" *ngIf=\"!iconStart\">\n <div *ngIf=\"item[hasChildField]\" (click)=\"handleOnNodeClick($event,item,true)\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n </div>\n <ul class=\"ax-tree-side-menu-child\" *ngIf=\"item.toggle\">\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\"></ng-container>\n </ul>\n </li>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\n</ul>", dependencies: [{ 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"] }], encapsulation: i0.ViewEncapsulation.None });
638
638
  }
639
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuComponent, decorators: [{
639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AXTreeSideMenuComponent, decorators: [{
640
640
  type: Component,
641
641
  args: [{ selector: 'ax-tree-side-menu', encapsulation: ViewEncapsulation.None, template: "<ul class=\"ax-tree-side-menu {{size}} {{cssClass}}\">\n <ng-template #recursiveList let-list>\n <ng-container *ngFor=\"let item of list\">\n <li (click)=\"handleOnNodeClick($event,item,true)\"\n class=\"{{item[hasChildField] ? '':'node'}} {{!!item.toggle ? 'active':''}}\" style=\"display: flex;\"\n [class.selected]=\"item.select\">\n <div class=\"ax-tree-side-menu-item\" (click)=\"handleOnNodeClick($event,item,true)\">\n\n \n\n <div (click)=\"handleOnNodeClick($event,item,true)\" (dblclick)=\"itemdbClick($event,item)\">\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #elseTemplate>\n {{item[textField]}}\n </ng-template>\n </div>\n\n <div class=\"start-side\" *ngIf=\"iconStart\">\n <div *ngIf=\"item[hasChildField]\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n\n <div class=\"start-side\" *ngIf=\"!iconStart\">\n <div *ngIf=\"item[hasChildField]\" (click)=\"handleOnNodeClick($event,item,true)\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n </div>\n <ul class=\"ax-tree-side-menu-child\" *ngIf=\"item.toggle\">\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\"></ng-container>\n </ul>\n </li>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\n</ul>" }]
642
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { nodeTemplate: [{
642
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { nodeTemplate: [{
643
643
  type: ContentChild,
644
644
  args: [TemplateRef, { static: true }]
645
645
  }], _contentDataSource: [{
@@ -694,4 +694,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
694
694
  }], contextMenuItems: [{
695
695
  type: Input
696
696
  }] } });
697
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zaWRlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUVaLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVF4RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFFBQVEsQ0FBdUI7SUFDL0IsUUFBUSxHQUEyQixJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDaEUsTUFBTSxDQUFxQjtDQUM1QjtBQUVELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsUUFBUSxDQUFVO0lBQ2xCLEdBQUcsQ0FBUztJQUNaLFFBQVEsQ0FBVTtJQUNsQixJQUFJLENBQVU7SUFDZCxRQUFRLENBQVU7SUFDbEIsSUFBSSxDQUFNO0NBQ1g7QUFFRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLE1BQU0sQ0FBcUI7SUFDM0IsTUFBTSxDQUFxQjtJQUMzQixPQUFPLENBQTJCO0NBQ25DO0FBRUQsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLFlBQWdDO0NBRXhGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFR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O3NCQURSLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBS1Asc0JBQXNCO3NCQURyQixNQUFNO2dCQW1CUCxnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBDb250ZW50Q2hpbGQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFYRGF0YUV2ZW50LCBBWEh0bWxFdmVudCwgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCxcbiAgQVhDb250ZXh0TWVudVByb21pc2VGdW5jdGlvbixcbiAgQVhDb250ZXh0TWVudUZ1bmN0aW9uLFxufSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWE1lbnVJdGVtIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51Tm9kZSB7XG4gIGNoaWxkcmVuOiBBWFRyZWVTaWRlTWVudU5vZGVbXTtcbiAgaXRlbURhdGE6IEFYVHJlZVNpZGVNZW51SXRlbURhdGEgPSBuZXcgQVhUcmVlU2lkZU1lbnVJdGVtRGF0YSgpO1xuICBwYXJlbnQ6IEFYVHJlZVNpZGVNZW51Tm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51SXRlbURhdGEge1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBvcGVuOiBib29sZWFuO1xuICBoYXNDaGlsZDogYm9vbGVhbjtcbiAgaXRlbTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudCB7XG4gIHNvdXJjZTogQVhUcmVlU2lkZU1lbnVOb2RlO1xuICB0YXJnZXQ6IEFYVHJlZVNpZGVNZW51Tm9kZTtcbiAgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8QVhUcmVlU2lkZU1lbnVOb2RlPiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWFRyZWVTaWRlTWVudUNvbXBvbmVudDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51SXRlbUNsaWNrIGV4dGVuZHMgQVhIdG1sRXZlbnQ8TW91c2VFdmVudD4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhUcmVlU2lkZU1lbnVDb21wb25lbnQ7XG4gIGRlY2xhcmUgaXRlbTogYW55O1xuICBkZWNsYXJlIGZsYWc6IGJvb2xlYW47XG4gIGRlY2xhcmUgY2FuY2VsPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdHJlZS1zaWRlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRyZWVTaWRlTWVudUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCB7XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YVNvdXJjZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBjc3NDbGFzczogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uTGV2ZWw6ICdhbGwnIHwgJ25vZGVzJyB8ICdwYXJlbnRzJyA9ICdhbGwnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkRmllbGROYW1lOiBzdHJpbmcgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdE5vZGVzUmVjdXJzaXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZWxldGVkS2V5RmllbGRzOiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGtleUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuXG4gIEBJbnB1dCgpXG4gIHRleHRGaWVsZDogc3RyaW5nID0gJ3RpdGxlJztcblxuICBASW5wdXQoKVxuICBoYXNDaGlsZEZpZWxkOiBzdHJpbmcgPSAnY2hpbGQnO1xuXG4gIEBJbnB1dCgpXG4gIGJvcmRlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbGF6eUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93RHJhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6ICdtZCcgfCAnc20nID0gJ21kJztcblxuICBASW5wdXQoKVxuICBpY29uU3RhcnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNsb3NlSWNvbk5hbWU6IHN0cmluZyA9ICdmYWwgZmEtcGx1cyc7XG5cbiAgQElucHV0KClcbiAgb3Blbkljb25OYW1lOiBzdHJpbmcgPSAnZmFsIGZhLW1pbnVzJztcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVHJlZVNpZGVNZW51U2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWFRyZWVTaWRlTWVudVNlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JdGVtT3BlbmluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWFRyZWVTaWRlTWVudUl0ZW1DbGljaz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtQ2xpY2s+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbUNsb3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbURyYWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbU1vdmVkOiBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Db250ZXh0TWVudUl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PigpO1xuXG4gIHNob3dTZWxlY3RCb3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBsaXN0OiBhbnlbXSA9IFtdO1xuICBpdGVtUm93OiBhbnk7XG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUGFyZW50czogYW55W10gPSBbXTtcbiAgbG9hZEFsbENoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XG4gIGxpc3RMb2FkOiBhbnlbXSA9IFtdO1xuICBpdGVtRHJvcDogYW55O1xuICBpdGVtRHJhZzogYW55O1xuICB2YWxpZERyb3A6IGJvb2xlYW4gPSB0cnVlO1xuICBsb2NrZWREcmFnOiBib29sZWFuID0gZmFsc2U7XG4gIGNoaWxkRmllbGQ6IHN0cmluZyA9ICdjaGlsZGVyZW4nO1xuICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgY29udGV4dE1lbnVJdGVtczpcbiAgICB8IEFYTWVudUl0ZW1bXVxuICAgIHwgQVhDb250ZXh0TWVudVByb21pc2VGdW5jdGlvblxuICAgIHwgQVhDb250ZXh0TWVudUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ29udGV4dE1lbnVJdGVtKGU6IEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCkge1xuICAgIHRoaXMub25Db250ZXh0TWVudUl0ZW1DbGljay5lbWl0KGUpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcbiAgfVxuXG4gIGludGVybmFsU2VsZWN0SXRlbShpdGVtLCB1c2VyQ2hhbmdlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGl0ZW0uc2VsZWN0ID0gIWl0ZW0uc2VsZWN0O1xuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5zZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgZS5zZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcblxuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZFNlbGVjdChpdGVtLCBpdGVtLnNlbGVjdCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLnNlbGVjdCA9PSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGUuc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodXNlckNoYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLm1ha2VOb2RlKGl0ZW0pLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFrZU5vZGUoaXRlbSwgYWRkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3Qgbm9kZTogQVhUcmVlU2lkZU1lbnVOb2RlID0gbmV3IEFYVHJlZVNpZGVNZW51Tm9kZSgpO1xuICAgIGlmIChhZGRDaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9XG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogaXRlbVt0aGlzLmNoaWxkRmllbGRdPy5tYXAoKG0pID0+IHRoaXMubWFrZU5vZGUobSkpO1xuICAgIH1cbiAgICBub2RlLml0ZW1EYXRhLmRpc2FibGVkID0gaXRlbS5kaXNhYmxlZCA9PT0gdHJ1ZSA/IGl0ZW0uZGlzYWJsZWQgOiBmYWxzZTtcbiAgICBub2RlLml0ZW1EYXRhLm9wZW4gPSBpdGVtLm9wZW4gPT09IHRydWUgPyBpdGVtLm9wZW4gOiBmYWxzZTtcbiAgICBub2RlLml0ZW1EYXRhLmtleSA9IGl0ZW1bdGhpcy5rZXlGaWVsZF07XG5cbiAgICBjb25zdCBjID0gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAodmFyIGsgaW4gaXRlbSkge1xuICAgICAgaSA9IGkgKyAxO1xuICAgICAgaWYgKFxuICAgICAgICBrICE9ICdzZWxlY3QnICYmXG4gICAgICAgIGsgIT0gJ2hhc0NoaWxkJyAmJlxuICAgICAgICBrICE9ICdsb2FkaW5nJyAmJlxuICAgICAgICBrICE9ICdyZXF1ZXN0SWQnICYmXG4gICAgICAgIGsgIT0gJ2Rpc2FibGVkJyAmJlxuICAgICAgICBrICE9ICdvcGVuJyAmJlxuICAgICAgICBrICE9ICdwYXJlbnROb2RlJyAmJlxuICAgICAgICBrICE9ICd0b2dnbGUnICYmXG4gICAgICAgIGsgIT0gJ2xvYWRlZCcgJiZcbiAgICAgICAgayAhPSAnaW5kZXRlcm1pbmF0ZScgJiZcbiAgICAgICAgayAhPSB0aGlzLmNoaWxkRmllbGRcbiAgICAgICkge1xuICAgICAgICAvL2MucHVzaCh7IGs6IGl0ZW1ba10gfSk7XG4gICAgICAgIGNba10gPSBpdGVtW2tdO1xuICAgICAgfVxuICAgIH1cbiAgICBub2RlLml0ZW1EYXRhLml0ZW0gPSBjOyAvL1RPIERPXG4gICAgbm9kZS5pdGVtRGF0YS5zZWxlY3RlZCA9IGl0ZW0uc2VsZWN0ID09PSB0cnVlID8gaXRlbS5zZWxlY3QgOiBmYWxzZTtcbiAgICBub2RlLml0ZW1EYXRhLmhhc0NoaWxkID0gaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdO1xuICAgIG5vZGUucGFyZW50ID1cbiAgICAgIGl0ZW0ucGFyZW50Tm9kZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMubWFrZU5vZGUoaXRlbS5wYXJlbnROb2RlLCBmYWxzZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUNoaWxkU2VsZWN0KGl0ZW0sIHMpIHtcbiAgICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xuICAgICAgaXRlbS5zZWxlY3QgPSBzO1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUgJiZcbiAgICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdICYmXG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgICAgIGlmIChlbG1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XG5cbiAgICAgICAgICAgIGlmIChzID09PSB0cnVlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGVsbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocyA9PT0gZmFsc2UgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hpbGRTZWxlY3QoZWxtLCBzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChlbG0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVBhcmVudFNlbGVjdChpdGVtKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcbiAgICAgIGxldCBhbGxzZWxlY3QgPSB0cnVlO1xuICAgICAgbGV0IGFsbGRlc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIGxldCBvbmVzZWxlY3QgPSBmYWxzZTtcbiAgICAgIGxldCBpc2luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSkge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgYWxsZGVzZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgICAgIG9uZXNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSBmYWxzZSB8fFxuICAgICAgICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgYWxsc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaXNpbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIGFsbGRlc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICBvbmVzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgYWxsc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvbmVzZWxlY3QgfHwgKGlzaW5kZXRlcm1pbmF0ZSAmJiAhYWxsc2VsZWN0KSkge1xuICAgICAgICBpdGVtLnNlbGVjdCA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYWxsc2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhbGxkZXNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLnNlbGVjdCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnBhcmVudE5vZGUgJiZcbiAgICAgICAgaXRlbS5wYXJlbnROb2RlW3RoaXMuY2hpbGRGaWVsZF0gJiZcbiAgICAgICAgaXRlbS5wYXJlbnROb2RlW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkl0ZW1DbGljay5zdWJzY3JpYmUoKGRhdGE6IEFYVHJlZVNpZGVNZW51SXRlbUNsaWNrKSA9PiB7XG4gICAgICBpZiAoIWRhdGEuY2FuY2VsKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTm9kZShkYXRhLml0ZW0sIGRhdGEuZmxhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpdGVtZGJDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5oYW5kbGVPbk5vZGVDbGljayhlLCBpdGVtLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbk5vZGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtLCBmbGFnID0gZmFsc2UpIHtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEV2ZW50OiBlLFxuICAgICAgaXRlbSxcbiAgICAgIGZsYWcsXG4gICAgfSk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICB0b2dnbGVOb2RlKGl0ZW0sIGZsYWcgPSBmYWxzZSkge1xuICAgIC8vaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJlxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnICYmICFmbGFnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnICYmIGl0ZW0uaGFzQ2hpbGQgPT0gdHJ1ZSkge1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLnRvZ2dsZSA9ICFpdGVtLnRvZ2dsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBpdGVtLmhhc0NoaWxkID09IHRydWUpIHtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJlxuICAgICAgICBpdGVtLmxvYWRlZCAhPT0gdHJ1ZSAmJlxuICAgICAgICB0aGlzLmxhenlMb2FkaW5nXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gaXRlbTtcbiAgICAgICAgY29uc3QgdWlkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwKTtcbiAgICAgICAgaXRlbS5yZXF1ZXN0SWQgPSB1aWQ7XG4gICAgICAgIHRoaXMubGlzdExvYWQucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5fY29udGVudERhdGFTb3VyY2UuZmV0Y2goaXRlbSk7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtUm93KTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnRvZ2dsZSAmJiBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcbiAgICAgICAgaXRlbS5vcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkl0ZW1PcGVuaW5nLmVtaXQodGhpcy5tYWtlTm9kZShpdGVtKSk7XG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLnRvZ2dsZSAmJiBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcbiAgICAgICAgaXRlbS5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25JdGVtQ2xvc2luZy5lbWl0KHRoaXMubWFrZU5vZGUoaXRlbSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZC5zdWJzY3JpYmUoKF9kYXRhKSA9PiB7XG4gICAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKG51bGwpO1xuICAgICAgICB0aGlzLmxpc3QgPSBfZGF0YS5kYXRhLnJlc3VsdDtcblxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICBlbC5zZWxlY3QgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJlxuICAgICAgICAgICAgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBlbC5kaXNhYmxlZENoZWNrQm94ID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJlxuICAgICAgICAgICAgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZXRlZEtleUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHMuZm9yRWFjaCgobjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChuLmluY2x1ZGVzKGVsW3RoaXMua2V5RmllbGRdKSkge1xuICAgICAgICAgICAgICAgIGlmIChlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgIC8vICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKGVsKTtcbiAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpZWxkTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGVsW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICBlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuKGVsKTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXRlbVJvdyA9IHRoaXMubGlzdExvYWQuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PiBjLnJlcXVlc3RJZCA9PT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWRcbiAgICAgICAgKVswXTtcbiAgICAgICAgdGhpcy5saXN0TG9hZCA9IHRoaXMubGlzdExvYWQuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PiBjLnJlcXVlc3RJZCAhPT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbVJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Sb3cpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IF9kYXRhLmRhdGEucmVzdWx0O1xuXG4gICAgICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0gJiZcbiAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdW1xuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXSA9IGVsO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAncGFyZW50cycgJiZcbiAgICAgICAgICAgICAgICByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSBmYWxzZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5zZWxlY3QgPVxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtUm93LnNlbGVjdCA9PT0gKHVuZGVmaW5lZCB8fCBudWxsKVxuICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5pdGVtUm93LnNlbGVjdDtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvdy5zZWxlY3QgPT09IHRydWUgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnbXVsdGlwbGUnICYmXG4gICAgICAgICAgICAgICAgICByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSByZXN1bHRbaV1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChyZXN1bHRbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVzdWx0W2ldLnBhcmVudE5vZGUgPSB0aGlzLml0ZW1Sb3c7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZXRlZEtleUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxldGVkS2V5RmllbGRzLmZvckVhY2goKG46IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKG4uaW5jbHVkZXMocmVzdWx0W2ldW3RoaXMua2V5RmllbGRdKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKHJlc3VsdFtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpZWxkTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW4ocmVzdWx0W2ldKTtcbiAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFtpXVt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pdGVtUm93LmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuc2hvd1NlbGVjdEJveCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIG9uSXRlbUNsaWNrKGUsIHYpIHtcblxuICAvLyB9XG5cbiAgb25EcmFnU3RhcnQoZTogRXZlbnQsIHYpIHtcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xuICAgICAgdGhpcy5pdGVtRHJhZyA9IHY7XG4gICAgICB0aGlzLm9uSXRlbURyYWcuZW1pdCh2KTtcbiAgICB9XG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG9uRHJhZ0VuZChlLCB2KSB7XG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcbiAgICAgIHRoaXMuaXRlbURyb3AgPSB2O1xuICAgIH1cbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZHJvcChlKSB7XG4gICAgLy8gIHRoaXMub25JdGVtRHJvcC5lbWl0KHRoaXMuaXRlbURyb3ApO1xuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IHRydWU7XG4gICAgICB0aGlzLnNhbWVDaGlsZGUodGhpcy5pdGVtRHJhZywgdGhpcy5pdGVtRHJvcCk7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudmFsaWREcm9wICYmXG4gICAgICAgIHRoaXMuaXRlbURyYWdbdGhpcy5rZXlGaWVsZF0gIT09IHRoaXMuaXRlbURyb3BbdGhpcy5rZXlGaWVsZF0gJiZcbiAgICAgICAgdGhpcy5pdGVtRHJhZy5wYXJlbnROb2RlICE9PSB0aGlzLml0ZW1Ecm9wXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbW92ZWRFdmVudDogQVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudCA9XG4gICAgICAgICAgbmV3IEFYVHJlZVNpZGVNZW51SXRlbU1vdmVkRXZlbnQoKTtcbiAgICAgICAgbW92ZWRFdmVudC5zb3VyY2UgPSB0aGlzLm1ha2VOb2RlKHRoaXMuaXRlbURyYWcpO1xuICAgICAgICBtb3ZlZEV2ZW50LnRhcmdldCA9IHRoaXMubWFrZU5vZGUodGhpcy5pdGVtRHJvcCk7XG4gICAgICAgIHRoaXMubG9ja2VkRHJhZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJhZyk7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJvcCk7XG4gICAgICAgIG1vdmVkRXZlbnQucmVzb2x2ZSA9ICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcodGhpcy5pdGVtRHJhZyk7XG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Ecm9wKTtcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvY2tlZERyYWcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25JdGVtTW92ZWQuZW1pdChtb3ZlZEV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2FtZUNoaWxkZShwYXJlbnQsIGNoaWxkKSB7XG4gICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmtleUZpZWxkXSA9PSBjaGlsZFt0aGlzLmtleUZpZWxkXVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnZhbGlkRHJvcCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXSAmJlxuICAgICAgICAgIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zYW1lQ2hpbGRlKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XSwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXJlbnRbdGhpcy5rZXlGaWVsZF0gPT0gY2hpbGRbdGhpcy5rZXlGaWVsZF0pIHtcbiAgICAgIHRoaXMudmFsaWREcm9wID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZHJhZ0Ryb3BJdGVtKGl0ZW1DaGlsZCwgaXRlbVBhcmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycpIHtcbiAgICAgIGl0ZW1QYXJlbnQuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdID0gaXRlbUNoaWxkLnBhcmVudE5vZGVbXG4gICAgICAgIHRoaXMuY2hpbGRGaWVsZFxuICAgICAgXS5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1DaGlsZFt0aGlzLmtleUZpZWxkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdCA9IHRoaXMubGlzdC5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtQ2hpbGRbdGhpcy5rZXlGaWVsZF1cbiAgICAgICk7XG4gICAgfVxuICAgIGl0ZW1DaGlsZC5wYXJlbnROb2RlID0gaXRlbVBhcmVudDtcbiAgICBpZiAoaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aF0gPVxuICAgICAgICBpdGVtQ2hpbGQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSA9IFtdO1xuICAgICAgaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdWzBdID0gaXRlbUNoaWxkO1xuICAgICAgaWYgKGl0ZW1QYXJlbnRbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbVBhcmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtUGFyZW50LnRvZ2dsZSA9ICFpdGVtUGFyZW50LnRvZ2dsZTtcbiAgICAgICAgaXRlbVBhcmVudC5sb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaXRlbVBhcmVudFt0aGlzLmhhc0NoaWxkRmllbGRdID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW1DaGlsZC5wYXJlbnROb2RlKTtcbiAgICB9XG4gICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxpc3RDaGFuZ2UoZmllbGQsIHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKHRoaXMubGlzdFtpbmRleF0sIGZpZWxkLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMubG9hZEFsbENoaWxkcmVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUNoaWxlZChpdGVtLCBmaWVsZCwgdmFsdWUpIHtcbiAgICBpZiAoXG4gICAgICBmaWVsZCA9PT0gJ3RvZ2dsZScgJiZcbiAgICAgIChpdGVtLmxvYWRlZCA9PT0gZmFsc2UgfHwgaXRlbS5sb2FkZWQgPT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmxvYWRBbGxDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbSk7XG4gICAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIGZpZWxkID09PSAnc2VsZWN0JyAmJlxuICAgICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlICYmXG4gICAgICAgIHZhbHVlID09PSB0cnVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmaWVsZCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIGl0ZW0uaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUgJiZcbiAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSAmJlxuICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKGVsZW1lbnQsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dMb2FkaW5nKGl0ZW0pOiB2b2lkIHtcbiAgICBpdGVtLmxvYWRpbmcgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlTG9hZGluZyhpdGVtKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgaXRlbS5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5BbGwobG9hZEFsbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgLy8gaWYgKGxvYWRBbGwpIHtcbiAgICAvLyB0aGlzLmxvYWRBbGxDaGlsZHJlbiA9IHRydWU7XG4gICAgLy8gdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCB0cnVlKTtcbiAgICAvL30gZWxzZSB7XG4gICAgdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCB0cnVlKTtcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtKSB7XG4gICAgaWYgKGl0ZW1bJ3NlbGVjdCddICE9IHRydWUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbihpdGVtKSB7XG4gICAgaWYgKGl0ZW1bJ3RvZ2dsZSddICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNjcm9sSW50b1ZpZXcoaXRlbSkge1xuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGBsaVtkYXRhLWlkPScke2l0ZW1bdGhpcy5rZXlGaWVsZF19J11gXG4gICAgKTtcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmxpc3RDaGFuZ2UoJ3NlbGVjdCcsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1blNlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5saXN0Q2hhbmdlKCdzZWxlY3QnLCBmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTm9kZXMoKTogQVhUcmVlU2lkZU1lbnVOb2RlW10ge1xuICAgIGNvbnN0IHNlbGVjdEl0ZW1zTm9kZSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBzZWxlY3RJdGVtc05vZGUucHVzaCh0aGlzLm1ha2VOb2RlKGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNOb2RlO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkUGFyZW50cygpOiBBWFRyZWVTaWRlTWVudU5vZGVbXSB7XG4gICAgY29uc3Qgc2VsZWN0SXRlbXNQYXJlbnQgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBzZWxlY3RJdGVtc1BhcmVudC5wdXNoKHRoaXMubWFrZU5vZGUoZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RJdGVtc1BhcmVudDtcbiAgfVxuXG4gIGdldFBhcmVudHNJZChpdGVtKSB7XG4gICAgbGV0IGtleUZpZWxkcyA9IFtdO1xuICAgIGtleUZpZWxkcy5wdXNoKGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xuICAgIGlmIChpdGVtLnBhcmVudE5vZGUpIHtcbiAgICAgIGtleUZpZWxkcy5wdXNoKC4uLnRoaXMuZ2V0UGFyZW50c0lkKGl0ZW0ucGFyZW50Tm9kZSkpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5RmllbGRzO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkS2V5RmllbGRzKCkge1xuICAgIGxldCBrZXlGaWVsZHMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZWxtKSA9PiB7XG4gICAgICB2YXIgSWRzID0gdGhpcy5nZXRQYXJlbnRzSWQoZWxtKTtcbiAgICAgIGlmIChJZHMpIHtcbiAgICAgICAga2V5RmllbGRzLnB1c2goSWRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ga2V5RmllbGRzO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJheC10cmVlLXNpZGUtbWVudSB7e3NpemV9fSB7e2Nzc0NsYXNzfX1cIj5cbiAgPG5nLXRlbXBsYXRlICNyZWN1cnNpdmVMaXN0IGxldC1saXN0PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdFwiPlxuICAgICAgPGxpIChjbGljayk9XCJoYW5kbGVPbk5vZGVDbGljaygkZXZlbnQsaXRlbSx0cnVlKVwiXG4gICAgICAgIGNsYXNzPVwie3tpdGVtW2hhc0NoaWxkRmllbGRdID8gJyc6J25vZGUnfX0ge3shIWl0ZW0udG9nZ2xlICA/ICdhY3RpdmUnOicnfX1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIml0ZW0uc2VsZWN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC10cmVlLXNpZGUtbWVudS1pdGVtXCIgKGNsaWNrKT1cImhhbmRsZU9uTm9kZUNsaWNrKCRldmVudCxpdGVtLHRydWUpXCI+XG5cbiAgICAgICAgXG5cbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJoYW5kbGVPbk5vZGVDbGljaygkZXZlbnQsaXRlbSx0cnVlKVwiIChkYmxjbGljayk9XCJpdGVtZGJDbGljaygkZXZlbnQsaXRlbSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlVGVtcGxhdGU7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVGVtcGxhdGU7IGNvbnRleHQ6eyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cbiAgICAgICAgICAgICAge3tpdGVtW3RleHRGaWVsZF19fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFydC1zaWRlXCIgKm5nSWY9XCJpY29uU3RhcnRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtW2hhc0NoaWxkRmllbGRdXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tvcGVuSWNvbk5hbWV9fVwiICpuZ0lmPVwiICEhaXRlbS50b2dnbGUgJiYgIWl0ZW0ubG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2Nsb3NlSWNvbk5hbWV9fVwiICpuZ0lmPVwiIWl0ZW0udG9nZ2xlICYmICFpdGVtLmxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXNwaW5uZXIgZmEtc3BpblwiICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhcnQtc2lkZVwiICpuZ0lmPVwiIWljb25TdGFydFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW1baGFzQ2hpbGRGaWVsZF1cIiAoY2xpY2spPVwiaGFuZGxlT25Ob2RlQ2xpY2soJGV2ZW50LGl0ZW0sdHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e29wZW5JY29uTmFtZX19XCIgKm5nSWY9XCIgISFpdGVtLnRvZ2dsZSAmJiAhaXRlbS5sb2FkaW5nXCI+PC9pPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7Y2xvc2VJY29uTmFtZX19XCIgKm5nSWY9XCIhaXRlbS50b2dnbGUgJiYgIWl0ZW0ubG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtc3Bpbm5lciBmYS1zcGluXCIgKm5nSWY9XCJpdGVtLmxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzcz1cImF4LXRyZWUtc2lkZS1tZW51LWNoaWxkXCIgKm5nSWY9XCJpdGVtLnRvZ2dsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWN1cnNpdmVMaXN0OyBjb250ZXh0OnsgJGltcGxpY2l0OiBpdGVtLmNoaWxkZXJlbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdDsgY29udGV4dDp7ICRpbXBsaWNpdDogbGlzdCB9XCI+PC9uZy1jb250YWluZXI+XG48L3VsPiJdfQ==
697
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zaWRlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUVaLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVF4RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFFBQVEsQ0FBdUI7SUFDL0IsUUFBUSxHQUEyQixJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDaEUsTUFBTSxDQUFxQjtDQUM1QjtBQUVELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsUUFBUSxDQUFVO0lBQ2xCLEdBQUcsQ0FBUztJQUNaLFFBQVEsQ0FBVTtJQUNsQixJQUFJLENBQVU7SUFDZCxRQUFRLENBQVU7SUFDbEIsSUFBSSxDQUFNO0NBQ1g7QUFFRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLE1BQU0sQ0FBcUI7SUFDM0IsTUFBTSxDQUFxQjtJQUMzQixPQUFPLENBQTJCO0NBQ25DO0FBRUQsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLFlBQWdDO0NBRXhGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFR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LGNBQWM7c0JBRGIsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUtQLHNCQUFzQjtzQkFEckIsTUFBTTtnQkFtQlAsZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgQ29udGVudENoaWxkLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2VDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhLXNvdXJjZS9kYXRhc291cmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVFdmVudCB9IGZyb20gJy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XG5pbXBvcnQge1xuICBBWENvbnRleHRNZW51SXRlbUNsaWNrRXZlbnQsXG4gIEFYQ29udGV4dE1lbnVQcm9taXNlRnVuY3Rpb24sXG4gIEFYQ29udGV4dE1lbnVGdW5jdGlvbixcbn0gZnJvbSAnLi4vY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBWFRyZWVTaWRlTWVudU5vZGUge1xuICBjaGlsZHJlbjogQVhUcmVlU2lkZU1lbnVOb2RlW107XG4gIGl0ZW1EYXRhOiBBWFRyZWVTaWRlTWVudUl0ZW1EYXRhID0gbmV3IEFYVHJlZVNpZGVNZW51SXRlbURhdGEoKTtcbiAgcGFyZW50OiBBWFRyZWVTaWRlTWVudU5vZGU7XG59XG5cbmV4cG9ydCBjbGFzcyBBWFRyZWVTaWRlTWVudUl0ZW1EYXRhIHtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGtleTogc3RyaW5nO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgb3BlbjogYm9vbGVhbjtcbiAgaGFzQ2hpbGQ6IGJvb2xlYW47XG4gIGl0ZW06IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51SXRlbU1vdmVkRXZlbnQge1xuICBzb3VyY2U6IEFYVHJlZVNpZGVNZW51Tm9kZTtcbiAgdGFyZ2V0OiBBWFRyZWVTaWRlTWVudU5vZGU7XG4gIHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51U2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PEFYVHJlZVNpZGVNZW51Tm9kZT4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhUcmVlU2lkZU1lbnVDb21wb25lbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBWFRyZWVTaWRlTWVudUl0ZW1DbGljayBleHRlbmRzIEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYVHJlZVNpZGVNZW51Q29tcG9uZW50O1xuICBkZWNsYXJlIGl0ZW06IGFueTtcbiAgZGVjbGFyZSBmbGFnOiBib29sZWFuO1xuICBkZWNsYXJlIGNhbmNlbD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXRyZWUtc2lkZS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2lkZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQge1xuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBub2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChBWERhdGFTb3VyY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgY3NzQ2xhc3M6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGlvbkxldmVsOiAnYWxsJyB8ICdub2RlcycgfCAncGFyZW50cycgPSAnYWxsJztcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZEZpZWxkTmFtZTogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZWxlY3ROb2Rlc1JlY3Vyc2l2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2VsZXRlZEtleUZpZWxkczogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBrZXlGaWVsZDogc3RyaW5nID0gJ2lkJztcblxuICBASW5wdXQoKVxuICB0ZXh0RmllbGQ6IHN0cmluZyA9ICd0aXRsZSc7XG5cbiAgQElucHV0KClcbiAgaGFzQ2hpbGRGaWVsZDogc3RyaW5nID0gJ2NoaWxkJztcblxuICBASW5wdXQoKVxuICBib3JkZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxhenlMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBhbGxvd0RyYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzaXplOiAnbWQnIHwgJ3NtJyA9ICdtZCc7XG5cbiAgQElucHV0KClcbiAgaWNvblN0YXJ0OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBjbG9zZUljb25OYW1lOiBzdHJpbmcgPSAnZmFsIGZhLXBsdXMnO1xuXG4gIEBJbnB1dCgpXG4gIG9wZW5JY29uTmFtZTogc3RyaW5nID0gJ2ZhbCBmYS1taW51cyc7XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFRyZWVTaWRlTWVudVNlbGVjdGlvbkNoYW5nZWRFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVTZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbU9wZW5pbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtQ2xpY2s+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVNpZGVNZW51SXRlbUNsaWNrPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkl0ZW1DbG9zaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkl0ZW1EcmFnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkl0ZW1Nb3ZlZDogRXZlbnRFbWl0dGVyPEFYVHJlZVNpZGVNZW51SXRlbU1vdmVkRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVNpZGVNZW51SXRlbU1vdmVkRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ29udGV4dE1lbnVJdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWENvbnRleHRNZW51SXRlbUNsaWNrRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudD4oKTtcblxuICBzaG93U2VsZWN0Qm94OiBib29sZWFuID0gZmFsc2U7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbGlzdDogYW55W10gPSBbXTtcbiAgaXRlbVJvdzogYW55O1xuICBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZFBhcmVudHM6IGFueVtdID0gW107XG4gIGxvYWRBbGxDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBsaXN0TG9hZDogYW55W10gPSBbXTtcbiAgaXRlbURyb3A6IGFueTtcbiAgaXRlbURyYWc6IGFueTtcbiAgdmFsaWREcm9wOiBib29sZWFuID0gdHJ1ZTtcbiAgbG9ja2VkRHJhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBjaGlsZEZpZWxkOiBzdHJpbmcgPSAnY2hpbGRlcmVuJztcbiAgc2hvd0NvbnRleHRNZW51OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGNvbnRleHRNZW51SXRlbXM6XG4gICAgfCBBWE1lbnVJdGVtW11cbiAgICB8IEFYQ29udGV4dE1lbnVQcm9taXNlRnVuY3Rpb25cbiAgICB8IEFYQ29udGV4dE1lbnVGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBoYW5kbGVPbkNvbnRleHRNZW51SXRlbShlOiBBWENvbnRleHRNZW51SXRlbUNsaWNrRXZlbnQpIHtcbiAgICB0aGlzLm9uQ29udGV4dE1lbnVJdGVtQ2xpY2suZW1pdChlKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5saXN0ID0gW107XG4gICAgdGhpcy5fY29udGVudERhdGFTb3VyY2UuZmV0Y2gobnVsbCk7XG4gIH1cblxuICBpbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSwgdXNlckNoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSB8fCB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcbiAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtLnBhcmVudE5vZGUpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uc2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGUuc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbS5zZWxlY3QgPSAhaXRlbS5zZWxlY3Q7XG5cbiAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlQ2hpbGRTZWxlY3QoaXRlbSwgaXRlbS5zZWxlY3QpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5zZWxlY3QgPT0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICBlLnNlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzID0gW107XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoXG4gICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHVzZXJDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB2YWx1ZTogdGhpcy5tYWtlTm9kZShpdGVtKSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1ha2VOb2RlKGl0ZW0sIGFkZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IG5vZGU6IEFYVHJlZVNpZGVNZW51Tm9kZSA9IG5ldyBBWFRyZWVTaWRlTWVudU5vZGUoKTtcbiAgICBpZiAoYWRkQ2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPVxuICAgICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXT8ubWFwKChtKSA9PiB0aGlzLm1ha2VOb2RlKG0pKTtcbiAgICB9XG4gICAgbm9kZS5pdGVtRGF0YS5kaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZWQgPT09IHRydWUgPyBpdGVtLmRpc2FibGVkIDogZmFsc2U7XG4gICAgbm9kZS5pdGVtRGF0YS5vcGVuID0gaXRlbS5vcGVuID09PSB0cnVlID8gaXRlbS5vcGVuIDogZmFsc2U7XG4gICAgbm9kZS5pdGVtRGF0YS5rZXkgPSBpdGVtW3RoaXMua2V5RmllbGRdO1xuXG4gICAgY29uc3QgYyA9IFtdO1xuICAgIGxldCBpID0gMDtcbiAgICBmb3IgKHZhciBrIGluIGl0ZW0pIHtcbiAgICAgIGkgPSBpICsgMTtcbiAgICAgIGlmIChcbiAgICAgICAgayAhPSAnc2VsZWN0JyAmJlxuICAgICAgICBrICE9ICdoYXNDaGlsZCcgJiZcbiAgICAgICAgayAhPSAnbG9hZGluZycgJiZcbiAgICAgICAgayAhPSAncmVxdWVzdElkJyAmJlxuICAgICAgICBrICE9ICdkaXNhYmxlZCcgJiZcbiAgICAgICAgayAhPSAnb3BlbicgJiZcbiAgICAgICAgayAhPSAncGFyZW50Tm9kZScgJiZcbiAgICAgICAgayAhPSAndG9nZ2xlJyAmJlxuICAgICAgICBrICE9ICdsb2FkZWQnICYmXG4gICAgICAgIGsgIT0gJ2luZGV0ZXJtaW5hdGUnICYmXG4gICAgICAgIGsgIT0gdGhpcy5jaGlsZEZpZWxkXG4gICAgICApIHtcbiAgICAgICAgLy9jLnB1c2goeyBrOiBpdGVtW2tdIH0pO1xuICAgICAgICBjW2tdID0gaXRlbVtrXTtcbiAgICAgIH1cbiAgICB9XG4gICAgbm9kZS5pdGVtRGF0YS5pdGVtID0gYzsgLy9UTyBET1xuICAgIG5vZGUuaXRlbURhdGEuc2VsZWN0ZWQgPSBpdGVtLnNlbGVjdCA9PT0gdHJ1ZSA/IGl0ZW0uc2VsZWN0IDogZmFsc2U7XG4gICAgbm9kZS5pdGVtRGF0YS5oYXNDaGlsZCA9IGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXTtcbiAgICBub2RlLnBhcmVudCA9XG4gICAgICBpdGVtLnBhcmVudE5vZGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB0aGlzLm1ha2VOb2RlKGl0ZW0ucGFyZW50Tm9kZSwgZmFsc2UpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VDaGlsZFNlbGVjdChpdGVtLCBzKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcbiAgICAgIGl0ZW0uc2VsZWN0ID0gcztcbiAgICAgIGlmIChcbiAgICAgICAgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmXG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSAmJlxuICAgICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5mb3JFYWNoKChlbG0pID0+IHtcbiAgICAgICAgICBpZiAoZWxtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcbiAgICAgICAgICAgIGVsbS5zZWxlY3QgPSBzO1xuXG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzID0gdGhpcy5zZWxlY3RlZFBhcmVudHMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBlbG1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChlbG0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUNoaWxkU2VsZWN0KGVsbSwgcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsbS5zZWxlY3QgPSBzO1xuICAgICAgICAgICAgaWYgKHMgPT09IHRydWUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBlbG1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goZWxtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLnNlbGVjdCA9IHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbSkge1xuICAgIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XG4gICAgICBsZXQgYWxsc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIGxldCBhbGxkZXNlbGVjdCA9IHRydWU7XG4gICAgICBsZXQgb25lc2VsZWN0ID0gZmFsc2U7XG4gICAgICBsZXQgaXNpbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF0pIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGFsbGRlc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICBvbmVzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gZmFsc2UgfHxcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGFsbHNlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlzaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgICAgICBhbGxkZXNlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgICAgb25lc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGFsbHNlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob25lc2VsZWN0IHx8IChpc2luZGV0ZXJtaW5hdGUgJiYgIWFsbHNlbGVjdCkpIHtcbiAgICAgICAgaXRlbS5zZWxlY3QgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGFsbHNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLnNlbGVjdCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoYWxsZGVzZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgaXRlbS5zZWxlY3QgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgaXRlbS5wYXJlbnROb2RlICYmXG4gICAgICAgIGl0ZW0ucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdICYmXG4gICAgICAgIGl0ZW0ucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtLnBhcmVudE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub25JdGVtQ2xpY2suc3Vic2NyaWJlKChkYXRhOiBBWFRyZWVTaWRlTWVudUl0ZW1DbGljaykgPT4ge1xuICAgICAgaWYgKCFkYXRhLmNhbmNlbCkge1xuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoZGF0YS5pdGVtLCBkYXRhLmZsYWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaXRlbWRiQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuaGFuZGxlT25Ob2RlQ2xpY2soZSwgaXRlbSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlT25Ob2RlQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbSwgZmxhZyA9IGZhbHNlKSB7XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFdmVudDogZSxcbiAgICAgIGl0ZW0sXG4gICAgICBmbGFnLFxuICAgIH0pO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgdG9nZ2xlTm9kZShpdGVtLCBmbGFnID0gZmFsc2UpIHtcbiAgICAvL2l0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UgJiZcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJyAmJiAhZmxhZykge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBpdGVtLmhhc0NoaWxkID09IHRydWUpIHtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcbiAgICAgICAgaXRlbS50b2dnbGUgPSAhaXRlbS50b2dnbGU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgaXRlbS5oYXNDaGlsZCA9PSB0cnVlKSB7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUgJiZcbiAgICAgICAgaXRlbS5sb2FkZWQgIT09IHRydWUgJiZcbiAgICAgICAgdGhpcy5sYXp5TG9hZGluZ1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaXRlbVJvdyA9IGl0ZW07XG4gICAgICAgIGNvbnN0IHVpZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMCk7XG4gICAgICAgIGl0ZW0ucmVxdWVzdElkID0gdWlkO1xuICAgICAgICB0aGlzLmxpc3RMb2FkLnB1c2goaXRlbSk7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLmZldGNoKGl0ZW0pO1xuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbVJvdyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS50b2dnbGUgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XG4gICAgICAgIGl0ZW0ub3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMub25JdGVtT3BlbmluZy5lbWl0KHRoaXMubWFrZU5vZGUoaXRlbSkpO1xuICAgICAgfSBlbHNlIGlmICghaXRlbS50b2dnbGUgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XG4gICAgICAgIGl0ZW0ub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uSXRlbUNsb3NpbmcuZW1pdCh0aGlzLm1ha2VOb2RlKGl0ZW0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudERhdGFTb3VyY2UuZmV0Y2gobnVsbCk7XG4gICAgdGhpcy5fY29udGVudERhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKChfZGF0YSkgPT4ge1xuICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5oaWRlTG9hZGluZyhudWxsKTtcbiAgICAgICAgdGhpcy5saXN0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XG5cbiAgICAgICAgdGhpcy5saXN0LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgZWwuc2VsZWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiZcbiAgICAgICAgICAgIGVsW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAncGFyZW50cycgJiZcbiAgICAgICAgICAgIGVsW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gZmFsc2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxldGVkS2V5RmllbGRzLmZvckVhY2goKG46IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAobi5pbmNsdWRlcyhlbFt0aGlzLmtleUZpZWxkXSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAvLyAgaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlbihlbCk7XG4gICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShlbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZE5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUgJiZcbiAgICAgICAgICAgICAgZWxbdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgIHRoaXMub3BlbihlbCk7XG4gICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxbdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1Sb3cgPSB0aGlzLmxpc3RMb2FkLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gYy5yZXF1ZXN0SWQgPT09IF9kYXRhLmRhdGEucmVxdWVzdElkXG4gICAgICAgIClbMF07XG4gICAgICAgIHRoaXMubGlzdExvYWQgPSB0aGlzLmxpc3RMb2FkLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gYy5yZXF1ZXN0SWQgIT09IF9kYXRhLmRhdGEucmVxdWVzdElkXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLml0ZW1Sb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcodGhpcy5pdGVtUm93KTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBfZGF0YS5kYXRhLnJlc3VsdDtcblxuICAgICAgICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdICYmXG4gICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXVtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdLmxlbmd0aFxuICAgICAgICAgICAgICAgIF0gPSBlbDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJlxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ3BhcmVudHMnICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uc2VsZWN0ID1cbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvdy5zZWxlY3QgPT09ICh1bmRlZmluZWQgfHwgbnVsbClcbiAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaXRlbVJvdy5zZWxlY3Q7XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3cuc2VsZWN0ID09PSB0cnVlICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGUgPT0gJ211bHRpcGxlJyAmJlxuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gcmVzdWx0W2ldW3RoaXMua2V5RmllbGRdXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gocmVzdWx0W2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLnNlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlc3VsdFtpXS5wYXJlbnROb2RlID0gdGhpcy5pdGVtUm93O1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZXRlZEtleUZpZWxkcy5mb3JFYWNoKChuOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChuLmluY2x1ZGVzKHJlc3VsdFtpXVt0aGlzLmtleUZpZWxkXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbihyZXN1bHRbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZE5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUgJiZcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXVt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKHJlc3VsdFtpXSk7XG4gICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRbaV1bdGhpcy5zZWxlY3RlZEZpZWxkTmFtZV0gPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHJlc3VsdFtpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbVJvdy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLnNob3dTZWxlY3RCb3ggPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IHRydWU7XG4gIH1cblxuICAvLyBvbkl0ZW1DbGljayhlLCB2KSB7XG5cbiAgLy8gfVxuXG4gIG9uRHJhZ1N0YXJ0KGU6IEV2ZW50LCB2KSB7XG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcbiAgICAgIHRoaXMuaXRlbURyYWcgPSB2O1xuICAgICAgdGhpcy5vbkl0ZW1EcmFnLmVtaXQodik7XG4gICAgfVxuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBvbkRyYWdFbmQoZSwgdikge1xuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XG4gICAgICB0aGlzLml0ZW1Ecm9wID0gdjtcbiAgICB9XG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGRyb3AoZSkge1xuICAgIC8vICB0aGlzLm9uSXRlbURyb3AuZW1pdCh0aGlzLml0ZW1Ecm9wKTtcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xuICAgICAgdGhpcy52YWxpZERyb3AgPSB0cnVlO1xuICAgICAgdGhpcy5zYW1lQ2hpbGRlKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnZhbGlkRHJvcCAmJlxuICAgICAgICB0aGlzLml0ZW1EcmFnW3RoaXMua2V5RmllbGRdICE9PSB0aGlzLml0ZW1Ecm9wW3RoaXMua2V5RmllbGRdICYmXG4gICAgICAgIHRoaXMuaXRlbURyYWcucGFyZW50Tm9kZSAhPT0gdGhpcy5pdGVtRHJvcFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG1vdmVkRXZlbnQ6IEFYVHJlZVNpZGVNZW51SXRlbU1vdmVkRXZlbnQgPVxuICAgICAgICAgIG5ldyBBWFRyZWVTaWRlTWVudUl0ZW1Nb3ZlZEV2ZW50KCk7XG4gICAgICAgIG1vdmVkRXZlbnQuc291cmNlID0gdGhpcy5tYWtlTm9kZSh0aGlzLml0ZW1EcmFnKTtcbiAgICAgICAgbW92ZWRFdmVudC50YXJnZXQgPSB0aGlzLm1ha2VOb2RlKHRoaXMuaXRlbURyb3ApO1xuICAgICAgICB0aGlzLmxvY2tlZERyYWcgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbURyYWcpO1xuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbURyb3ApO1xuICAgICAgICBtb3ZlZEV2ZW50LnJlc29sdmUgPSAodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKHRoaXMuaXRlbURyYWcpO1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcodGhpcy5pdGVtRHJvcCk7XG4gICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdEcm9wSXRlbSh0aGlzLml0ZW1EcmFnLCB0aGlzLml0ZW1Ecm9wKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uSXRlbU1vdmVkLmVtaXQobW92ZWRFdmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNhbWVDaGlsZGUocGFyZW50LCBjaGlsZCkge1xuICAgIGlmIChwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSAmJiBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5rZXlGaWVsZF0gPT0gY2hpbGRbdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy52YWxpZERyb3AgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdW3RoaXMuY2hpbGRGaWVsZF0gJiZcbiAgICAgICAgICBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2FtZUNoaWxkZShwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0sIGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGFyZW50W3RoaXMua2V5RmllbGRdID09IGNoaWxkW3RoaXMua2V5RmllbGRdKSB7XG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdEcm9wSXRlbShpdGVtQ2hpbGQsIGl0ZW1QYXJlbnQpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnKSB7XG4gICAgICBpdGVtUGFyZW50LmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpdGVtQ2hpbGQucGFyZW50Tm9kZSkge1xuICAgICAgaXRlbUNoaWxkLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXSA9IGl0ZW1DaGlsZC5wYXJlbnROb2RlW1xuICAgICAgICB0aGlzLmNoaWxkRmllbGRcbiAgICAgIF0uZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtQ2hpbGRbdGhpcy5rZXlGaWVsZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3QgPSB0aGlzLmxpc3QuZmlsdGVyKFxuICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbUNoaWxkW3RoaXMua2V5RmllbGRdXG4gICAgICApO1xuICAgIH1cbiAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZSA9IGl0ZW1QYXJlbnQ7XG4gICAgaWYgKGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xuICAgICAgaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2l0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGhdID1cbiAgICAgICAgaXRlbUNoaWxkO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0gPSBbXTtcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVswXSA9IGl0ZW1DaGlsZDtcbiAgICAgIGlmIChpdGVtUGFyZW50W3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW1QYXJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbVBhcmVudC50b2dnbGUgPSAhaXRlbVBhcmVudC50b2dnbGU7XG4gICAgICAgIGl0ZW1QYXJlbnQubG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5oYXNDaGlsZEZpZWxkXSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChpdGVtQ2hpbGQucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtQ2hpbGQucGFyZW50Tm9kZSk7XG4gICAgfVxuICAgIHRoaXMubG9ja2VkRHJhZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0Q2hhbmdlKGZpZWxkLCB2YWx1ZSkge1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmNoYW5nZUNoaWxlZCh0aGlzLmxpc3RbaW5kZXhdLCBmaWVsZCwgdmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRBbGxDaGlsZHJlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VDaGlsZWQoaXRlbSwgZmllbGQsIHZhbHVlKSB7XG4gICAgaWYgKFxuICAgICAgZmllbGQgPT09ICd0b2dnbGUnICYmXG4gICAgICAoaXRlbS5sb2FkZWQgPT09IGZhbHNlIHx8IGl0ZW0ubG9hZGVkID09PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5sb2FkQWxsQ2hpbGRyZW4gPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW0pO1xuICAgICAgICBpdGVtW2ZpZWxkXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtW2ZpZWxkXSA9IHZhbHVlO1xuICAgICAgaWYgKFxuICAgICAgICBmaWVsZCA9PT0gJ3NlbGVjdCcgJiZcbiAgICAgICAgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJlxuICAgICAgICB2YWx1ZSA9PT0gdHJ1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmllbGQgPT09ICdzZWxlY3QnKSB7XG4gICAgICBpdGVtLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmXG4gICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gJiZcbiAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZUNoaWxlZChlbGVtZW50LCBmaWVsZCwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93TG9hZGluZyhpdGVtKTogdm9pZCB7XG4gICAgaXRlbS5sb2FkaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUxvYWRpbmcoaXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtICE9IG51bGwpIHtcbiAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuQWxsKGxvYWRBbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIC8vIGlmIChsb2FkQWxsKSB7XG4gICAgLy8gdGhpcy5sb2FkQWxsQ2hpbGRyZW4gPSB0cnVlO1xuICAgIC8vIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgdHJ1ZSk7XG4gICAgLy99IGVsc2Uge1xuICAgIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgdHJ1ZSk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbSkge1xuICAgIGlmIChpdGVtWydzZWxlY3QnXSAhPSB0cnVlKSB7XG4gICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW4oaXRlbSkge1xuICAgIGlmIChpdGVtWyd0b2dnbGUnXSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW0sIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzY3JvbEludG9WaWV3KGl0ZW0pIHtcbiAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgbGlbZGF0YS1pZD0nJHtpdGVtW3RoaXMua2V5RmllbGRdfSddYFxuICAgICk7XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlQWxsKCkge1xuICAgIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5saXN0Q2hhbmdlKCdzZWxlY3QnLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdW5TZWxlY3RBbGwoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMubGlzdENoYW5nZSgnc2VsZWN0JywgZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE5vZGVzKCk6IEFYVHJlZVNpZGVNZW51Tm9kZVtdIHtcbiAgICBjb25zdCBzZWxlY3RJdGVtc05vZGUgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgc2VsZWN0SXRlbXNOb2RlLnB1c2godGhpcy5tYWtlTm9kZShlKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdEl0ZW1zTm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFBhcmVudHMoKTogQVhUcmVlU2lkZU1lbnVOb2RlW10ge1xuICAgIGNvbnN0IHNlbGVjdEl0ZW1zUGFyZW50ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgc2VsZWN0SXRlbXNQYXJlbnQucHVzaCh0aGlzLm1ha2VOb2RlKGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNQYXJlbnQ7XG4gIH1cblxuICBnZXRQYXJlbnRzSWQoaXRlbSkge1xuICAgIGxldCBrZXlGaWVsZHMgPSBbXTtcbiAgICBrZXlGaWVsZHMucHVzaChpdGVtW3RoaXMua2V5RmllbGRdKTtcbiAgICBpZiAoaXRlbS5wYXJlbnROb2RlKSB7XG4gICAgICBrZXlGaWVsZHMucHVzaCguLi50aGlzLmdldFBhcmVudHNJZChpdGVtLnBhcmVudE5vZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleUZpZWxkcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZEtleUZpZWxkcygpIHtcbiAgICBsZXQga2V5RmllbGRzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgdmFyIElkcyA9IHRoaXMuZ2V0UGFyZW50c0lkKGVsbSk7XG4gICAgICBpZiAoSWRzKSB7XG4gICAgICAgIGtleUZpZWxkcy5wdXNoKElkcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGtleUZpZWxkcztcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwiYXgtdHJlZS1zaWRlLW1lbnUge3tzaXplfX0ge3tjc3NDbGFzc319XCI+XG4gIDxuZy10ZW1wbGF0ZSAjcmVjdXJzaXZlTGlzdCBsZXQtbGlzdD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RcIj5cbiAgICAgIDxsaSAoY2xpY2spPVwiaGFuZGxlT25Ob2RlQ2xpY2soJGV2ZW50LGl0ZW0sdHJ1ZSlcIlxuICAgICAgICBjbGFzcz1cInt7aXRlbVtoYXNDaGlsZEZpZWxkXSA/ICcnOidub2RlJ319IHt7ISFpdGVtLnRvZ2dsZSAgPyAnYWN0aXZlJzonJ319XCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpdGVtLnNlbGVjdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdHJlZS1zaWRlLW1lbnUtaXRlbVwiIChjbGljayk9XCJoYW5kbGVPbk5vZGVDbGljaygkZXZlbnQsaXRlbSx0cnVlKVwiPlxuXG4gICAgICAgIFxuXG4gICAgICAgICAgPGRpdiAoY2xpY2spPVwiaGFuZGxlT25Ob2RlQ2xpY2soJGV2ZW50LGl0ZW0sdHJ1ZSlcIiAoZGJsY2xpY2spPVwiaXRlbWRiQ2xpY2soJGV2ZW50LGl0ZW0pXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZVRlbXBsYXRlOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZVRlbXBsYXRlOyBjb250ZXh0OnsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICAgICAgICAgIHt7aXRlbVt0ZXh0RmllbGRdfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhcnQtc2lkZVwiICpuZ0lmPVwiaWNvblN0YXJ0XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbVtoYXNDaGlsZEZpZWxkXVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7b3Blbkljb25OYW1lfX1cIiAqbmdJZj1cIiAhIWl0ZW0udG9nZ2xlICYmICFpdGVtLmxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tjbG9zZUljb25OYW1lfX1cIiAqbmdJZj1cIiFpdGVtLnRvZ2dsZSAmJiAhaXRlbS5sb2FkaW5nXCI+PC9pPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1zcGlubmVyIGZhLXNwaW5cIiAqbmdJZj1cIml0ZW0ubG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXJ0LXNpZGVcIiAqbmdJZj1cIiFpY29uU3RhcnRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtW2hhc0NoaWxkRmllbGRdXCIgKGNsaWNrKT1cImhhbmRsZU9uTm9kZUNsaWNrKCRldmVudCxpdGVtLHRydWUpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tvcGVuSWNvbk5hbWV9fVwiICpuZ0lmPVwiICEhaXRlbS50b2dnbGUgJiYgIWl0ZW0ubG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2Nsb3NlSWNvbk5hbWV9fVwiICpuZ0lmPVwiIWl0ZW0udG9nZ2xlICYmICFpdGVtLmxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXNwaW5uZXIgZmEtc3BpblwiICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dWwgY2xhc3M9XCJheC10cmVlLXNpZGUtbWVudS1jaGlsZFwiICpuZ0lmPVwiaXRlbS50b2dnbGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdDsgY29udGV4dDp7ICRpbXBsaWNpdDogaXRlbS5jaGlsZGVyZW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlY3Vyc2l2ZUxpc3Q7IGNvbnRleHQ6eyAkaW1wbGljaXQ6IGxpc3QgfVwiPjwvbmctY29udGFpbmVyPlxuPC91bD4iXX0=
@@ -6,17 +6,17 @@ import { AXCheckBoxModule } from "../checkbox/checkbox.module";
6
6
  import { AXContextMenuModule } from "../context-menu/context-menu.module";
7
7
  import * as i0 from "@angular/core";
8
8
  export class AXTreeSideMenuModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuModule, declarations: [AXTreeSideMenuComponent], imports: [AXDataSourceModule,
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AXTreeSideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: AXTreeSideMenuModule, declarations: [AXTreeSideMenuComponent], imports: [AXDataSourceModule,
11
11
  CommonModule,
12
12
  AXCheckBoxModule,
13
13
  AXContextMenuModule], exports: [AXTreeSideMenuComponent] });
14
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuModule, imports: [AXDataSourceModule,
14
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AXTreeSideMenuModule, imports: [AXDataSourceModule,
15
15
  CommonModule,
16
16
  AXCheckBoxModule,
17
17
  AXContextMenuModule] });
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AXTreeSideMenuModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  declarations: [AXTreeSideMenuComponent],
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30
30
  providers: [],
31
31
  }]
32
32
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zaWRlLW1lbnUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQWExRSxNQUFNLE9BQU8sb0JBQW9CO3dHQUFwQixvQkFBb0I7eUdBQXBCLG9CQUFvQixpQkFWaEIsdUJBQXVCLGFBRXBDLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLG1CQUFtQixhQUVYLHVCQUF1Qjt5R0FHdEIsb0JBQW9CLFlBUjdCLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLG1CQUFtQjs7NEZBS1Ysb0JBQW9CO2tCQVhoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDbEMsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFRyZWVTaWRlTWVudUNvbXBvbmVudCB9IGZyb20gXCIuL3RyZWUtc2lkZS1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQVhEYXRhU291cmNlTW9kdWxlIH0gZnJvbSBcIi4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UubW9kdWxlXCI7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSBcIi4uL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZVwiO1xuaW1wb3J0IHsgQVhDb250ZXh0TWVudU1vZHVsZSB9IGZyb20gXCIuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51Lm1vZHVsZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBWFRyZWVTaWRlTWVudUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWERhdGFTb3VyY2VNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgQVhDb250ZXh0TWVudU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW0FYVHJlZVNpZGVNZW51Q29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVNb2R1bGUge31cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zaWRlLW1lbnUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQWExRSxNQUFNLE9BQU8sb0JBQW9CO3VHQUFwQixvQkFBb0I7d0dBQXBCLG9CQUFvQixpQkFWaEIsdUJBQXVCLGFBRXBDLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLG1CQUFtQixhQUVYLHVCQUF1Qjt3R0FHdEIsb0JBQW9CLFlBUjdCLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLG1CQUFtQjs7MkZBS1Ysb0JBQW9CO2tCQVhoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDbEMsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFRyZWVTaWRlTWVudUNvbXBvbmVudCB9IGZyb20gXCIuL3RyZWUtc2lkZS1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQVhEYXRhU291cmNlTW9kdWxlIH0gZnJvbSBcIi4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UubW9kdWxlXCI7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSBcIi4uL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZVwiO1xuaW1wb3J0IHsgQVhDb250ZXh0TWVudU1vZHVsZSB9IGZyb20gXCIuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51Lm1vZHVsZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBWFRyZWVTaWRlTWVudUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWERhdGFTb3VyY2VNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgQVhDb250ZXh0TWVudU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW0FYVHJlZVNpZGVNZW51Q29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVNb2R1bGUge31cbiJdfQ==