bit-ng-library 17.0.11 → 17.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,7 +26,11 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
26
26
 
27
27
  ## changelog
28
28
 
29
- ## [17.0.10] - 2024-06-05
29
+ ## [17.0.12] - 2024-06-05
30
+
31
+ Bugfix etiqueta botón "otras acciones" de la toolbar.
32
+
33
+ ## [17.0.11] - 2024-06-05
30
34
 
31
35
  Bugfix botón "Ayuda" de la toolbar, se mostraba siempre.
32
36
  Añadidos los siguientes módulos de PrimeNG:
@@ -108,11 +108,11 @@ export class BitToolbarComponent extends BaseComponent {
108
108
  return actions;
109
109
  }
110
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BitToolbarComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BitToolbarComponent, selector: "bit-toolbar", inputs: { toolbar: "toolbar", ayuda: "ayuda", femenino: "femenino", buttonSize: "buttonSize", otherActionsDropdown: "otherActionsDropdown" }, outputs: { onToolbarButtonPressed: "onToolbarButtonPressed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"Accions\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3.TieredMenu, selector: "p-tieredMenu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i4.BitBotonAyudaComponent, selector: "bit-boton-ayuda", inputs: ["ayuda", "boton", "extraClass", "buttonSize"] }, { kind: "pipe", type: i5.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i6.OtherToolbarActionPipe, name: "otherToolbarAction" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BitToolbarComponent, selector: "bit-toolbar", inputs: { toolbar: "toolbar", ayuda: "ayuda", femenino: "femenino", buttonSize: "buttonSize", otherActionsDropdown: "otherActionsDropdown" }, outputs: { onToolbarButtonPressed: "onToolbarButtonPressed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3.TieredMenu, selector: "p-tieredMenu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i4.BitBotonAyudaComponent, selector: "bit-boton-ayuda", inputs: ["ayuda", "boton", "extraClass", "buttonSize"] }, { kind: "pipe", type: i5.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i6.OtherToolbarActionPipe, name: "otherToolbarAction" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
112
112
  }
113
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BitToolbarComponent, decorators: [{
114
114
  type: Component,
115
- args: [{ selector: "bit-toolbar", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"Accions\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n" }]
115
+ args: [{ selector: "bit-toolbar", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n" }]
116
116
  }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { toolbar: [{
117
117
  type: Input
118
118
  }], ayuda: [{
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
126
126
  }], onToolbarButtonPressed: [{
127
127
  type: Output
128
128
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYml0LW5nLWxpYnJhcnkvc3JjL2xpYi9zaGFyZWRsaWJyYXJ5L2NvbXBvbmVudHMvdG9vbGJhci9iaXQtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy90b29sYmFyL2JpdC10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBRXpEOztJQUVJO0FBT0osTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7YUFDdEMsa0JBQWEsR0FBVyxRQUFRLEFBQW5CLENBQW9CO2FBQ2pDLGlCQUFZLEdBQVcsT0FBTyxBQUFsQixDQUFtQjthQUMvQixrQkFBYSxHQUFXLFFBQVEsQUFBbkIsQ0FBb0I7YUFDakMsZUFBVSxHQUFXLEtBQUssQUFBaEIsQ0FBaUI7YUFDM0IsZ0JBQVcsR0FBVyxNQUFNLEFBQWpCLENBQWtCO2FBQzdCLGtCQUFhLEdBQVcsUUFBUSxBQUFuQixDQUFvQjthQUNqQyxlQUFVLEdBQVcsS0FBSyxBQUFoQixDQUFpQjthQUMzQixnQkFBVyxHQUFXLE1BQU0sQUFBakIsQ0FBa0I7SUFlM0MsWUFDVSxnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFGQSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZnJDLFlBQU8sR0FB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QUFDLE9BQU87b0JBQzVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztpQkFDbkYsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBNUhVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDRTQ2ZoQyxnd0dBNENBOzsyRkQ3QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWEsbUJBQ04sdUJBQXVCLENBQUMsTUFBTTtxRkFpQnRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UvY29tcG9uZW50cyc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW5lbnRlIHF1ZSBtdWVzdHJhIHVuYSBiYXJyYSBkZSBib3RvbmVzLlxyXG4gKiovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJiaXQtdG9vbGJhclwiLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHRlbXBsYXRlVXJsOiBcImJpdC10b29sYmFyLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpdFRvb2xiYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICBwdWJsaWMgc3RhdGljIEZJTFRFUl9CVVRUT046IHN0cmluZyA9IFwiZmlsdGVyXCI7XHJcbiAgcHVibGljIHN0YXRpYyBQUklOVF9CVVRUT046IHN0cmluZyA9IFwicHJpbnRcIjtcclxuICBwdWJsaWMgc3RhdGljIEVYUE9SVF9CVVRUT046IHN0cmluZyA9IFwiZXhwb3J0XCI7XHJcbiAgcHVibGljIHN0YXRpYyBORVdfQlVUVE9OOiBzdHJpbmcgPSBcIm5ld1wiO1xyXG4gIHB1YmxpYyBzdGF0aWMgU0FWRV9CVVRUT046IHN0cmluZyA9IFwic2F2ZVwiO1xyXG4gIHB1YmxpYyBzdGF0aWMgREVMRVRFX0JVVFRPTjogc3RyaW5nID0gXCJkZWxldGVcIjtcclxuICBwdWJsaWMgc3RhdGljIEFERF9CVVRUT046IHN0cmluZyA9IFwiYWRkXCI7XHJcbiAgcHVibGljIHN0YXRpYyBIRUxQX0JVVFRPTjogc3RyaW5nID0gXCJoZWxwXCI7XHJcbiAgcHVibGljIG1vc3RyYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaXRlbXNPdGhlckFjdGlvbnM6IE1lbnVJdGVtW107XHJcbiAgdHJhbnNsYXRpb25zOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcclxuXHJcbiAgQElucHV0KCkgdG9vbGJhcjoge307XHJcbiAgQElucHV0KCkgYXl1ZGE6IHN0cmluZzsgLy8gY2xhdmUgZGUgbGEgYXl1ZGEgY29udGV4dHVhbCBxdWUgbW9zdHJhciBwYXJhIHN1IGJvdMOzblxyXG4gIEBJbnB1dCgpIGZlbWVuaW5vOiBib29sZWFuID0gZmFsc2U7IC8vIGfDqW5lcm8gZmVtZW5pbm8gKHBhcmEgbG9zIG5vbWJyZXMgZGUgYm90b25lcykgbyBub1xyXG4gIEBJbnB1dCgpIGJ1dHRvblNpemU6IFwic21hbGxcIiB8IFwibGFyZ2VcIjsgLy8gdGFtYcOxbyBkZSBsb3MgYm90b25lcywgcG9yIGRlZmVjdG8gbm9ybWFsXHJcbiAgQElucHV0KCkgb3RoZXJBY3Rpb25zRHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGV0ZXJtaW5hIHNpIGxhcyBcIm90aGVyIGFjdGlvbnNcIiBkZWJlbiBtb3N0cmFyc2UgZW4gbMOtbmVhIG8gY29tbyB1biBkZXNwbGVnYWJsZVxyXG4gIEBPdXRwdXQoKSBvblRvb2xiYXJCdXR0b25QcmVzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIG1vc3RyYXJPdGhlckFjdGlvbnNFbkRlc3BsZWdhYmxlOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKFwidG9vbGJhclwiLCB7fSwgXCJiaXRuZ2xpYnJhcnlcIiwgdHJ1ZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9ucztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBlbmFibGUoYnV0dG9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRvb2xiYXIgJiYgdGhpcy50b29sYmFyW2J1dHRvbl0gJiYgdGhpcy50b29sYmFyW2J1dHRvbl0uZW5hYmxlO1xyXG4gIH1cclxuXHJcbiAgdmlzaWJsZShidXR0b246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbGJhciAmJiB0aGlzLnRvb2xiYXJbYnV0dG9uXSAmJiB0aGlzLnRvb2xiYXJbYnV0dG9uXS52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgbGFiZWwoYnV0dG9uOiBzdHJpbmcsIGRlZmF1bHRMYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhcltidXR0b25dICYmIHRoaXMudG9vbGJhcltidXR0b25dLmxhYmVsKSB8fCBkZWZhdWx0TGFiZWw7XHJcbiAgfVxyXG5cclxuICBlc3RpbG8oYnV0dG9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhcltidXR0b25dICYmIHRoaXMudG9vbGJhcltidXR0b25dLmVzdGlsbykgfHwgZGVmYXVsdFZhbHVlIHx8IFwiZmEgZmEtYmFsYW5jZS1zcGlubmVyXCI7XHJcbiAgfVxyXG5cclxuICBzaG93RmlsdGVyKCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5GSUxURVJfQlVUVE9OKTtcclxuICB9XHJcblxyXG4gIHByaW50KCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5QUklOVF9CVVRUT04pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YSgpIHtcclxuICAgIHRoaXMub25Ub29sYmFyQnV0dG9uUHJlc3NlZC5lbWl0KEJpdFRvb2xiYXJDb21wb25lbnQuRVhQT1JUX0JVVFRPTik7XHJcbiAgfVxyXG5cclxuICBuZXdFbGVtZW50KCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5ORVdfQlVUVE9OKTtcclxuICB9XHJcblxyXG4gIGFkZCgpIHtcclxuICAgIHRoaXMub25Ub29sYmFyQnV0dG9uUHJlc3NlZC5lbWl0KEJpdFRvb2xiYXJDb21wb25lbnQuQUREX0JVVFRPTik7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5TQVZFX0JVVFRPTik7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICB0aGlzLm9uVG9vbGJhckJ1dHRvblByZXNzZWQuZW1pdChCaXRUb29sYmFyQ29tcG9uZW50LkRFTEVURV9CVVRUT04pO1xyXG4gIH1cclxuXHJcbiAgb3RoZXJBY3Rpb24oYnV0dG9uOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub29sYmFyQnV0dG9uUHJlc3NlZC5lbWl0KGJ1dHRvbi5hY3Rpb24pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKiBlc2N1Y2hhbW9zIGN1YW5kbyBsYSB0b29sYmFyIGNhbWJpYSBwYXJhIGFqdXN0YXIgbGFzIG90aGVyIEFjdGlvbnMgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBmb3IgKGxldCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VkUHJvcCA9IGNoYW5nZXNbcHJvcE5hbWVdO1xyXG4gICAgICBpZiAocHJvcE5hbWUgPT09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyID0gY2hhbmdlZFByb3AuY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgICAvLyBjYWxjdWxhciBzaSBsYXMgb3RoZXIgYWN0aW9ucyBkZWJlbiBtb3N0cmFyc2UgZW4gZGVzcGxlZ2FibGVcclxuICAgICAgICAvLyAoc2UgaGEgcGVkaWRvIGFzaSB5IGhheSBtw6FzIGRlIHVuYSlcclxuICAgICAgICBsZXQgb3RoZXJBY3Rpb25zVmlzaWJsZXMgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnRvb2xiYXIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRvb2xiYXJba2V5XS5vdGhlckFjdGlvbiAmJiB0aGlzLnRvb2xiYXJba2V5XS52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgIG90aGVyQWN0aW9uc1Zpc2libGVzKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW9zdHJhck90aGVyQWN0aW9uc0VuRGVzcGxlZ2FibGUgPSB0aGlzLm90aGVyQWN0aW9uc0Ryb3Bkb3duICYmIG90aGVyQWN0aW9uc1Zpc2libGVzID4gMTtcclxuICAgICAgICBpZiAodGhpcy5tb3N0cmFyT3RoZXJBY3Rpb25zRW5EZXNwbGVnYWJsZSkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtc090aGVyQWN0aW9ucyA9IHRoaXMuZ2V0T3RoZXJBY3Rpb25zRHJvcGRvd25Nb2RlbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVjb3JyZW1vcyBlbCB0b29sYmFyIHkgZGV2b2x2ZW1vcyB1biBhcnJheSBjb24gbGFzIGFjY2lvbmVzIHF1ZSB0ZW5nYW4gbGEgcHJvcGllZGFkIG90aGVyQWN0aW9uIGEgdHJ1ZSxcclxuICAvLyB0cmFuc2Zvcm1hZGFzIGEgTWVudUl0ZW0sIHBhcmEgcG9kZXIgbW9zdHJhcmxhcyBlbiBlbCBkZXNwbGVnYWJsZSBkZSBTcGxpdEJ1dHRvblxyXG4gIGdldE90aGVyQWN0aW9uc0Ryb3Bkb3duTW9kZWwoKTogTWVudUl0ZW1bXSB7XHJcbiAgICBsZXQgYWN0aW9uczogTWVudUl0ZW1bXSA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMudG9vbGJhcikge1xyXG4gICAgICBpZiAodGhpcy50b29sYmFyW2tleV0ub3RoZXJBY3Rpb24pIHtcclxuICAgICAgICBsZXQgdG9vbGJhckl0ZW0gPSB0aGlzLnRvb2xiYXJba2V5XTsgLy8gY2FwdHVyZSB0aGUgY3VycmVudCB0b29sYmFyIGl0ZW1cclxuICAgICAgICBhY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb25zW3Rvb2xiYXJJdGVtLmxhYmVsXSxcclxuICAgICAgICAgIGljb246IHRvb2xiYXJJdGVtLmVzdGlsbyxcclxuICAgICAgICAgIHZpc2libGU6IHRvb2xiYXJJdGVtLnZpc2libGUsXHJcbiAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7IHRoaXMub3RoZXJBY3Rpb24odG9vbGJhckl0ZW0pOyB9IC8vIHVzZSB0aGUgY2FwdHVyZWQgdG9vbGJhciBpdGVtXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWN0aW9ucztcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gYWNjaW9uZXMgbm8gZXN0YW5kYXIgZGVmaW5pZGFzIGRpbsOhbWljYW1lbnRlIG8gbXV5IHBhcnRpY3VsYXJlcy0tPlxyXG48IS0tIHNpIG90aGVyQWN0aW9uc0Ryb3Bkb3duIHZpZW5lIGEgdHJ1ZSB5IGhheSBtw6FzIGRlIHVuYSBhY2Npw7NuLCBzZSBtdWVzdHJhbiBjb21vIHVuIGRlc3BsZWdhYmxlLCBzaSBubywgdG9kYXMgbGFzIGFjY2lvbmVzIGVuIGzDrW5lYSAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItdG9vbGJhclwiPlxyXG5cclxuICBAaWYgKG1vc3RyYXJPdGhlckFjdGlvbnNFbkRlc3BsZWdhYmxlKSB7XHJcbiAgICBAaWYgKG90aGVyQWN0aW9uc0Ryb3Bkb3duKSB7XHJcbiAgICAgIDxwLWJ1dHRvbiAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiIFtzaXplXT1cImJ1dHRvblNpemVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXByaW1hcnlcIiBpY29uPVwicGkgcGktY2FyZXQtcmlnaHRcIiBpY29uUG9zPVwicmlnaHRcIiBsYWJlbD1cIkFjY2lvbnNcIj48L3AtYnV0dG9uPlxyXG4gICAgICA8cC10aWVyZWRNZW51ICNtZW51IFttb2RlbF09XCJpdGVtc090aGVyQWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCI+PC9wLXRpZXJlZE1lbnU+XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICA8IS0tIHNpIG90aGVyQWN0aW9uc0Ryb3Bkb3duIHZpZW5lIGEgZmFsc2UgbyBzb2xvIGhheSB1bmEgYWNjacOzbiwgc2UgbXVlc3RyYW4gdW5hIHRyYXMgb3RyYSBlbiBsw61uZWEgLS0+XHJcbiAgQGlmICghbW9zdHJhck90aGVyQWN0aW9uc0VuRGVzcGxlZ2FibGUpIHtcclxuICAgIEBmb3IgKGJ1dHRvbiBvZiAodG9vbGJhciB8IG90aGVyVG9vbGJhckFjdGlvbik7IHRyYWNrIGJ1dHRvbikge1xyXG4gICAgICBAaWYgKGJ1dHRvbi52aXNpYmxlKSB7XHJcbiAgICAgICAgPHAtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWJ1dHRvbi5lbmFibGVcIiAoY2xpY2spPVwib3RoZXJBY3Rpb24oYnV0dG9uKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIj57e1wiYml0bmdsaWJyYXJ5LnRvb2xiYXIuXCIrYnV0dG9uLmxhYmVsIHwgdHJhbnNsb2NvfX0mbmJzcDsmbmJzcDs8c3BhbiBbY2xhc3NdPVwiYnV0dG9uLmVzdGlsbz9idXR0b24uZXN0aWxvOidwaSBwaS1hbmdsZS1yaWdodCdcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICA8IS0tIGFjY2lvbmVzIGVzdGFuZGFyIC0tPlxyXG4gIEBpZiAodmlzaWJsZSgnbmV3JykpIHtcclxuICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGUoJ25ldycpXCIgKGNsaWNrKT1cIm5ld0VsZW1lbnQoKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCI+e3soZmVtZW5pbm8gPyBcImJpdG5nbGlicmFyeS50b29sYmFyLm5ldy1mZW1hbGVcIjogXCJiaXRuZ2xpYnJhcnkudG9vbGJhci5uZXdcIikgfCB0cmFuc2xvY299fSZuYnNwOyZuYnNwOzxzcGFuIFtjbGFzc109XCJlc3RpbG8oJ25ldycsICdwaSBwaS1wbHVzJylcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICB9XHJcbiAgQGlmICh2aXNpYmxlKCdhZGQnKSkge1xyXG4gICAgPHAtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZSgnYWRkJylcIiAoY2xpY2spPVwiYWRkKClcIiBbc2l6ZV09XCJidXR0b25TaXplXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLWRhbmdlclwiPnt7XCJiaXRuZ2xpYnJhcnkudG9vbGJhci5hZGRcIiB8IHRyYW5zbG9jb319Jm5ic3A7Jm5ic3A7PHNwYW4gW2NsYXNzXT1cImVzdGlsbygnYWRkJywgJ3BpIHBpLXBsdXMnKVwiPjwvc3Bhbj48L3AtYnV0dG9uPlxyXG4gIH1cclxuXHJcbiAgQGlmICh2aXNpYmxlKCdleHBvcnQnKSkge1xyXG4gICAgPHAtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZSgnZXhwb3J0JylcIiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCIgW3NpemVdPVwiYnV0dG9uU2l6ZVwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1zZWNvbmRhcnlcIj57e1wiYml0bmdsaWJyYXJ5LnRvb2xiYXIuZXhwb3J0XCIgfCB0cmFuc2xvY299fSZuYnNwOyZuYnNwOzxzcGFuIFtjbGFzc109XCJlc3RpbG8oJ2V4cG9ydCcsICdwaSBwaS1maWxlJylcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICB9XHJcbiAgQGlmICh2aXNpYmxlKCdzYXZlJykpIHtcclxuICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGUoJ3NhdmUnKVwiIChjbGljayk9XCJzYXZlKClcIiBbc2l6ZV09XCJidXR0b25TaXplXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3NcIj57e1wiYml0bmdsaWJyYXJ5LnRvb2xiYXIuc2F2ZVwiIHwgdHJhbnNsb2NvfX0mbmJzcDsmbmJzcDs8c3BhbiBbY2xhc3NdPVwiZXN0aWxvKCdzYXZlJywgJ3BpIHBpLXNhdmUnKVwiPjwvc3Bhbj48L3AtYnV0dG9uPlxyXG4gIH1cclxuICBAaWYgKHZpc2libGUoJ2RlbGV0ZScpKSB7XHJcbiAgICA8cC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlKCdkZWxldGUnKVwiIChjbGljayk9XCJkZWxldGUoKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tZGFuZ2VyXCI+e3tcImJpdG5nbGlicmFyeS50b29sYmFyLmRlbGV0ZVwiIHwgdHJhbnNsb2NvfX0mbmJzcDsmbmJzcDs8c3BhbiBbY2xhc3NdPVwiZXN0aWxvKCdkZWxldGUnLCAncGkgcGktdHJhc2gnKVwiPjwvc3Bhbj48L3AtYnV0dG9uPlxyXG4gIH1cclxuICBAaWYgKHZpc2libGUoJ3ByaW50JykpIHtcclxuICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGUoJ3ByaW50JylcIiAoY2xpY2spPVwicHJpbnQoKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc2Vjb25kYXJ5XCI+e3tcImJpdG5nbGlicmFyeS50b29sYmFyLnByaW50XCIgfCB0cmFuc2xvY299fSZuYnNwOyZuYnNwOzxzcGFuIFtjbGFzc109XCJlc3RpbG8oJ3ByaW50JywgJ3BpIHBpLXByaW50JylcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICB9XHJcbiAgQGlmIChheXVkYSkge1xyXG4gICAgPGJpdC1ib3Rvbi1heXVkYSBib3Rvbj1cInRydWVcIiBbYXl1ZGFdPVwiYXl1ZGFcIiBbYnV0dG9uU2l6ZV09XCJidXR0b25TaXplXCI+PC9iaXQtYm90b24tYXl1ZGE+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYml0LW5nLWxpYnJhcnkvc3JjL2xpYi9zaGFyZWRsaWJyYXJ5L2NvbXBvbmVudHMvdG9vbGJhci9iaXQtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy90b29sYmFyL2JpdC10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBRXpEOztJQUVJO0FBT0osTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7YUFDdEMsa0JBQWEsR0FBVyxRQUFRLEFBQW5CLENBQW9CO2FBQ2pDLGlCQUFZLEdBQVcsT0FBTyxBQUFsQixDQUFtQjthQUMvQixrQkFBYSxHQUFXLFFBQVEsQUFBbkIsQ0FBb0I7YUFDakMsZUFBVSxHQUFXLEtBQUssQUFBaEIsQ0FBaUI7YUFDM0IsZ0JBQVcsR0FBVyxNQUFNLEFBQWpCLENBQWtCO2FBQzdCLGtCQUFhLEdBQVcsUUFBUSxBQUFuQixDQUFvQjthQUNqQyxlQUFVLEdBQVcsS0FBSyxBQUFoQixDQUFpQjthQUMzQixnQkFBVyxHQUFXLE1BQU0sQUFBakIsQ0FBa0I7SUFlM0MsWUFDVSxnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFGQSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZnJDLFlBQU8sR0FB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QUFDLE9BQU87b0JBQzVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztpQkFDbkYsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBNUhVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDRTQ2ZoQyw2eUdBNENBOzsyRkQ3QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWEsbUJBQ04sdUJBQXVCLENBQUMsTUFBTTtxRkFpQnRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UvY29tcG9uZW50cyc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW5lbnRlIHF1ZSBtdWVzdHJhIHVuYSBiYXJyYSBkZSBib3RvbmVzLlxyXG4gKiovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJiaXQtdG9vbGJhclwiLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHRlbXBsYXRlVXJsOiBcImJpdC10b29sYmFyLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpdFRvb2xiYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICBwdWJsaWMgc3RhdGljIEZJTFRFUl9CVVRUT046IHN0cmluZyA9IFwiZmlsdGVyXCI7XHJcbiAgcHVibGljIHN0YXRpYyBQUklOVF9CVVRUT046IHN0cmluZyA9IFwicHJpbnRcIjtcclxuICBwdWJsaWMgc3RhdGljIEVYUE9SVF9CVVRUT046IHN0cmluZyA9IFwiZXhwb3J0XCI7XHJcbiAgcHVibGljIHN0YXRpYyBORVdfQlVUVE9OOiBzdHJpbmcgPSBcIm5ld1wiO1xyXG4gIHB1YmxpYyBzdGF0aWMgU0FWRV9CVVRUT046IHN0cmluZyA9IFwic2F2ZVwiO1xyXG4gIHB1YmxpYyBzdGF0aWMgREVMRVRFX0JVVFRPTjogc3RyaW5nID0gXCJkZWxldGVcIjtcclxuICBwdWJsaWMgc3RhdGljIEFERF9CVVRUT046IHN0cmluZyA9IFwiYWRkXCI7XHJcbiAgcHVibGljIHN0YXRpYyBIRUxQX0JVVFRPTjogc3RyaW5nID0gXCJoZWxwXCI7XHJcbiAgcHVibGljIG1vc3RyYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaXRlbXNPdGhlckFjdGlvbnM6IE1lbnVJdGVtW107XHJcbiAgdHJhbnNsYXRpb25zOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcclxuXHJcbiAgQElucHV0KCkgdG9vbGJhcjoge307XHJcbiAgQElucHV0KCkgYXl1ZGE6IHN0cmluZzsgLy8gY2xhdmUgZGUgbGEgYXl1ZGEgY29udGV4dHVhbCBxdWUgbW9zdHJhciBwYXJhIHN1IGJvdMOzblxyXG4gIEBJbnB1dCgpIGZlbWVuaW5vOiBib29sZWFuID0gZmFsc2U7IC8vIGfDqW5lcm8gZmVtZW5pbm8gKHBhcmEgbG9zIG5vbWJyZXMgZGUgYm90b25lcykgbyBub1xyXG4gIEBJbnB1dCgpIGJ1dHRvblNpemU6IFwic21hbGxcIiB8IFwibGFyZ2VcIjsgLy8gdGFtYcOxbyBkZSBsb3MgYm90b25lcywgcG9yIGRlZmVjdG8gbm9ybWFsXHJcbiAgQElucHV0KCkgb3RoZXJBY3Rpb25zRHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGV0ZXJtaW5hIHNpIGxhcyBcIm90aGVyIGFjdGlvbnNcIiBkZWJlbiBtb3N0cmFyc2UgZW4gbMOtbmVhIG8gY29tbyB1biBkZXNwbGVnYWJsZVxyXG4gIEBPdXRwdXQoKSBvblRvb2xiYXJCdXR0b25QcmVzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIG1vc3RyYXJPdGhlckFjdGlvbnNFbkRlc3BsZWdhYmxlOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2VsZWN0VHJhbnNsYXRlKFwidG9vbGJhclwiLCB7fSwgXCJiaXRuZ2xpYnJhcnlcIiwgdHJ1ZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9ucztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBlbmFibGUoYnV0dG9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRvb2xiYXIgJiYgdGhpcy50b29sYmFyW2J1dHRvbl0gJiYgdGhpcy50b29sYmFyW2J1dHRvbl0uZW5hYmxlO1xyXG4gIH1cclxuXHJcbiAgdmlzaWJsZShidXR0b246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbGJhciAmJiB0aGlzLnRvb2xiYXJbYnV0dG9uXSAmJiB0aGlzLnRvb2xiYXJbYnV0dG9uXS52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgbGFiZWwoYnV0dG9uOiBzdHJpbmcsIGRlZmF1bHRMYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhcltidXR0b25dICYmIHRoaXMudG9vbGJhcltidXR0b25dLmxhYmVsKSB8fCBkZWZhdWx0TGFiZWw7XHJcbiAgfVxyXG5cclxuICBlc3RpbG8oYnV0dG9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhcltidXR0b25dICYmIHRoaXMudG9vbGJhcltidXR0b25dLmVzdGlsbykgfHwgZGVmYXVsdFZhbHVlIHx8IFwiZmEgZmEtYmFsYW5jZS1zcGlubmVyXCI7XHJcbiAgfVxyXG5cclxuICBzaG93RmlsdGVyKCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5GSUxURVJfQlVUVE9OKTtcclxuICB9XHJcblxyXG4gIHByaW50KCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5QUklOVF9CVVRUT04pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YSgpIHtcclxuICAgIHRoaXMub25Ub29sYmFyQnV0dG9uUHJlc3NlZC5lbWl0KEJpdFRvb2xiYXJDb21wb25lbnQuRVhQT1JUX0JVVFRPTik7XHJcbiAgfVxyXG5cclxuICBuZXdFbGVtZW50KCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5ORVdfQlVUVE9OKTtcclxuICB9XHJcblxyXG4gIGFkZCgpIHtcclxuICAgIHRoaXMub25Ub29sYmFyQnV0dG9uUHJlc3NlZC5lbWl0KEJpdFRvb2xiYXJDb21wb25lbnQuQUREX0JVVFRPTik7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5vblRvb2xiYXJCdXR0b25QcmVzc2VkLmVtaXQoQml0VG9vbGJhckNvbXBvbmVudC5TQVZFX0JVVFRPTik7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICB0aGlzLm9uVG9vbGJhckJ1dHRvblByZXNzZWQuZW1pdChCaXRUb29sYmFyQ29tcG9uZW50LkRFTEVURV9CVVRUT04pO1xyXG4gIH1cclxuXHJcbiAgb3RoZXJBY3Rpb24oYnV0dG9uOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub29sYmFyQnV0dG9uUHJlc3NlZC5lbWl0KGJ1dHRvbi5hY3Rpb24pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKiBlc2N1Y2hhbW9zIGN1YW5kbyBsYSB0b29sYmFyIGNhbWJpYSBwYXJhIGFqdXN0YXIgbGFzIG90aGVyIEFjdGlvbnMgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBmb3IgKGxldCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VkUHJvcCA9IGNoYW5nZXNbcHJvcE5hbWVdO1xyXG4gICAgICBpZiAocHJvcE5hbWUgPT09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgdGhpcy50b29sYmFyID0gY2hhbmdlZFByb3AuY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgICAvLyBjYWxjdWxhciBzaSBsYXMgb3RoZXIgYWN0aW9ucyBkZWJlbiBtb3N0cmFyc2UgZW4gZGVzcGxlZ2FibGVcclxuICAgICAgICAvLyAoc2UgaGEgcGVkaWRvIGFzaSB5IGhheSBtw6FzIGRlIHVuYSlcclxuICAgICAgICBsZXQgb3RoZXJBY3Rpb25zVmlzaWJsZXMgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnRvb2xiYXIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRvb2xiYXJba2V5XS5vdGhlckFjdGlvbiAmJiB0aGlzLnRvb2xiYXJba2V5XS52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgIG90aGVyQWN0aW9uc1Zpc2libGVzKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW9zdHJhck90aGVyQWN0aW9uc0VuRGVzcGxlZ2FibGUgPSB0aGlzLm90aGVyQWN0aW9uc0Ryb3Bkb3duICYmIG90aGVyQWN0aW9uc1Zpc2libGVzID4gMTtcclxuICAgICAgICBpZiAodGhpcy5tb3N0cmFyT3RoZXJBY3Rpb25zRW5EZXNwbGVnYWJsZSkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtc090aGVyQWN0aW9ucyA9IHRoaXMuZ2V0T3RoZXJBY3Rpb25zRHJvcGRvd25Nb2RlbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVjb3JyZW1vcyBlbCB0b29sYmFyIHkgZGV2b2x2ZW1vcyB1biBhcnJheSBjb24gbGFzIGFjY2lvbmVzIHF1ZSB0ZW5nYW4gbGEgcHJvcGllZGFkIG90aGVyQWN0aW9uIGEgdHJ1ZSxcclxuICAvLyB0cmFuc2Zvcm1hZGFzIGEgTWVudUl0ZW0sIHBhcmEgcG9kZXIgbW9zdHJhcmxhcyBlbiBlbCBkZXNwbGVnYWJsZSBkZSBTcGxpdEJ1dHRvblxyXG4gIGdldE90aGVyQWN0aW9uc0Ryb3Bkb3duTW9kZWwoKTogTWVudUl0ZW1bXSB7XHJcbiAgICBsZXQgYWN0aW9uczogTWVudUl0ZW1bXSA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMudG9vbGJhcikge1xyXG4gICAgICBpZiAodGhpcy50b29sYmFyW2tleV0ub3RoZXJBY3Rpb24pIHtcclxuICAgICAgICBsZXQgdG9vbGJhckl0ZW0gPSB0aGlzLnRvb2xiYXJba2V5XTsgLy8gY2FwdHVyZSB0aGUgY3VycmVudCB0b29sYmFyIGl0ZW1cclxuICAgICAgICBhY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb25zW3Rvb2xiYXJJdGVtLmxhYmVsXSxcclxuICAgICAgICAgIGljb246IHRvb2xiYXJJdGVtLmVzdGlsbyxcclxuICAgICAgICAgIHZpc2libGU6IHRvb2xiYXJJdGVtLnZpc2libGUsXHJcbiAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7IHRoaXMub3RoZXJBY3Rpb24odG9vbGJhckl0ZW0pOyB9IC8vIHVzZSB0aGUgY2FwdHVyZWQgdG9vbGJhciBpdGVtXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWN0aW9ucztcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gYWNjaW9uZXMgbm8gZXN0YW5kYXIgZGVmaW5pZGFzIGRpbsOhbWljYW1lbnRlIG8gbXV5IHBhcnRpY3VsYXJlcy0tPlxyXG48IS0tIHNpIG90aGVyQWN0aW9uc0Ryb3Bkb3duIHZpZW5lIGEgdHJ1ZSB5IGhheSBtw6FzIGRlIHVuYSBhY2Npw7NuLCBzZSBtdWVzdHJhbiBjb21vIHVuIGRlc3BsZWdhYmxlLCBzaSBubywgdG9kYXMgbGFzIGFjY2lvbmVzIGVuIGzDrW5lYSAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItdG9vbGJhclwiPlxyXG5cclxuICBAaWYgKG1vc3RyYXJPdGhlckFjdGlvbnNFbkRlc3BsZWdhYmxlKSB7XHJcbiAgICBAaWYgKG90aGVyQWN0aW9uc0Ryb3Bkb3duKSB7XHJcbiAgICAgIDxwLWJ1dHRvbiAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiIFtzaXplXT1cImJ1dHRvblNpemVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXByaW1hcnlcIiBpY29uPVwicGkgcGktY2FyZXQtcmlnaHRcIiBpY29uUG9zPVwicmlnaHRcIiBsYWJlbD1cInt7J2JpdG5nbGlicmFyeS50b29sYmFyLm90aGVyLWFjdGlvbnMnIHwgdHJhbnNsb2NvfX1cIj48L3AtYnV0dG9uPlxyXG4gICAgICA8cC10aWVyZWRNZW51ICNtZW51IFttb2RlbF09XCJpdGVtc090aGVyQWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCI+PC9wLXRpZXJlZE1lbnU+XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICA8IS0tIHNpIG90aGVyQWN0aW9uc0Ryb3Bkb3duIHZpZW5lIGEgZmFsc2UgbyBzb2xvIGhheSB1bmEgYWNjacOzbiwgc2UgbXVlc3RyYW4gdW5hIHRyYXMgb3RyYSBlbiBsw61uZWEgLS0+XHJcbiAgQGlmICghbW9zdHJhck90aGVyQWN0aW9uc0VuRGVzcGxlZ2FibGUpIHtcclxuICAgIEBmb3IgKGJ1dHRvbiBvZiAodG9vbGJhciB8IG90aGVyVG9vbGJhckFjdGlvbik7IHRyYWNrIGJ1dHRvbikge1xyXG4gICAgICBAaWYgKGJ1dHRvbi52aXNpYmxlKSB7XHJcbiAgICAgICAgPHAtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWJ1dHRvbi5lbmFibGVcIiAoY2xpY2spPVwib3RoZXJBY3Rpb24oYnV0dG9uKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIj57e1wiYml0bmdsaWJyYXJ5LnRvb2xiYXIuXCIrYnV0dG9uLmxhYmVsIHwgdHJhbnNsb2NvfX0mbmJzcDsmbmJzcDs8c3BhbiBbY2xhc3NdPVwiYnV0dG9uLmVzdGlsbz9idXR0b24uZXN0aWxvOidwaSBwaS1hbmdsZS1yaWdodCdcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICA8IS0tIGFjY2lvbmVzIGVzdGFuZGFyIC0tPlxyXG4gIEBpZiAodmlzaWJsZSgnbmV3JykpIHtcclxuICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGUoJ25ldycpXCIgKGNsaWNrKT1cIm5ld0VsZW1lbnQoKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCI+e3soZmVtZW5pbm8gPyBcImJpdG5nbGlicmFyeS50b29sYmFyLm5ldy1mZW1hbGVcIjogXCJiaXRuZ2xpYnJhcnkudG9vbGJhci5uZXdcIikgfCB0cmFuc2xvY299fSZuYnNwOyZuYnNwOzxzcGFuIFtjbGFzc109XCJlc3RpbG8oJ25ldycsICdwaSBwaS1wbHVzJylcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICB9XHJcbiAgQGlmICh2aXNpYmxlKCdhZGQnKSkge1xyXG4gICAgPHAtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZSgnYWRkJylcIiAoY2xpY2spPVwiYWRkKClcIiBbc2l6ZV09XCJidXR0b25TaXplXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLWRhbmdlclwiPnt7XCJiaXRuZ2xpYnJhcnkudG9vbGJhci5hZGRcIiB8IHRyYW5zbG9jb319Jm5ic3A7Jm5ic3A7PHNwYW4gW2NsYXNzXT1cImVzdGlsbygnYWRkJywgJ3BpIHBpLXBsdXMnKVwiPjwvc3Bhbj48L3AtYnV0dG9uPlxyXG4gIH1cclxuXHJcbiAgQGlmICh2aXNpYmxlKCdleHBvcnQnKSkge1xyXG4gICAgPHAtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZSgnZXhwb3J0JylcIiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCIgW3NpemVdPVwiYnV0dG9uU2l6ZVwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1zZWNvbmRhcnlcIj57e1wiYml0bmdsaWJyYXJ5LnRvb2xiYXIuZXhwb3J0XCIgfCB0cmFuc2xvY299fSZuYnNwOyZuYnNwOzxzcGFuIFtjbGFzc109XCJlc3RpbG8oJ2V4cG9ydCcsICdwaSBwaS1maWxlJylcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICB9XHJcbiAgQGlmICh2aXNpYmxlKCdzYXZlJykpIHtcclxuICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGUoJ3NhdmUnKVwiIChjbGljayk9XCJzYXZlKClcIiBbc2l6ZV09XCJidXR0b25TaXplXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3NcIj57e1wiYml0bmdsaWJyYXJ5LnRvb2xiYXIuc2F2ZVwiIHwgdHJhbnNsb2NvfX0mbmJzcDsmbmJzcDs8c3BhbiBbY2xhc3NdPVwiZXN0aWxvKCdzYXZlJywgJ3BpIHBpLXNhdmUnKVwiPjwvc3Bhbj48L3AtYnV0dG9uPlxyXG4gIH1cclxuICBAaWYgKHZpc2libGUoJ2RlbGV0ZScpKSB7XHJcbiAgICA8cC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlKCdkZWxldGUnKVwiIChjbGljayk9XCJkZWxldGUoKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tZGFuZ2VyXCI+e3tcImJpdG5nbGlicmFyeS50b29sYmFyLmRlbGV0ZVwiIHwgdHJhbnNsb2NvfX0mbmJzcDsmbmJzcDs8c3BhbiBbY2xhc3NdPVwiZXN0aWxvKCdkZWxldGUnLCAncGkgcGktdHJhc2gnKVwiPjwvc3Bhbj48L3AtYnV0dG9uPlxyXG4gIH1cclxuICBAaWYgKHZpc2libGUoJ3ByaW50JykpIHtcclxuICAgIDxwLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGUoJ3ByaW50JylcIiAoY2xpY2spPVwicHJpbnQoKVwiIFtzaXplXT1cImJ1dHRvblNpemVcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc2Vjb25kYXJ5XCI+e3tcImJpdG5nbGlicmFyeS50b29sYmFyLnByaW50XCIgfCB0cmFuc2xvY299fSZuYnNwOyZuYnNwOzxzcGFuIFtjbGFzc109XCJlc3RpbG8oJ3ByaW50JywgJ3BpIHBpLXByaW50JylcIj48L3NwYW4+PC9wLWJ1dHRvbj5cclxuICB9XHJcbiAgQGlmIChheXVkYSkge1xyXG4gICAgPGJpdC1ib3Rvbi1heXVkYSBib3Rvbj1cInRydWVcIiBbYXl1ZGFdPVwiYXl1ZGFcIiBbYnV0dG9uU2l6ZV09XCJidXR0b25TaXplXCI+PC9iaXQtYm90b24tYXl1ZGE+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
@@ -3342,11 +3342,11 @@ class BitToolbarComponent extends BaseComponent {
3342
3342
  return actions;
3343
3343
  }
3344
3344
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BitToolbarComponent, deps: [{ token: TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
3345
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BitToolbarComponent, selector: "bit-toolbar", inputs: { toolbar: "toolbar", ayuda: "ayuda", femenino: "femenino", buttonSize: "buttonSize", otherActionsDropdown: "otherActionsDropdown" }, outputs: { onToolbarButtonPressed: "onToolbarButtonPressed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"Accions\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3$1.TieredMenu, selector: "p-tieredMenu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "component", type: BitBotonAyudaComponent, selector: "bit-boton-ayuda", inputs: ["ayuda", "boton", "extraClass", "buttonSize"] }, { kind: "pipe", type: i1$1.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: OtherToolbarActionPipe, name: "otherToolbarAction" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3345
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BitToolbarComponent, selector: "bit-toolbar", inputs: { toolbar: "toolbar", ayuda: "ayuda", femenino: "femenino", buttonSize: "buttonSize", otherActionsDropdown: "otherActionsDropdown" }, outputs: { onToolbarButtonPressed: "onToolbarButtonPressed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3$1.TieredMenu, selector: "p-tieredMenu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "component", type: BitBotonAyudaComponent, selector: "bit-boton-ayuda", inputs: ["ayuda", "boton", "extraClass", "buttonSize"] }, { kind: "pipe", type: i1$1.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: OtherToolbarActionPipe, name: "otherToolbarAction" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3346
3346
  }
3347
3347
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BitToolbarComponent, decorators: [{
3348
3348
  type: Component,
3349
- args: [{ selector: "bit-toolbar", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"Accions\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n" }]
3349
+ args: [{ selector: "bit-toolbar", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- acciones no estandar definidas din\u00E1micamente o muy particulares-->\r\n<!-- si otherActionsDropdown viene a true y hay m\u00E1s de una acci\u00F3n, se muestran como un desplegable, si no, todas las acciones en l\u00EDnea -->\r\n<div class=\"contenedor-toolbar\">\r\n\r\n @if (mostrarOtherActionsEnDesplegable) {\r\n @if (otherActionsDropdown) {\r\n <p-button (click)=\"menu.toggle($event)\" [size]=\"buttonSize\"\r\n styleClass=\"p-button-primary\" icon=\"pi pi-caret-right\" iconPos=\"right\" label=\"{{'bitnglibrary.toolbar.other-actions' | transloco}}\"></p-button>\r\n <p-tieredMenu #menu [model]=\"itemsOtherActions\" [popup]=\"true\"></p-tieredMenu>\r\n }\r\n }\r\n\r\n <!-- si otherActionsDropdown viene a false o solo hay una acci\u00F3n, se muestran una tras otra en l\u00EDnea -->\r\n @if (!mostrarOtherActionsEnDesplegable) {\r\n @for (button of (toolbar | otherToolbarAction); track button) {\r\n @if (button.visible) {\r\n <p-button type=\"button\" [disabled]=\"!button.enable\" (click)=\"otherAction(button)\" [size]=\"buttonSize\">{{\"bitnglibrary.toolbar.\"+button.label | transloco}}&nbsp;&nbsp;<span [class]=\"button.estilo?button.estilo:'pi pi-angle-right'\"></span></p-button>\r\n }\r\n }\r\n }\r\n <!-- acciones estandar -->\r\n @if (visible('new')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('new')\" (click)=\"newElement()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{(femenino ? \"bitnglibrary.toolbar.new-female\": \"bitnglibrary.toolbar.new\") | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('new', 'pi pi-plus')\"></span></p-button>\r\n }\r\n @if (visible('add')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('add')\" (click)=\"add()\" [size]=\"buttonSize\" styleClass=\"p-button-danger\">{{\"bitnglibrary.toolbar.add\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('add', 'pi pi-plus')\"></span></p-button>\r\n }\r\n\r\n @if (visible('export')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('export')\" (click)=\"exportData()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.export\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('export', 'pi pi-file')\"></span></p-button>\r\n }\r\n @if (visible('save')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('save')\" (click)=\"save()\" [size]=\"buttonSize\" styleClass=\"p-button-success\">{{\"bitnglibrary.toolbar.save\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('save', 'pi pi-save')\"></span></p-button>\r\n }\r\n @if (visible('delete')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('delete')\" (click)=\"delete()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-danger\">{{\"bitnglibrary.toolbar.delete\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('delete', 'pi pi-trash')\"></span></p-button>\r\n }\r\n @if (visible('print')) {\r\n <p-button type=\"button\" [disabled]=\"!enable('print')\" (click)=\"print()\" [size]=\"buttonSize\" styleClass=\"p-button-outlined p-button-secondary\">{{\"bitnglibrary.toolbar.print\" | transloco}}&nbsp;&nbsp;<span [class]=\"estilo('print', 'pi pi-print')\"></span></p-button>\r\n }\r\n @if (ayuda) {\r\n <bit-boton-ayuda boton=\"true\" [ayuda]=\"ayuda\" [buttonSize]=\"buttonSize\"></bit-boton-ayuda>\r\n }\r\n</div>\r\n" }]
3350
3350
  }], ctorParameters: () => [{ type: TranslateService }], propDecorators: { toolbar: [{
3351
3351
  type: Input
3352
3352
  }], ayuda: [{