desy-angular 12.1.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/desy-angular.module.mjs +10 -9
- package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +1 -1
- package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +15 -15
- package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +190 -0
- package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +34 -0
- package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +10 -8
- package/esm2022/lib/desy-forms/desy-forms.module.mjs +40 -24
- package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +4 -2
- package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/header/header.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +16 -0
- package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +6 -2
- package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +5 -3
- package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +3 -3
- package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +5 -1
- package/esm2022/lib/desy-nav/desy-nav.module.mjs +6 -5
- package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +2 -1
- package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +18 -19
- package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +2 -2
- package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +16 -8
- package/esm2022/lib/desy-tables/components/table/table.component.mjs +24 -4
- package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +9 -10
- package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +1 -5
- package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +11 -3
- package/esm2022/lib/desy-views/desy-views.module.mjs +27 -32
- package/esm2022/lib/shared/components/index.mjs +4 -3
- package/esm2022/lib/{desy-views → shared}/components/spinner/spinner.component.mjs +2 -2
- package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +21 -4
- package/esm2022/lib/shared/sharedExternal.module.mjs +24 -0
- package/esm2022/public-api.mjs +5 -2
- package/fesm2022/desy-angular.mjs +1128 -819
- package/fesm2022/desy-angular.mjs.map +1 -1
- package/lib/desy-angular.module.d.ts +2 -1
- package/lib/desy-buttons/desy-buttons.module.d.ts +3 -3
- package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +31 -0
- package/lib/desy-forms/components/datepicker/datepicker.pipe.d.ts +7 -0
- package/lib/desy-forms/components/tree/tree.component.d.ts +5 -4
- package/lib/desy-forms/desy-forms.module.d.ts +10 -6
- package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +2 -1
- package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +1 -1
- package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +1 -1
- package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +1 -1
- package/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.d.ts +8 -0
- package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +3 -1
- package/lib/desy-nav/components/links-list/links-list.component.d.ts +2 -1
- package/lib/desy-nav/desy-nav.module.d.ts +29 -28
- package/lib/desy-nav/interfaces/footer-logo.d.ts +1 -0
- package/lib/desy-pagination/components/pagination/pagination.component.d.ts +3 -3
- package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +3 -3
- package/lib/desy-pagination/desy-pagination.module.d.ts +3 -1
- package/lib/desy-tables/components/table/table.component.d.ts +3 -0
- package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +1 -1
- package/lib/desy-views/components/collapsible/collapsible.component.d.ts +5 -1
- package/lib/desy-views/desy-views.module.d.ts +30 -31
- package/lib/shared/components/index.d.ts +3 -2
- package/lib/{desy-views → shared}/components/spinner/spinner.component.d.ts +1 -1
- package/lib/shared/directives/custom-inner-content.directive.d.ts +3 -2
- package/lib/shared/sharedExternal.module.d.ts +8 -0
- package/package.json +2 -2
- package/public-api.d.ts +4 -1
- package/esm2022/lib/desy-pagination/interfaces/index.mjs +0 -2
- package/lib/desy-pagination/interfaces/index.d.ts +0 -1
|
@@ -12,6 +12,13 @@ import * as i2 from "../../../shared/directives/custom-inner-content.directive";
|
|
|
12
12
|
import * as i3 from "../../../shared/directives/accessibility-directive";
|
|
13
13
|
import * as i4 from "../../../shared/pipes/make-html-list.pipe";
|
|
14
14
|
export class TableComponent extends AccessibilityComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.extractedTexts = [];
|
|
18
|
+
}
|
|
19
|
+
handleContentExtracted(extractedText) {
|
|
20
|
+
this.extractedTexts.push(extractedText);
|
|
21
|
+
}
|
|
15
22
|
getCaptionClass() {
|
|
16
23
|
return this.captionComponent ? this.captionComponent.classes : this.captionClasses;
|
|
17
24
|
}
|
|
@@ -33,6 +40,7 @@ export class TableComponent extends AccessibilityComponent {
|
|
|
33
40
|
else if (this.foot) {
|
|
34
41
|
footCells = this.foot;
|
|
35
42
|
}
|
|
43
|
+
this.assignExtractedTextsToCells(footCells);
|
|
36
44
|
return footCells;
|
|
37
45
|
}
|
|
38
46
|
getRows() {
|
|
@@ -46,10 +54,22 @@ export class TableComponent extends AccessibilityComponent {
|
|
|
46
54
|
return rowList;
|
|
47
55
|
}
|
|
48
56
|
getRowCells(row) {
|
|
49
|
-
|
|
57
|
+
const cells = row instanceof TableRowComponent ? row.cells.toArray() : row;
|
|
58
|
+
this.assignExtractedTextsToCells(cells);
|
|
59
|
+
return cells;
|
|
60
|
+
}
|
|
61
|
+
assignExtractedTextsToCells(cells) {
|
|
62
|
+
let textIndex = 0;
|
|
63
|
+
cells.forEach(cell => {
|
|
64
|
+
if (this.extractedTexts[textIndex]) {
|
|
65
|
+
cell.header = this.extractedTexts[textIndex];
|
|
66
|
+
}
|
|
67
|
+
const colspan = cell.colspan || 1;
|
|
68
|
+
textIndex += colspan;
|
|
69
|
+
});
|
|
50
70
|
}
|
|
51
71
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "desy-table", inputs: { rows: "rows", head: "head", foot: "foot", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", classes: "classes", id: "id", wrapper: "wrapper" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableHeaderComponent }, { propertyName: "footerComponent", predicate: TableFooterComponent }, { propertyName: "rowComponentList", predicate: TableRowComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [desyAppAccessibility]=\"headerCell\">\n
|
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, selector: "desy-table", inputs: { rows: "rows", head: "head", foot: "foot", caption: "caption", captionClasses: "captionClasses", firstCellIsHeader: "firstCellIsHeader", classes: "classes", id: "id", wrapper: "wrapper" }, queries: [{ propertyName: "captionComponent", predicate: TableCaptionComponent }, { propertyName: "headerComponent", predicate: TableHeaderComponent }, { propertyName: "footerComponent", predicate: TableFooterComponent }, { propertyName: "rowComponentList", predicate: TableRowComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\" class=\"sr-only lg:not-sr-only\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [desyAppAccessibility]=\"headerCell\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text, parentComponent: this }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"block lg:table-row -mb-px lg:mb-0 text-left border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['block lg:table-cell before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.data-label]=\"footCell.header\"\n [desyAppAccessibility]=\"footCell\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
|
|
53
73
|
}
|
|
54
74
|
__decorate([
|
|
55
75
|
DesyContentChild(),
|
|
@@ -65,7 +85,7 @@ __decorate([
|
|
|
65
85
|
], TableComponent.prototype, "footerComponent", void 0);
|
|
66
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
67
87
|
type: Component,
|
|
68
|
-
args: [{ selector: 'desy-table', template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [desyAppAccessibility]=\"headerCell\">\n
|
|
88
|
+
args: [{ selector: 'desy-table', template: "<ng-template #tableContent>\n <table [class]=\"['c-table', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <caption *ngIf=\"caption || captionComponent\" [class]=\"getCaptionClass()\">\n <ng-container *desyCustomInnerContent=\"{ component: captionComponent, text: caption ? caption : null }\"></ng-container>\n </caption>\n <thead *ngIf=\"head || headerComponent\" class=\"sr-only lg:not-sr-only\">\n <tr class=\"border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let headerCell of getHeaderCells()\">\n <th scope=\"col\"\n [class]=\"['align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', headerCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(headerCell.colspan ? headerCell.colspan : null)\"\n [attr.rowspan]=\"(headerCell.rowspan ? headerCell.rowspan : null)\"\n [attr.id]=\"headerCell.id ? headerCell.id : null\"\n [desyAppAccessibility]=\"headerCell\">\n <ng-container *desyCustomInnerContent=\"{ component: headerCell, html: headerCell.html, text: headerCell.text, parentComponent: this }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of getRows(); index as rowIndex\" class=\"block lg:table-row -mb-px lg:mb-0 text-left border-t border-b border-neutral-base\">\n <ng-container *ngFor=\"let cell of getRowCells(row); first as isFirst; index as cellIndex\">\n <th *ngIf=\"firstCellIsHeader && isFirst; else elseTd\" scope=\"row\"\n [class]=\"['block lg:table-cell before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm align-top px-base py-sm text-left font-normal text-sm text-neutral-dark', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </th>\n <ng-template #elseTd>\n <td [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', cell.classes] | makeHtmlList\"\n [attr.colspan]=\"cell.colspan ? cell.colspan : null\"\n [attr.rowspan]=\"cell.rowspan ? cell.rowspan : null\"\n [attr.id]=\"cell.id ? cell.id : null\"\n [attr.data-label]=\"cell.header\"\n [desyAppAccessibility]=\"cell\">\n <ng-container *desyCustomInnerContent=\"{ component: cell, html: cell.html, text: cell.text }\"></ng-container>\n </td>\n </ng-template>\n </ng-container>\n </tr>\n </tbody>\n <tfoot *ngIf=\"foot || footerComponent\">\n <tr class=\"border-t-2 border-b border-neutral-base\">\n <ng-container *ngFor=\"let footCell of getFooterCells()\">\n <td scope=\"col\"\n [class]=\"['block lg:table-cell text-left before:block before:text-neutral-dark before:lg:hidden before:content-[attr(data-label)] before:text-sm px-base py-sm', footCell.classes] | makeHtmlList\"\n [attr.colspan]=\"(footCell.colspan ? footCell.colspan : null)\"\n [attr.rowspan]=\"(footCell.rowspan ? footCell.rowspan : null)\"\n [attr.id]=\"footCell.id ? footCell.id : null\"\n [attr.data-label]=\"footCell.header\"\n [desyAppAccessibility]=\"footCell\">\n <ng-container *desyCustomInnerContent=\"{ component: footCell, html: footCell.html, text: footCell.text }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n</ng-template>\n\n<div *ngIf=\"wrapper; else tableContent\" [class]=\"wrapper.classes\">\n <ng-container *ngTemplateOutlet=\"tableContent\"></ng-container>\n</div>\n" }]
|
|
69
89
|
}], propDecorators: { rows: [{
|
|
70
90
|
type: Input
|
|
71
91
|
}], head: [{
|
|
@@ -97,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
97
117
|
type: ContentChildren,
|
|
98
118
|
args: [TableRowComponent]
|
|
99
119
|
}] } });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFPckUsTUFBTSxPQUFPLGNBQWUsU0FBUSxzQkFBc0I7SUF1QnhELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNyRixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3BEO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BCLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQ3RELFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsRDthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN2QjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdELE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDM0M7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDckI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUVqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQWlDO1FBQzNDLE9BQU8sR0FBRyxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDdEUsQ0FBQzsrR0E1RFUsY0FBYzttR0FBZCxjQUFjLHlSQWFSLHFCQUFxQixrREFHckIsb0JBQW9CLGtEQUdwQixvQkFBb0IsbURBRXBCLGlCQUFpQixvRENwQ3BDLDJsSEFnRUE7O0FEckNFO0lBQUMsZ0JBQWdCLEVBQUU7OEJBQ3VDLHFCQUFxQjt3REFBQztBQUVoRjtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxvQkFBb0I7dURBQUM7QUFFN0U7SUFBQyxnQkFBZ0IsRUFBRTs4QkFDcUMsb0JBQW9CO3VEQUFDOzRGQW5CbEUsY0FBYztrQkFKMUIsU0FBUzsrQkFDRSxZQUFZOzhCQUtiLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHa0MsZ0JBQWdCO3NCQUF2RCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFHQyxlQUFlO3NCQUFyRCxlQUFlO3VCQUFDLG9CQUFvQjtnQkFHRSxlQUFlO3NCQUFyRCxlQUFlO3VCQUFDLG9CQUFvQjtnQkFFRCxnQkFBZ0I7c0JBQW5ELGVBQWU7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIElucHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXN5Q29udGVudENoaWxkIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XG5pbXBvcnQgeyBDZWxsRGF0YSwgV3JhcHBlckRhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlQ2FwdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jYXB0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlUm93Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLXJvdy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgcm93czogQXJyYXk8Q2VsbERhdGFbXT47XG4gIEBJbnB1dCgpIGhlYWQ6IENlbGxEYXRhW107XG4gIEBJbnB1dCgpIGZvb3Q6IENlbGxEYXRhW107XG4gIEBJbnB1dCgpIGNhcHRpb246IHN0cmluZztcbiAgQElucHV0KCkgY2FwdGlvbkNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgZmlyc3RDZWxsSXNIZWFkZXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgd3JhcHBlcjogV3JhcHBlckRhdGE7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlQ2FwdGlvbkNvbXBvbmVudCkgY2FwdGlvbkNvbXBvbmVudDogVGFibGVDYXB0aW9uQ29tcG9uZW50O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUhlYWRlckNvbXBvbmVudCkgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUhlYWRlckNvbXBvbmVudDtcbiAgXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUZvb3RlckNvbXBvbmVudCkgZm9vdGVyQ29tcG9uZW50OiBUYWJsZUZvb3RlckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlUm93Q29tcG9uZW50KSByb3dDb21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8VGFibGVSb3dDb21wb25lbnQ+O1xuXG4gIGdldENhcHRpb25DbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNhcHRpb25Db21wb25lbnQgPyB0aGlzLmNhcHRpb25Db21wb25lbnQuY2xhc3NlcyA6IHRoaXMuY2FwdGlvbkNsYXNzZXM7XG4gIH1cblxuICBnZXRIZWFkZXJDZWxscygpOiBUYWJsZUNlbGxDb21wb25lbnRbXXxDZWxsRGF0YVtdIHtcbiAgICBsZXQgaGVhZGVyQ2VsbHMgPSBbXTtcbiAgICBpZiAodGhpcy5oZWFkZXJDb21wb25lbnQgJiYgdGhpcy5oZWFkZXJDb21wb25lbnQuY2VsbHMpIHtcbiAgICAgIGhlYWRlckNlbGxzID0gdGhpcy5oZWFkZXJDb21wb25lbnQuY2VsbHMudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oZWFkKSB7XG4gICAgICBoZWFkZXJDZWxscyA9IHRoaXMuaGVhZDtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlckNlbGxzO1xuICB9XG5cbiAgZ2V0Rm9vdGVyQ2VsbHMoKTogVGFibGVDZWxsQ29tcG9uZW50W118Q2VsbERhdGFbXSB7XG4gICAgbGV0IGZvb3RDZWxscyA9IFtdO1xuICAgIGlmICh0aGlzLmZvb3RlckNvbXBvbmVudCAmJiB0aGlzLmZvb3RlckNvbXBvbmVudC5jZWxscykge1xuICAgICAgZm9vdENlbGxzID0gdGhpcy5mb290ZXJDb21wb25lbnQuY2VsbHMudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb290KSB7XG4gICAgICBmb290Q2VsbHMgPSB0aGlzLmZvb3Q7XG4gICAgfVxuICAgIHJldHVybiBmb290Q2VsbHM7XG4gIH1cbiAgXG4gIGdldFJvd3MoKSB7XG4gICAgbGV0IHJvd0xpc3QgPSBbXTtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0ICYmIHRoaXMucm93Q29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICByb3dMaXN0ID0gdGhpcy5yb3dDb21wb25lbnRMaXN0LnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucm93cykge1xuICAgICAgcm93TGlzdCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgcmV0dXJuIHJvd0xpc3Q7XG4gICAgLy90aGlzLnJvd0NvbXBvbmVudExpc3QgJiYgdGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpIDogdGhpcy5yb3dzO1xuICB9XG5cbiAgZ2V0Um93Q2VsbHMocm93OiBUYWJsZVJvd0NvbXBvbmVudHxDZWxsRGF0YVtdKTogVGFibGVDZWxsQ29tcG9uZW50W118Q2VsbERhdGFbXSB7XG4gICAgcmV0dXJuIHJvdyBpbnN0YW5jZW9mIFRhYmxlUm93Q29tcG9uZW50ID8gcm93LmNlbGxzLnRvQXJyYXkoKSA6IHJvdztcbiAgfVxuXG59XG5cbiIsIjxuZy10ZW1wbGF0ZSAjdGFibGVDb250ZW50PlxuICA8dGFibGUgW2NsYXNzXT1cIlsnYy10YWJsZScsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJ0aGlzXCI+XG4gICAgPGNhcHRpb24gKm5nSWY9XCJjYXB0aW9uIHx8IGNhcHRpb25Db21wb25lbnRcIiBbY2xhc3NdPVwiZ2V0Q2FwdGlvbkNsYXNzKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY2FwdGlvbkNvbXBvbmVudCwgdGV4dDogY2FwdGlvbiA/IGNhcHRpb24gOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2NhcHRpb24+XG4gICAgPHRoZWFkICpuZ0lmPVwiaGVhZCB8fCBoZWFkZXJDb21wb25lbnRcIj5cbiAgICAgIDx0ciBjbGFzcz1cImJvcmRlci10IGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGVhZGVyQ2VsbCBvZiBnZXRIZWFkZXJDZWxscygpXCI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHktc20gdGV4dC1sZWZ0IGZvbnQtbm9ybWFsIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmsnLCBoZWFkZXJDZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCIoaGVhZGVyQ2VsbC5jb2xzcGFuID8gIGhlYWRlckNlbGwuY29sc3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCIoaGVhZGVyQ2VsbC5yb3dzcGFuID8gaGVhZGVyQ2VsbC5yb3dzcGFuIDogbnVsbClcIlxuICAgICAgICAgICAgICBbYXR0ci5pZF09XCJoZWFkZXJDZWxsLmlkID8gaGVhZGVyQ2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwiaGVhZGVyQ2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBoZWFkZXJDZWxsLCBodG1sOiBoZWFkZXJDZWxsLmh0bWwsIHRleHQ6IGhlYWRlckNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZ2V0Um93cygpOyBpbmRleCBhcyByb3dJbmRleFwiIGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtYmFzZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNlbGwgb2YgZ2V0Um93Q2VsbHMocm93KTsgZmlyc3QgYXMgaXNGaXJzdDsgaW5kZXggYXMgY2VsbEluZGV4XCI+XG4gICAgICAgICAgICAgIDx0aCAqbmdJZj1cImZpcnN0Q2VsbElzSGVhZGVyICYmIGlzRmlyc3Q7IGVsc2UgZWxzZVRkXCIgc2NvcGU9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWxpZ24tdG9wIHB4LWJhc2UgcHktc20gdGV4dC1sZWZ0IGZvbnQtbm9ybWFsIHRleHQtc20gdGV4dC1uZXV0cmFsLWRhcmsnLCBjZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4gPyBjZWxsLnJvd3NwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjZWxsLmlkID8gY2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImNlbGxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNlbGwsIGh0bWw6IGNlbGwuaHRtbCwgdGV4dDogY2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgW2NsYXNzXT1cIlsncHgtYmFzZSBweS1zbScsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuID8gY2VsbC5yb3dzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjZWxsLCBodG1sOiBjZWxsLmh0bWwsIHRleHQ6IGNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICAgIDx0Zm9vdCAqbmdJZj1cImZvb3QgfHwgZm9vdGVyQ29tcG9uZW50XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdC0yIGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9vdENlbGwgb2YgZ2V0Rm9vdGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0ZCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ3B4LWJhc2UgcHktc20nLCBmb290Q2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGZvb3RDZWxsLmNvbHNwYW4gPyAgZm9vdENlbGwuY29sc3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCIoZm9vdENlbGwucm93c3BhbiA/IGZvb3RDZWxsLnJvd3NwYW4gOiBudWxsKVwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cImZvb3RDZWxsLmlkID8gZm9vdENlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImZvb3RDZWxsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGZvb3RDZWxsLCBodG1sOiBmb290Q2VsbC5odG1sLCB0ZXh0OiBmb290Q2VsbC50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgKm5nSWY9XCJ3cmFwcGVyOyBlbHNlIHRhYmxlQ29udGVudFwiIFtjbGFzc109XCJ3cmFwcGVyLmNsYXNzZXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS10YWJsZXMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXRhYmxlcy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFPckUsTUFBTSxPQUFPLGNBQWUsU0FBUSxzQkFBc0I7SUFKMUQ7O1FBMkJFLG1CQUFjLEdBQWEsRUFBRSxDQUFDO0tBMEQvQjtJQXhEQyxzQkFBc0IsQ0FBQyxhQUFxQjtRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJ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QUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdrQyxnQkFBZ0I7c0JBQXZELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdDLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUdFLGVBQWU7c0JBQXJELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVELGdCQUFnQjtzQkFBbkQsZUFBZTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IENlbGxEYXRhLCBXcmFwcGVyRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVDYXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWNhcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtcm93LmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSByb3dzOiBBcnJheTxDZWxsRGF0YVtdPjtcbiAgQElucHV0KCkgaGVhZDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgZm9vdDogQ2VsbERhdGFbXTtcbiAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjYXB0aW9uQ2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBmaXJzdENlbGxJc0hlYWRlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB3cmFwcGVyOiBXcmFwcGVyRGF0YTtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVDYXB0aW9uQ29tcG9uZW50KSBjYXB0aW9uQ29tcG9uZW50OiBUYWJsZUNhcHRpb25Db21wb25lbnQ7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlSGVhZGVyQ29tcG9uZW50KSBoZWFkZXJDb21wb25lbnQ6IFRhYmxlSGVhZGVyQ29tcG9uZW50O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUZvb3RlckNvbXBvbmVudCkgZm9vdGVyQ29tcG9uZW50OiBUYWJsZUZvb3RlckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmxlUm93Q29tcG9uZW50KSByb3dDb21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8VGFibGVSb3dDb21wb25lbnQ+O1xuXG4gIGV4dHJhY3RlZFRleHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGhhbmRsZUNvbnRlbnRFeHRyYWN0ZWQoZXh0cmFjdGVkVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5leHRyYWN0ZWRUZXh0cy5wdXNoKGV4dHJhY3RlZFRleHQpO1xuICB9XG5cbiAgZ2V0Q2FwdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdGlvbkNvbXBvbmVudCA/IHRoaXMuY2FwdGlvbkNvbXBvbmVudC5jbGFzc2VzIDogdGhpcy5jYXB0aW9uQ2xhc3NlcztcbiAgfVxuXG4gIGdldEhlYWRlckNlbGxzKCk6IFRhYmxlQ2VsbENvbXBvbmVudFtdIHwgQ2VsbERhdGFbXSB7XG4gICAgbGV0IGhlYWRlckNlbGxzID0gW107XG4gICAgaWYgKHRoaXMuaGVhZGVyQ29tcG9uZW50ICYmIHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzKSB7XG4gICAgICBoZWFkZXJDZWxscyA9IHRoaXMuaGVhZGVyQ29tcG9uZW50LmNlbGxzLnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhZCkge1xuICAgICAgaGVhZGVyQ2VsbHMgPSB0aGlzLmhlYWQ7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJDZWxscztcbiAgfVxuXG4gIGdldEZvb3RlckNlbGxzKCk6IFRhYmxlQ2VsbENvbXBvbmVudFtdIHwgQ2VsbERhdGFbXSB7XG4gICAgbGV0IGZvb3RDZWxscyA9IFtdO1xuICAgIGlmICh0aGlzLmZvb3RlckNvbXBvbmVudCAmJiB0aGlzLmZvb3RlckNvbXBvbmVudC5jZWxscykge1xuICAgICAgZm9vdENlbGxzID0gdGhpcy5mb290ZXJDb21wb25lbnQuY2VsbHMudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb290KSB7XG4gICAgICBmb290Q2VsbHMgPSB0aGlzLmZvb3Q7XG4gICAgfVxuICAgIHRoaXMuYXNzaWduRXh0cmFjdGVkVGV4dHNUb0NlbGxzKGZvb3RDZWxscyk7XG4gICAgcmV0dXJuIGZvb3RDZWxscztcbiAgfVxuXG4gIGdldFJvd3MoKSB7XG4gICAgbGV0IHJvd0xpc3QgPSBbXTtcbiAgICBpZiAodGhpcy5yb3dDb21wb25lbnRMaXN0ICYmIHRoaXMucm93Q29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICByb3dMaXN0ID0gdGhpcy5yb3dDb21wb25lbnRMaXN0LnRvQXJyYXkoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucm93cykge1xuICAgICAgcm93TGlzdCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgcmV0dXJuIHJvd0xpc3Q7XG4gICAgLy90aGlzLnJvd0NvbXBvbmVudExpc3QgJiYgdGhpcy5yb3dDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLnJvd0NvbXBvbmVudExpc3QudG9BcnJheSgpIDogdGhpcy5yb3dzO1xuICB9XG5cbiAgZ2V0Um93Q2VsbHMocm93OiBUYWJsZVJvd0NvbXBvbmVudCB8IENlbGxEYXRhW10pOiBUYWJsZUNlbGxDb21wb25lbnRbXSB8IENlbGxEYXRhW10ge1xuICAgIGNvbnN0IGNlbGxzID0gcm93IGluc3RhbmNlb2YgVGFibGVSb3dDb21wb25lbnQgPyByb3cuY2VsbHMudG9BcnJheSgpIDogcm93O1xuICAgIHRoaXMuYXNzaWduRXh0cmFjdGVkVGV4dHNUb0NlbGxzKGNlbGxzKTtcbiAgICByZXR1cm4gY2VsbHM7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkV4dHJhY3RlZFRleHRzVG9DZWxscyhjZWxsczogVGFibGVDZWxsQ29tcG9uZW50W10gfCBDZWxsRGF0YVtdKTogdm9pZCB7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgY2VsbHMuZm9yRWFjaChjZWxsID0+IHtcbiAgICAgIGlmICh0aGlzLmV4dHJhY3RlZFRleHRzW3RleHRJbmRleF0pIHtcbiAgICAgICAgY2VsbC5oZWFkZXIgPSB0aGlzLmV4dHJhY3RlZFRleHRzW3RleHRJbmRleF07XG4gICAgICB9XG4gICAgICBjb25zdCBjb2xzcGFuID0gY2VsbC5jb2xzcGFuIHx8IDE7XG4gICAgICB0ZXh0SW5kZXggKz0gY29sc3BhbjtcbiAgICB9KTtcbiAgfVxufVxuXG4iLCI8bmctdGVtcGxhdGUgI3RhYmxlQ29udGVudD5cbiAgPHRhYmxlIFtjbGFzc109XCJbJ2MtdGFibGUnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiXG4gICAgICAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwidGhpc1wiPlxuICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uQ29tcG9uZW50XCIgW2NsYXNzXT1cImdldENhcHRpb25DbGFzcygpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGNhcHRpb25Db21wb25lbnQsIHRleHQ6IGNhcHRpb24gPyBjYXB0aW9uIDogbnVsbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9jYXB0aW9uPlxuICAgIDx0aGVhZCAqbmdJZj1cImhlYWQgfHwgaGVhZGVyQ29tcG9uZW50XCIgY2xhc3M9XCJzci1vbmx5IGxnOm5vdC1zci1vbmx5XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRlckNlbGwgb2YgZ2V0SGVhZGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ2FsaWduLXRvcCBweC1iYXNlIHB5LXNtIHRleHQtbGVmdCBmb250LW5vcm1hbCB0ZXh0LXNtIHRleHQtbmV1dHJhbC1kYXJrJywgaGVhZGVyQ2VsbC5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGhlYWRlckNlbGwuY29sc3BhbiA/ICBoZWFkZXJDZWxsLmNvbHNwYW4gOiBudWxsKVwiXG4gICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiKGhlYWRlckNlbGwucm93c3BhbiA/IGhlYWRlckNlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaGVhZGVyQ2VsbC5pZCA/IGhlYWRlckNlbGwuaWQgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImhlYWRlckNlbGxcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBoZWFkZXJDZWxsLCBodG1sOiBoZWFkZXJDZWxsLmh0bWwsIHRleHQ6IGhlYWRlckNlbGwudGV4dCwgcGFyZW50Q29tcG9uZW50OiB0aGlzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBnZXRSb3dzKCk7IGluZGV4IGFzIHJvd0luZGV4XCIgY2xhc3M9XCJibG9jayBsZzp0YWJsZS1yb3cgLW1iLXB4IGxnOm1iLTAgdGV4dC1sZWZ0IGJvcmRlci10IGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjZWxsIG9mIGdldFJvd0NlbGxzKHJvdyk7IGZpcnN0IGFzIGlzRmlyc3Q7IGluZGV4IGFzIGNlbGxJbmRleFwiPlxuICAgICAgICAgICAgICA8dGggKm5nSWY9XCJmaXJzdENlbGxJc0hlYWRlciAmJiBpc0ZpcnN0OyBlbHNlIGVsc2VUZFwiIHNjb3BlPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJbJ2Jsb2NrIGxnOnRhYmxlLWNlbGwgYmVmb3JlOmJsb2NrIGJlZm9yZTp0ZXh0LW5ldXRyYWwtZGFyayBiZWZvcmU6bGc6aGlkZGVuIGJlZm9yZTpjb250ZW50LVthdHRyKGRhdGEtbGFiZWwpXSBiZWZvcmU6dGV4dC1zbSBhbGlnbi10b3AgcHgtYmFzZSBweS1zbSB0ZXh0LWxlZnQgZm9udC1ub3JtYWwgdGV4dC1zbSB0ZXh0LW5ldXRyYWwtZGFyaycsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjZWxsLmNvbHNwYW4gPyBjZWxsLmNvbHNwYW4gIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA/IGNlbGwucm93c3BhbiAgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImNlbGwuaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJjZWxsXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjZWxsLCBodG1sOiBjZWxsLmh0bWwsIHRleHQ6IGNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRkPlxuICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzc109XCJbJ2Jsb2NrIGxnOnRhYmxlLWNlbGwgdGV4dC1sZWZ0IGJlZm9yZTpibG9jayBiZWZvcmU6dGV4dC1uZXV0cmFsLWRhcmsgYmVmb3JlOmxnOmhpZGRlbiBiZWZvcmU6Y29udGVudC1bYXR0cihkYXRhLWxhYmVsKV0gYmVmb3JlOnRleHQtc20gcHgtYmFzZSBweS1zbScsIGNlbGwuY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID8gY2VsbC5jb2xzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiY2VsbC5yb3dzcGFuID8gY2VsbC5yb3dzcGFuICA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImNlbGwuaWQgPyBjZWxsLmlkIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjZWxsLmhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cImNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBjZWxsLCBodG1sOiBjZWxsLmh0bWwsIHRleHQ6IGNlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICAgIDx0Zm9vdCAqbmdJZj1cImZvb3QgfHwgZm9vdGVyQ29tcG9uZW50XCI+XG4gICAgICA8dHIgY2xhc3M9XCJib3JkZXItdC0yIGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9vdENlbGwgb2YgZ2V0Rm9vdGVyQ2VsbHMoKVwiPlxuICAgICAgICAgIDx0ZCBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJbJ2Jsb2NrIGxnOnRhYmxlLWNlbGwgdGV4dC1sZWZ0IGJlZm9yZTpibG9jayBiZWZvcmU6dGV4dC1uZXV0cmFsLWRhcmsgYmVmb3JlOmxnOmhpZGRlbiBiZWZvcmU6Y29udGVudC1bYXR0cihkYXRhLWxhYmVsKV0gYmVmb3JlOnRleHQtc20gcHgtYmFzZSBweS1zbScsIGZvb3RDZWxsLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCIoZm9vdENlbGwuY29sc3BhbiA/ICBmb290Q2VsbC5jb2xzcGFuIDogbnVsbClcIlxuICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIihmb290Q2VsbC5yb3dzcGFuID8gZm9vdENlbGwucm93c3BhbiA6IG51bGwpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZm9vdENlbGwuaWQgPyBmb290Q2VsbC5pZCA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImZvb3RDZWxsLmhlYWRlclwiXG4gICAgICAgICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJmb290Q2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBmb290Q2VsbCwgaHRtbDogZm9vdENlbGwuaHRtbCwgdGV4dDogZm9vdENlbGwudGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGZvb3Q+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2ICpuZ0lmPVwid3JhcHBlcjsgZWxzZSB0YWJsZUNvbnRlbnRcIiBbY2xhc3NdPVwid3JhcHBlci5jbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|