@eo-sdk/client 11.14.19 → 11.14.21
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/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +2 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +9 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +18 -0
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +5 -2
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-links/object-links.component.d.ts.map +1 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +7 -4
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +80 -9
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +193 -11
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +31 -14
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +14 -3
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +6 -6
- package/fesm2022/eo-sdk-client.mjs +329 -46
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -151,9 +151,20 @@ export class ObjectLinksComponent {
|
|
|
151
151
|
entry.folder.forEach(entry2Layer => {
|
|
152
152
|
query.filters[entry2Layer.referencefield] = {
|
|
153
153
|
o: 'in',
|
|
154
|
-
v1: [
|
|
154
|
+
v1: Array.isArray(entry2Layer.referencevalue) ? entry2Layer.referencevalue : [entry2Layer.referencevalue]
|
|
155
155
|
};
|
|
156
156
|
});
|
|
157
|
+
let superQuery = {
|
|
158
|
+
term: '',
|
|
159
|
+
options: {
|
|
160
|
+
expertmode: true
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
Object.keys(query.filters)
|
|
164
|
+
.forEach(filterName => superQuery.term += this.createSuperQueryTermPart(query, filterName));
|
|
165
|
+
superQuery.term = superQuery.term.replace(new RegExp(',', 'g'), ' '); // replace all ',' with ' '
|
|
166
|
+
superQuery.term = superQuery.term.replace(new RegExp(' OR ' + '$'), ''); // remove last ' OR '
|
|
167
|
+
return `result?query=${encodeURIComponent(JSON.stringify(superQuery))}`;
|
|
157
168
|
}
|
|
158
169
|
else {
|
|
159
170
|
query.options.expertmode = true;
|
|
@@ -163,8 +174,8 @@ export class ObjectLinksComponent {
|
|
|
163
174
|
query.term += ' || ';
|
|
164
175
|
}
|
|
165
176
|
}
|
|
177
|
+
return `result?query=${encodeURIComponent(JSON.stringify(query))}`;
|
|
166
178
|
}
|
|
167
|
-
return `result?query=${encodeURIComponent(JSON.stringify(query))}`;
|
|
168
179
|
}
|
|
169
180
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectLinksComponent, deps: [{ token: i1.ReferenceService }, { token: i2.AppCacheService }, { token: i2.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
170
181
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"result-list-link\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\">\n <eo-icon class=\"icon\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\" [iconTitle]=\"('eo.references.open.resultlist' | translate)\"></eo-icon>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of inReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"getObjectType(entry1Layer.type)\"\n [itemAmount]=\"entry1Layer.count\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n @for (entry3Layer of entry2Layer.folder; track entry3Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry3Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry3Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry3Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.title}}\n </div>\n </div>\n }\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of outReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"entry1Layer.objectType\"\n [itemAmount]=\"entry1Layer.folder.length\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry2Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry2Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry2Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.fieldLabel}}\n </div>\n </div>\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .result-list-link{text-decoration:none;color:inherit}.eo-references .form-buttons .result-list-link:hover{color:var(--color-accent)}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists main{grid-area:main}.eo-references .eo-references-lists main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%;overflow:auto}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList eo-simple-accordion{margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-right:calc(var(--app-pane-padding) / 2)}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-bottom:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:calc(var(--app-pane-padding) / 2)}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i6.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "iconObjectType", "itemAmount", "resultListLink", "selected", "item"], outputs: ["selectChange"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
|
|
@@ -176,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
176
187
|
type: Input,
|
|
177
188
|
args: ['dmsObject']
|
|
178
189
|
}] } });
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL29iamVjdC1saW5rcy9vYmplY3QtbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWxpbmtzL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVE5QixNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQ2hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBb0IsZ0JBQWtDLEVBQzVDLEtBQXNCLEVBQ3RCLGFBQTRCO1FBRmxCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDNUMsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFwQnRDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUV0QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFhaEIsQ0FBQztJQUVELHNCQUFzQixDQUFDLElB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QUFDO2dCQUMxQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sZ0JBQWdCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BFLENBQUM7OEdBL0tVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDJGQ1hqQyx3akpBc0dBOzsyRkQzRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjsrSUFrQnZCLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcmVmZXJlbmNlcy9yZWZlcmVuY2Uuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgQXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtmb3JrSm9pbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1saW5rcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtbGlua3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtbGlua3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RMaW5rc0NvbXBvbmVudCB7XG5cbiAgaXRlbTogRG1zT2JqZWN0O1xuICBpblJlZmVyZW5jZXMgPSBbXTtcbiAgb3V0UmVmZXJlbmNlcyA9IFtdO1xuICBxdWVyaWVzO1xuICBzdXBlclF1ZXJ5UGFyYW1zID0ge307XG5cbiAgc2hvd0luUmVmZXJlbmNlcyA9IHRydWU7XG4gIHNob3dPdXRSZWZlcmVuY2VzID0gZmFsc2U7XG5cbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZG1zT2JqZWN0JylcbiAgc2V0IGRtc09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIHRoaXMuaXRlbSA9IGRtc09iamVjdDtcbiAgICAgIHRoaXMuaW5pdChkbXNPYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcbiAgICBwcml2YXRlIGNhY2hlOiBBcHBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlKSB7XG4gIH1cblxuICBzd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKGxpc3Q6ICdpbicgfCAnb3V0Jykge1xuICAgIGlmIChsaXN0ID09PSAnaW4nKSB7XG4gICAgICB0aGlzLnNob3dJblJlZmVyZW5jZXMgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93T3V0UmVmZXJlbmNlcyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dJblJlZmVyZW5jZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd091dFJlZmVyZW5jZXMgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmNhY2hlLnNldEl0ZW0oJ3l1di5yZWZlcmVuY2UubGlzdC5zaG93LicgKyB0aGlzLml0ZW0udHlwZU5hbWUsIGxpc3QpO1xuICB9XG5cbiAgZ2V0T2JqZWN0VHlwZShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUobmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoaXRlbSkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jYWNoZS5nZXRJdGVtKCd5dXYucmVmZXJlbmNlLmxpc3Quc2hvdy4nICsgaXRlbS50eXBlTmFtZSkuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLnN3aXRjaExpc3RWaXNpYmlsaXR5VG8ocmVzKSk7XG4gICAgY29uc3Qgb2JzID0gW1xuICAgICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlLmdldEluUmVmZXJlbmNlcyhpdGVtKSxcbiAgICAgIHRoaXMucmVmZXJlbmNlU2VydmljZS5nZXRPdXRSZWZlcmVuY2VzKGl0ZW0pXG4gICAgXTtcbiAgICBmb3JrSm9pbihvYnMpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHRzOiBhbnlbXVtdKSA9PiB7XG4gICAgICAgIFt0aGlzLmluUmVmZXJlbmNlcywgdGhpcy5vdXRSZWZlcmVuY2VzXSA9IHJlc3VsdHM7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3Ioe2Vycm9yfSk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZVNlcnZpY2VcbiAgICAgIC5nZXRRdWVyaWVzKGl0ZW0pXG4gICAgICAuc3Vic2NyaWJlKHF1ZXJpZXMgPT4ge1xuICAgICAgICB0aGlzLnF1ZXJpZXMgPSBxdWVyaWVzO1xuICAgICAgICBjb25zdCBzdXBlclF1ZXJ5ID0gdGhpcy5jcmVhdGVTdXBlclF1ZXJ5RnJvbVF1ZXJpZXModGhpcy5xdWVyaWVzKTtcbiAgICAgICAgdGhpcy5zdXBlclF1ZXJ5UGFyYW1zID0geydxdWVyeSc6IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzdXBlclF1ZXJ5KSksICdzaWxlbnQnOiB0cnVlfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdXBlclF1ZXJ5RnJvbVF1ZXJpZXMocXVlcmllcykge1xuICAgIGxldCBzdXBlclF1ZXJ5ID0ge1xuICAgICAgdGVybTogJycsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGV4cGVydG1vZGU6IHRydWVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcXVlcmllcy5vdXRSZWZlcmVuY2VRdWVyaWVzLmZvckVhY2gocXVlcnkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5LmZpbHRlcnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMocXVlcnkuZmlsdGVycylcbiAgICAgICAgICAuZm9yRWFjaChmaWx0ZXJOYW1lID0+IHN1cGVyUXVlcnkudGVybSArPSB0aGlzLmNyZWF0ZVN1cGVyUXVlcnlUZXJtUGFydChxdWVyeSwgZmlsdGVyTmFtZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXJRdWVyeS50ZXJtICs9ICcoJyArIHF1ZXJ5LnRlcm0gKyAnKScgKyAnIE9SICc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBxdWVyaWVzLmluUmVmZXJlbmNlUXVlcmllcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5LmZpbHRlcnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMocXVlcnkuZmlsdGVycylcbiAgICAgICAgICAuZm9yRWFjaChmaWx0ZXJOYW1lID0+IHN1cGVyUXVlcnkudGVybSArPSB0aGlzLmNyZWF0ZVN1cGVyUXVlcnlUZXJtUGFydChxdWVyeSwgZmlsdGVyTmFtZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXJRdWVyeS50ZXJtICs9IHF1ZXJ5LnRlcm07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzdXBlclF1ZXJ5LnRlcm0gPSBzdXBlclF1ZXJ5LnRlcm0ucmVwbGFjZShuZXcgUmVnRXhwKCcsJywgJ2cnKSwgJyAnKTsgLy8gcmVwbGFjZSBhbGwgJywnIHdpdGggJyAnXG4gICAgc3VwZXJRdWVyeS50ZXJtID0gc3VwZXJRdWVyeS50ZXJtLnJlcGxhY2UobmV3IFJlZ0V4cCgnIE9SICcgKyAnJCcpLCAnJyk7IC8vIHJlbW92ZSBsYXN0ICcgT1IgJ1xuXG4gICAgcmV0dXJuIHN1cGVyUXVlcnk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1cGVyUXVlcnlUZXJtUGFydChxdWVyeSwgZmlsdGVyTmFtZSkge1xuICAgIC8vIHJlc2VydmVkIGNoYXJhY3RlcnMgb2YgZWxhc3RpYyBzZWFyY2hcbiAgICAvLyB0b2RvOiBhZGQgJ3x8J1xuICAgIGNvbnN0IHJlc2VydmVkQ2hhcnMgPSBbJ1xcXFwnLCAnLycsICdcXCsnLCAnLScsICc9JywgJyYmJywgJz4nLCAnPCcsICchJywgJ1xcKCcsICdcXCknLCAnXFx7JywgJ1xcfScsICdcXFsnLCAnXFxdJywgJ1xcXicsICdcIicsICdcXH4nLCAnXFwqJywgJ1xcPycsICc6J107XG5cbiAgICBjb25zdCBmaWx0ZXIgPSBxdWVyeS5maWx0ZXJzW2ZpbHRlck5hbWVdO1xuICAgIGxldCB2YWx1ZSA9ICcnICsgZmlsdGVyLnYxICsgJyc7XG4gICAgcmVzZXJ2ZWRDaGFycy5mb3JFYWNoKGNoYXIgPT4ge1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoY2hhcikgPiAtMSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXCcgKyBjaGFyLCAnZycpLCAnXFxcXCcgKyBjaGFyKTsgLy8gZXNjYXBlcyBhbGwgcmVzZXJ2ZWQgY2hhcmFjdGVyc1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCB0eXBlcyA9IHRoaXMuZ2V0U3ViVHlwZXMocXVlcnkudHlwZXNbMF0pO1xuICAgIHR5cGVzLnB1c2gocXVlcnkudHlwZXNbMF0pO1xuICAgIGxldCBpbmRleE5hbWUgPSB0aGlzLmdldEluZGV4TmFtZUJ5UU5hbWUoZmlsdGVyTmFtZSk7XG4gICAgaWYgKCFpbmRleE5hbWUpIHtcbiAgICAgIGluZGV4TmFtZSA9ICdzdHJfJyArIGZpbHRlck5hbWUucmVwbGFjZSgnLicsICdfJyk7XG4gICAgfVxuICAgIHJldHVybiAnKCcgKyBpbmRleE5hbWUgKyAnOignICsgdmFsdWUgKyAnKSBBTkQga2V5X3R5cGU6KCcgKyB0eXBlcyArICcpKSBPUiAnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleE5hbWVCeVFOYW1lKHFuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGVzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHR5cGVzW2ldLmVsZW1lbnRzLmZpbmQoZWwgPT4gZWwucW5hbWUgPT09IHFuYW1lKTtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmluZGV4bmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldFN1YlR5cGVzKHR5cGVOYW1lKSB7XG4gICAgbGV0IHR5cGVzID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGVzKCk7XG4gICAgbGV0IHN1YlR5cGVzID0gW107XG4gICAgdHlwZXMuZm9yRWFjaChvYmplY3RUeXBlID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9ICEhb2JqZWN0VHlwZS5zdXBlcnR5cGVzLmZpbmQoKHQ6IGFueSkgPT4gdC5uYW1lID09PSB0eXBlTmFtZSk7XG4gICAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICAgIHN1YlR5cGVzLnB1c2gob2JqZWN0VHlwZS5xbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHN1YlR5cGVzO1xuICB9XG5cbiAgbmF2aWdhdGVUb1JlZmVyZW5jZShldmVudCwgZW50cnkpIHtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgvb2JqZWN0fHJlc3VsdHxmYXZvcml0ZXN8aW5ib3h8cHJvY2Vzc3xub3RpZmljYXRpb25zfHJlY3ljbGViaW4vKVswXSArICdvYmplY3QvJyArIGVudHJ5Py5pZDtcbiAgICB3aW5kb3cub3Blbih1cmwsIChldmVudCAmJiBldmVudD8uY3RybEtleSkgPyAnX2JsYW5rJyA6ICdfc2VsZicpO1xuICB9XG5cbiAgZ2V0U2VhcmNoTGluayhlbnRyeSkge1xuICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgZmlsdGVyczoge30sXG4gICAgICB0eXBlczogW3RoaXMuc2hvd0luUmVmZXJlbmNlcyA/IGVudHJ5LnR5cGUgOiBlbnRyeS5vYmplY3RUeXBlPy5xbmFtZV0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGV4cGVydG1vZGU6IGZhbHNlXG4gICAgICB9LFxuICAgICAgdGVybTogJydcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0luUmVmZXJlbmNlcykge1xuICAgICAgZW50cnkuZm9sZGVyLmZvckVhY2goZW50cnkyTGF5ZXIgPT4ge1xuICAgICAgICBxdWVyeS5maWx0ZXJzW2VudHJ5MkxheWVyLnJlZmVyZW5jZWZpZWxkXSA9IHtcbiAgICAgICAgICBvOiAnaW4nLFxuICAgICAgICAgIHYxOiBbdGhpcy5pdGVtLmlkXVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnkub3B0aW9ucy5leHBlcnRtb2RlID0gdHJ1ZTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50cnkuZm9sZGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHF1ZXJ5LnRlcm0gKz0gJ19pZDonICsgZW50cnkuZm9sZGVyW2ldLmlkO1xuICAgICAgICBpZiAoaSAhPT0gZW50cnkuZm9sZGVyLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBxdWVyeS50ZXJtICs9ICcgfHwgJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBgcmVzdWx0P3F1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHF1ZXJ5KSl9YFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tcmVmZXJlbmNlc1wiPlxuICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5vdC1mb3VuZFwiICpuZ0lmPVwiIWluUmVmZXJlbmNlcz8ubGVuZ3RoICYmICFvdXRSZWZlcmVuY2VzPy5sZW5ndGg7IGVsc2UgcmVmQ29udGFpbmVyXCI+XG4gICAgPGRpdj57eydlby5yZWZlcmVuY2VzLm9iamVjdC5ub3Rmb3VuZCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI3JlZkNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1idXR0b25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZGxhYmVsc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkbGFiZWxcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNob3dJblJlZmVyZW5jZXN9XCIgKGNsaWNrKT1cInN3aXRjaExpc3RWaXNpYmlsaXR5VG8oJ2luJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5yZWZlcmVuY2VzLnRvLmxhYmVsJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J2VvLnJlZmVyZW5jZXMudG8ubGFiZWwnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRsYWJlbFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2hvd091dFJlZmVyZW5jZXN9XCIgKGNsaWNrKT1cInN3aXRjaExpc3RWaXNpYmlsaXR5VG8oJ291dCcpXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3snZW8ucmVmZXJlbmNlcy5mcm9tLmxhYmVsJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J2VvLnJlZmVyZW5jZXMuZnJvbS5sYWJlbCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGEgY2xhc3M9XCJyZXN1bHQtbGlzdC1saW5rXCIgW3JvdXRlckxpbmtdPVwiJy9yZXN1bHQnXCIgW3F1ZXJ5UGFyYW1zXT1cInN1cGVyUXVlcnlQYXJhbXNcIj5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJpY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3Blbl90YWIuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5yZWZlcmVuY2VzLm9wZW4ucmVzdWx0bGlzdCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVvLXJlZmVyZW5jZXMtbGlzdHNcIj5cblxuICAgICAgPCEtLSBsaXN0IG9mIGluUmVmZXJlbmNlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRsaXN0LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogIXNob3dJblJlZmVyZW5jZXN9XCI+XG4gICAgICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICAgIDxtYWluIGNsYXNzPVwibG9hZGVyLW92ZXJsYXlfX21hc2tcIj5cbiAgICAgICAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ2xhcmdlJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgfSBAZWxzZSBpZiAoaW5SZWZlcmVuY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVmZXJlbmNlTGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoZW50cnkxTGF5ZXIgb2YgaW5SZWZlcmVuY2VzOyB0cmFjayBlbnRyeTFMYXllcikge1xuICAgICAgICAgICAgICA8ZW8tc2ltcGxlLWFjY29yZGlvblxuICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiZW50cnkxTGF5ZXIudGl0bGVcIlxuICAgICAgICAgICAgICAgIFtpY29uT2JqZWN0VHlwZV09XCJnZXRPYmplY3RUeXBlKGVudHJ5MUxheWVyLnR5cGUpXCJcbiAgICAgICAgICAgICAgICBbaXRlbUFtb3VudF09XCJlbnRyeTFMYXllci5jb3VudFwiXG4gICAgICAgICAgICAgICAgW3Jlc3VsdExpc3RMaW5rXT1cImdldFNlYXJjaExpbmsoZW50cnkxTGF5ZXIpXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoZW50cnkyTGF5ZXIgb2YgZW50cnkxTGF5ZXIuZm9sZGVyOyB0cmFjayBlbnRyeTJMYXllcikge1xuICAgICAgICAgICAgICAgICAgQGZvciAoZW50cnkzTGF5ZXIgb2YgZW50cnkyTGF5ZXIuZm9sZGVyOyB0cmFjayBlbnRyeTNMYXllcikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUmVmZXJlbmNlKCRldmVudCwgZW50cnkzTGF5ZXIpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbnRyeTNMYXllcj8udGl0bGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VudHJ5M0xheWVyPy5kZXNjcmlwdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbW90ZS1lbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydlby5yZWZlcmVuY2VzLmZpZWxkLmxhYmVsJyB8IHRyYW5zbGF0ZX19IHt7ZW50cnkyTGF5ZXIudGl0bGV9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGZvdW5kXCI+e3snZW8ucmVmZXJlbmNlcy5vYmplY3Qubm90Zm91bmQnIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gbGlzdCBvZiBvdXRSZWZlcmVuY2VzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdGxpc3QtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiAhc2hvd091dFJlZmVyZW5jZXN9XCI+XG4gICAgICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICAgIDxtYWluIGNsYXNzPVwibG9hZGVyLW92ZXJsYXlfX21hc2tcIj5cbiAgICAgICAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ2xhcmdlJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgfSBAZWxzZSBpZiAob3V0UmVmZXJlbmNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZmVyZW5jZUxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5MUxheWVyIG9mIG91dFJlZmVyZW5jZXM7IHRyYWNrIGVudHJ5MUxheWVyKSB7XG4gICAgICAgICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uXG4gICAgICAgICAgICAgICAgW2hlYWRlcl09XCJlbnRyeTFMYXllci50aXRsZVwiXG4gICAgICAgICAgICAgICAgW2ljb25PYmplY3RUeXBlXT1cImVudHJ5MUxheWVyLm9iamVjdFR5cGVcIlxuICAgICAgICAgICAgICAgIFtpdGVtQW1vdW50XT1cImVudHJ5MUxheWVyLmZvbGRlci5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtyZXN1bHRMaXN0TGlua109XCJnZXRTZWFyY2hMaW5rKGVudHJ5MUxheWVyKVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5MkxheWVyIG9mIGVudHJ5MUxheWVyLmZvbGRlcjsgdHJhY2sgZW50cnkyTGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9SZWZlcmVuY2UoJGV2ZW50LCBlbnRyeTJMYXllcilcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VudHJ5MkxheWVyPy50aXRsZX19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2VudHJ5MkxheWVyPy5kZXNjcmlwdGlvbn19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3RlLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eydlby5yZWZlcmVuY2VzLmZpZWxkLmxhYmVsJyB8IHRyYW5zbGF0ZX19IHt7ZW50cnkyTGF5ZXIuZmllbGRMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3Rmb3VuZFwiPnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL29iamVjdC1saW5rcy9vYmplY3QtbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWxpbmtzL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVE5QixNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLElBQ0ksU0FBUyxDQUFDLFNBQW9CO1FBQ2hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBb0IsZ0JBQWtDLEVBQzVDLEtBQXNCLEVBQ3RCLGFBQTRCO1FBRmxCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDNUMsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFwQnRDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUV0QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFhaEIsQ0FBQztJQUVELHNCQUFzQixDQUFDLElB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RkNYakMsd2pKQXNHQTs7MkZEM0ZhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7K0lBa0J2QixTQUFTO3NCQURaLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3JlZmVyZW5jZXMvcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtEbXNPYmplY3QsIEFwcENhY2hlU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7Zm9ya0pvaW59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1vYmplY3QtbGlua3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWxpbmtzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWxpbmtzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TGlua3NDb21wb25lbnQge1xuXG4gIGl0ZW06IERtc09iamVjdDtcbiAgaW5SZWZlcmVuY2VzID0gW107XG4gIG91dFJlZmVyZW5jZXMgPSBbXTtcbiAgcXVlcmllcztcbiAgc3VwZXJRdWVyeVBhcmFtcyA9IHt9O1xuXG4gIHNob3dJblJlZmVyZW5jZXMgPSB0cnVlO1xuICBzaG93T3V0UmVmZXJlbmNlcyA9IGZhbHNlO1xuXG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoJ2Rtc09iamVjdCcpXG4gIHNldCBkbXNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICB0aGlzLml0ZW0gPSBkbXNPYmplY3Q7XG4gICAgICB0aGlzLmluaXQoZG1zT2JqZWN0KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmVyZW5jZVNlcnZpY2U6IFJlZmVyZW5jZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSkge1xuICB9XG5cbiAgc3dpdGNoTGlzdFZpc2liaWxpdHlUbyhsaXN0OiAnaW4nIHwgJ291dCcpIHtcbiAgICBpZiAobGlzdCA9PT0gJ2luJykge1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd091dFJlZmVyZW5jZXMgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dPdXRSZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5jYWNoZS5zZXRJdGVtKCd5dXYucmVmZXJlbmNlLmxpc3Quc2hvdy4nICsgdGhpcy5pdGVtLnR5cGVOYW1lLCBsaXN0KTtcbiAgfVxuXG4gIGdldE9iamVjdFR5cGUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKG5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KGl0ZW0pIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2FjaGUuZ2V0SXRlbSgneXV2LnJlZmVyZW5jZS5saXN0LnNob3cuJyArIGl0ZW0udHlwZU5hbWUpLnN1YnNjcmliZShyZXMgPT4gdGhpcy5zd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKHJlcykpO1xuICAgIGNvbnN0IG9icyA9IFtcbiAgICAgIHRoaXMucmVmZXJlbmNlU2VydmljZS5nZXRJblJlZmVyZW5jZXMoaXRlbSksXG4gICAgICB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZ2V0T3V0UmVmZXJlbmNlcyhpdGVtKVxuICAgIF07XG4gICAgZm9ya0pvaW4ob2JzKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0czogYW55W11bXSkgPT4ge1xuICAgICAgICBbdGhpcy5pblJlZmVyZW5jZXMsIHRoaXMub3V0UmVmZXJlbmNlc10gPSByZXN1bHRzO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKHtlcnJvcn0pO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlXG4gICAgICAuZ2V0UXVlcmllcyhpdGVtKVxuICAgICAgLnN1YnNjcmliZShxdWVyaWVzID0+IHtcbiAgICAgICAgdGhpcy5xdWVyaWVzID0gcXVlcmllcztcbiAgICAgICAgY29uc3Qgc3VwZXJRdWVyeSA9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeUZyb21RdWVyaWVzKHRoaXMucXVlcmllcyk7XG4gICAgICAgIHRoaXMuc3VwZXJRdWVyeVBhcmFtcyA9IHsncXVlcnknOiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc3VwZXJRdWVyeSkpLCAnc2lsZW50JzogdHJ1ZX07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VwZXJRdWVyeUZyb21RdWVyaWVzKHF1ZXJpZXMpIHtcbiAgICBsZXQgc3VwZXJRdWVyeSA9IHtcbiAgICAgIHRlcm06ICcnLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBleHBlcnRtb2RlOiB0cnVlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHF1ZXJpZXMub3V0UmVmZXJlbmNlUXVlcmllcy5mb3JFYWNoKHF1ZXJ5ID0+IHtcbiAgICAgIGlmIChxdWVyeS5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5LmZpbHRlcnMpXG4gICAgICAgICAgLmZvckVhY2goZmlsdGVyTmFtZSA9PiBzdXBlclF1ZXJ5LnRlcm0gKz0gdGhpcy5jcmVhdGVTdXBlclF1ZXJ5VGVybVBhcnQocXVlcnksIGZpbHRlck5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyUXVlcnkudGVybSArPSAnKCcgKyBxdWVyeS50ZXJtICsgJyknICsgJyBPUiAnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcXVlcmllcy5pblJlZmVyZW5jZVF1ZXJpZXMuZm9yRWFjaCgocXVlcnkpID0+IHtcbiAgICAgIGlmIChxdWVyeS5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5LmZpbHRlcnMpXG4gICAgICAgICAgLmZvckVhY2goZmlsdGVyTmFtZSA9PiBzdXBlclF1ZXJ5LnRlcm0gKz0gdGhpcy5jcmVhdGVTdXBlclF1ZXJ5VGVybVBhcnQocXVlcnksIGZpbHRlck5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyUXVlcnkudGVybSArPSBxdWVyeS50ZXJtO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3VwZXJRdWVyeS50ZXJtID0gc3VwZXJRdWVyeS50ZXJtLnJlcGxhY2UobmV3IFJlZ0V4cCgnLCcsICdnJyksICcgJyk7IC8vIHJlcGxhY2UgYWxsICcsJyB3aXRoICcgJ1xuICAgIHN1cGVyUXVlcnkudGVybSA9IHN1cGVyUXVlcnkudGVybS5yZXBsYWNlKG5ldyBSZWdFeHAoJyBPUiAnICsgJyQnKSwgJycpOyAvLyByZW1vdmUgbGFzdCAnIE9SICdcblxuICAgIHJldHVybiBzdXBlclF1ZXJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdXBlclF1ZXJ5VGVybVBhcnQocXVlcnksIGZpbHRlck5hbWUpIHtcbiAgICAvLyByZXNlcnZlZCBjaGFyYWN0ZXJzIG9mIGVsYXN0aWMgc2VhcmNoXG4gICAgLy8gdG9kbzogYWRkICd8fCdcbiAgICBjb25zdCByZXNlcnZlZENoYXJzID0gWydcXFxcJywgJy8nLCAnXFwrJywgJy0nLCAnPScsICcmJicsICc+JywgJzwnLCAnIScsICdcXCgnLCAnXFwpJywgJ1xceycsICdcXH0nLCAnXFxbJywgJ1xcXScsICdcXF4nLCAnXCInLCAnXFx+JywgJ1xcKicsICdcXD8nLCAnOiddO1xuXG4gICAgY29uc3QgZmlsdGVyID0gcXVlcnkuZmlsdGVyc1tmaWx0ZXJOYW1lXTtcbiAgICBsZXQgdmFsdWUgPSAnJyArIGZpbHRlci52MSArICcnO1xuICAgIHJlc2VydmVkQ2hhcnMuZm9yRWFjaChjaGFyID0+IHtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGNoYXIpID4gLTEpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwnICsgY2hhciwgJ2cnKSwgJ1xcXFwnICsgY2hhcik7IC8vIGVzY2FwZXMgYWxsIHJlc2VydmVkIGNoYXJhY3RlcnNcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgdHlwZXMgPSB0aGlzLmdldFN1YlR5cGVzKHF1ZXJ5LnR5cGVzWzBdKTtcbiAgICB0eXBlcy5wdXNoKHF1ZXJ5LnR5cGVzWzBdKTtcbiAgICBsZXQgaW5kZXhOYW1lID0gdGhpcy5nZXRJbmRleE5hbWVCeVFOYW1lKGZpbHRlck5hbWUpO1xuICAgIGlmICghaW5kZXhOYW1lKSB7XG4gICAgICBpbmRleE5hbWUgPSAnc3RyXycgKyBmaWx0ZXJOYW1lLnJlcGxhY2UoJy4nLCAnXycpO1xuICAgIH1cbiAgICByZXR1cm4gJygnICsgaW5kZXhOYW1lICsgJzooJyArIHZhbHVlICsgJykgQU5EIGtleV90eXBlOignICsgdHlwZXMgKyAnKSkgT1IgJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kZXhOYW1lQnlRTmFtZShxbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0eXBlc1tpXS5lbGVtZW50cy5maW5kKGVsID0+IGVsLnFuYW1lID09PSBxbmFtZSk7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5pbmRleG5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJUeXBlcyh0eXBlTmFtZSkge1xuICAgIGxldCB0eXBlcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlcygpO1xuICAgIGxldCBzdWJUeXBlcyA9IFtdO1xuICAgIHR5cGVzLmZvckVhY2gob2JqZWN0VHlwZSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSAhIW9iamVjdFR5cGUuc3VwZXJ0eXBlcy5maW5kKCh0OiBhbnkpID0+IHQubmFtZSA9PT0gdHlwZU5hbWUpO1xuICAgICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgICBzdWJUeXBlcy5wdXNoKG9iamVjdFR5cGUucW5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICApO1xuICAgIHJldHVybiBzdWJUeXBlcztcbiAgfVxuXG4gIG5hdmlnYXRlVG9SZWZlcmVuY2UoZXZlbnQsIGVudHJ5KSB7XG4gICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoL29iamVjdHxyZXN1bHR8ZmF2b3JpdGVzfGluYm94fHByb2Nlc3N8bm90aWZpY2F0aW9uc3xyZWN5Y2xlYmluLylbMF0gKyAnb2JqZWN0LycgKyBlbnRyeT8uaWQ7XG4gICAgd2luZG93Lm9wZW4odXJsLCAoZXZlbnQgJiYgZXZlbnQ/LmN0cmxLZXkpID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgfVxuXG4gIGdldFNlYXJjaExpbmsoZW50cnkpIHtcbiAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgdHlwZXM6IFt0aGlzLnNob3dJblJlZmVyZW5jZXMgPyBlbnRyeS50eXBlIDogZW50cnkub2JqZWN0VHlwZT8ucW5hbWVdLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBleHBlcnRtb2RlOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRlcm06ICcnXG4gICAgfTtcbiAgICBpZiAodGhpcy5zaG93SW5SZWZlcmVuY2VzKSB7XG4gICAgICBlbnRyeS5mb2xkZXIuZm9yRWFjaChlbnRyeTJMYXllciA9PiB7XG4gICAgICAgIHF1ZXJ5LmZpbHRlcnNbZW50cnkyTGF5ZXIucmVmZXJlbmNlZmllbGRdID0ge1xuICAgICAgICAgIG86ICdpbicsXG4gICAgICAgICAgdjE6IEFycmF5LmlzQXJyYXkoZW50cnkyTGF5ZXIucmVmZXJlbmNldmFsdWUpID8gZW50cnkyTGF5ZXIucmVmZXJlbmNldmFsdWUgOiBbZW50cnkyTGF5ZXIucmVmZXJlbmNldmFsdWVdXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGxldCBzdXBlclF1ZXJ5ID0ge1xuICAgICAgICB0ZXJtOiAnJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGV4cGVydG1vZGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5LmZpbHRlcnMpXG4gICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICBzdXBlclF1ZXJ5LnRlcm0gPSBzdXBlclF1ZXJ5LnRlcm0ucmVwbGFjZShuZXcgUmVnRXhwKCcsJywgJ2cnKSwgJyAnKTsgLy8gcmVwbGFjZSBhbGwgJywnIHdpdGggJyAnXG4gICAgICBzdXBlclF1ZXJ5LnRlcm0gPSBzdXBlclF1ZXJ5LnRlcm0ucmVwbGFjZShuZXcgUmVnRXhwKCcgT1IgJyArICckJyksICcnKTsgLy8gcmVtb3ZlIGxhc3QgJyBPUiAnXG4gICAgICByZXR1cm4gYHJlc3VsdD9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzdXBlclF1ZXJ5KSl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnkub3B0aW9ucy5leHBlcnRtb2RlID0gdHJ1ZTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50cnkuZm9sZGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHF1ZXJ5LnRlcm0gKz0gJ19pZDonICsgZW50cnkuZm9sZGVyW2ldLmlkO1xuICAgICAgICBpZiAoaSAhPT0gZW50cnkuZm9sZGVyLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBxdWVyeS50ZXJtICs9ICcgfHwgJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGByZXN1bHQ/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKX1gO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLXJlZmVyZW5jZXNcIj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1ub3QtZm91bmRcIiAqbmdJZj1cIiFpblJlZmVyZW5jZXM/Lmxlbmd0aCAmJiAhb3V0UmVmZXJlbmNlcz8ubGVuZ3RoOyBlbHNlIHJlZkNvbnRhaW5lclwiPlxuICAgIDxkaXY+e3snZW8ucmVmZXJlbmNlcy5vYmplY3Qubm90Zm91bmQnIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICNyZWZDb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tYnV0dG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdyaWRsYWJlbHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZGxhYmVsXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzaG93SW5SZWZlcmVuY2VzfVwiIChjbGljayk9XCJzd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKCdpbicpXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3snZW8ucmVmZXJlbmNlcy50by5sYWJlbCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydlby5yZWZlcmVuY2VzLnRvLmxhYmVsJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkbGFiZWxcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNob3dPdXRSZWZlcmVuY2VzfVwiIChjbGljayk9XCJzd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKCdvdXQnKVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7J2VvLnJlZmVyZW5jZXMuZnJvbS5sYWJlbCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydlby5yZWZlcmVuY2VzLmZyb20ubGFiZWwnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhIGNsYXNzPVwicmVzdWx0LWxpc3QtbGlua1wiIFtyb3V0ZXJMaW5rXT1cIicvcmVzdWx0J1wiIFtxdWVyeVBhcmFtc109XCJzdXBlclF1ZXJ5UGFyYW1zXCI+XG4gICAgICAgIDxlby1pY29uIGNsYXNzPVwiaWNvblwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX29wZW5fdGFiLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ucmVmZXJlbmNlcy5vcGVuLnJlc3VsdGxpc3QnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlby1yZWZlcmVuY2VzLWxpc3RzXCI+XG5cbiAgICAgIDwhLS0gbGlzdCBvZiBpblJlZmVyZW5jZXMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0bGlzdC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6ICFzaG93SW5SZWZlcmVuY2VzfVwiPlxuICAgICAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICA8bWFpbiBjbGFzcz1cImxvYWRlci1vdmVybGF5X19tYXNrXCI+XG4gICAgICAgICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidsYXJnZSdcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgICAgICA8L21haW4+XG4gICAgICAgIH0gQGVsc2UgaWYgKGluUmVmZXJlbmNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZmVyZW5jZUxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5MUxheWVyIG9mIGluUmVmZXJlbmNlczsgdHJhY2sgZW50cnkxTGF5ZXIpIHtcbiAgICAgICAgICAgICAgPGVvLXNpbXBsZS1hY2NvcmRpb25cbiAgICAgICAgICAgICAgICBbaGVhZGVyXT1cImVudHJ5MUxheWVyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICBbaWNvbk9iamVjdFR5cGVdPVwiZ2V0T2JqZWN0VHlwZShlbnRyeTFMYXllci50eXBlKVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1BbW91bnRdPVwiZW50cnkxTGF5ZXIuY291bnRcIlxuICAgICAgICAgICAgICAgIFtyZXN1bHRMaXN0TGlua109XCJnZXRTZWFyY2hMaW5rKGVudHJ5MUxheWVyKVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5MkxheWVyIG9mIGVudHJ5MUxheWVyLmZvbGRlcjsgdHJhY2sgZW50cnkyTGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5M0xheWVyIG9mIGVudHJ5MkxheWVyLmZvbGRlcjsgdHJhY2sgZW50cnkzTGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAoY2xpY2spPVwibmF2aWdhdGVUb1JlZmVyZW5jZSgkZXZlbnQsIGVudHJ5M0xheWVyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW50cnkzTGF5ZXI/LnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tlbnRyeTNMYXllcj8uZGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1vdGUtZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3snZW8ucmVmZXJlbmNlcy5maWVsZC5sYWJlbCcgfCB0cmFuc2xhdGV9fSB7e2VudHJ5MkxheWVyLnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2VvLXNpbXBsZS1hY2NvcmRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3Rmb3VuZFwiPnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIGxpc3Qgb2Ygb3V0UmVmZXJlbmNlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRsaXN0LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogIXNob3dPdXRSZWZlcmVuY2VzfVwiPlxuICAgICAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICA8bWFpbiBjbGFzcz1cImxvYWRlci1vdmVybGF5X19tYXNrXCI+XG4gICAgICAgICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidsYXJnZSdcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgICAgICA8L21haW4+XG4gICAgICAgIH0gQGVsc2UgaWYgKG91dFJlZmVyZW5jZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2VMaXN0XCI+XG4gICAgICAgICAgICBAZm9yIChlbnRyeTFMYXllciBvZiBvdXRSZWZlcmVuY2VzOyB0cmFjayBlbnRyeTFMYXllcikge1xuICAgICAgICAgICAgICA8ZW8tc2ltcGxlLWFjY29yZGlvblxuICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiZW50cnkxTGF5ZXIudGl0bGVcIlxuICAgICAgICAgICAgICAgIFtpY29uT2JqZWN0VHlwZV09XCJlbnRyeTFMYXllci5vYmplY3RUeXBlXCJcbiAgICAgICAgICAgICAgICBbaXRlbUFtb3VudF09XCJlbnRyeTFMYXllci5mb2xkZXIubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbcmVzdWx0TGlzdExpbmtdPVwiZ2V0U2VhcmNoTGluayhlbnRyeTFMYXllcilcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChlbnRyeTJMYXllciBvZiBlbnRyeTFMYXllci5mb2xkZXI7IHRyYWNrIGVudHJ5MkxheWVyKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUmVmZXJlbmNlKCRldmVudCwgZW50cnkyTGF5ZXIpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tlbnRyeTJMYXllcj8udGl0bGV9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tlbnRyeTJMYXllcj8uZGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbW90ZS1lbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3snZW8ucmVmZXJlbmNlcy5maWVsZC5sYWJlbCcgfCB0cmFuc2xhdGV9fSB7e2VudHJ5MkxheWVyLmZpZWxkTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9lby1zaW1wbGUtYWNjb3JkaW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90Zm91bmRcIj57eydlby5yZWZlcmVuY2VzLm9iamVjdC5ub3Rmb3VuZCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|