ngx-sp-infra 3.13.7-test → 3.13.8-test

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.
@@ -20,7 +20,6 @@ export class TenantService {
20
20
  // #region ==========> UTILS <==========
21
21
  validateTenant(tenantId) {
22
22
  if (!tenantId || tenantId === 0) {
23
- console.log(tenantId);
24
23
  this._messageService.showAlertInfo("Você deve selecionar um domínio para executar esta opção.");
25
24
  console.error("Você deve selecionar um domínio para executar esta opção.");
26
25
  throw new Error("Você deve selecionar um domínio para executar esta opção.");
@@ -36,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
36
35
  providedIn: 'root'
37
36
  }]
38
37
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.MessageService }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9zZXJ2aWNlL3RlbmFudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRM0MsTUFBTSxPQUFPLGFBQWE7SUFFeEIsNkNBQTZDO0lBRTdDLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IscUJBQXFCO0lBRXJCLGlCQUFpQjtJQUNqQixRQUFRO0lBQ1Isb0JBQW9CO0lBRXBCLGdEQUFnRDtJQUdoRCxpREFBaUQ7SUFDakQsWUFDVSxNQUFjLEVBQ2QsZUFBK0I7UUFEL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUNyQyxDQUFDO0lBQ0wsb0RBQW9EO0lBR3BELHdDQUF3QztJQUNqQyxjQUFjLENBQUMsUUFBaUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQywyREFBMkQsQ0FBQyxDQUFBO1lBQy9GLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUUzRSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7WUFDN0UsbUNBQW1DO1FBQ3JDLENBQUM7SUFDSCxDQUFDOytHQWxDVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS9tZXNzYWdlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUZW5hbnRTZXJ2aWNlIHtcblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cblxuICAvLyAjcmVnaW9uIFBSSVZBVEVcbiAgLy8gWy4uLl1cbiAgLy8gI2VuZHJlZ2lvbiBQUklWQVRFXG5cbiAgLy8gI3JlZ2lvbiBQVUJMSUNcbiAgLy8gWy4uLl1cbiAgLy8gI2VuZHJlZ2lvbiBQVUJMSUNcblxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7IH1cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBJTklUSUFMSVpBVElPTiA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBVVElMUyA8PT09PT09PT09PVxuICBwdWJsaWMgdmFsaWRhdGVUZW5hbnQodGVuYW50SWQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRlbmFudElkIHx8IHRlbmFudElkID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZyh0ZW5hbnRJZCk7XG4gICAgICBcbiAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydEluZm8oXCJWb2PDqiBkZXZlIHNlbGVjaW9uYXIgdW0gZG9tw61uaW8gcGFyYSBleGVjdXRhciBlc3RhIG9ww6fDo28uXCIpXG4gICAgICBjb25zb2xlLmVycm9yKFwiVm9jw6ogZGV2ZSBzZWxlY2lvbmFyIHVtIGRvbcOtbmlvIHBhcmEgZXhlY3V0YXIgZXN0YSBvcMOnw6NvLlwiKTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVm9jw6ogZGV2ZSBzZWxlY2lvbmFyIHVtIGRvbcOtbmlvIHBhcmEgZXhlY3V0YXIgZXN0YSBvcMOnw6NvLlwiKTtcbiAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9ob21lXCJdKTtcbiAgICB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBVVElMUyA8PT09PT09PT09PVxuXG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9zZXJ2aWNlL3RlbmFudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRM0MsTUFBTSxPQUFPLGFBQWE7SUFFeEIsNkNBQTZDO0lBRTdDLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IscUJBQXFCO0lBRXJCLGlCQUFpQjtJQUNqQixRQUFRO0lBQ1Isb0JBQW9CO0lBRXBCLGdEQUFnRDtJQUdoRCxpREFBaUQ7SUFDakQsWUFDVSxNQUFjLEVBQ2QsZUFBK0I7UUFEL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUNyQyxDQUFDO0lBQ0wsb0RBQW9EO0lBR3BELHdDQUF3QztJQUNqQyxjQUFjLENBQUMsUUFBaUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsMkRBQTJELENBQUMsQ0FBQTtZQUMvRixPQUFPLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7WUFFM0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1lBQzdFLG1DQUFtQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQzsrR0FoQ1UsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGVuYW50U2VydmljZSB7XG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XG5cbiAgLy8gI3JlZ2lvbiBQUklWQVRFXG4gIC8vIFsuLi5dXG4gIC8vICNlbmRyZWdpb24gUFJJVkFURVxuXG4gIC8vICNyZWdpb24gUFVCTElDXG4gIC8vIFsuLi5dXG4gIC8vICNlbmRyZWdpb24gUFVCTElDXG5cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IElOSVRJQUxJWkFUSU9OIDw9PT09PT09PT09XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkgeyB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cbiAgcHVibGljIHZhbGlkYXRlVGVuYW50KHRlbmFudElkPzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0ZW5hbnRJZCB8fCB0ZW5hbnRJZCA9PT0gMCkge1xuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0SW5mbyhcIlZvY8OqIGRldmUgc2VsZWNpb25hciB1bSBkb23DrW5pbyBwYXJhIGV4ZWN1dGFyIGVzdGEgb3DDp8Ojby5cIilcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJWb2PDqiBkZXZlIHNlbGVjaW9uYXIgdW0gZG9tw61uaW8gcGFyYSBleGVjdXRhciBlc3RhIG9ww6fDo28uXCIpO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWb2PDqiBkZXZlIHNlbGVjaW9uYXIgdW0gZG9tw61uaW8gcGFyYSBleGVjdXRhciBlc3RhIG9ww6fDo28uXCIpO1xuICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2hvbWVcIl0pO1xuICAgIH1cbiAgfVxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxTIDw9PT09PT09PT09XG5cbn1cbiJdfQ==
@@ -30,14 +30,20 @@ export class AppliedFiltersComponent {
30
30
  // #endregion ==========> INITIALIZATION <==========
31
31
  // #region ==========> UTILS <==========
32
32
  clearFilter(control) {
33
+ console.log("control:", control);
34
+ console.log("filtrosAplicados:", this.filtrosAplicados);
35
+ console.log("filtrosAplicadosInterno:", this.filtrosAplicadosInterno);
33
36
  this.removeFilter.emit({ control: control, value: this.valueToReset });
37
+ const todosVazios = this.filtrosAplicadosInterno?.every(f => f.value === this.valueToReset);
38
+ if (todosVazios)
39
+ delete this.filtrosAplicadosInterno;
34
40
  }
35
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppliedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppliedFiltersComponent, selector: "lib-applied-filters", inputs: { filtrosAplicados: "filtrosAplicados", aliasNames: "aliasNames", valueToReset: "valueToReset", theme: "theme" }, outputs: { removeFilter: "removeFilter" }, ngImport: i0, template: "<div *ngIf=\"filtrosAplicados && filtrosAplicados.length > 0\" class=\"d-flex flex-row my-3\">\n <div class=\"filter-list-text pe-1 fw-bold fs-6\">Filtros:</div>\n <div class=\"filter-list ps-1 d-flex flex-row flex-wrap gap-2 px-1\">\n @for (filtro of filtrosAplicados; track $index) {\n <button *ngIf=\"filtro.value !== undefined && filtro.value !== null && filtro.value !== ''\" class=\"btn btn-sm btn-outline-{{theme}} rounded-pill gap-2 position-relative\">\n <b>{{ aliasNames[$index] }}</b>: {{ filtro.value | formatByType }}\n\n <span *ngIf=\"Array.isArray(filtro.value) && filtro.value.length > 1\" class=\"badge text-bg-{{theme}}\"\n [tooltip]=\"filtro.value.join(', ')\" >\n {{ filtro.value.length }} selecionados\n </span>\n\n <lib-icon iconName=\"fechar\" iconSize=\"small\" tooltip=\"Limpar este campo\" (click)=\"clearFilter(filtro.label)\" />\n </button>\n }\n @empty {\n <span>Nenhum filtro efetivamente aplicado</span>\n }\n </div>\n</div>", styles: [".filter-list-text{width:fit-content}.filter-list{width:max-content}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "pipe", type: i4.FormatByTypePipe, name: "formatByType" }] }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppliedFiltersComponent, selector: "lib-applied-filters", inputs: { filtrosAplicados: "filtrosAplicados", aliasNames: "aliasNames", valueToReset: "valueToReset", theme: "theme" }, outputs: { removeFilter: "removeFilter" }, ngImport: i0, template: "<div *ngIf=\"filtrosAplicadosInterno && filtrosAplicadosInterno.length > 0\" class=\"d-flex flex-row my-3\">\n <div class=\"filter-list-text pe-1 fw-bold fs-6\">Filtros:</div>\n <div class=\"filter-list ps-1 d-flex flex-row flex-wrap gap-2 px-1\">\n @for (filtro of filtrosAplicadosInterno; track $index) {\n <button *ngIf=\"filtro.value !== undefined && filtro.value !== null && filtro.value !== ''\" class=\"btn btn-sm btn-outline-{{theme}} rounded-pill gap-2 position-relative\">\n <b>{{ aliasNames[$index] }}</b>: {{ filtro.value | formatByType }}\n\n <span *ngIf=\"Array.isArray(filtro.value) && filtro.value.length > 1\" class=\"badge text-bg-{{theme}}\"\n [tooltip]=\"filtro.value.join(', ')\" >\n {{ filtro.value.length }} selecionados\n </span>\n\n <lib-icon iconName=\"fechar\" iconSize=\"small\" tooltip=\"Limpar este campo\" (click)=\"filtro.value = valueToReset; clearFilter(filtro.label)\" />\n </button>\n }\n @empty {\n <span>Nenhum filtro efetivamente aplicado</span>\n }\n </div>\n</div>", styles: [".filter-list-text{width:fit-content}.filter-list{width:max-content}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "pipe", type: i4.FormatByTypePipe, name: "formatByType" }] }); }
37
43
  }
38
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppliedFiltersComponent, decorators: [{
39
45
  type: Component,
40
- args: [{ selector: 'lib-applied-filters', template: "<div *ngIf=\"filtrosAplicados && filtrosAplicados.length > 0\" class=\"d-flex flex-row my-3\">\n <div class=\"filter-list-text pe-1 fw-bold fs-6\">Filtros:</div>\n <div class=\"filter-list ps-1 d-flex flex-row flex-wrap gap-2 px-1\">\n @for (filtro of filtrosAplicados; track $index) {\n <button *ngIf=\"filtro.value !== undefined && filtro.value !== null && filtro.value !== ''\" class=\"btn btn-sm btn-outline-{{theme}} rounded-pill gap-2 position-relative\">\n <b>{{ aliasNames[$index] }}</b>: {{ filtro.value | formatByType }}\n\n <span *ngIf=\"Array.isArray(filtro.value) && filtro.value.length > 1\" class=\"badge text-bg-{{theme}}\"\n [tooltip]=\"filtro.value.join(', ')\" >\n {{ filtro.value.length }} selecionados\n </span>\n\n <lib-icon iconName=\"fechar\" iconSize=\"small\" tooltip=\"Limpar este campo\" (click)=\"clearFilter(filtro.label)\" />\n </button>\n }\n @empty {\n <span>Nenhum filtro efetivamente aplicado</span>\n }\n </div>\n</div>", styles: [".filter-list-text{width:fit-content}.filter-list{width:max-content}\n"] }]
46
+ args: [{ selector: 'lib-applied-filters', template: "<div *ngIf=\"filtrosAplicadosInterno && filtrosAplicadosInterno.length > 0\" class=\"d-flex flex-row my-3\">\n <div class=\"filter-list-text pe-1 fw-bold fs-6\">Filtros:</div>\n <div class=\"filter-list ps-1 d-flex flex-row flex-wrap gap-2 px-1\">\n @for (filtro of filtrosAplicadosInterno; track $index) {\n <button *ngIf=\"filtro.value !== undefined && filtro.value !== null && filtro.value !== ''\" class=\"btn btn-sm btn-outline-{{theme}} rounded-pill gap-2 position-relative\">\n <b>{{ aliasNames[$index] }}</b>: {{ filtro.value | formatByType }}\n\n <span *ngIf=\"Array.isArray(filtro.value) && filtro.value.length > 1\" class=\"badge text-bg-{{theme}}\"\n [tooltip]=\"filtro.value.join(', ')\" >\n {{ filtro.value.length }} selecionados\n </span>\n\n <lib-icon iconName=\"fechar\" iconSize=\"small\" tooltip=\"Limpar este campo\" (click)=\"filtro.value = valueToReset; clearFilter(filtro.label)\" />\n </button>\n }\n @empty {\n <span>Nenhum filtro efetivamente aplicado</span>\n }\n </div>\n</div>", styles: [".filter-list-text{width:fit-content}.filter-list{width:max-content}\n"] }]
41
47
  }], ctorParameters: () => [], propDecorators: { filtrosAplicados: [{
42
48
  type: Input,
43
49
  args: [{ required: true }]
@@ -51,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
51
57
  }], removeFilter: [{
52
58
  type: Output
53
59
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGllZC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3dpZGdldHMvYXBwbGllZC1maWx0ZXJzL2FwcGxpZWQtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL2FwcGxpZWQtZmlsdGVycy9hcHBsaWVkLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZFLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsNkNBQTZDO0lBRTdDLG9CQUFvQjtJQUNwQixJQUFjLEtBQUssS0FBbUIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBR3JELHVCQUF1QjtJQUV2QixpQkFBaUI7SUFDakIsSUFDVyxnQkFBZ0IsS0FBMEMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBQzNHLElBQVcsZ0JBQWdCLENBQUMsS0FBMEM7UUFDcEUsZ0VBQWdFO1FBQ2hFLGlIQUFpSDtRQUNqSCxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BGLENBQUM7SUFRRCxvQkFBb0I7SUFFcEIsZ0RBQWdEO0lBR2hELGlEQUFpRDtJQUNqRDtRQXpCTyw0QkFBdUIsR0FBNkIsRUFBRSxDQUFDO1FBYW5DLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFFNUMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLFVBQUssR0FBVyxTQUFTLENBQUM7UUFFekIsaUJBQVksR0FBNEQsSUFBSSxZQUFZLEVBQTZDLENBQUM7SUFPaEksQ0FBQztJQUNqQixvREFBb0Q7SUFHcEQsd0NBQXdDO0lBQ2pDLFdBQVcsQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDeEUsQ0FBQzsrR0F2Q1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsZ09DUnBDLHVqQ0FtQk07OzRGRFhPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7d0RBZ0JwQixnQkFBZ0I7c0JBRDFCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVNFLFVBQVU7c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVoQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRyb3NBcGxpY2Fkb3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0cm9zLWFwbGljYWRvcy9maWx0cm9zLWFwbGljYWRvcy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcHBsaWVkLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwbGllZC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FwcGxpZWQtZmlsdGVycy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGllZEZpbHRlcnNDb21wb25lbnQge1xuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxuXG4gIC8vICNyZWdpb24gUFJPVEVDVEVEXG4gIHByb3RlY3RlZCBnZXQgQXJyYXkoKTogdHlwZW9mIEFycmF5IHsgcmV0dXJuIEFycmF5OyB9XG5cbiAgcHVibGljIGZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vPzogRmlsdHJvc0FwbGljYWRvc01vZGVsW10gPSBbXTtcbiAgLy8gI2VuZHJlZ2lvbiBQUk9URUNURURcblxuICAvLyAjcmVnaW9uIFBVQkxJQ1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgZ2V0IGZpbHRyb3NBcGxpY2Fkb3MoKTogRmlsdHJvc0FwbGljYWRvc01vZGVsW10gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5maWx0cm9zQXBsaWNhZG9zSW50ZXJubzsgfVxuICBwdWJsaWMgc2V0IGZpbHRyb3NBcGxpY2Fkb3ModmFsdWU6IEZpbHRyb3NBcGxpY2Fkb3NNb2RlbFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gQXF1aSBldSBlc3RvdSBjcmlhbmRvIHVtYSBjw7NwaWEgZG9zIHZhbG9yZXMgcXVlIHPDo28gcmVjZWJpZG9zXG4gICAgLy8gcG9pcyBxdWFuZG8gdXNhbW9zIGEgbWVzbWEgcmVmZXLDqm5jaWEgZG8gb2JqZXRvIG9yaWdpbmFsIGVsZSBzZW1wcmUgc2UgYWx0ZXJhcsOhIGNvbSBiYXNlIG5vIHZhbG9yIGRvIG9yaWdpbmFsLFxuICAgIC8vIG7Do28gaW1wb3J0YSBxdWFudGFzIGPDs3BpYXMgZXhpc3RhbVxuICAgIHRoaXMuZmlsdHJvc0FwbGljYWRvc0ludGVybm8gPSB2YWx1ZSA/IHZhbHVlLm1hcChvYmogPT4gKHsgLi4ub2JqIH0pKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgYWxpYXNOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgXG4gIEBJbnB1dCgpIHZhbHVlVG9SZXNldDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIEBJbnB1dCgpIHRoZW1lOiBzdHJpbmcgPSBcInByaW1hcnlcIjtcblxuICBAT3V0cHV0KCkgcmVtb3ZlRmlsdGVyOiBFdmVudEVtaXR0ZXI8eyBjb250cm9sOiBzdHJpbmcsIHZhbHVlOiBudWxsIHwgc3RyaW5nIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbnRyb2w6IHN0cmluZywgdmFsdWU6IG51bGwgfCBzdHJpbmcgfT4oKTtcbiAgLy8gI2VuZHJlZ2lvbiBQVUJMSUNcblxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cbiAgY29uc3RydWN0b3IoKSB7IH1cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBJTklUSUFMSVpBVElPTiA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBVVElMUyA8PT09PT09PT09PVxuICBwdWJsaWMgY2xlYXJGaWx0ZXIoY29udHJvbDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW1vdmVGaWx0ZXIuZW1pdCh7IGNvbnRyb2w6IGNvbnRyb2wsIHZhbHVlOiB0aGlzLnZhbHVlVG9SZXNldCB9KVxuICB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cblxufVxuIiwiPGRpdiAqbmdJZj1cImZpbHRyb3NBcGxpY2Fkb3MgJiYgZmlsdHJvc0FwbGljYWRvcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgbXktM1wiPlxuICAgPGRpdiBjbGFzcz1cImZpbHRlci1saXN0LXRleHQgcGUtMSBmdy1ib2xkIGZzLTZcIj5GaWx0cm9zOjwvZGl2PlxuICAgPGRpdiBjbGFzcz1cImZpbHRlci1saXN0IHBzLTEgZC1mbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBnYXAtMiBweC0xXCI+XG4gICAgICBAZm9yIChmaWx0cm8gb2YgZmlsdHJvc0FwbGljYWRvczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmlsdHJvLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgZmlsdHJvLnZhbHVlICE9PSBudWxsICYmIGZpbHRyby52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUte3t0aGVtZX19IHJvdW5kZWQtcGlsbCBnYXAtMiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGI+e3sgYWxpYXNOYW1lc1skaW5kZXhdIH19PC9iPjoge3sgZmlsdHJvLnZhbHVlIHwgZm9ybWF0QnlUeXBlIH19XG5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiQXJyYXkuaXNBcnJheShmaWx0cm8udmFsdWUpICYmIGZpbHRyby52YWx1ZS5sZW5ndGggPiAxXCIgY2xhc3M9XCJiYWRnZSB0ZXh0LWJnLXt7dGhlbWV9fVwiXG4gICAgICAgICAgICAgICBbdG9vbHRpcF09XCJmaWx0cm8udmFsdWUuam9pbignLCAnKVwiID5cbiAgICAgICAgICAgICAgIHt7IGZpbHRyby52YWx1ZS5sZW5ndGggfX0gc2VsZWNpb25hZG9zXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImZlY2hhclwiIGljb25TaXplPVwic21hbGxcIiB0b29sdGlwPVwiTGltcGFyIGVzdGUgY2FtcG9cIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmlsdHJvLmxhYmVsKVwiIC8+XG4gICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBlbXB0eSB7XG4gICAgICAgICA8c3Bhbj5OZW5odW0gZmlsdHJvIGVmZXRpdmFtZW50ZSBhcGxpY2Fkbzwvc3Bhbj5cbiAgICAgIH1cbiAgIDwvZGl2PlxuPC9kaXY+Il19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGllZC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3dpZGdldHMvYXBwbGllZC1maWx0ZXJzL2FwcGxpZWQtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL2FwcGxpZWQtZmlsdGVycy9hcHBsaWVkLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZFLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsNkNBQTZDO0lBRTdDLG9CQUFvQjtJQUNwQixJQUFjLEtBQUssS0FBbUIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBR3JELHVCQUF1QjtJQUV2QixpQkFBaUI7SUFDakIsSUFDVyxnQkFBZ0IsS0FBMEMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBQzNHLElBQVcsZ0JBQWdCLENBQUMsS0FBMEM7UUFDcEUsZ0VBQWdFO1FBQ2hFLGlIQUFpSDtRQUNqSCxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BGLENBQUM7SUFRRCxvQkFBb0I7SUFFcEIsZ0RBQWdEO0lBR2hELGlEQUFpRDtJQUNqRDtRQXpCTyw0QkFBdUIsR0FBNkIsRUFBRSxDQUFDO1FBYW5DLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFFNUMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLFVBQUssR0FBVyxTQUFTLENBQUM7UUFFekIsaUJBQVksR0FBNEQsSUFBSSxZQUFZLEVBQTZDLENBQUM7SUFPaEksQ0FBQztJQUNqQixvREFBb0Q7SUFHcEQsd0NBQXdDO0lBQ2pDLFdBQVcsQ0FBQyxPQUFlO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RixJQUFJLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN2RCxDQUFDOytHQTlDVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixnT0NScEMseW1DQW1CTTs7NEZEWE8sdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjt3REFnQnBCLGdCQUFnQjtzQkFEMUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBU0UsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWhCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdHJvc0FwbGljYWRvc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRyb3MtYXBsaWNhZG9zL2ZpbHRyb3MtYXBsaWNhZG9zLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcGxpZWQtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHBsaWVkLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXBwbGllZC1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWVkRmlsdGVyc0NvbXBvbmVudCB7XG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XG5cbiAgLy8gI3JlZ2lvbiBQUk9URUNURURcbiAgcHJvdGVjdGVkIGdldCBBcnJheSgpOiB0eXBlb2YgQXJyYXkgeyByZXR1cm4gQXJyYXk7IH1cblxuICBwdWJsaWMgZmlsdHJvc0FwbGljYWRvc0ludGVybm8/OiBGaWx0cm9zQXBsaWNhZG9zTW9kZWxbXSA9IFtdO1xuICAvLyAjZW5kcmVnaW9uIFBST1RFQ1RFRFxuXG4gIC8vICNyZWdpb24gUFVCTElDXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBnZXQgZmlsdHJvc0FwbGljYWRvcygpOiBGaWx0cm9zQXBsaWNhZG9zTW9kZWxbXSB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLmZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vOyB9XG4gIHB1YmxpYyBzZXQgZmlsdHJvc0FwbGljYWRvcyh2YWx1ZTogRmlsdHJvc0FwbGljYWRvc01vZGVsW10gfCB1bmRlZmluZWQpIHtcbiAgICAvLyBBcXVpIGV1IGVzdG91IGNyaWFuZG8gdW1hIGPDs3BpYSBkb3MgdmFsb3JlcyBxdWUgc8OjbyByZWNlYmlkb3NcbiAgICAvLyBwb2lzIHF1YW5kbyB1c2Ftb3MgYSBtZXNtYSByZWZlcsOqbmNpYSBkbyBvYmpldG8gb3JpZ2luYWwgZWxlIHNlbXByZSBzZSBhbHRlcmFyw6EgY29tIGJhc2Ugbm8gdmFsb3IgZG8gb3JpZ2luYWwsXG4gICAgLy8gbsOjbyBpbXBvcnRhIHF1YW50YXMgY8OzcGlhcyBleGlzdGFtXG4gICAgdGhpcy5maWx0cm9zQXBsaWNhZG9zSW50ZXJubyA9IHZhbHVlID8gdmFsdWUubWFwKG9iaiA9PiAoeyAuLi5vYmogfSkpIDogdW5kZWZpbmVkO1xuICB9XG4gIFxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBhbGlhc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBcbiAgQElucHV0KCkgdmFsdWVUb1Jlc2V0OiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgQElucHV0KCkgdGhlbWU6IHN0cmluZyA9IFwicHJpbWFyeVwiO1xuXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXI6IEV2ZW50RW1pdHRlcjx7IGNvbnRyb2w6IHN0cmluZywgdmFsdWU6IG51bGwgfCBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29udHJvbDogc3RyaW5nLCB2YWx1ZTogbnVsbCB8IHN0cmluZyB9PigpO1xuICAvLyAjZW5kcmVnaW9uIFBVQkxJQ1xuXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBJTklUSUFMSVpBVElPTiA8PT09PT09PT09PVxuICBjb25zdHJ1Y3RvcigpIHsgfVxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IElOSVRJQUxJWkFUSU9OIDw9PT09PT09PT09XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFVUSUxTIDw9PT09PT09PT09XG4gIHB1YmxpYyBjbGVhckZpbHRlcihjb250cm9sOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhcImNvbnRyb2w6XCIsIGNvbnRyb2wpO1xuICAgIGNvbnNvbGUubG9nKFwiZmlsdHJvc0FwbGljYWRvczpcIiwgdGhpcy5maWx0cm9zQXBsaWNhZG9zKTtcbiAgICBjb25zb2xlLmxvZyhcImZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vOlwiLCB0aGlzLmZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vKTtcbiAgICBcbiAgICB0aGlzLnJlbW92ZUZpbHRlci5lbWl0KHsgY29udHJvbDogY29udHJvbCwgdmFsdWU6IHRoaXMudmFsdWVUb1Jlc2V0IH0pO1xuXG4gICAgY29uc3QgdG9kb3NWYXppb3MgPSB0aGlzLmZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vPy5ldmVyeShmID0+IGYudmFsdWUgPT09IHRoaXMudmFsdWVUb1Jlc2V0KTtcbiAgICBpZiAodG9kb3NWYXppb3MpIGRlbGV0ZSB0aGlzLmZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vO1xuICB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cblxufVxuIiwiPGRpdiAqbmdJZj1cImZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vICYmIGZpbHRyb3NBcGxpY2Fkb3NJbnRlcm5vLmxlbmd0aCA+IDBcIiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBteS0zXCI+XG4gICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWxpc3QtdGV4dCBwZS0xIGZ3LWJvbGQgZnMtNlwiPkZpbHRyb3M6PC9kaXY+XG4gICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWxpc3QgcHMtMSBkLWZsZXggZmxleC1yb3cgZmxleC13cmFwIGdhcC0yIHB4LTFcIj5cbiAgICAgIEBmb3IgKGZpbHRybyBvZiBmaWx0cm9zQXBsaWNhZG9zSW50ZXJubzsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmlsdHJvLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgZmlsdHJvLnZhbHVlICE9PSBudWxsICYmIGZpbHRyby52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUte3t0aGVtZX19IHJvdW5kZWQtcGlsbCBnYXAtMiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGI+e3sgYWxpYXNOYW1lc1skaW5kZXhdIH19PC9iPjoge3sgZmlsdHJvLnZhbHVlIHwgZm9ybWF0QnlUeXBlIH19XG5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiQXJyYXkuaXNBcnJheShmaWx0cm8udmFsdWUpICYmIGZpbHRyby52YWx1ZS5sZW5ndGggPiAxXCIgY2xhc3M9XCJiYWRnZSB0ZXh0LWJnLXt7dGhlbWV9fVwiXG4gICAgICAgICAgICAgICBbdG9vbHRpcF09XCJmaWx0cm8udmFsdWUuam9pbignLCAnKVwiID5cbiAgICAgICAgICAgICAgIHt7IGZpbHRyby52YWx1ZS5sZW5ndGggfX0gc2VsZWNpb25hZG9zXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImZlY2hhclwiIGljb25TaXplPVwic21hbGxcIiB0b29sdGlwPVwiTGltcGFyIGVzdGUgY2FtcG9cIiAoY2xpY2spPVwiZmlsdHJvLnZhbHVlID0gdmFsdWVUb1Jlc2V0OyBjbGVhckZpbHRlcihmaWx0cm8ubGFiZWwpXCIgLz5cbiAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGVtcHR5IHtcbiAgICAgICAgIDxzcGFuPk5lbmh1bSBmaWx0cm8gZWZldGl2YW1lbnRlIGFwbGljYWRvPC9zcGFuPlxuICAgICAgfVxuICAgPC9kaXY+XG48L2Rpdj4iXX0=