chrv-components 0.0.1
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 +25 -0
- package/chrv-components-0.0.1.tgz +0 -0
- package/esm2020/chrv-components.mjs +5 -0
- package/esm2020/lib/chr-breadcrumb/breadcrumb.component.mjs +22 -0
- package/esm2020/lib/chr-button/chr-button.component.mjs +46 -0
- package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
- package/esm2020/lib/chr-components.module.mjs +117 -0
- package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +22 -0
- package/esm2020/lib/chr-form/chr-form.component.mjs +132 -0
- package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +58 -0
- package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +54 -0
- package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +52 -0
- package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +136 -0
- package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
- package/esm2020/lib/chr-separator/chr-separator.component.mjs +11 -0
- package/esm2020/lib/chr-table/chr-table.component.mjs +58 -0
- package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +49 -0
- package/esm2020/public-api.mjs +18 -0
- package/fesm2015/chrv-components.mjs +774 -0
- package/fesm2015/chrv-components.mjs.map +1 -0
- package/fesm2020/chrv-components.mjs +768 -0
- package/fesm2020/chrv-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/chr-breadcrumb/breadcrumb.component.d.ts +15 -0
- package/lib/chr-button/chr-button.component.d.ts +17 -0
- package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -0
- package/lib/chr-components.module.d.ts +28 -0
- package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -0
- package/lib/chr-form/chr-form.component.d.ts +57 -0
- package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -0
- package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -0
- package/lib/chr-form/chr-validators/type-validator.d.ts +10 -0
- package/lib/chr-search-select/chr-search-select.component.d.ts +44 -0
- package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -0
- package/lib/chr-separator/chr-separator.component.d.ts +5 -0
- package/lib/chr-table/chr-table.component.d.ts +38 -0
- package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +16 -0
- package/package.json +31 -0
- package/public-api.d.ts +14 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ChrComponents
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.1.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project chrv-components` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project chrv-components`.
|
|
8
|
+
|
|
9
|
+
> Note: Don't forget to add `--project chrv-components` or else it will be added to the default project in your `angular.json` file.
|
|
10
|
+
|
|
11
|
+
## Build
|
|
12
|
+
|
|
13
|
+
Run `ng build chrv-components` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
14
|
+
|
|
15
|
+
## Publishing
|
|
16
|
+
|
|
17
|
+
After building your library with `ng build chrv-components`, go to the dist folder `cd dist/chrv-components` and run `npm publish`.
|
|
18
|
+
|
|
19
|
+
## Running unit tests
|
|
20
|
+
|
|
21
|
+
Run `ng test chrv-components` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
22
|
+
|
|
23
|
+
## Further help
|
|
24
|
+
|
|
25
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hydi1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9jaHJ2LWNvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/material/button";
|
|
6
|
+
export class BreadcrumbComponent {
|
|
7
|
+
constructor(router) {
|
|
8
|
+
this.router = router;
|
|
9
|
+
this.navigateTo = (uri, data) => {
|
|
10
|
+
this.router.navigate([uri], { state: data });
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: BreadcrumbComponent, selector: "app-chr-breadcrumb", inputs: { crumbs: "crumbs" }, ngImport: i0, template: "<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n <div *ngFor=\"let crumb of crumbs\" class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'app-chr-breadcrumb', template: "<div class=\"w-full flex flex-row flex-wrap dark:!text-gray-400\">\n <div *ngFor=\"let crumb of crumbs\" class=\"w-fit min-w-fit\">\n <button class=\"dark:!text-gray-400\" [disabled]=\"!crumb.link && !crumb.callback\" mat-button\n (click)=\"crumb.callback?.() || crumb.link && navigateTo(crumb.link)\">\n {{ crumb.display }}\n </button>\n {{ (crumb.link || crumb.callback) && \">\" }}\n </div>\n</div>" }]
|
|
19
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { crumbs: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}] } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NocnYtY29tcG9uZW50cy9zcmMvbGliL2Noci1icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBY2pELE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFBbUIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFakMsZUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7SUFKa0MsQ0FBQzs7aUhBSDFCLG1CQUFtQjtxR0FBbkIsbUJBQW1CLHdGQ2RoQyx3YUFRTTs0RkRNTyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usb0JBQW9COzZGQUtyQixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkY3J1bWIge1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGxpbms/OiBzdHJpbmc7XG4gIGNhbGxiYWNrPzogRnVuY3Rpb247XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaHItYnJlYWRjcnVtYicsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY3J1bWJzOiBCcmVhZGNydW1iW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gIG5hdmlnYXRlVG8gPSAodXJpOiBzdHJpbmcsIGRhdGE/OiBhbnkpID0+IHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJpXSwgeyBzdGF0ZTogZGF0YSB9KTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAgZGFyazohdGV4dC1ncmF5LTQwMFwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBjcnVtYiBvZiBjcnVtYnNcIiBjbGFzcz1cInctZml0IG1pbi13LWZpdFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJkYXJrOiF0ZXh0LWdyYXktNDAwXCIgW2Rpc2FibGVkXT1cIiFjcnVtYi5saW5rICYmICFjcnVtYi5jYWxsYmFja1wiIG1hdC1idXR0b25cbiAgICAgIChjbGljayk9XCJjcnVtYi5jYWxsYmFjaz8uKCkgfHwgY3J1bWIubGluayAmJiBuYXZpZ2F0ZVRvKGNydW1iLmxpbmspXCI+XG4gICAgICB7eyBjcnVtYi5kaXNwbGF5IH19XG4gICAgPC9idXR0b24+XG4gICAge3sgKGNydW1iLmxpbmsgfHwgY3J1bWIuY2FsbGJhY2spICYmIFwiPlwiIH19XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/icon";
|
|
5
|
+
import * as i3 from "@angular/material/button";
|
|
6
|
+
export class ChrButtonComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.display = '';
|
|
9
|
+
this.icon = '';
|
|
10
|
+
this.color = 'none';
|
|
11
|
+
this.predicate = true;
|
|
12
|
+
this.type = 'none';
|
|
13
|
+
this.disabled = false;
|
|
14
|
+
this.setDisabled = (is) => {
|
|
15
|
+
this.disabled = is;
|
|
16
|
+
};
|
|
17
|
+
this.doClick = () => {
|
|
18
|
+
this.click?.();
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ChrButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChrButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
ChrButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ChrButtonComponent, selector: "app-chr-button", inputs: { display: "display", icon: "icon", click: "click", color: "color", predicate: "predicate", type: "type", href: "href", target: "target", disabled: "disabled" }, ngImport: i0, template: "<div class=\"grid\">\n <a\n mat-button\n mat-flat-button\n *ngIf=\"predicate\"\n [disabled]=\"disabled\"\n [ngClass]=\"\n type == 'full'\n ? 'grid grid-cols-1 flex-1 self-end content-end items-center justify-center !w-full'\n : ' '\n \"\n [ngClass]=\"type == 'table' ? 'h-14 grid grid-cols-1' : ''\"\n [ngClass]=\"type == 'fixed' ? 'h-14 grid grid-cols-1 w-36' : ''\"\n color=\"{{ color }}\"\n (click)=\"click?.()\"\n [attr.href]=\"href && href\"\n [attr.target]=\"target && target\"\n >\n {{ display }}\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\n-->\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }] });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChrButtonComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'app-chr-button', template: "<div class=\"grid\">\n <a\n mat-button\n mat-flat-button\n *ngIf=\"predicate\"\n [disabled]=\"disabled\"\n [ngClass]=\"\n type == 'full'\n ? 'grid grid-cols-1 flex-1 self-end content-end items-center justify-center !w-full'\n : ' '\n \"\n [ngClass]=\"type == 'table' ? 'h-14 grid grid-cols-1' : ''\"\n [ngClass]=\"type == 'fixed' ? 'h-14 grid grid-cols-1 w-36' : ''\"\n color=\"{{ color }}\"\n (click)=\"click?.()\"\n [attr.href]=\"href && href\"\n [attr.target]=\"target && target\"\n >\n {{ display }}\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n </a>\n</div>\n<!--\n IF\n Click\n color\n type: table : full \n icon\n-->\n" }]
|
|
27
|
+
}], ctorParameters: function () { return []; }, propDecorators: { display: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], icon: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], click: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], color: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], predicate: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], type: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], href: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], target: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], disabled: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItYnV0dG9uL2Noci1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWJ1dHRvbi9jaHItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU9qRCxNQUFNLE9BQU8sa0JBQWtCO0lBVzdCO1FBVlMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCLFVBQUssR0FBMkMsTUFBTSxDQUFDO1FBQ3ZELGNBQVMsR0FBYSxJQUFJLENBQUM7UUFDM0IsU0FBSSxHQUF3QyxNQUFNLENBQUM7UUFHbkQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUluQyxnQkFBVyxHQUFHLENBQUMsRUFBVyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBRUYsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQVJhLENBQUM7O2dIQVhMLGtCQUFrQjtvR0FBbEIsa0JBQWtCLGdPQ1AvQix3c0JBNkJBOzRGRHRCYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzBFQUtqQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hyLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaHItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hyLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaHJCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBkaXNwbGF5OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaWNvbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsaWNrPzogRnVuY3Rpb247XG4gIEBJbnB1dCgpIGNvbG9yOiAncHJpbWFyeScgfCAnYWNjZW50JyB8ICd3YXJuJyB8ICdub25lJyA9ICdub25lJztcbiAgQElucHV0KCkgcHJlZGljYXRlPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHR5cGU6ICd0YWJsZScgfCAnZnVsbCcgfCAnZml4ZWQnIHwgJ25vbmUnID0gJ25vbmUnO1xuICBASW5wdXQoKSBocmVmPzogc3RyaW5nO1xuICBASW5wdXQoKSB0YXJnZXQ6ICdfYmxhbmsnIHwgJ19wYXJlbnQnIHwgJ19zZWxmJyB8ICdfdG9wJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgc2V0RGlzYWJsZWQgPSAoaXM6IGJvb2xlYW4pID0+IHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXM7XG4gIH07XG5cbiAgZG9DbGljayA9ICgpID0+IHtcbiAgICB0aGlzLmNsaWNrPy4oKTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkXCI+XG4gIDxhXG4gICAgbWF0LWJ1dHRvblxuICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICpuZ0lmPVwicHJlZGljYXRlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgdHlwZSA9PSAnZnVsbCdcbiAgICAgICAgPyAnZ3JpZCBncmlkLWNvbHMtMSBmbGV4LTEgc2VsZi1lbmQgY29udGVudC1lbmQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyICF3LWZ1bGwnXG4gICAgICAgIDogJyAnXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJ0eXBlID09ICd0YWJsZScgPyAnaC0xNCBncmlkIGdyaWQtY29scy0xJyA6ICcnXCJcbiAgICBbbmdDbGFzc109XCJ0eXBlID09ICdmaXhlZCcgPyAnaC0xNCBncmlkIGdyaWQtY29scy0xIHctMzYnIDogJydcIlxuICAgIGNvbG9yPVwie3sgY29sb3IgfX1cIlxuICAgIChjbGljayk9XCJjbGljaz8uKClcIlxuICAgIFthdHRyLmhyZWZdPVwiaHJlZiAmJiBocmVmXCJcbiAgICBbYXR0ci50YXJnZXRdPVwidGFyZ2V0ICYmIHRhcmdldFwiXG4gID5cbiAgICB7eyBkaXNwbGF5IH19XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblwiPnt7IGljb24gfX08L21hdC1pY29uPlxuICA8L2E+XG48L2Rpdj5cbjwhLS1cbiAgICBJRlxuICAgIENsaWNrXG4gICAgY29sb3JcbiAgICB0eXBlOiB0YWJsZSA6IGZ1bGwgIFxuICAgIGljb25cbi0tPlxuIl19
|