@wemake4u/form-player-se 1.0.26 → 1.0.28
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/components/actionsCellRenderer/actionsCellRenderer.component.mjs +3 -3
- package/esm2022/lib/components/deleteRowRenderer/deleteRowRenderer.component.mjs +3 -3
- package/esm2022/lib/components/hostCellRenderer/hostCellRenderer.component.mjs +3 -3
- package/esm2022/lib/components/objectURLRenderer/objectURLRenderer.component.mjs +3 -3
- package/esm2022/lib/components/setFilter/setFilter.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog.component.mjs +3 -3
- package/esm2022/lib/directives/accordion.directive.mjs +3 -3
- package/esm2022/lib/directives/accordionpanel.directive.mjs +3 -3
- package/esm2022/lib/directives/adorner.directive.mjs +3 -3
- package/esm2022/lib/directives/change.directive.mjs +3 -3
- package/esm2022/lib/directives/collapse.directive.mjs +3 -3
- package/esm2022/lib/directives/date.directive.mjs +3 -3
- package/esm2022/lib/directives/dialog.directive.mjs +3 -3
- package/esm2022/lib/directives/display.directive.mjs +3 -3
- package/esm2022/lib/directives/dropdown.directive.mjs +3 -3
- package/esm2022/lib/directives/formIndex.directive.mjs +3 -3
- package/esm2022/lib/directives/framesecurity.directive.mjs +3 -3
- package/esm2022/lib/directives/grid.directive.mjs +49 -13
- package/esm2022/lib/directives/number.directive.mjs +5 -8
- package/esm2022/lib/directives/readonly.directive.mjs +3 -3
- package/esm2022/lib/directives/refresh.directive.mjs +3 -3
- package/esm2022/lib/directives/register.directive.mjs +3 -3
- package/esm2022/lib/directives/repeat.directive.mjs +8 -7
- package/esm2022/lib/directives/tab.directive.mjs +3 -3
- package/esm2022/lib/directives/tabcontrol.directive.mjs +3 -3
- package/esm2022/lib/directives/text.directive.mjs +3 -3
- package/esm2022/lib/directives/updateblur.directive.mjs +3 -3
- package/esm2022/lib/directives/validationpatch.directive.mjs +34 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +36 -16
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +15 -10
- package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +3 -3
- package/esm2022/lib/interact/confirmation.mjs +3 -3
- package/esm2022/lib/interact/notification.mjs +3 -3
- package/esm2022/lib/interact/prompt.mjs +3 -3
- package/esm2022/lib/services/chart.service.mjs +3 -3
- package/esm2022/lib/services/data.service.mjs +3 -3
- package/esm2022/lib/services/dialog.service.mjs +3 -3
- package/esm2022/lib/services/event.service.mjs +3 -3
- package/esm2022/lib/services/feel.service.mjs +3 -3
- package/esm2022/lib/services/form.service.mjs +3 -3
- package/esm2022/lib/services/formatter.service.mjs +3 -3
- package/esm2022/lib/services/function.service.mjs +3 -3
- package/esm2022/lib/services/global.service.mjs +3 -3
- package/esm2022/lib/services/grid.service.mjs +3 -3
- package/esm2022/lib/services/markdown.service.mjs +3 -3
- package/esm2022/lib/services/metadata.service.mjs +3 -3
- package/esm2022/lib/services/mime.service.mjs +3 -3
- package/esm2022/lib/services/programmability.service.mjs +85 -35
- package/esm2022/lib/services/register.service.mjs +3 -3
- package/esm2022/lib/services/sanitize.service.mjs +3 -3
- package/esm2022/lib/services/scope.service.mjs +3 -3
- package/esm2022/lib/services/toast.service.mjs +3 -3
- package/esm2022/lib/services/weak.service.mjs +3 -3
- package/esm2022/lib/shared/template-wrapper/template-wrapper.component.mjs +3 -3
- package/esm2022/lib/utils/syncronize.mjs +34 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/wemake4u-form-player-se.mjs +395 -225
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/grid.directive.d.ts +2 -0
- package/lib/directives/validationpatch.directive.d.ts +7 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +5 -1
- package/lib/dynamic-form/dynamic-form.component.d.ts +2 -1
- package/lib/services/programmability.service.d.ts +3 -3
- package/lib/utils/syncronize.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -301,10 +301,10 @@ export class ChartService {
|
|
|
301
301
|
isInterpolation(value) {
|
|
302
302
|
return value === 'linear' || value === 'smooth' || value === 'step';
|
|
303
303
|
}
|
|
304
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
305
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartService, deps: [{ token: i1.ProgrammabilityService }, { token: i2.LanguageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
305
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartService });
|
|
306
306
|
}
|
|
307
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChartService, decorators: [{
|
|
308
308
|
type: Injectable
|
|
309
309
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.LanguageService }] });
|
|
310
310
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL2NoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBYXZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUc5QyxNQUFNLE9BQU8sWUFBWTtJQUdiO0lBQ0U7SUFGWixZQUNVLGVBQXVDLEVBQ3JDLGVBQWdDO1FBRGxDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUNyQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDNUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFjLEVBQUUsU0FBb0I7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sT0FBTyxHQUFtQjtnQkFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7YUFDNUIsQ0FBQztZ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SUFDOUQsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQVU7UUFDNUIsT0FBTyxLQUFLLEtBQUssWUFBWSxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUM7SUFDeEQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFVO1FBQ2hDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxNQUFNLENBQUM7SUFDdEUsQ0FBQzt3R0E5WFUsWUFBWTs0R0FBWixZQUFZOzs0RkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBvYnNlcnZhYmxlQWxsIH0gZnJvbSAnLi4vdXRpbHMvb2JzZXJ2YWJsZUFsbCc7XHJcbmltcG9ydCB7XHJcbiAgQWdDaGFydE9wdGlvbnMsIEFnQ2hhcnRUaGVtZSwgQWdCYXNlU2VyaWVzT3B0aW9ucyxcclxuICBBZ0JhclNlcmllc09wdGlvbnMsIEFnQmFyU2VyaWVzT3B0aW9uc05hbWVzLCBcclxuICBBZ0xpbmVTZXJpZXNPcHRpb25zLCBBZ0xpbmVTZXJpZXNPcHRpb25zTmFtZXMsXHJcbiAgQWdBcmVhU2VyaWVzT3B0aW9ucywgQWdBcmVhU2VyaWVzT3B0aW9uc05hbWVzLFxyXG4gIEFnU2NhdHRlclNlcmllc09wdGlvbnMsIEFnU2NhdHRlclNlcmllc09wdGlvbnNOYW1lcyxcclxuICBBZ0J1YmJsZVNlcmllc09wdGlvbnMsIEFnQnViYmxlU2VyaWVzT3B0aW9uc05hbWVzLFxyXG4gIEFnUGllU2VyaWVzT3B0aW9ucywgQWdQaWVTZXJpZXNPcHRpb25zTmFtZXMsXHJcbiAgQWdEb251dFNlcmllc09wdGlvbnMsIEFnRG9udXRTZXJpZXNPcHRpb25zTmFtZXNcclxufSBmcm9tICdhZy1jaGFydHMtY29tbXVuaXR5JztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXJ0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBPYnNlcnZhYmxlPEFnQ2hhcnRPcHRpb25zPiB7XHJcbiAgICBjb25zdCBleHByZXNzaW9uID0gdGhpcy5nZXREYXRhRXhwcmVzc2lvbihjb21wb25lbnQpO1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgZXhwcmVzc2lvbik7XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUFsbChkYXRhKS5waXBlKFxyXG4gICAgICBtYXAoKGNoYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2VyaWVzID0gdGhpcy5nZXRTZXJpZXMoY29tcG9uZW50LCBmb3JtR3JvdXApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IEFnQ2hhcnRPcHRpb25zID0ge1xyXG4gICAgICAgICAgdGhlbWU6IHRoaXMuZ2V0VGhlbWUoKSxcclxuICAgICAgICAgIHNlcmllczogc2VyaWVzLFxyXG4gICAgICAgICAgLi4udGhpcy5nZXRQcm9wcyhjb21wb25lbnQpXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmJpbmREYXRhKG9wdGlvbnMsIGNoYXJ0RGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICAgIH0pXHJcbiAgICApOyAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YUV4cHJlc3Npb24oY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGdldEV4cHJlc3Npb24gPSAoZXhwcmVzc2lvbjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oZXhwcmVzc2lvbilcclxuICAgICAgICA/IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldEV4cHJlc3Npb24oZXhwcmVzc2lvbilcclxuICAgICAgICA6IFwibnVsbFwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhRXhwciA9IGdldEV4cHJlc3Npb24oY29tcG9uZW50LmRhdGEpO1xyXG4gICAgY29uc3Qgc2VyaWVzRXhwcnMgPSAoY29tcG9uZW50LnNlcmllcyA/PyBbXSlcclxuICAgICAgLm1hcCgoc2VyaWU6IGFueSkgPT4gZ2V0RXhwcmVzc2lvbihzZXJpZS5kYXRhKSlcclxuICAgICAgLm1hcCgoZXhwcjogc3RyaW5nKSA9PiBgKCR7ZXhwcn0pYClcclxuICAgICAgLmpvaW4oXCIsIFwiKTtcclxuXHJcbiAgICByZXR1cm4gYD17IGRhdGE6ICgke2RhdGFFeHByfSksIHNlcmllczogWyR7c2VyaWVzRXhwcnN9XSB9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmluZERhdGEob3B0aW9uczogQWdDaGFydE9wdGlvbnMsIGNoYXJ0RGF0YTogYW55KSB7XHJcbiAgICBpZiAoY2hhcnREYXRhLmRhdGEpIHtcclxuICAgICAgb3B0aW9ucy5kYXRhID0gY2hhcnREYXRhLmRhdGE7XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnNlcmllcykpIHtcclxuICAgICAgb3B0aW9ucy5zZXJpZXMuZm9yRWFjaCgoc2VyaWU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChjaGFydERhdGEuc2VyaWVzW2luZGV4XSkge1xyXG4gICAgICAgICAgc2VyaWUuZGF0YSA9IGNoYXJ0RGF0YS5zZXJpZXNbaW5kZXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKHRoaXMubGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGhlbWUoKTogQWdDaGFydFRoZW1lIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJhc2VUaGVtZTogXCJhZy1kZWZhdWx0XCIsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIGZvbnRGYW1pbHk6IFwiaW5oZXJpdFwiLFxyXG4gICAgICAgIHRleHRDb2xvcjogXCIjMDAxMjFBXCIsXHJcbiAgICAgICAgY2hyb21lRm9udEZhbWlseTogXCJpbmhlcml0XCIsXHJcbiAgICAgICAgY2hyb21lVGV4dENvbG9yOiBcIiMwMDEyMUFcIlxyXG4gICAgICB9LFxyXG4gICAgICBvdmVycmlkZXM6IHtcclxuICAgICAgICBjb21tb246IHtcclxuICAgICAgICAgIGJhY2tncm91bmQ6IHtcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VyaWVzKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IGFueVtdIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBvbmVudC5zZXJpZXMpKSB7XHJcbiAgICAgIGNvbnN0IHNlcmllcyA9IGNvbXBvbmVudC5zZXJpZXMubWFwKChzZXJpZTogYW55KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChzZXJpZS50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiYmFyXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEJhclNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICBjYXNlIFwibGluZVwiOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaW5lU2VyaWVzT3B0aW9ucyhzZXJpZSwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgIGNhc2UgXCJhcmVhXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFyZWFTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgY2FzZSBcInNjYXR0ZXJcIjpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2NhdHRlclNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICBjYXNlIFwiYnViYmxlXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEJ1YmJsZVNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICBjYXNlIFwicGllXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpZVNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICBjYXNlIFwiZG9udXRcIjpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RG9udXRTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBzZXJpZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSlcclxuICAgIDogQWdCYXJTZXJpZXNPcHRpb25zTmFtZXMgfCBBZ0xpbmVTZXJpZXNPcHRpb25zTmFtZXMgIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnQmFyU2VyaWVzT3B0aW9uc05hbWVzIHwgQWdMaW5lU2VyaWVzT3B0aW9uc05hbWVzID0ge307XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUueE5hbWUpKVxyXG4gICAgICBvcHRpb25zLnhOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwieE5hbWVcIik7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUueU5hbWUpKVxyXG4gICAgICBvcHRpb25zLnlOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwieU5hbWVcIik7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUubGVnZW5kSXRlbU5hbWUpKVxyXG4gICAgICBvcHRpb25zLmxlZ2VuZEl0ZW1OYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwibGVnZW5kSXRlbU5hbWVcIik7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgZ2V0QmFzZVNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBBZ0Jhc2VTZXJpZXNPcHRpb25zPGFueT5cclxuICB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBBZ0Jhc2VTZXJpZXNPcHRpb25zPGFueT4gPSB7IH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNCb29sZWFuKHNlcmllLnZpc2libGUpKVxyXG4gICAgICBvcHRpb25zLnZpc2libGUgPSBzZXJpZS52aXNpYmxlO1xyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCYXJTZXJpZXNPcHRpb25zKHNlcmllOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogQWdCYXJTZXJpZXNPcHRpb25zIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnQmFyU2VyaWVzT3B0aW9ucyA9IHtcclxuICAgICAgdHlwZTogXCJiYXJcIixcclxuICAgICAgeEtleTogc2VyaWUueEtleSxcclxuICAgICAgeUtleTogc2VyaWUueUtleSxcclxuICAgICAgLi4udGhpcy5nZXRCYXNlU2VyaWVzT3B0aW9ucyhzZXJpZSwgZm9ybUdyb3VwKSxcclxuICAgICAgLi4udGhpcy5nZXRTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWUpXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzRGlyZWN0aW9uKHNlcmllLmRpcmVjdGlvbikpXHJcbiAgICAgIG9wdGlvbnMuZGlyZWN0aW9uID0gc2VyaWUuZGlyZWN0aW9uO1xyXG5cclxuICAgIGlmICh0aGlzLmlzQm9vbGVhbihzZXJpZS5zdGFja2VkKSlcclxuICAgICAgb3B0aW9ucy5zdGFja2VkID0gc2VyaWUuc3RhY2tlZDtcclxuXHJcbiAgICBpZiAodGhpcy5pc051bWJlcihzZXJpZS5ub3JtYWxpemVkVG8pKVxyXG4gICAgICBvcHRpb25zLm5vcm1hbGl6ZWRUbyA9IHNlcmllLm5vcm1hbGl6ZWRUbztcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS5zdGFja0dyb3VwKSlcclxuICAgICAgb3B0aW9ucy5zdGFja0dyb3VwID0gc2VyaWUuc3RhY2tHcm91cDtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TGluZVNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBBZ0xpbmVTZXJpZXNPcHRpb25zIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnTGluZVNlcmllc09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwibGluZVwiLFxyXG4gICAgICB4S2V5OiBzZXJpZS54S2V5LFxyXG4gICAgICB5S2V5OiBzZXJpZS55S2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldFNlcmllc09wdGlvbnNOYW1lcyhzZXJpZSlcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJbnRlcnBvbGF0aW9uKHNlcmllLmludGVycG9sYXRpb24pKSB7IFxyXG4gICAgICBvcHRpb25zLmludGVycG9sYXRpb24gPSB7XHJcbiAgICAgICAgdHlwZTogc2VyaWUuaW50ZXJwb2xhdGlvblxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBcmVhU2VyaWVzT3B0aW9ucyhzZXJpZTogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IEFnQXJlYVNlcmllc09wdGlvbnMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdBcmVhU2VyaWVzT3B0aW9ucyA9IHtcclxuICAgICAgdHlwZTogXCJhcmVhXCIsXHJcbiAgICAgIHhLZXk6IHNlcmllLnhLZXksXHJcbiAgICAgIHlLZXk6IHNlcmllLnlLZXksXHJcbiAgICAgIC4uLnRoaXMuZ2V0QmFzZVNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCksXHJcbiAgICAgIC4uLnRoaXMuZ2V0QXJlYVNlcmllc09wdGlvbnNOYW1lcyhzZXJpZSlcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNCb29sZWFuKHNlcmllLnN0YWNrZWQpKVxyXG4gICAgICBvcHRpb25zLnN0YWNrZWQgPSBzZXJpZS5zdGFja2VkO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTnVtYmVyKHNlcmllLm5vcm1hbGl6ZWRUbykpXHJcbiAgICAgIG9wdGlvbnMubm9ybWFsaXplZFRvID0gc2VyaWUubm9ybWFsaXplZFRvO1xyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBcmVhU2VyaWVzT3B0aW9uc05hbWVzKHNlcmllOiBhbnkpXHJcbiAgICA6IEFnQXJlYVNlcmllc09wdGlvbnNOYW1lcyB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBBZ0FyZWFTZXJpZXNPcHRpb25zTmFtZXMgPSB7fTtcclxuXHJcbiAgICBpZiAoc2VyaWUueE5hbWUpXHJcbiAgICAgIG9wdGlvbnMueE5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ4TmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUueU5hbWUpXHJcbiAgICAgIG9wdGlvbnMueU5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ5TmFtZVwiKTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2NhdHRlclNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBBZ1NjYXR0ZXJTZXJpZXNPcHRpb25zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGU6IFwic2NhdHRlclwiLFxyXG4gICAgICB4S2V5OiBzZXJpZS54S2V5LFxyXG4gICAgICB5S2V5OiBzZXJpZS55S2V5LFxyXG4gICAgICBsYWJlbEtleTogc2VyaWUubGFiZWxLZXksXHJcbiAgICAgIC4uLnRoaXMuZ2V0QmFzZVNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCksXHJcbiAgICAgIC4uLnRoaXMuZ2V0U2NhdHRlclNlcmllc09wdGlvbnNOYW1lcyhzZXJpZSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNjYXR0ZXJTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSlcclxuICAgIDogQWdTY2F0dGVyU2VyaWVzT3B0aW9uc05hbWVzIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnU2NhdHRlclNlcmllc09wdGlvbnNOYW1lcyA9IHt9O1xyXG5cclxuICAgIGlmIChzZXJpZS54TmFtZSlcclxuICAgICAgb3B0aW9ucy54TmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInhOYW1lXCIpO1xyXG5cclxuICAgIGlmIChzZXJpZS55TmFtZSlcclxuICAgICAgb3B0aW9ucy55TmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInlOYW1lXCIpO1xyXG5cclxuICAgIGlmIChzZXJpZS5sYWJlbE5hbWUpXHJcbiAgICAgIG9wdGlvbnMubGFiZWxOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwibGFiZWxOYW1lXCIpO1xyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCdWJibGVTZXJpZXNPcHRpb25zKHNlcmllOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogQWdCdWJibGVTZXJpZXNPcHRpb25zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGU6IFwiYnViYmxlXCIsXHJcbiAgICAgIHhLZXk6IHNlcmllLnhLZXksXHJcbiAgICAgIHlLZXk6IHNlcmllLnlLZXksXHJcbiAgICAgIHNpemVLZXk6IHNlcmllLnNpemVLZXksXHJcbiAgICAgIGxhYmVsS2V5OiBzZXJpZS5sYWJlbEtleSxcclxuICAgICAgLi4udGhpcy5nZXRCYXNlU2VyaWVzT3B0aW9ucyhzZXJpZSwgZm9ybUdyb3VwKSxcclxuICAgICAgLi4udGhpcy5nZXRCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWUpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSlcclxuICAgIDogQWdCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMgPSB7fTtcclxuXHJcbiAgICBpZiAoc2VyaWUueE5hbWUpXHJcbiAgICAgIG9wdGlvbnMueE5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ4TmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUueU5hbWUpXHJcbiAgICAgIG9wdGlvbnMueU5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ5TmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUuc2l6ZU5hbWUpXHJcbiAgICAgIG9wdGlvbnMuc2l6ZU5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJzaXplTmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUubGFiZWxOYW1lKVxyXG4gICAgICBvcHRpb25zLmxhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImxhYmVsTmFtZVwiKTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGllU2VyaWVzT3B0aW9ucyhzZXJpZTogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IEFnUGllU2VyaWVzT3B0aW9ucyB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBBZ1BpZVNlcmllc09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwicGllXCIsXHJcbiAgICAgIGFuZ2xlS2V5OiBzZXJpZS5hbmdsZUtleSxcclxuICAgICAgLi4udGhpcy5nZXRCYXNlU2VyaWVzT3B0aW9ucyhzZXJpZSwgZm9ybUdyb3VwKSxcclxuICAgICAgLi4udGhpcy5nZXRQaWVTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWUpXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHNlcmllLnJhZGl1c0tleSkpXHJcbiAgICAgIG9wdGlvbnMucmFkaXVzS2V5ID0gc2VyaWUucmFkaXVzS2V5O1xyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHNlcmllLmNhbGxvdXRMYWJlbEtleSkpXHJcbiAgICAgIG9wdGlvbnMuY2FsbG91dExhYmVsS2V5ID0gc2VyaWUuY2FsbG91dExhYmVsS2V5O1xyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHNlcmllLnNlY3RvckxhYmVsS2V5KSlcclxuICAgICAgb3B0aW9ucy5zZWN0b3JMYWJlbEtleSA9IHNlcmllLnNlY3RvckxhYmVsS2V5O1xyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHNlcmllLmxlZ2VuZEl0ZW1LZXkpKVxyXG4gICAgICBvcHRpb25zLmxlZ2VuZEl0ZW1LZXkgPSBzZXJpZS5sZWdlbmRJdGVtS2V5O1xyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQaWVTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSlcclxuICAgIDogQWdQaWVTZXJpZXNPcHRpb25zTmFtZXMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdQaWVTZXJpZXNPcHRpb25zTmFtZXMgPSB7fTtcclxuXHJcbiAgICBpZiAoc2VyaWUuYW5nbGVOYW1lKVxyXG4gICAgICBvcHRpb25zLmFuZ2xlTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImFuZ2xlTmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUucmFkaXVzTmFtZSlcclxuICAgICAgb3B0aW9ucy5yYWRpdXNOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwicmFkaXVzTmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUuY2FsbG91dExhYmVsTmFtZSlcclxuICAgICAgb3B0aW9ucy5jYWxsb3V0TGFiZWxOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwiY2FsbG91dExhYmVsTmFtZVwiKTtcclxuXHJcbiAgICBpZiAoc2VyaWUuc2VjdG9yTGFiZWxOYW1lKVxyXG4gICAgICBvcHRpb25zLnNlY3RvckxhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInNlY3RvckxhYmVsTmFtZVwiKTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RG9udXRTZXJpZXNPcHRpb25zKHNlcmllOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogQWdEb251dFNlcmllc09wdGlvbnMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdEb251dFNlcmllc09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwiZG9udXRcIixcclxuICAgICAgYW5nbGVLZXk6IHNlcmllLmFuZ2xlS2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldERvbnV0U2VyaWVzT3B0aW9uc05hbWVzKHNlcmllKVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS5yYWRpdXNLZXkpKVxyXG4gICAgICBvcHRpb25zLnJhZGl1c0tleSA9IHNlcmllLnJhZGl1c0tleTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS5jYWxsb3V0TGFiZWxLZXkpKVxyXG4gICAgICBvcHRpb25zLmNhbGxvdXRMYWJlbEtleSA9IHNlcmllLmNhbGxvdXRMYWJlbEtleTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS5zZWN0b3JMYWJlbEtleSkpXHJcbiAgICAgIG9wdGlvbnMuc2VjdG9yTGFiZWxLZXkgPSBzZXJpZS5zZWN0b3JMYWJlbEtleTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS5sZWdlbmRJdGVtS2V5KSlcclxuICAgICAgb3B0aW9ucy5sZWdlbmRJdGVtS2V5ID0gc2VyaWUubGVnZW5kSXRlbUtleTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RG9udXRTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSlcclxuICAgIDogQWdEb251dFNlcmllc09wdGlvbnNOYW1lcyB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBBZ0RvbnV0U2VyaWVzT3B0aW9uc05hbWVzID0ge307XHJcblxyXG4gICAgaWYgKHNlcmllLmFuZ2xlTmFtZSlcclxuICAgICAgb3B0aW9ucy5hbmdsZU5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJhbmdsZU5hbWVcIik7XHJcblxyXG4gICAgaWYgKHNlcmllLnJhZGl1c05hbWUpXHJcbiAgICAgIG9wdGlvbnMucmFkaXVzTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInJhZGl1c05hbWVcIik7XHJcblxyXG4gICAgaWYgKHNlcmllLmNhbGxvdXRMYWJlbE5hbWUpXHJcbiAgICAgIG9wdGlvbnMuY2FsbG91dExhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImNhbGxvdXRMYWJlbE5hbWVcIik7XHJcblxyXG4gICAgaWYgKHNlcmllLnNlY3RvckxhYmVsTmFtZSlcclxuICAgICAgb3B0aW9ucy5zZWN0b3JMYWJlbE5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJzZWN0b3JMYWJlbE5hbWVcIik7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByb3BzKGNvbXBvbmVudDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IHByb3BzOiBhbnkgPSB7fTtcclxuXHJcbiAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC50aXRsZSkge1xyXG4gICAgICBwcm9wcy50aXRsZSA9IHsgdGV4dDogY29tcG9uZW50LnRpdGxlIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQuc3VidGl0bGUpIHtcclxuICAgICAgcHJvcHMuc3VidGl0bGUgPSB7IHRleHQ6IGNvbXBvbmVudC5zdWJ0aXRsZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwcm9wcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCb29sZWFuKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc051bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRGlyZWN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2hvcml6b250YWwnIHx8IHZhbHVlID09PSAndmVydGljYWwnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0ludGVycG9sYXRpb24odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSAnbGluZWFyJyB8fCB2YWx1ZSA9PT0gJ3Ntb290aCcgfHwgdmFsdWUgPT09ICdzdGVwJztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -17,10 +17,10 @@ export class DataService {
|
|
|
17
17
|
createOData(url) {
|
|
18
18
|
return new ODataSource(url, this.http);
|
|
19
19
|
}
|
|
20
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
21
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataService, providedIn: 'root' });
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataService, decorators: [{
|
|
24
24
|
type: Injectable,
|
|
25
25
|
args: [{
|
|
26
26
|
providedIn: 'root'
|
|
@@ -146,10 +146,10 @@ export class DialogService {
|
|
|
146
146
|
]
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
150
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
149
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, deps: [{ token: i1.SirioDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
150
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, providedIn: 'root' });
|
|
151
151
|
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, decorators: [{
|
|
153
153
|
type: Injectable,
|
|
154
154
|
args: [{
|
|
155
155
|
providedIn: 'root'
|
|
@@ -7,10 +7,10 @@ export class EventService {
|
|
|
7
7
|
emitCommand(data) {
|
|
8
8
|
this.commandSubject.next(data);
|
|
9
9
|
}
|
|
10
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
11
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventService, providedIn: 'root' });
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EventService, decorators: [{
|
|
14
14
|
type: Injectable,
|
|
15
15
|
args: [{
|
|
16
16
|
providedIn: 'root'
|
|
@@ -228,10 +228,10 @@ export class FeelService {
|
|
|
228
228
|
.map(part => part.trim())
|
|
229
229
|
.filter(part => part.length > 0);
|
|
230
230
|
}
|
|
231
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
232
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
231
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
232
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeelService, providedIn: 'root' });
|
|
233
233
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeelService, decorators: [{
|
|
235
235
|
type: Injectable,
|
|
236
236
|
args: [{
|
|
237
237
|
providedIn: 'root'
|
|
@@ -372,10 +372,10 @@ export class FormService {
|
|
|
372
372
|
isUnknown(control) {
|
|
373
373
|
return control && control._unknown === true;
|
|
374
374
|
}
|
|
375
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
376
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
375
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
376
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormService, providedIn: 'root' });
|
|
377
377
|
}
|
|
378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
378
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormService, decorators: [{
|
|
379
379
|
type: Injectable,
|
|
380
380
|
args: [{
|
|
381
381
|
providedIn: 'root'
|
|
@@ -80,10 +80,10 @@ export class FormatterService {
|
|
|
80
80
|
'formatNumber'
|
|
81
81
|
]);
|
|
82
82
|
}
|
|
83
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
84
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
83
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
84
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormatterService, providedIn: 'root' });
|
|
85
85
|
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormatterService, decorators: [{
|
|
87
87
|
type: Injectable,
|
|
88
88
|
args: [{
|
|
89
89
|
providedIn: 'root'
|
|
@@ -42,10 +42,10 @@ export class FunctionService {
|
|
|
42
42
|
"invokable"
|
|
43
43
|
]);
|
|
44
44
|
}
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
46
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionService, deps: [{ token: i1.MetadataService }, { token: i2.DialogService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionService });
|
|
47
47
|
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunctionService, decorators: [{
|
|
49
49
|
type: Injectable
|
|
50
50
|
}], ctorParameters: () => [{ type: i1.MetadataService }, { type: i2.DialogService }, { type: i0.Injector }] });
|
|
51
51
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFJbkQsTUFBTSxPQUFPLGVBQWU7SUFFTjtJQUNSO0lBQ0E7SUFGWixZQUFvQixRQUF5QixFQUNqQyxNQUFxQixFQUNyQixRQUFrQjtRQUZWLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFJLENBQUM7SUFFbkMsU0FBUyxDQUFDLElBQVM7UUFDakIsSUFBSSxPQUFPLElBQUksRUFBRSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsT0FBTyxDQUFDLEdBQUcsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsUUFBeUIsRUFBRSxPQUFzQjtRQUV4RCxJQUFJLFVBQWUsQ0FBQztRQUVwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sV0FBVyxHQUFzQjtnQkFDckMsR0FBRyxPQUFPO2dCQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFBO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRTtZQUN6QixVQUFVO1lBQ1YsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBeENVLGVBQWU7NEdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEaWFsb2dPcHRpb25zLCBGb3JtRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcikgeyB9XHJcblxyXG4gIGludm9rYWJsZShmdW5jOiBhbnkpOiBGdW5jdGlvbiB7XHJcbiAgICBpZiAodHlwZW9mIGZ1bmM/Lmludm9rZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gKC4uLmFyZ3M6IGFueSkgPT4gZnVuYy5pbnZva2UoYXJncyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuICgpID0+IHsgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Gb3JtKHRlbXBsYXRlOiBzdHJpbmcgfCBvYmplY3QsIG9wdGlvbnM6IERpYWxvZ09wdGlvbnMpXHJcbiAge1xyXG4gICAgbGV0IGZvcm1TY2hlbWE6IGFueTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnc3RyaW5nJykge1xyXG4gICAgICBmb3JtU2NoZW1hID0gdGhpcy5tZXRhZGF0YS5nZXRUZW1wbGF0ZUJ5TmFtZSh0ZW1wbGF0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtU2NoZW1hID0gdGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm1TY2hlbWEpIHtcclxuICAgICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIFRvQm91bmRBcnJvd3ModGhpcywgW1xyXG4gICAgICBcIm9wZW5Gb3JtXCIsXHJcbiAgICAgIFwiaW52b2thYmxlXCJcclxuICAgIF0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -30,10 +30,10 @@ export class GlobalService {
|
|
|
30
30
|
//#region Private Members
|
|
31
31
|
properties = {};
|
|
32
32
|
components = {};
|
|
33
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
34
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlobalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlobalService, providedIn: 'root' });
|
|
35
35
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlobalService, decorators: [{
|
|
37
37
|
type: Injectable,
|
|
38
38
|
args: [{
|
|
39
39
|
providedIn: 'root'
|
|
@@ -715,10 +715,10 @@ export class GridService {
|
|
|
715
715
|
}
|
|
716
716
|
return path;
|
|
717
717
|
}
|
|
718
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
719
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
718
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridService, deps: [{ token: i1.FormatterService }, { token: i2.LanguageService }, { token: i3.ProgrammabilityService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
719
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridService });
|
|
720
720
|
}
|
|
721
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridService, decorators: [{
|
|
722
722
|
type: Injectable
|
|
723
723
|
}], ctorParameters: () => [{ type: i1.FormatterService }, { type: i2.LanguageService }, { type: i3.ProgrammabilityService }] });
|
|
724
724
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNHLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUN4RSxZQUFZLEVBQUUsZUFBZSxFQUFvQixZQUFZLEVBQzdELGtCQUFrQixFQUNsQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDOUMsV0FBVyxFQUFFLGFBQWEsRUFDbEMsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQ1Asb0JBQW9CLEVBQUUsZUFBZSxFQUVqRixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2xCLE1BQU0sMkJBQTJCLENB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TUFBTSxtQkFBbUIsR0FDdkIsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxnQkFBZ0IsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQ3pCLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQ3JCLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ2hFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDdkIseUJBQXlCLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN0RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBWTtRQUMvQixNQUFNLElBQUksR0FBa0IsRUFBRSxDQUFDO1FBQy9CLElBQUksYUFBYSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdEMsT0FBTyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pCLGFBQWEsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBdHlCVSxXQUFXOzRHQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTW9kdWxlLCBQYWdpbmF0aW9uTW9kdWxlLCBDbGllbnRTaWRlUm93TW9kZWxNb2R1bGUsIEluZmluaXRlUm93TW9kZWxNb2R1bGVcclxuICAsIExvY2FsZU1vZHVsZSwgQ2VsbFN0eWxlTW9kdWxlLCBWYWxpZGF0aW9uTW9kdWxlLCBSb3dBcGlNb2R1bGUgXHJcbiAgLCBSb3dTZWxlY3Rpb25Nb2R1bGUsIFJvd1NlbGVjdGlvbk9wdGlvbnMgXHJcbiAgLCBUZXh0RmlsdGVyTW9kdWxlLCBOdW1iZXJGaWx0ZXJNb2R1bGUsIERhdGVGaWx0ZXJNb2R1bGVcclxuICAsIENvbERlZiwgdGhlbWVRdWFydHosIGljb25TZXRBbHBpbmUsIEdyaWRPcHRpb25zLCBEYXRhVHlwZURlZmluaXRpb25cclxuICAsIENsaWVudFNpZGVSb3dNb2RlbEFwaU1vZHVsZSwgUm93QXV0b0hlaWdodE1vZHVsZVxyXG4gICwgR3JpZFNpemVDaGFuZ2VkRXZlbnQsIE1vZGVsVXBkYXRlZEV2ZW50LCBDb2x1bW5BdXRvU2l6ZU1vZHVsZSwgQ29sdW1uQXBpTW9kdWxlLCBHcmlkQXBpXHJcbiAgLCBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXNcclxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JqZWN0VVJMUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL29iamVjdFVSTFJlbmRlcmVyL29iamVjdFVSTFJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVJvd1JlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZWxldGVSb3dSZW5kZXJlci9kZWxldGVSb3dSZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25zQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpb25zQ2VsbFJlbmRlcmVyL2FjdGlvbnNDZWxsUmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2V0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXRGaWx0ZXIvc2V0RmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhvc3RDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2hvc3RDZWxsUmVuZGVyZXIvaG9zdENlbGxSZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXR0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWF0dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRGb2N1c2FibGVzIH0gZnJvbSAnLi4vdXRpbHMvZm9jdXNhYmxlJztcclxuaW1wb3J0IHsgaXNSZWNvcmQsIGlzTGFiZWxlZFJlY29yZCwgaXNOdW1lcmljS2V5IH0gZnJvbSAnLi4vY29tbW9uL3JlY29yZCc7XHJcbmltcG9ydCB7IGdldExhYmVsU3ltYm9sIH0gZnJvbSAnLi4vY29tbW9uL3N5bWJvbHMnO1xyXG5pbXBvcnQge1xyXG4gIEFHX0dSSURfTE9DQUxFX0lULFxyXG4gIEFHX0dSSURfTE9DQUxFX0VOLFxyXG4gIEFHX0dSSURfTE9DQUxFX0RFLFxyXG4gIEFHX0dSSURfTE9DQUxFX0ZSLFxyXG4gIEFHX0dSSURfTE9DQUxFX0VTLFxyXG4gIEFHX0dSSURfTE9DQUxFX1BUICBcclxufSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvbG9jYWxlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuXHJcbnR5cGUgTWFwVHlwZSA9IFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIHN0cmluZz4gfCBudWxsO1xyXG5cclxudHlwZSBHcm91cE5vZGUgPSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IFwiZ3JvdXBcIjtcclxuICBjb2x1bW5zOiAoR3JvdXBOb2RlIHwgYW55KVtdO1xyXG59O1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgR3JpZFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1hdHRlcjogRm9ybWF0dGVyU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgcHJvZ3JhbW1hYmlsaXR5OiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBnZXRNb2R1bGVzKCk6IE1vZHVsZVtdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIENsaWVudFNpZGVSb3dNb2RlbE1vZHVsZVxyXG4gICAgICAsIEluZmluaXRlUm93TW9kZWxNb2R1bGVcclxuICAgICAgLCBQYWdpbmF0aW9uTW9kdWxlXHJcbiAgICAgICwgTG9jYWxlTW9kdWxlXHJcbiAgICAgICwgQ2VsbFN0eWxlTW9kdWxlXHJcbiAgICAgICwgQ2xpZW50U2lkZVJvd01vZGVsQXBpTW9kdWxlXHJcbiAgICAgICwgVGV4dEZpbHRlck1vZHVsZVxyXG4gICAgICAsIE51bWJlckZpbHRlck1vZHVsZVxyXG4gICAgICAsIERhdGVGaWx0ZXJNb2R1bGVcclxuICAgICAgLCBDb2x1bW5BdXRvU2l6ZU1vZHVsZVxyXG4gICAgICAsIENvbHVtbkFwaU1vZHVsZVxyXG4gICAgICAsIFJvd1NlbGVjdGlvbk1vZHVsZVxyXG4gICAgICAsIFJvd0FwaU1vZHVsZVxyXG4gICAgICAsIFJvd0F1dG9IZWlnaHRNb2R1bGVcclxuICAgICAgLy8sIFZhbGlkYXRpb25Nb2R1bGVcclxuICAgIF07XHJcbiAgfTtcclxuXHJcbiAgZ2V0T3B0aW9ucyhjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBHcmlkT3B0aW9ucyB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFJvd1NlbGVjdGlvbihjb21wb25lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBwYWdpbmF0aW9uID0gdGhpcy5nZXRQYWdpbmFibGUoY29tcG9uZW50KTtcclxuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5nZXRQYWdlU2l6ZShjb21wb25lbnQpO1xyXG4gICAgY29uc3QgdGV4dHMgPSB0aGlzLmdldFRleHRzKCk7XHJcbiAgICBjb25zdCB0aGVtZSA9IHRoaXMuZ2V0VGhlbWUoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcclxuICAgICAgICBmbG9hdGluZ0ZpbHRlcjogKGNvbXBvbmVudC5mbG9hdGluZ0ZpbHRlciA9PT0gdHJ1ZSksXHJcbiAgICAgICAgaGVhZGVyQ2xhc3M6IChjb21wb25lbnQuZmxvYXRpbmdGaWx0ZXIgPT09IHRydWUpXHJcbiAgICAgICAgICA/ICdzaG93LWZpbHRlcicgOiAnaGlkZS1maWx0ZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIHNlbGVjdGlvbkNvbHVtbkRlZjoge1xyXG4gICAgICAgIHBpbm5lZDogJ2xlZnQnXHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGFUeXBlRGVmaW5pdGlvbnM6IHRoaXMuZ2V0RGF0YVR5cGVEZWZpbml0aW9ucygpLFxyXG4gICAgICByb3dTZWxlY3Rpb246IHNlbGVjdGlvbixcclxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbixcclxuICAgICAgcGFnaW5hdGlvblBhZ2VTaXplOiBwYWdlU2l6ZSxcclxuICAgICAgY2FjaGVCbG9ja1NpemU6IHBhZ2VTaXplLFxyXG4gICAgICBwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvcjogWzUsIDEwLCAyMCwgNTBdLFxyXG4gICAgICBsb2NhbGVUZXh0OiB0ZXh0cyxcclxuICAgICAgZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgIHRoZW1lOiB0aGVtZSwgICAgICBcclxuICAgICAgb25HcmlkU2l6ZUNoYW5nZWQ6IChwYXJhbXM6IEdyaWRTaXplQ2hhbmdlZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemVHcmlkKGNvbXBvbmVudCwgcGFyYW1zLmFwaSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIG9uTW9kZWxVcGRhdGVkOiAocGFyYW1zOiBNb2RlbFVwZGF0ZWRFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplR3JpZChjb21wb25lbnQsIHBhcmFtcy5hcGkpO1xyXG4gICAgICAgIHRoaXMub25Sb3dTZWxlY3RpbmcoY29tcG9uZW50LCBmb3JtR3JvdXAsIHBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5EZWZzKGNvbXBvbmVudDogYW55LCBjb2x1bW5zOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogQ29sRGVmW10ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29sdW1ucykpIHtcclxuICAgICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSB0aGlzLmdyb3VwQ29sdW1ucyhjb2x1bW5zKTtcclxuICAgICAgY29uc3QgY29sdW1uRGVmcyA9IHRoaXMuZ3JvdXBzVG9Db2x1bW5EZWZzKGdyb3VwZWRDb2x1bW5zXHJcbiAgICAgICAgLCAoY3MpID0+IHRoaXMuY3JlYXRlQ29sdW1uRGVmcyhjb21wb25lbnQsIGNzLCBmb3JtR3JvdXApKTtcclxuXHJcbiAgICAgIHRoaXMuYWRkQWN0aW9uQ29sdW1uRGVmKGNvbXBvbmVudCwgY29sdW1uRGVmcywgZm9ybUdyb3VwKTtcclxuICAgICAgdGhpcy5hZGRSb3dOdW1iZXJzQ29sdW1uRGVmKGNvbXBvbmVudCwgY29sdW1uRGVmcyk7XHJcblxyXG4gICAgICByZXR1cm4gY29sdW1uRGVmcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBldmVudDogYW55KSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnNlbGVjdGlvbkNoYW5nZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgY29tcG9uZW50LnNlbGVjdGlvbkNoYW5nZWQsIHtcclxuICAgICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICAgIGV4dGVuZENvbnRleHQ6ICgpID0+ICh7XHJcbiAgICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzOiBldmVudC5hcGkuZ2V0U2VsZWN0ZWRSb3dzKClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVHcmlkKGNvbXBvbmVudDogYW55LCBhcGk6IEdyaWRBcGkpIHtcclxuICAgIGNvbnN0IGNvbHVtbnNUb1Jlc2l6ZTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNBY3Rpb25zKGNvbXBvbmVudCkpIHtcclxuICAgICAgY29sdW1uc1RvUmVzaXplLnB1c2goJ2FjdGlvbnMnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oYXNSb3dOdW1iZXJzKGNvbXBvbmVudCkpIHtcclxuICAgICAgY29sdW1uc1RvUmVzaXplLnB1c2goJ3Jvd051bWJlcnMnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sdW1uc1RvUmVzaXplLmxlbmd0aCA+IDApIHtcclxuICAgICAgYXBpLmF1dG9TaXplQ29sdW1ucyhjb2x1bW5zVG9SZXNpemUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNBY3Rpb25zKGNvbXBvbmVudDogYW55KSB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjb21wb25lbnQuYWN0aW9ucykgJiYgY29tcG9uZW50LmFjdGlvbnMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzUm93TnVtYmVycyhjb21wb25lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQucm93TnVtYmVycyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNvbHVtbkRlZnMoY29tcG9uZW50OiBhbnksIGNvbHVtbnM6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBDb2xEZWZbXSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xyXG4gICAgICBjb25zdCBjb2x1bW5EZWZzID0gY29sdW1ucy5tYXAoKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmtleSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKGNvbHVtbiwgJ2xhYmVsJylcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0Q2VsbERhdGFUeXBlKGNvbHVtbiwgY29sRGVmKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWFwID0gdGhpcy5nZXRNYXAoY29sdW1uLCBjb2xEZWYsIGZvcm1Hcm91cCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0Q2VsbFJlbmRlcmVyKGNvbHVtbiwgY29sRGVmLCBtYXAsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXRBdXRvSGVpZ2h0KGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFJlc2l6YWJsZShjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRTb3J0YWJsZShjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXIoY29sdW1uLCBjb2xEZWYsIG1hcCk7XHJcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJQYXJhbXMoY29sdW1uLCBjb2xEZWYsIG1hcCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdXBwcmVzc01vdmFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0RmxleChjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRBbGlnbihjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRQaW5uZWQoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0V2lkdGgoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0VmFsdWVGb3JtYXR0ZXIoY29sdW1uLCBjb2xEZWYsIG1hcCk7XHJcbiAgICAgICAgcmV0dXJuIGNvbERlZjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY29sdW1uRGVmcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEFjdGlvbkNvbHVtbkRlZihjb21wb25lbnQ6IGFueSwgY29sdW1uRGVmczogQ29sRGVmW10sIGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAodGhpcy5oYXNBY3Rpb25zKGNvbXBvbmVudCkpIHtcclxuICAgICAgY29sdW1uRGVmcy5wdXNoKHtcclxuICAgICAgICBjb2xJZDogJ2FjdGlvbnMnLFxyXG4gICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKFRleHRzLCAnQWN0aW9ucycpLFxyXG4gICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIGZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgY2VsbERhdGFUeXBlOiBmYWxzZSxcclxuICAgICAgICBwaW5uZWQ6IFwicmlnaHRcIixcclxuICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxyXG4gICAgICAgICAgZm9ybUdyb3VwOiBmb3JtR3JvdXBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNlbGxSZW5kZXJlcjogQWN0aW9uc0NlbGxSZW5kZXJlckNvbXBvbmVudCxcclxuICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IHRoaXMubmF2aWdhdGVJbnNpZGVDZWxsLmJpbmQodGhpcylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFJvd051bWJlcnNDb2x1bW5EZWYoY29tcG9uZW50OiBhbnksIGNvbHVtbkRlZnM6IENvbERlZltdKSB7XHJcbiAgICBpZiAodGhpcy5oYXNSb3dOdW1iZXJzKGNvbXBvbmVudCkpIHtcclxuICAgICAgY29sdW1uRGVmcy51bnNoaWZ0KHtcclxuICAgICAgICBjb2xJZDogJ3Jvd051bWJlcnMnLFxyXG4gICAgICAgIGhlYWRlck5hbWU6IFwiI1wiLFxyXG4gICAgICAgIHBpbm5lZDogXCJsZWZ0XCIsXHJcbiAgICAgICAgaGVhZGVyQ2xhc3M6ICdyb3ctbnVtYmVycy1oZWFkZXInLFxyXG4gICAgICAgIGNlbGxDbGFzczogJ3Jvdy1udW1iZXJzLWNlbGwnLFxyXG4gICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgdmFsdWVHZXR0ZXI6IChuOiBhbnkpID0+IG4ubm9kZS5yb3dJbmRleCArIDFcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdyb3VwQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IChHcm91cE5vZGUgfCBhbnkpW10ge1xyXG4gICAgY29uc3Qgcm9vdEl0ZW1zT3JkZXJlZDogKEdyb3VwTm9kZSB8IGFueSlbXSA9IFtdO1xyXG5cclxuICAgIGZ1bmN0aW9uIGZpbmRPckNyZWF0ZUdyb3VwKFxyXG4gICAgICBncm91cHM6IChHcm91cE5vZGUgfCBhbnkpW10sXHJcbiAgICAgIG5hbWU6IHN0cmluZ1xyXG4gICAgKTogR3JvdXBOb2RlIHtcclxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXBzLmZpbmQoXHJcbiAgICAgICAgaXRlbSA9PiAoaXRlbSBhcyBHcm91cE5vZGUpLnR5cGUgPT09IFwiZ3JvdXBcIiAmJiAoaXRlbSBhcyBHcm91cE5vZGUpLm5hbWUgPT09IG5hbWVcclxuICAgICAgKSBhcyBHcm91cE5vZGU7XHJcblxyXG4gICAgICBpZiAoIWdyb3VwKSB7XHJcbiAgICAgICAgZ3JvdXAgPSB7XHJcbiAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgdHlwZTogXCJncm91cFwiLFxyXG4gICAgICAgICAgY29sdW1uczogW10sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBncm91cHMucHVzaChncm91cCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBncm91cDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwUGFydHMgPSAoY29sdW1uLmdyb3VwID8/IFwiXCIpXHJcbiAgICAgICAgLnNwbGl0KC9bXFxcXC9dLylcclxuICAgICAgICAubWFwKChwYXJ0OiBzdHJpbmcpID0+IHBhcnQudHJpbSgpKVxyXG4gICAgICAgIC5maWx0ZXIoKHBhcnQ6IHN0cmluZykgPT4gcGFydC5sZW5ndGggPiAwKTtcclxuXHJcbiAgICAgIGlmIChncm91cFBhcnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJvb3RJdGVtc09yZGVyZWQucHVzaChjb2x1bW4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBjdXJyZW50TGV2ZWwgPSByb290SXRlbXNPcmRlcmVkO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXBQYXJ0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3QgcGFydCA9IGdyb3VwUGFydHNbaV07XHJcbiAgICAgICAgICBjb25zdCBncm91cCA9IGZpbmRPckNyZWF0ZUdyb3VwKGN1cnJlbnRMZXZlbCwgcGFydCk7XHJcbiAgICAgICAgICBjdXJyZW50TGV2ZWwgPSBncm91cC5jb2x1bW5zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50TGV2ZWwucHVzaChjb2x1bW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJvb3RJdGVtc09yZGVyZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdyb3Vwc1RvQ29sdW1uRGVmcyhncm91cGVkOiAoR3JvdXBOb2RlIHwgYW55KVtdLCBnZXRDb2x1bW5zRGVmOiAoY29sdW1uczogYW55W10pID0+IENvbERlZltdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGdyb3VwZWQubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoJ3R5cGUnIGluIGl0ZW0gJiYgaXRlbS50eXBlID09PSAnZ3JvdXAnKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGhlYWRlck5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLmdyb3Vwc1RvQ29sdW1uRGVmcyhpdGVtLmNvbHVtbnMsIGdldENvbHVtbnNEZWYpXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZ2V0Q29sdW1uc0RlZihbaXRlbV0pWzBdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2VsbERhdGFUeXBlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gXCJjb21wb25lbnRcIlxyXG4gICAgICB8fCBjb2x1bW4uZGF0YVR5cGUgPT09IFwiYXV0b1wiKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4uZGF0YVR5cGUgPT09IFwic3RyaW5nXCJcclxuICAgICAgJiYgY29sdW1uLmRhdGFUeXBlLnRyaW0oKSAhPT0gXCJcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbERhdGFUeXBlID0gY29sdW1uLmRhdGFUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDZWxsUmVuZGVyZXIoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUsIGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAoY29sdW1uLmZvcm1hdCA9PT0gXCJvYmplY3RVUkxcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gT2JqZWN0VVJMUmVuZGVyZXJDb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbi5mb3JtYXQgPT09IFwiZGVsZXRlUm93XCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IERlbGV0ZVJvd1JlbmRlcmVyQ29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImJvb2xlYW5cIiAmJiBtYXApIHtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE1hcChwYXJhbXMudmFsdWUsIG1hcCk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gXCJjb21wb25lbnRcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gSG9zdENlbGxSZW5kZXJlckNvbXBvbmVudDtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcyA9IHtcclxuICAgICAgICBjb21wb25lbnRUeXBlOiBjb2x1bW4uY29tcG9uZW50LFxyXG4gICAgICAgIHByb3BlcnRpZXM6IGNvbHVtbi5wcm9wZXJ0aWVzLFxyXG4gICAgICAgIGZvcm1Hcm91cDogZm9ybUdyb3VwXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAnY2VsbC1jb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXV0b0hlaWdodChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmIChjb2x1bW4uYXV0b0hlaWdodCkge1xyXG4gICAgICBjb2xEZWYuYXV0b0hlaWdodCA9IHRydWU7XHJcbiAgICAgIGNvbERlZi53cmFwVGV4dCA9IHRydWU7XHJcbiAgICB9ICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmVzaXphYmxlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiApIHtcclxuICAgIGNvbERlZi5yZXNpemFibGUgPSAoY29sdW1uLnJlc2l6ZSA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNvcnRhYmxlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgY29sRGVmLnNvcnRhYmxlID0gKGNvbHVtbi5zb3J0ID09PSB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsdGVyKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgbWFwOiBNYXBUeXBlKSB7XHJcbiAgICBpZiAoY29sdW1uLmZpbHRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICBjb2xEZWYuZmlsdGVyID0gdHJ1ZTtcclxuICAgICAgaWYgKG1hcCkge1xyXG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSBTZXRGaWx0ZXJDb21wb25lbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsdGVyUGFyYW1zKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgbWFwOiBNYXBUeXBlKSB7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcbiAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAndXVpZCcpIHtcclxuICAgICAgdGhpcy5zZXRVdWlkRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09ICdpbnRlZ2VyJykge1xyXG4gICAgICB0aGlzLnNldEludGVnZXJGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZUZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5zZXRCb29sZWFuRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChtYXApIHtcclxuICAgICAgZmlsdGVyUGFyYW1zLm1hcCA9IG1hcDtcclxuICAgIH1cclxuXHJcbiAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0gZmlsdGVyUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVdWlkRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFsnZXF1YWxzJywgJ25vdEVxdWFsJ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEludGVnZXJGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIGZpbHRlclBhcmFtcy5hbGxvd2VkQ2hhclBhdHRlcm4gPSAnXFxcXGQnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRlRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuY29tcGFyYXRvciA9IChmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0OiBEYXRlLCBjZWxsVmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIWNlbGxWYWx1ZSkgcmV0dXJuIC0xO1xyXG4gICAgICBjb25zdCBjZWxsRGF0ZSA9IG5ldyBEYXRlKGNlbGxWYWx1ZSk7XHJcbiAgICAgIGlmIChpc05hTihjZWxsRGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gLTE7XHJcblxyXG4gICAgICBjb25zdCBjZWxsRGF0ZU5vVGltZSA9IG5ldyBEYXRlKGNlbGxEYXRlLmdldEZ1bGxZZWFyKCksIGNlbGxEYXRlLmdldE1vbnRoKCksIGNlbGxEYXRlLmdldERhdGUoKSk7XHJcblxyXG4gICAgICBpZiAoY2VsbERhdGVOb1RpbWUgPCBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSByZXR1cm4gLTE7XHJcbiAgICAgIGlmIChjZWxsRGF0ZU5vVGltZSA+IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHJldHVybiAxO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Qm9vbGVhbkZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAnaW5jbHVkZUFsbCcsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLkNob29zZU9uZSxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHRydWVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICd0cnVlJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuVHJ1ZSxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHZhbHVlID09PSB0cnVlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAnZmFsc2UnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5GYWxzZSxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHZhbHVlID09PSBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ2JsYW5rJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuQmxhbmssXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gbnVsbFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ25vdEJsYW5rJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuTm90QmxhbmssXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gbnVsbFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIGZpbHRlclBhcmFtcy5zdXBwcmVzc0FuZE9yQ29uZGl0aW9uID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U3VwcHJlc3NNb3ZhYmxlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKCEoY29sdW1uLm1vdmUgPT09IHRydWUpKSB7IFxyXG4gICAgICBjb2xEZWYuc3VwcHJlc3NNb3ZhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmxleChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmIChjb2x1bW4uZmxleCA9PT0gdHJ1ZSkgeyBcclxuICAgICAgY29sRGVmLmZsZXggPSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBbGlnbihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmIChjb2x1bW4uYWxpZ24gPT09IFwibGVmdFwiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7IHRleHRBbGlnbjogJ2xlZnQnIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uYWxpZ24gPT09IFwiY2VudGVyXCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsgdGV4dEFsaWduOiAnY2VudGVyJyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmFsaWduID09PSBcInJpZ2h0XCIpIHsgXHJcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7IHRleHRBbGlnbjogJ3JpZ2h0JyB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQaW5uZWQoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi5waW5uZWQgPT09IFwic3RyaW5nXCIpIHsgXHJcbiAgICAgIGNvbERlZi5waW5uZWQgPSBjb2x1bW4ucGlubmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXaWR0aChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uLndpZHRoID09PSBcIm51bWJlclwiKSB7IFxyXG4gICAgICBjb2xEZWYud2lkdGggPSBjb2x1bW4ud2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ubWluV2lkdGggPT09IFwibnVtYmVyXCIpIHsgXHJcbiAgICAgIGNvbERlZi5taW5XaWR0aCA9IGNvbHVtbi5taW5XaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi5tYXhXaWR0aCA9PT0gXCJudW1iZXJcIikgeyBcclxuICAgICAgY29sRGVmLm1heFdpZHRoID0gY29sdW1uLm1heFdpZHRoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZUZvcm1hdHRlcihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICBjb2xEZWYudmFsdWVGb3JtYXR0ZXIgPSAocGFyYW1zKSA9PiB0aGlzLmZvcm1hdE1hcChwYXJhbXMudmFsdWUsIG1hcCk7ICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJvd1NlbGVjdGlvbihjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBSb3dTZWxlY3Rpb25PcHRpb25zIHwgdW5kZWZpbmVkICB7XHJcbiAgICBsZXQgb3B0aW9uczogUm93U2VsZWN0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAoY29tcG9uZW50LnNlbGVjdGlvbiA9PT0gXCJzaW5nbGVSb3dcIikge1xyXG4gICAgICBvcHRpb25zID0geyBtb2RlOiBcInNpbmdsZVJvd1wiIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb21wb25lbnQuc2VsZWN0aW9uID09PSBcIm11bHRpUm93XCIpIHtcclxuICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICBtb2RlOiBcIm11bHRpUm93XCIsXHJcbiAgICAgICAgc2VsZWN0QWxsOiAnZmlsdGVyZWQnLFxyXG4gICAgICAgIGhpZGVEaXNhYmxlZENoZWNrYm94ZXM6IHRydWVcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucyAmJiBjb21wb25lbnQuaXNTZWxlY3RhYmxlKSB7XHJcbiAgICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICBpc1Jvd1NlbGVjdGFibGU6IChyb3dOb2RlKSA9PiB0aGlzLm9uUm93U2VsZWN0YWJsZShjb21wb25lbnQsIGZvcm1Hcm91cCwgcm93Tm9kZS5kYXRhKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUm93U2VsZWN0YWJsZShjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRhdGE6IGFueSkgOiBib29sZWFuIHtcclxuICAgIGlmICghZGF0YSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgY29tcG9uZW50LmlzU2VsZWN0YWJsZSwge1xyXG4gICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiAoe1xyXG4gICAgICAgIFwiZXZlbnRcIjoge1xyXG4gICAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQgPT09IHRydWU7IFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJvd1NlbGVjdGVkKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGEpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGNvbXBvbmVudC5pc1NlbGVjdGVkLCB7XHJcbiAgICAgIGNhY2hlYWJsZTogZmFsc2UsXHJcbiAgICAgIGV4dGVuZENvbnRleHQ6ICgpID0+ICh7XHJcbiAgICAgICAgXCJldmVudFwiOiB7XHJcbiAgICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Sb3dTZWxlY3RpbmcoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXJhbXM6IE1vZGVsVXBkYXRlZEV2ZW50KSB7XHJcbiAgICBpZiAocGFyYW1zLm5ld0RhdGEgICAgICBcclxuICAgICAgJiYgY29tcG9uZW50LmlzU2VsZWN0ZWRcclxuICAgICAgJiYgdGhpcy5oYXNTZWxlY3Rpb24oY29tcG9uZW50KSlcclxuICAgIHtcclxuICAgICAgcGFyYW1zLmFwaS5mb3JFYWNoTm9kZSgobm9kZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm9uUm93U2VsZWN0ZWQoY29tcG9uZW50LCBmb3JtR3JvdXAsIG5vZGUuZGF0YSkpIHtcclxuICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzU2VsZWN0aW9uKGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29tcG9uZW50LnNlbGVjdGlvbiA9PT0gXCJzaW5nbGVSb3dcIlxyXG4gICAgICB8fCBjb21wb25lbnQuc2VsZWN0aW9uID09PSBcIm11bHRpUm93XCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2luYWJsZShjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgY29tcG9uZW50LnJvd0NvdW50ID09PSAnbnVtYmVyJyAmJiBjb21wb25lbnQucm93Q291bnQgPiAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFnZVNpemUoY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgY29tcG9uZW50LnJvd0NvdW50ID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gY29tcG9uZW50LnJvd0NvdW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUZXh0cygpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMubGFuZ3VhZ2UgPT09ICdpdCcpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0lUO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5sYW5ndWFnZSA9PT0gJ2VuJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRU47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmxhbmd1YWdlID09PSAnZGUnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9ERTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMubGFuZ3VhZ2UgPT09ICdmcicpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0ZSO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5sYW5ndWFnZSA9PT0gJ2VzJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRVM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmxhbmd1YWdlID09PSAncHQnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9QVDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMubGFuZ3VhZ2UgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9JVDsgLy8gbmV1dHJhbFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9FTjsgLy8gZmFsbGJhY2tcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGhlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhlbWVRdWFydHpcclxuICAgICAgLndpdGhQYXJ0KGljb25TZXRBbHBpbmUpXHJcbiAgICAgIC53aXRoUGFyYW1zKHtcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI0ZBRkFGQVwiLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBcIiNEOUU0RjdcIixcclxuICAgICAgICBicm93c2VyQ29sb3JTY2hlbWU6IFwibGlnaHRcIixcclxuICAgICAgICBjZWxsVGV4dENvbG9yOiBcIiMwMDEyMUFcIixcclxuICAgICAgICBjb2x1bW5Cb3JkZXI6IHRydWUsXHJcbiAgICAgICAgZm9udEZhbWlseTogXCJpbmhlcml0XCIsXHJcbiAgICAgICAgZm9udFNpemU6IDE2LFxyXG4gICAgICAgIGhlYWRlckJhY2tncm91bmRDb2xvcjogXCIjMDAyNDYwXCIsXHJcbiAgICAgICAgaGVhZGVyQ29sdW1uQm9yZGVyOiB0cnVlLFxyXG4gICAgICAgIGhlYWRlckNvbHVtblJlc2l6ZUhhbmRsZUNvbG9yOiBcIiNGMkY2RkNcIixcclxuICAgICAgICBoZWFkZXJDb2x1bW5SZXNpemVIYW5kbGVXaWR0aDogMixcclxuICAgICAgICBoZWFkZXJGb250U2l6ZTogMTYsXHJcbiAgICAgICAgaGVhZGVyRm9udFdlaWdodDogNjAwLFxyXG4gICAgICAgIGhlYWRlclJvd0JvcmRlcjogdHJ1ZSxcclxuICAgICAgICBoZWFkZXJUZXh0Q29sb3I6IFwiI0YyRjZGQ1wiLFxyXG4gICAgICAgIHJvd0JvcmRlcjogdHJ1ZVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YVR5cGVEZWZpbml0aW9ucygpOiB7IFtjZWxsRGF0YVR5cGU6IHN0cmluZ106IERhdGFUeXBlRGVmaW5pdGlvbjxhbnk+OyB9IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHV1aWQ6IHtcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICd0ZXh0JyxcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICd0ZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICBkYXRlOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdERhdGUocGFyYW1zLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGVUaW1lOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lKHBhcmFtcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB0aW1lOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdFRpbWUocGFyYW1zLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGN1cnJlbmN5OiB7XHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4gcGFyYW1zLnZhbHVlID09IG51bGxcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogdGhpcy5mb3JtYXR0ZXIuZm9ybWF0Q3VycmVuY3kocGFyYW1zLnZhbHVlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZWNpbWFsOiB7XHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4gcGFyYW1zLnZhbHVlID09IG51bGxcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogdGhpcy5mb3JtYXR0ZXIuZm9ybWF0TnVtYmVyKHBhcmFtcy52YWx1ZSlcclxuICAgICAgfSxcclxuICAgICAgaW50ZWdlcjoge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IHRoaXMuZm9ybWF0dGVyLmZvcm1hdE51bWJlcihwYXJhbXMudmFsdWUsIDApXHJcbiAgICAgIH0sXHJcbiAgICAgIHBlcmNlbnRhZ2U6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHBhcmFtcyA9PiBwYXJhbXMudmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiBgJHtNYXRoLnJvdW5kKHBhcmFtcy52YWx1ZSAqIDEwMCl9JWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIGZsYWdzOiB7XHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICdudW1iZXInXHJcbiAgICAgIH0gICAgICBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1hcChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogTWFwVHlwZSB7XHJcblxyXG4gICAgY29uc3QgYWxsb3dlZCA9IChjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImJvb2xlYW5cIlxyXG4gICAgICB8fCBjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcInRleHRcIlxyXG4gICAgICB8fCBjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcIm51bWJlclwiXHJcbiAgICAgIHx8IGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwiZmxhZ3NcIik7XHJcblxyXG4gICAgaWYgKGFsbG93ZWQgJiYgY29sdW1uLm1hcCkge1xyXG4gICAgICBjb25zdCBtYXAgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGNvbHVtbi5tYXBWYWx1ZXMpO1xyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSBpc1JlY29yZChcclxuICAgICAgICBtYXAsXHJcbiAgICAgICAga2V5ID0+IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBrZXkgPT09ICdudW1iZXInLFxyXG4gICAgICAgIHZhbCA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJ1xyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCF2YWxpZClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGlmIChjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImZsYWdzXCIpIHtcclxuICAgICAgICAobWFwIGFzIGFueSlbZ2V0TGFiZWxTeW1ib2xdID0gKGtleTogYW55KSA9PiB0aGlzLmZvcm1hdEZsYWdzKGtleSwgbWFwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG1hcDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0TWFwKHZhbHVlOiBhbnksIG1hcDogTWFwVHlwZSlcclxuICB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICB2YXIgcmVzdWx0ID0gbWFwW3ZhbHVlXTtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsZWQgPSBpc0xhYmVsZWRSZWNvcmQoXHJcbiAgICAgICAgICBtYXAsXHJcbiAgICAgICAgICBrZXkgPT4gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicsXHJcbiAgICAgICAgICB2YWwgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycsXHJcbiAgICAgICAgICBnZXRMYWJlbFN5bWJvbFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChsYWJlbGVkKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBtYXBbZ2V0TGFiZWxTeW1ib2xdKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHJldHVybiByZXN1bHQgPz8gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0RmxhZ3ModmFsdWU6IGFueSwgbWFwOiBNYXBUeXBlKSB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJlxyXG4gICAgICBpc1JlY29yZChtYXAsIGlzTnVtZXJpY0tleSwgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIG1hcFswXSA/PyBcIjBcIjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYXZhaWxhYmxlRmxhZ3MgPSBPYmplY3Qua2V5cyhtYXApXHJcbiAgICAgICAgLm1hcChOdW1iZXIpXHJcbiAgICAgICAgLmZpbHRlcihmbGFnID0+IGZsYWcgIT09IDApO1xyXG5cclxuICAgICAgY29uc3QgZmxhZ3MgPSBhdmFpbGFibGVGbGFncy5maWx0ZXIoZmxhZyA9PiAodmFsdWUgJiBmbGFnKSA9PT0gZmxhZyk7XHJcblxyXG4gICAgICBjb25zdCBzdW1GbGFncyA9IGZsYWdzLnJlZHVjZSgoc3VtLCBmKSA9PiBzdW0gfCBmLCAwKTtcclxuXHJcbiAgICAgIGlmICgodmFsdWUgJiBzdW1GbGFncykgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmbGFnc1xyXG4gICAgICAgIC5tYXAoZmxhZyA9PiBtYXBbZmxhZ10pXHJcbiAgICAgICAgLmZpbHRlcigobGFiZWwpOiBsYWJlbCBpcyBzdHJpbmcgPT4gISFsYWJlbClcclxuICAgICAgICAuam9pbignLCAnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZUluc2lkZUNlbGwoeyBldmVudCB9OiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXM8YW55Pikge1xyXG4gICAgY29uc3QgR1JJRF9DRUxMX0NMQVNTTkFNRSA9IFwiYWctY2VsbFwiO1xyXG4gICAgY29uc3QgeyBrZXksIHNoaWZ0S2V5IH0gPSBldmVudDtcclxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldEV2ZW50UGF0aChldmVudCk7XHJcbiAgICBjb25zdCBpc1RhYkZvcndhcmQgPSBrZXkgPT09IFwiVGFiXCIgJiYgc2hpZnRLZXkgPT09IGZhbHNlO1xyXG4gICAgY29uc3QgaXNUYWJCYWNrd2FyZCA9IGtleSA9PT0gXCJUYWJcIiAmJiBzaGlmdEtleSA9PT0gdHJ1ZTtcclxuICAgIGxldCBzdXBwcmVzc0V2ZW50ID0gZmFsc2U7XHJcbiAgICAvLyBIYW5kbGUgY2VsbCBjaGlsZHJlbiB0YWJiaW5nXHJcbiAgICBpZiAoaXNUYWJGb3J3YXJkIHx8IGlzVGFiQmFja3dhcmQpIHtcclxuICAgICAgY29uc3QgZUdyaWRDZWxsID0gcGF0aC5maW5kKChlbCkgPT4ge1xyXG4gICAgICAgIGlmIChlbC5jbGFzc0xpc3QgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBlbC5jbGFzc0xpc3QuY29udGFpbnMoR1JJRF9DRUxMX0NMQVNTTkFNRSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIWVHcmlkQ2VsbCkge1xyXG4gICAgICAgIHJldHVybiBzdXBwcmVzc0V2ZW50O1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMgPSBnZXRGb2N1c2FibGVzKGVHcmlkQ2VsbCk7XHJcbiAgICAgIGNvbnN0IGxhc3RDZWxsQ2hpbGRFbCA9XHJcbiAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50c1tmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICBjb25zdCBmaXJzdENlbGxDaGlsZEVsID0gZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50c1swXTtcclxuICAgICAgLy8gU3VwcHJlc3Mga2V5Ym9hcmQgZXZlbnQgaWYgdGFiYmluZyBmb3J3YXJkIHdpdGhpbiB0aGUgY2VsbCBhbmQgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50IGlzIG5vdCB0aGUgbGFzdCBjaGlsZFxyXG4gICAgICBpZiAoZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50cy5pbmRleE9mKFxyXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpc1RhYkZvcndhcmQpIHtcclxuICAgICAgICBjb25zdCBpc0xhc3RDaGlsZEZvY3VzZWQgPVxyXG4gICAgICAgICAgbGFzdENlbGxDaGlsZEVsICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RDZWxsQ2hpbGRFbDtcclxuICAgICAgICBpZiAoIWlzTGFzdENoaWxkRm9jdXNlZCkge1xyXG4gICAgICAgICAgc3VwcHJlc3NFdmVudCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoY3VycmVudEluZGV4ICE9PSAtMSB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlR3JpZENlbGwpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50c1tjdXJyZW50SW5kZXggKyAxXS5mb2N1cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBTdXBwcmVzcyBrZXlib2FyZCBldmVudCBpZiB0YWJiaW5nIGJhY2t3YXJkcyB3aXRoaW4gdGhlIGNlbGwsIGFuZCB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaXMgbm90IHRoZSBmaXJzdCBjaGlsZFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBjZWxsSGFzRm9jdXNlZENoaWxkcmVuID1cclxuICAgICAgICAgIGVHcmlkQ2VsbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSAmJlxyXG4gICAgICAgICAgZUdyaWRDZWxsICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgICAgIC8vIE1hbnVhbGx5IHNldCBmb2N1cyB0byB0aGUgbGFzdCBjaGlsZCBlbGVtZW50IGlmIGNlbGwgZG9lc24ndCBoYXZlIGZvY3VzZWQgY2hpbGRyZW5cclxuICAgICAgICBpZiAoIWNlbGxIYXNGb2N1c2VkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgIGxhc3RDZWxsQ2hpbGRFbC5mb2N1cygpO1xyXG4gICAgICAgICAgLy8gQ2FuY2VsIGtleWJvYXJkIHByZXNzLCBzbyB0aGF0IGl0IGRvZXNuJ3QgZm9jdXMgb24gdGhlIGxhc3QgY2hpbGQgYW5kIHRoZW4gcGFzcyB0aHJvdWdoIHRoZSBrZXlib2FyZCBwcmVzcyB0b1xyXG4gICAgICAgICAgLy8gbW92ZSB0byB0aGUgMm5kIGxhc3QgY2hpbGQgZWxlbWVudFxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNGaXJzdENoaWxkRm9jdXNlZCA9XHJcbiAgICAgICAgICBmaXJzdENlbGxDaGlsZEVsICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Q2VsbENoaWxkRWw7XHJcbiAgICAgICAgaWYgKCFpc0ZpcnN0Q2hpbGRGb2N1c2VkKSB7XHJcbiAgICAgICAgICBzdXBwcmVzc0V2ZW50ID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVHcmlkQ2VsbCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzW2N1cnJlbnRJbmRleCAtIDFdLmZvY3VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VwcHJlc3NFdmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RXZlbnRQYXRoKGV2ZW50OiBFdmVudCk6IEhUTUxFbGVtZW50W10ge1xyXG4gICAgY29uc3QgcGF0aDogSFRNTEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgbGV0IGN1cnJlbnRUYXJnZXQ6IGFueSA9IGV2ZW50LnRhcmdldDtcclxuICAgIHdoaWxlIChjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgIHBhdGgucHVzaChjdXJyZW50VGFyZ2V0KTtcclxuICAgICAgY3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -18,10 +18,10 @@ export class MarkdownService {
|
|
|
18
18
|
return marked.parse(text ?? "");
|
|
19
19
|
}
|
|
20
20
|
;
|
|
21
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
22
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MarkdownService, providedIn: 'root' });
|
|
23
23
|
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MarkdownService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root'
|
|
@@ -40,10 +40,10 @@ export class MetadataService {
|
|
|
40
40
|
}
|
|
41
41
|
schema = { forms: [] };
|
|
42
42
|
forms = [];
|
|
43
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
44
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MetadataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MetadataService });
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MetadataService, decorators: [{
|
|
47
47
|
type: Injectable
|
|
48
48
|
}], ctorParameters: () => [] });
|
|
49
49
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL21ldGFkYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGVBQWU7SUFFMUI7SUFFQSxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQVc7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWTtRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFcEYsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLGdCQUFnQjtZQUNuQixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsU0FBUzthQUN2QixNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO2FBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV0QixPQUFPO1lBQ0wsS0FBSyxFQUFFLFFBQVE7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sTUFBTSxHQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTVCLEtBQUssR0FBVSxFQUFFLENBQUM7d0dBeERmLGVBQWU7NEdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBzZXRTY2hlbWEoc2NoZW1hOiBhbnkpIHtcclxuICAgIHRoaXMuc2NoZW1hID0gc2NoZW1hID8/IHsgZm9ybXM6IFtdIH07XHJcbiAgfSBcclxuXHJcbiAgZ2V0U2NoZW1hKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY2hlbWE7XHJcbiAgfVxyXG5cclxuICBzZXRGb3Jtcyhmb3JtczogYW55W10pIHtcclxuICAgIHRoaXMuZm9ybXMgPSBmb3JtcyA/PyBbXTsgXHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZUJ5TmFtZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG5cclxuICAgIGlmICghdGhpcy5zY2hlbWEgfHwgIUFycmF5LmlzQXJyYXkodGhpcy5zY2hlbWEuZm9ybXMpKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGVzID0gdGhpcy5zY2hlbWEuZm9ybXMuZmlsdGVyKChmb3JtOiBhbnkpID0+IGZvcm0uaXNUZW1wbGF0ZSA9PT0gdHJ1ZSk7XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGVUb0V4cGFuZCA9IHRlbXBsYXRlcy5maW5kKChmb3JtOiBhbnkpID0+IGZvcm0ubmFtZSA9PT0gbmFtZSk7XHJcblxyXG4gICAgaWYgKCF0ZW1wbGF0ZVRvRXhwYW5kKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2xvbmVkRm9ybSA9IHtcclxuICAgICAgLi4udGVtcGxhdGVUb0V4cGFuZCxcclxuICAgICAgaXNUZW1wbGF0ZTogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbmV3Rm9ybXMgPSB0ZW1wbGF0ZXNcclxuICAgICAgLmZpbHRlcigoZm9ybTogYW55KSA9PiBmb3JtLm5hbWUgIT09IG5hbWUpXHJcbiAgICAgIC5jb25jYXQoY2xvbmVkRm9ybSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZm9ybXM6IG5ld0Zvcm1zXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybXM7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtQnlOYW1lKG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3Jtcy5maW5kKGZvcm0gPT4gZm9ybS5uYW1lID09PSBuYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NoZW1hOiBhbnkgPSB7IGZvcm1zOiBbXSB9O1xyXG5cclxuICBwcml2YXRlIGZvcm1zOiBhbnlbXSA9IFtdO1xyXG59XHJcbiJdfQ==
|
|
@@ -20,10 +20,10 @@ export class MimeService {
|
|
|
20
20
|
}
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
24
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MimeService, providedIn: 'root' });
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MimeService, decorators: [{
|
|
27
27
|
type: Injectable,
|
|
28
28
|
args: [{
|
|
29
29
|
providedIn: 'root'
|