@c8y/ngx-components 1018.503.56 → 1018.503.63
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/context-dashboard/context-dashboard.component.d.ts +5 -1
- package/context-dashboard/dashboard-detail.component.d.ts +1 -0
- package/core/common/common.module.d.ts +2 -1
- package/core/common/component-outlet.directive.d.ts +24 -0
- package/core/common/index.d.ts +1 -0
- package/esm2020/context-dashboard/cockpit-dashboard/cockpit-dashboard.component.mjs +3 -3
- package/esm2020/context-dashboard/context-dashboard.component.mjs +9 -2
- package/esm2020/context-dashboard/dashboard-availability.component.mjs +3 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
- package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +3 -3
- package/esm2020/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.mjs +3 -3
- package/esm2020/core/action/action-outlet.component.mjs +6 -5
- package/esm2020/core/common/common.module.mjs +8 -5
- package/esm2020/core/common/component-outlet.directive.mjs +56 -0
- package/esm2020/core/common/index.mjs +2 -1
- package/esm2020/core/data-grid/column/cell-renderer.component.mjs +5 -4
- package/esm2020/core/data-grid/column/filtering-form-renderer.component.mjs +5 -4
- package/esm2020/core/docs/help-and-support-outlet/help-and-support-outlet.component.mjs +7 -6
- package/esm2020/core/docs/legal-notices-outlet/legal-notices-outlet.component.mjs +6 -5
- package/esm2020/core/drawer/drawer-outlet/drawer-outlet.component.mjs +5 -4
- package/esm2020/core/navigator/navigator-node.component.mjs +6 -5
- package/esm2020/core/stepper/stepper-outlet.component.mjs +8 -7
- package/esm2020/core/tabs/tabs-outlet.component.mjs +5 -4
- package/esm2020/ecosystem/packages/package-details/package-details.component.mjs +3 -3
- package/esm2020/ecosystem/shared/list-filters/list-filters.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +18 -11
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +2 -2
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +2 -2
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +80 -23
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +18 -11
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +2 -2
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +2 -2
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +79 -23
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +6 -0
- package/locales/en.po +6 -0
- package/locales/es.po +6 -0
- package/locales/fr.po +6 -0
- package/locales/ja_JP.po +8 -0
- package/locales/ko.po +6 -0
- package/locales/locales.pot +6 -0
- package/locales/nl.po +6 -0
- package/locales/pl.po +6 -0
- package/locales/pt_BR.po +6 -0
- package/locales/ru.po +6 -0
- package/locales/zh_CN.po +6 -0
- package/locales/zh_TW.po +6 -0
- package/package.json +1 -1
|
@@ -136,12 +136,12 @@ export class DashboardDetailComponent {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
DashboardDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: i1.BsModalRef }, { token: i2.ContextDashboardService }, { token: i3.NavigatorService }, { token: i3.Permissions }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
139
|
-
DashboardDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", viewQueries: [{ propertyName: "dashboardDetailForm", first: true, predicate: ["dashboardDetailForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-24 p-r-24\">\n <form\n class=\"d-contents\"\n #dashboardDetailForm=\"ngForm\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-icon-selector-wrapper\n [selectedIcon]=\"dashboard.icon || 'th'\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span\n class=\"m-r-4\"\n id=\"menuLabel\"\n >\n {{ 'Menu label' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [(ngModel)]=\"dashboardName\"\n maxlength=\"512\"\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n aria-labelledby=\"description\"\n name=\"description\"\n rows=\"2\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"positionNav\">\n <span\n class=\"m-r-4\"\n id=\"positionNav\"\n >\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n type=\"number\"\n required\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n name=\"isNavigatorNode\"\n type=\"checkbox\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label\n class=\"c8y-checkbox\"\n title=\"{{ applyToDevicesOfTypeTitle }}\"\n >\n <input\n name=\"deviceType\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div\n class=\"alert alert-info m-b-24\"\n *ngIf=\"isDeviceType\"\n >\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n id=\"margin\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n name=\"margin\"\n type=\"number\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Translate if possible' | translate }}\"\n >\n <input\n name=\"translateWidgetTitle\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i6.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i8.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "component", type: i11.DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: ["globalRolesIds"], outputs: ["globalRolesIdsChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
|
|
139
|
+
DashboardDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", viewQueries: [{ propertyName: "dashboardDetailForm", first: true, predicate: ["dashboardDetailForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-24 p-r-24\">\n <form\n class=\"d-contents\"\n #dashboardDetailForm=\"ngForm\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-icon-selector-wrapper\n [selectedIcon]=\"dashboard.icon || 'th'\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span\n class=\"m-r-4\"\n id=\"menuLabel\"\n >\n {{ 'Menu label' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [(ngModel)]=\"dashboardName\"\n maxlength=\"512\"\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n aria-labelledby=\"description\"\n name=\"description\"\n rows=\"2\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"positionNav\">\n <span\n class=\"m-r-4\"\n id=\"positionNav\"\n >\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n type=\"number\"\n required\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n name=\"isNavigatorNode\"\n type=\"checkbox\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label\n class=\"c8y-checkbox\"\n title=\"{{ applyToDevicesOfTypeTitle }}\"\n >\n <input\n name=\"deviceType\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div\n class=\"alert alert-info m-b-24\"\n *ngIf=\"isDeviceType\"\n >\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false && !hideAvailability\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n id=\"margin\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n name=\"margin\"\n type=\"number\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Translate if possible' | translate }}\"\n >\n <input\n name=\"translateWidgetTitle\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i6.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i8.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "component", type: i11.DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: ["globalRolesIds"], outputs: ["globalRolesIdsChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
|
|
140
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DashboardDetailComponent, decorators: [{
|
|
141
141
|
type: Component,
|
|
142
|
-
args: [{ selector: 'c8y-dashboard-detail', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-24 p-r-24\">\n <form\n class=\"d-contents\"\n #dashboardDetailForm=\"ngForm\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-icon-selector-wrapper\n [selectedIcon]=\"dashboard.icon || 'th'\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span\n class=\"m-r-4\"\n id=\"menuLabel\"\n >\n {{ 'Menu label' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [(ngModel)]=\"dashboardName\"\n maxlength=\"512\"\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n aria-labelledby=\"description\"\n name=\"description\"\n rows=\"2\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"positionNav\">\n <span\n class=\"m-r-4\"\n id=\"positionNav\"\n >\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n type=\"number\"\n required\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n name=\"isNavigatorNode\"\n type=\"checkbox\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label\n class=\"c8y-checkbox\"\n title=\"{{ applyToDevicesOfTypeTitle }}\"\n >\n <input\n name=\"deviceType\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div\n class=\"alert alert-info m-b-24\"\n *ngIf=\"isDeviceType\"\n >\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n id=\"margin\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n name=\"margin\"\n type=\"number\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Translate if possible' | translate }}\"\n >\n <input\n name=\"translateWidgetTitle\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
|
|
142
|
+
args: [{ selector: 'c8y-dashboard-detail', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-24 p-r-24\">\n <form\n class=\"d-contents\"\n #dashboardDetailForm=\"ngForm\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-icon-selector-wrapper\n [selectedIcon]=\"dashboard.icon || 'th'\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span\n class=\"m-r-4\"\n id=\"menuLabel\"\n >\n {{ 'Menu label' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n required\n [(ngModel)]=\"dashboardName\"\n maxlength=\"512\"\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n aria-labelledby=\"description\"\n name=\"description\"\n rows=\"2\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"positionNav\">\n <span\n class=\"m-r-4\"\n id=\"positionNav\"\n >\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n type=\"number\"\n required\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n name=\"isNavigatorNode\"\n type=\"checkbox\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label\n class=\"c8y-checkbox\"\n title=\"{{ applyToDevicesOfTypeTitle }}\"\n >\n <input\n name=\"deviceType\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div\n class=\"alert alert-info m-b-24\"\n *ngIf=\"isDeviceType\"\n >\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false && !hideAvailability\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n id=\"margin\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n name=\"margin\"\n type=\"number\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Translate if possible' | translate }}\"\n >\n <input\n name=\"translateWidgetTitle\"\n type=\"checkbox\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
|
|
143
143
|
}], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.ContextDashboardService }, { type: i3.NavigatorService }, { type: i3.Permissions }, { type: i4.TranslateService }]; }, propDecorators: { dashboardDetailForm: [{
|
|
144
144
|
type: ViewChild,
|
|
145
145
|
args: ['dashboardDetailForm', { static: true }]
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBRXRCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFNakgsTUFBTSxPQUFPLHdCQUF3QjtJQTJCbkMsSUFBSSx5QkFBeUI7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLDZCQUE2QjtZQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDO1lBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMseUVBQXlFLENBQUMsQ0FBQztRQUN2RixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFF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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQy9ELHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUNoRSxxQkFBcUIsRUFDckIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEF4SlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isc01DcEJyQyxvbVhBK1NBOzJGRDNSYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOytOQUlvQixtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQsIE5hdmlnYXRvck5vZGUsIE5hdmlnYXRvclNlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkLFxuICBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICBEYXNoYm9hcmRHbG9iYWxSb2xlc1xufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWSB9IGZyb20gJy4vcmVwb3J0LWRhc2hib2FyZC9yZXBvcnQtZGFzaGJvYXJkLW5hdmlnYXRpb24uZmFjdG9yeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZERldGFpbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2Rhc2hib2FyZERldGFpbEZvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXNoYm9hcmREZXRhaWxGb3JtOiBOZ0Zvcm07XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgY3VycmVudERhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgZGFzaGJvYXJkTmFtZTogc3RyaW5nO1xuICBpc1JlcG9ydDogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZTogc3RyaW5nO1xuICBpc05hbWVkRGFzaGJvYXJkOiBib29sZWFuO1xuICBpc0RldmljZVR5cGU6IGJvb2xlYW47XG4gIGljb25zOiBzdHJpbmdbXTtcbiAgZmlsdGVyZWRJY29uczogc3RyaW5nW107XG4gIHN0eWxpbmcgPSB7XG4gICAgdGhlbWVDbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJ1xuICB9O1xuICBwb3NzaWJsZVN0eWxpbmcgPSB7IERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLCBXSURHRVRfSEVBREVSX0NMQVNTRVMgfTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbmFtZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG5hdmlnYXRvck5vZGVzJDogT2JzZXJ2YWJsZTxOYXZpZ2F0b3JOb2RlW10+O1xuICByZXN1bHQ6IFByb21pc2U8Q29udGV4dERhc2hib2FyZD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcbiAgZ2xvYmFsUm9sZXNJZHM6IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuXG4gIGFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkOiBib29sZWFuO1xuXG4gIGdldCBhcHBseVRvRGV2aWNlc09mVHlwZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWRcbiAgICAgID8gZ2V0dGV4dCgnQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGUge3sgdHlwZSB9fScpXG4gICAgICA6IGdldHRleHQoJ0FwcGx5IGRhc2hib2FyZCB0byBhbGwgZGV2aWNlcyBvZiB0eXBlIHt7IHR5cGUgfX0gKHBlcm1pc3Npb24gcmVxdWlyZWQpJyk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRleHQsIHsgdHlwZTogdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfTUFSR0lOID0gMTI7XG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX0lDT04gPSAndGgnO1xuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSA9IDEwMDAwO1xuXG4gIHByaXZhdGUgX3NhdmU7XG4gIHByaXZhdGUgX2NhbmNlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdERhc2hib2FyZENmZzogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdSZXBvcnQnKSA6IGdldHRleHQoJ0Rhc2hib2FyZCcpKSxcbiAgICAgIHByaW9yaXR5OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgID8gUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZXG4gICAgICAgIDogdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSxcbiAgICAgIGljb246IHRoaXMuREVGQVVMVF9EQVNIQk9BUkRfSUNPTixcbiAgICAgIGRldmljZVR5cGVWYWx1ZTogdGhpcy5kZXZpY2VUeXBlLFxuICAgICAgY29sdW1uczogMjRcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXNoYm9hcmQgPSBjbG9uZSh0aGlzLmRhc2hib2FyZCk7XG4gICAgICB0aGlzLmRhc2hib2FyZE5hbWUgPSB0aGlzLmN1cnJlbnREYXNoYm9hcmQubmFtZTtcbiAgICAgIHRoaXMuc2V0RGFzaGJvYXJkU3R5bGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXNoYm9hcmQgPSBkZWZhdWx0RGFzaGJvYXJkQ2ZnO1xuICAgICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5kYXNoYm9hcmQubmFtZTtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICAgIHRoaXMuc2V0VGl0bGUoKTtcbiAgICB0aGlzLnNldHVwQXBwbHlUb0RldmljZXNPZlR5cGVDaGVja2JveCgpO1xuICAgIHRoaXMubmF2aWdhdG9yTm9kZXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJDtcbiAgICB0aGlzLm5hbWVQbGFjZWhvbGRlciA9IHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdlLmcuIE15IHJlcG9ydCcpIDogZ2V0dGV4dCgnZS5nLiBNeSBkYXNoYm9hcmQnKTtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSWRzID0gdGhpcy5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHM7XG4gIH1cblxuICBzZXRUaXRsZSgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudERhc2hib2FyZCkge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdBZGQgcmVwb3J0JykgOiBnZXR0ZXh0KCdBZGQgZGFzaGJvYXJkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnRWRpdCByZXBvcnQnKSA6IGdldHRleHQoJ0VkaXQgZGFzaGJvYXJkJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0dXBBcHBseVRvRGV2aWNlc09mVHlwZUNoZWNrYm94KCkge1xuICAgIGNvbnN0IHJvbGVzVG9DaGVjayA9IFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURSxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFXG4gICAgXTtcbiAgICB0aGlzLmFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuaGFzQW55Um9sZShyb2xlc1RvQ2hlY2spO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmRhc2hib2FyZC5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZ2xvYmFsUm9sZXNJZHM7XG4gICAgdGhpcy5kYXNoYm9hcmQubmFtZSA9IHRoaXMuZGFzaGJvYXJkTmFtZTtcbiAgICB0aGlzLmRhc2hib2FyZC5jbGFzc2VzID0geyBbdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3NdOiB0cnVlIH07XG4gICAgdGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyA9IHsgW3RoaXMuc3R5bGluZy5oZWFkZXJDbGFzc106IHRydWUgfTtcbiAgICB0aGlzLmRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZVxuICAgICAgPyB7fVxuICAgICAgOiB0aGlzLmN1cnJlbnREYXNoYm9hcmRcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX3NhdmUodGhpcy5kYXNoYm9hcmQpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXSA9IHRydWU7XG4gICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcudGhlbWVDbGFzc10gPSB0cnVlO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuaWNvbiA9IGljb247XG4gICAgdGhpcy5kYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0ZXJtKSB7XG4gICAgICBjb25zdCBzZWFyY2ggPSBuZXcgUmVnRXhwKHRlcm0sICdpJyk7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmljb25zLmZpbHRlcih2YWwgPT4gc2VhcmNoLnRlc3QodmFsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuaWNvbnM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXNoYm9hcmRTdHlsZSgpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3NlcyxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuXG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIHRoaXMuc3R5bGluZy50aGVtZUNsYXNzXG4gICAgICApO1xuICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGgzIGlkPVwibW9kYWwtdGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCI+XG4gICAgICA8Zm9ybVxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAjZGFzaGJvYXJkRGV0YWlsRm9ybT1cIm5nRm9ybVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNOYW1lZERhc2hib2FyZCB8fCBpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnR2VuZXJhbCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1pY29uLXNlbGVjdG9yLXdyYXBwZXJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEljb25dPVwiZGFzaGJvYXJkLmljb24gfHwgJ3RoJ1wiXG4gICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0SWNvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWVudUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdNZW51IGxhYmVsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ01lbnUgbGFiZWwgdG8gZGlzcGxheSBpbiBzdWJtZW51IHdoZW4gZGFzaGJvYXJkIGlzIGF0dGFjaGVkJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbmFtZVBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjUxMlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgKm5nSWY9XCJpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBpZD1cImRlc2NyaXB0aW9uXCI+e3sgJ0Rlc2NyaXB0aW9uICcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwb3NpdGlvbk5hdlwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpb24gaW4gbmF2aWdhdGlvbiBtZW51ICgxMDAwMCBmaXJzdCwgLTEwMDAwIGxhc3QpJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zbS02XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TmF2aWdhdG9yIG1lbnUgaXRlbTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1JlcG9ydFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tci00XCI+e3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3NpdGlvbkluTmF2UG9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvciAoMTAwMDEgZmlyc3QsIC0xMDAwMCBsYXN0KS4nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdFeGlzdGluZyBub2RlczonIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG0tdC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5vZGUgb2YgbmF2aWdhdG9yTm9kZXMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJub2RlLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3b3JkLWJyZWFrIG0tbC00IG0tci0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5sYWJlbC5sZW5ndGggPiAxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUubGFiZWwgfCBzbGljZTogMDoxNSkgKyAnLi4uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbm9kZS5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0XCI+e3sgbm9kZS5wcmlvcml0eSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3NpdGlvbkluTmF2UG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9yPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY3VycmVudERhc2hib2FyZCAmJiBkZXZpY2VUeXBlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgYXBwbHlUb0RldmljZXNPZlR5cGVUaXRsZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXZpY2VUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLmRldmljZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IHR5cGU6IGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICA8aT57eyB0eXBlIH19PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0yNFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgYzh5LWljb249XCJpbmZvXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyB0eXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFRoaXMgZGFzaGJvYXJkIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgICAgICAgICAqbmdJZj1cIiEhaXNSZXBvcnQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgICAgICAgICAoZ2xvYmFsUm9sZXNJZHNDaGFuZ2UpPVwiZGFzaGJvYXJkRGV0YWlsRm9ybT8uZm9ybT8ubWFya0FzRGlydHkoKVwiXG4gICAgICAgICAgICA+PC9jOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eT5cbiAgICAgICAgICAgIDxjOHktYXBwZWFyYW5jZS1zZXR0aW5nc1xuICAgICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcudGhlbWVDbGFzc1wiXG4gICAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtYi0yNCBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hcmdpblwiPnt7ICdXaWRnZXQgbWFyZ2luJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQud2lkZ2V0TWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICBtYXg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5weDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+V2lkZ2V0IHRpdGxlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdUcmFuc2xhdGUgaWYgcG9zc2libGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnVHJhbnNsYXRlIGlmIHBvc3NpYmxlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGM4eS13aWRnZXQtcHJldmlld1xuICAgICAgICAgICAgICBbdGFiXT1cIiFpc05hbWVkRGFzaGJvYXJkID8gZGFzaGJvYXJkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgW3ByZXZpZXdDbGFzc2VzXT1cImdldERhc2hib2FyZFByZXZpZXdTdHlsZSgpXCJcbiAgICAgICAgICAgID48L2M4eS13aWRnZXQtcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1jYW5jZWwtZGFzaGJvYXJkXCJcbiAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1zYXZlLWRhc2hib2FyZFwiXG4gICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5pbnZhbGlkIHx8IGRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5wcmlzdGluZVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBRXRCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFNakgsTUFBTSxPQUFPLHdCQUF3QjtJQTRCbkMsSUFBSSx5QkFBeUI7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLDZCQUE2QjtZQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDO1lBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMseUVBQXlFLENBQUMsQ0FBQztRQUN2RixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBU0QsWUFDVSxLQUFpQixFQUNqQix1QkFBZ0QsRUFDaEQsZ0JBQWtDLEVBQ2xDLGtCQUErQixFQUMvQixnQkFBa0M7UUFKbEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFhO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQzVDLFlBQU8sR0FBRztZQUNSLFVBQVUsRUFBRSx1QkFBdUI7WUFDbkMsV0FBVyxFQUFFLHFCQUFxQjtTQUNuQyxDQUFDO1FBQ0Ysb0JBQWUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFJckUsV0FBTSxHQUE4QixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQWFNLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUM5QiwyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO0lBV3pDLENBQUM7SUFFSixrQkFBa0I7UUFDaEIsTUFBTSxtQkFBbUIsR0FBOEI7WUFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNyQixDQUFDLENBQUMsdUNBQXVDO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQjtZQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtZQUNqQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDaEMsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUNoRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0M7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDL0U7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRjtJQUNILENBQUM7SUFFRCxpQ0FBaUM7UUFDL0IsTUFBTSxZQUFZLEdBQUc7WUFDbkIsV0FBVyxDQUFDLHFCQUFxQjtZQUNqQyxXQUFXLENBQUMsb0JBQW9CO1lBQ2hDLFdBQVcsQ0FBQyx5QkFBeUI7WUFDckMsV0FBVyxDQUFDLDBCQUEwQjtTQUN2QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQjtZQUNyRSxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUNyQixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1NBQ2hDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQy9ELHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUNoRSxxQkFBcUIsRUFDckIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEF6SlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isc01DcEJyQyx5blhBK1NBOzJGRDNSYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOytOQUlvQixtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQsIE5hdmlnYXRvck5vZGUsIE5hdmlnYXRvclNlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkLFxuICBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICBEYXNoYm9hcmRHbG9iYWxSb2xlc1xufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWSB9IGZyb20gJy4vcmVwb3J0LWRhc2hib2FyZC9yZXBvcnQtZGFzaGJvYXJkLW5hdmlnYXRpb24uZmFjdG9yeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZERldGFpbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2Rhc2hib2FyZERldGFpbEZvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXNoYm9hcmREZXRhaWxGb3JtOiBOZ0Zvcm07XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgY3VycmVudERhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgZGFzaGJvYXJkTmFtZTogc3RyaW5nO1xuICBpc1JlcG9ydDogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZTogc3RyaW5nO1xuICBpc05hbWVkRGFzaGJvYXJkOiBib29sZWFuO1xuICBpc0RldmljZVR5cGU6IGJvb2xlYW47XG4gIGljb25zOiBzdHJpbmdbXTtcbiAgZmlsdGVyZWRJY29uczogc3RyaW5nW107XG4gIHN0eWxpbmcgPSB7XG4gICAgdGhlbWVDbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJ1xuICB9O1xuICBwb3NzaWJsZVN0eWxpbmcgPSB7IERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLCBXSURHRVRfSEVBREVSX0NMQVNTRVMgfTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbmFtZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG5hdmlnYXRvck5vZGVzJDogT2JzZXJ2YWJsZTxOYXZpZ2F0b3JOb2RlW10+O1xuICByZXN1bHQ6IFByb21pc2U8Q29udGV4dERhc2hib2FyZD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcbiAgZ2xvYmFsUm9sZXNJZHM6IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuICBoaWRlQXZhaWxhYmlsaXR5OiBib29sZWFuO1xuXG4gIGFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkOiBib29sZWFuO1xuXG4gIGdldCBhcHBseVRvRGV2aWNlc09mVHlwZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWRcbiAgICAgID8gZ2V0dGV4dCgnQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGUge3sgdHlwZSB9fScpXG4gICAgICA6IGdldHRleHQoJ0FwcGx5IGRhc2hib2FyZCB0byBhbGwgZGV2aWNlcyBvZiB0eXBlIHt7IHR5cGUgfX0gKHBlcm1pc3Npb24gcmVxdWlyZWQpJyk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRleHQsIHsgdHlwZTogdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfTUFSR0lOID0gMTI7XG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX0lDT04gPSAndGgnO1xuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSA9IDEwMDAwO1xuXG4gIHByaXZhdGUgX3NhdmU7XG4gIHByaXZhdGUgX2NhbmNlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdERhc2hib2FyZENmZzogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdSZXBvcnQnKSA6IGdldHRleHQoJ0Rhc2hib2FyZCcpKSxcbiAgICAgIHByaW9yaXR5OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgID8gUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZXG4gICAgICAgIDogdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSxcbiAgICAgIGljb246IHRoaXMuREVGQVVMVF9EQVNIQk9BUkRfSUNPTixcbiAgICAgIGRldmljZVR5cGVWYWx1ZTogdGhpcy5kZXZpY2VUeXBlLFxuICAgICAgY29sdW1uczogMjRcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXNoYm9hcmQgPSBjbG9uZSh0aGlzLmRhc2hib2FyZCk7XG4gICAgICB0aGlzLmRhc2hib2FyZE5hbWUgPSB0aGlzLmN1cnJlbnREYXNoYm9hcmQubmFtZTtcbiAgICAgIHRoaXMuc2V0RGFzaGJvYXJkU3R5bGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXNoYm9hcmQgPSBkZWZhdWx0RGFzaGJvYXJkQ2ZnO1xuICAgICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5kYXNoYm9hcmQubmFtZTtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICAgIHRoaXMuc2V0VGl0bGUoKTtcbiAgICB0aGlzLnNldHVwQXBwbHlUb0RldmljZXNPZlR5cGVDaGVja2JveCgpO1xuICAgIHRoaXMubmF2aWdhdG9yTm9kZXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJDtcbiAgICB0aGlzLm5hbWVQbGFjZWhvbGRlciA9IHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdlLmcuIE15IHJlcG9ydCcpIDogZ2V0dGV4dCgnZS5nLiBNeSBkYXNoYm9hcmQnKTtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSWRzID0gdGhpcy5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHM7XG4gIH1cblxuICBzZXRUaXRsZSgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudERhc2hib2FyZCkge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdBZGQgcmVwb3J0JykgOiBnZXR0ZXh0KCdBZGQgZGFzaGJvYXJkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnRWRpdCByZXBvcnQnKSA6IGdldHRleHQoJ0VkaXQgZGFzaGJvYXJkJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0dXBBcHBseVRvRGV2aWNlc09mVHlwZUNoZWNrYm94KCkge1xuICAgIGNvbnN0IHJvbGVzVG9DaGVjayA9IFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURSxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFXG4gICAgXTtcbiAgICB0aGlzLmFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuaGFzQW55Um9sZShyb2xlc1RvQ2hlY2spO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmRhc2hib2FyZC5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZ2xvYmFsUm9sZXNJZHM7XG4gICAgdGhpcy5kYXNoYm9hcmQubmFtZSA9IHRoaXMuZGFzaGJvYXJkTmFtZTtcbiAgICB0aGlzLmRhc2hib2FyZC5jbGFzc2VzID0geyBbdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3NdOiB0cnVlIH07XG4gICAgdGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyA9IHsgW3RoaXMuc3R5bGluZy5oZWFkZXJDbGFzc106IHRydWUgfTtcbiAgICB0aGlzLmRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZVxuICAgICAgPyB7fVxuICAgICAgOiB0aGlzLmN1cnJlbnREYXNoYm9hcmRcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX3NhdmUodGhpcy5kYXNoYm9hcmQpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXSA9IHRydWU7XG4gICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcudGhlbWVDbGFzc10gPSB0cnVlO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuaWNvbiA9IGljb247XG4gICAgdGhpcy5kYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0ZXJtKSB7XG4gICAgICBjb25zdCBzZWFyY2ggPSBuZXcgUmVnRXhwKHRlcm0sICdpJyk7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmljb25zLmZpbHRlcih2YWwgPT4gc2VhcmNoLnRlc3QodmFsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuaWNvbnM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXNoYm9hcmRTdHlsZSgpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3NlcyxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuXG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIHRoaXMuc3R5bGluZy50aGVtZUNsYXNzXG4gICAgICApO1xuICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGgzIGlkPVwibW9kYWwtdGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCI+XG4gICAgICA8Zm9ybVxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAjZGFzaGJvYXJkRGV0YWlsRm9ybT1cIm5nRm9ybVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNOYW1lZERhc2hib2FyZCB8fCBpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnR2VuZXJhbCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1pY29uLXNlbGVjdG9yLXdyYXBwZXJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEljb25dPVwiZGFzaGJvYXJkLmljb24gfHwgJ3RoJ1wiXG4gICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0SWNvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWVudUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdNZW51IGxhYmVsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ01lbnUgbGFiZWwgdG8gZGlzcGxheSBpbiBzdWJtZW51IHdoZW4gZGFzaGJvYXJkIGlzIGF0dGFjaGVkJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbmFtZVBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjUxMlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgKm5nSWY9XCJpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBpZD1cImRlc2NyaXB0aW9uXCI+e3sgJ0Rlc2NyaXB0aW9uICcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwb3NpdGlvbk5hdlwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpb24gaW4gbmF2aWdhdGlvbiBtZW51ICgxMDAwMCBmaXJzdCwgLTEwMDAwIGxhc3QpJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zbS02XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TmF2aWdhdG9yIG1lbnUgaXRlbTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1JlcG9ydFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tci00XCI+e3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3NpdGlvbkluTmF2UG9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvciAoMTAwMDEgZmlyc3QsIC0xMDAwMCBsYXN0KS4nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdFeGlzdGluZyBub2RlczonIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG0tdC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5vZGUgb2YgbmF2aWdhdG9yTm9kZXMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJub2RlLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3b3JkLWJyZWFrIG0tbC00IG0tci0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5sYWJlbC5sZW5ndGggPiAxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUubGFiZWwgfCBzbGljZTogMDoxNSkgKyAnLi4uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbm9kZS5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0XCI+e3sgbm9kZS5wcmlvcml0eSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3NpdGlvbkluTmF2UG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9yPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY3VycmVudERhc2hib2FyZCAmJiBkZXZpY2VUeXBlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgYXBwbHlUb0RldmljZXNPZlR5cGVUaXRsZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXZpY2VUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLmRldmljZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IHR5cGU6IGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICA8aT57eyB0eXBlIH19PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0yNFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgYzh5LWljb249XCJpbmZvXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyB0eXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFRoaXMgZGFzaGJvYXJkIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgICAgICAgICAqbmdJZj1cIiEhaXNSZXBvcnQgPT09IGZhbHNlICYmICFoaWRlQXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgICAgICAgICAoZ2xvYmFsUm9sZXNJZHNDaGFuZ2UpPVwiZGFzaGJvYXJkRGV0YWlsRm9ybT8uZm9ybT8ubWFya0FzRGlydHkoKVwiXG4gICAgICAgICAgICA+PC9jOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eT5cbiAgICAgICAgICAgIDxjOHktYXBwZWFyYW5jZS1zZXR0aW5nc1xuICAgICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcudGhlbWVDbGFzc1wiXG4gICAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtYi0yNCBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hcmdpblwiPnt7ICdXaWRnZXQgbWFyZ2luJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQud2lkZ2V0TWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICBtYXg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5weDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+V2lkZ2V0IHRpdGxlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdUcmFuc2xhdGUgaWYgcG9zc2libGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnVHJhbnNsYXRlIGlmIHBvc3NpYmxlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGM4eS13aWRnZXQtcHJldmlld1xuICAgICAgICAgICAgICBbdGFiXT1cIiFpc05hbWVkRGFzaGJvYXJkID8gZGFzaGJvYXJkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgW3ByZXZpZXdDbGFzc2VzXT1cImdldERhc2hib2FyZFByZXZpZXdTdHlsZSgpXCJcbiAgICAgICAgICAgID48L2M4eS13aWRnZXQtcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1jYW5jZWwtZGFzaGJvYXJkXCJcbiAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1zYXZlLWRhc2hib2FyZFwiXG4gICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5pbnZhbGlkIHx8IGRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5wcmlzdGluZVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -288,9 +288,9 @@ export class DeviceInfoDashboardComponent {
|
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
290
|
DeviceInfoDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceInfoDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.WidgetService }, { token: i3.TranslateService }, { token: i4.InventoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
-
DeviceInfoDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceInfoDashboardComponent, selector: "c8y-device-info-dashboard-dashboard", ngImport: i0, template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n ></c8y-context-dashboard>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i7.ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "disabled", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle"] }] });
|
|
291
|
+
DeviceInfoDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceInfoDashboardComponent, selector: "c8y-device-info-dashboard-dashboard", ngImport: i0, template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n ></c8y-context-dashboard>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i7.ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "disabled", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle", "hideAvailability"] }] });
|
|
292
292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceInfoDashboardComponent, decorators: [{
|
|
293
293
|
type: Component,
|
|
294
|
-
args: [{ selector: 'c8y-device-info-dashboard-dashboard', template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n ></c8y-context-dashboard>\n</div>\n" }]
|
|
294
|
+
args: [{ selector: 'c8y-device-info-dashboard-dashboard', template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n ></c8y-context-dashboard>\n</div>\n" }]
|
|
295
295
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.WidgetService }, { type: i3.TranslateService }, { type: i4.InventoryService }]; } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWluZm8tZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2RldmljZS1pbmZvLWRhc2hib2FyZC9kZXZpY2UtaW5mby1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLWluZm8tZGFzaGJvYXJkL2RldmljZS1pbmZvLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFlLE9BQU8sRUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQU1sRCxNQUFNLE9BQU8sNEJBQTRCO0lBd092QyxZQUNVLE1BQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0M7UUFIbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBM081QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBTW5CLHdCQUFtQixHQUFHO1lBQ3BCO2dCQUNFLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDO2dCQUMvQixFQUFFLEVBQUUsQ0FBQztnQkFDTCxFQUFFLEVBQUUsQ0FBQztnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixNQUFNLEVBQUUsQ0FBQzthQUNWO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQztnQkFDMUMsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxPQUFPO29CQUNqQixXQUFXLEVBQUUsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsNkJBQTZCLEVBQUUsQ0FBQztvQkFDaEMsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLFFBQVEsRUFBRSxhQUFhOzRCQUN2QixNQUFNLEVBQUUsT0FBTzs0QkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs0QkFDdEQsSUFBSSxFQUFFLEdBQUc7NEJBQ1QsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLG9CQUFvQjs0QkFDOUIsTUFBTSxFQUFFLE1BQU07NEJBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDOzRCQUNwRCxJQUFJLEVBQUUsS0FBSzs0QkFDWCxVQUFVLEVBQUUsS0FBSzs0QkFDakIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLEtBQUssRUFBRSxTQUFTOzRCQUNoQixRQUFRLEVBQUUsSUFBSTt5QkFDZjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsdUJBQXVCOzRCQUNqQyxNQUFNLEVBQUUsTUFBTTs0QkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7NEJBQ3BELElBQUksRUFBRSxJQUFJOzRCQUNWLFVBQVUsRUFBRSxLQUFLOzRCQUNqQixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxvQkFBb0I7NEJBQzlCLE1BQU0sRUFBRSxVQUFVOzRCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NEJBQ3JELElBQUksRUFBRSxHQUFHOzRCQUNULFVBQVUsRUFBRSxLQUFLOzRCQUNqQixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSx1QkFBdUI7NEJBQ2pDLE1BQU0sRUFBRSxRQUFROzRCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQzs0QkFDdkQsSUFBSSxFQUFFLE1BQU07NEJBQ1osVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLG9CQUFvQjs0QkFDOUIsTUFBTSxFQUFFLE1BQU07NEJBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDOzRCQUNwRCxVQUFVLEVBQUUsS0FBSzs0QkFDakIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLEtBQUssRUFBRSxTQUFTOzRCQUNoQixRQUFRLEVBQUUsSUFBSTt5QkFDZjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsb0JBQW9COzRCQUM5QixNQUFNLEVBQUUsTUFBTTs0QkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7NEJBQ3BELFVBQVUsRUFBRSxLQUFLOzRCQUNqQixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxvQkFBb0I7NEJBQzlCLE1BQU0sRUFBRSxNQUFNOzRCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQzs0QkFDcEQsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLG9CQUFvQjs0QkFDOUIsTUFBTSxFQUFFLE1BQU07NEJBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDOzRCQUNwRCxVQUFVLEVBQUUsS0FBSzs0QkFDakIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLEtBQUssRUFBRSxTQUFTOzRCQUNoQixRQUFRLEVBQUUsSUFBSTt5QkFDZjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsb0JBQW9COzRCQUM5QixNQUFNLEVBQUUsS0FBSzs0QkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7NEJBQ25ELElBQUksRUFBRSxHQUFHOzRCQUNULFVBQVUsRUFBRSxLQUFLOzRCQUNqQixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxvQkFBb0I7NEJBQzlCLE1BQU0sRUFBRSxNQUFNOzRCQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQzs0QkFDcEQsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLHVCQUF1Qjs0QkFDakMsTUFBTSxFQUFFLFVBQVU7NEJBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDOzRCQUN6RCxJQUFJLEVBQUUsTUFBTTs0QkFDWixVQUFVLEVBQUUsS0FBSzs0QkFDakIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLEtBQUssRUFBRSxTQUFTOzRCQUNoQixRQUFRLEVBQUUsSUFBSTt5QkFDZjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsdUJBQXVCOzRCQUNqQyxNQUFNLEVBQUUsT0FBTzs0QkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NEJBQ3JELElBQUksRUFBRSxJQUFJOzRCQUNWLFVBQVUsRUFBRSxLQUFLOzRCQUNqQixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3FCQUNGO29CQUNELG1CQUFtQixFQUFFO3dCQUNuQjs0QkFDRSxLQUFLLEVBQUUsb0JBQW9COzRCQUMzQixZQUFZLEVBQUUsT0FBTzs0QkFDckIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLEVBQUUsb0JBQW9COzZCQUMzQjs0QkFDRCxRQUFRLEVBQUUsSUFBSTt5QkFDZjt3QkFDRDs0QkFDRSxLQUFLLEVBQUUseUJBQXlCOzRCQUNoQyxZQUFZLEVBQUUsT0FBTzs0QkFDckIsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLEVBQUUseUJBQXlCOzZCQUNoQzs0QkFDRCxRQUFRLEVBQUUsSUFBSTt5QkFDZjtxQkFDRjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUU7d0JBQ1AsVUFBVSxFQUFFLEVBQUU7d0JBQ2Qsa0NBQWtDLEVBQUUsSUFBSTt3QkFDeEMsd0JBQXdCLEVBQUUsQ0FBQyxPQUFPLENBQUM7cUJBQ3BDO2lCQUNGO2dCQUNELEVBQUUsRUFBRSxDQUFDO2dCQUNMLEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztnQkFDekMsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRTt3QkFDUCxTQUFTLEVBQUUsY0FBYzt3QkFDekIsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTt3QkFDNUIsTUFBTSxFQUFFOzRCQUNOLE1BQU0sRUFBRSxJQUFJOzRCQUNaLFlBQVksRUFBRSxLQUFLOzRCQUNuQixPQUFPLEVBQUUsS0FBSzt5QkFDZjt3QkFDRCxLQUFLLEVBQUUsRUFBRTtxQkFDVjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLDZCQUE2QjtnQkFDbkMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDbEMsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtZQUNEO2dCQUNFLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFDMUIsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLEVBQUU7YUFDWDtTQUNVLENBQUM7SUFPWCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJO2FBQy9DLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxXQUFXLENBQUMsRUFBRSxjQUFjLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBbUIsQ0FBQztZQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2FBQ3RELElBQUksQ0FDSCxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUN4RCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2IsR0FBRyxNQUFNO1lBQ1QsTUFBTSxFQUFFO2dCQUNOLEdBQUcsTUFBTSxDQUFDLE1BQU07Z0JBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVc7YUFDckQ7U0FDRixDQUFDLENBQUMsRUFDSCxPQUFPLEVBQUUsQ0FDVjthQUNBLFNBQVMsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7WUFDdEIsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9CQUFvQixDQUFDLEVBQW1CLEVBQUUsSUFBWTtRQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlGLGlDQUFpQztRQUNqQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsbUNBQW1DO1FBQ25DLFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCLENBQUMsRUFBbUIsRUFBRSxPQUFpQjtRQUNyRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FDaEMscUJBQXFCLENBQUMsSUFBSSxDQUN4QixDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FDM0UsQ0FBQztRQUNKLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsQ0FBQztRQUMxRSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekMsQ0FBQzs7eUhBcFNVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDJFQ2J6QyxtVEFZQTsyRkRDYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dERhdGEsIGdldHRleHQsIFdpZGdldCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCB0YXAsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi4vd2lkZ2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGV2aWNlLWluZm8tZGFzaGJvYXJkLWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtaW5mby1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERldmljZUluZm9EYXNoYm9hcmRDb21wb25lbnQge1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuICB0aXRsZTogc3RyaW5nO1xuICBkYXNoYm9hcmROYW1lID0gJyc7XG4gIHdpZGdldHNMaXN0OiBXaWRnZXRbXTtcbiAgY3VycmVudENvbnRleHQ6IENvbnRleHREYXRhO1xuICBjb250ZXh0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHdpZGdldHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBERVZJQ0VfSU5GT19XSURHRVRTID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdkZXZpY2VTdGF0dXNXaWRnZXQnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0RldmljZSBzdGF0dXMnKSxcbiAgICAgIF94OiAwLFxuICAgICAgX3k6IDAsXG4gICAgICBfaGVpZ2h0OiA1LFxuICAgICAgX3dpZHRoOiA4XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnRGF0YSBwb2ludHMgZ3JhcGgnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0RldmljZSBhbmQgY29tbXVuaWNhdGlvbicpLFxuICAgICAgX3g6IDgsXG4gICAgICBfeTogMCxcbiAgICAgIF9oZWlnaHQ6IDUsXG4gICAgICBfd2lkdGg6IDE2LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGludGVydmFsOiAnaG91cnMnLFxuICAgICAgICBhZ2dyZWdhdGlvbjogJ05PTkUnLFxuICAgICAgICByZWFsdGltZTogdHJ1ZSxcbiAgICAgICAgZGF0YXBvaW50c0luaXRpYWxEaXNwbGF5TGltaXQ6IDMsXG4gICAgICAgIGRhdGFwb2ludHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9CYXR0ZXJ5JyxcbiAgICAgICAgICAgIHNlcmllczogJ2xldmVsJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQmF0dGVyeTogbGV2ZWwnKSxcbiAgICAgICAgICAgIHVuaXQ6ICclJyxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnIzVlMDdiMycsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfU2lnbmFsU3RyZW5ndGgnLFxuICAgICAgICAgICAgc2VyaWVzOiAncnNzaScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NpZ25hbDogUlNTSScpLFxuICAgICAgICAgICAgdW5pdDogJ2RCbScsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyNhN2QwZjEnLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X01lbW9yeU1lYXN1cmVtZW50JyxcbiAgICAgICAgICAgIHNlcmllczogJ1VzZWQnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNZW1vcnk6IHVzZWQnKSxcbiAgICAgICAgICAgIHVuaXQ6ICdNQicsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyNmNzUyMjknLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X0NQVU1lYXN1cmVtZW50JyxcbiAgICAgICAgICAgIHNlcmllczogJ1dvcmtsb2FkJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ1BVOiB3b3JrbG9hZCcpLFxuICAgICAgICAgICAgdW5pdDogJyUnLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjYjI0ZjNlJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9OZXR3b3JrU3RhdGlzdGljcycsXG4gICAgICAgICAgICBzZXJpZXM6ICdVcGxvYWQnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdOZXR3b3JrOiB1cGxvYWQnKSxcbiAgICAgICAgICAgIHVuaXQ6ICdLQi9zJyxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnIzg4YzAzOScsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfU2lnbmFsU3RyZW5ndGgnLFxuICAgICAgICAgICAgc2VyaWVzOiAnUkNTUCcsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NpZ25hbDogUkNTUCcpLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjNWUyZjE5JyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9TaWduYWxTdHJlbmd0aCcsXG4gICAgICAgICAgICBzZXJpZXM6ICdSU0NQJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU2lnbmFsOiBSU0NQJyksXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyM1ZTJmMTknLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X1NpZ25hbFN0cmVuZ3RoJyxcbiAgICAgICAgICAgIHNlcmllczogJ1JTUlAnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdTaWduYWw6IFJTUlAnKSxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnIzQzYmEzYicsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfU2lnbmFsU3RyZW5ndGgnLFxuICAgICAgICAgICAgc2VyaWVzOiAnUlNSUScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NpZ25hbDogUlNSUScpLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjMTRiMGIzJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9TaWduYWxTdHJlbmd0aCcsXG4gICAgICAgICAgICBzZXJpZXM6ICdiZXInLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdTaWduYWw6IEJFUicpLFxuICAgICAgICAgICAgdW5pdDogJyUnLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjNDRmZjMzJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9TaWduYWxTdHJlbmd0aCcsXG4gICAgICAgICAgICBzZXJpZXM6ICdFQ04wJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU2lnbmFsOiBFQ04wJyksXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyM4NzNlZmEnLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X05ldHdvcmtTdGF0aXN0aWNzJyxcbiAgICAgICAgICAgIHNlcmllczogJ0Rvd25sb2FkJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTmV0d29yazogZG93bmxvYWQnKSxcbiAgICAgICAgICAgIHVuaXQ6ICdLQi9zJyxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnI2YyN2E0NScsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfTWVtb3J5TWVhc3VyZW1lbnQnLFxuICAgICAgICAgICAgc2VyaWVzOiAnVG90YWwnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNZW1vcnk6IHRvdGFsJyksXG4gICAgICAgICAgICB1bml0OiAnTUInLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjZGFkZDhjJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBhbGFybXNFdmVudHNDb25maWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdjOHlfTG9jYXRpb25VcGRhdGUnLFxuICAgICAgICAgICAgdGltZWxpbmVUeXBlOiAnRVZFTlQnLFxuICAgICAgICAgICAgY29sb3I6ICcjNmY2Y2QwJyxcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2M4eV9Mb2NhdGlvblVwZGF0ZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdjOHlfVW5hdmFpbGFiaWxpdHlBbGFybScsXG4gICAgICAgICAgICB0aW1lbGluZVR5cGU6ICdBTEFSTScsXG4gICAgICAgICAgICBjb2xvcjogJyMzNzViZjInLFxuICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICB0eXBlOiAnYzh5X1VuYXZhaWxhYmlsaXR5QWxhcm0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdBc3NldCBQcm9wZXJ0aWVzJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdEZXZpY2UgZGF0YScpLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgICBhbGxvd0Rpc3BsYXlBbmRFZGl0S25vd25Qcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgICAgIGhpZGRlblByb3BlcnRpZXNLZXlQYXRoczogWydvd25lciddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfeDogMCxcbiAgICAgIF95OiA1LFxuICAgICAgX2hlaWdodDogOCxcbiAgICAgIF93aWR0aDogOFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0FsYXJtIGxpc3QnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0FjdGl2ZSwgY3JpdGljYWwgYWxhcm1zJyksXG4gICAgICBfeDogOCxcbiAgICAgIF95OiA1LFxuICAgICAgX2hlaWdodDogNCxcbiAgICAgIF93aWR0aDogOCxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb3JkZXJNb2RlOiAnQUNUSVZFX0ZJUlNUJyxcbiAgICAgICAgICBzZXZlcml0eTogeyBDUklUSUNBTDogdHJ1ZSB9LFxuICAgICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgQUNUSVZFOiB0cnVlLFxuICAgICAgICAgICAgQUNLTk9XTEVER0VEOiBmYWxzZSxcbiAgICAgICAgICAgIENMRUFSRUQ6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eXBlczogW11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RldmljZUdyb3VwQXNzaWdubWVudFdpZGdldCcsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnR3JvdXAgYXNzaWdubWVudCcpLFxuICAgICAgX3g6IDE2LFxuICAgICAgX3k6IDUsXG4gICAgICBfaGVpZ2h0OiA0LFxuICAgICAgX3dpZHRoOiA4XG4gICAgfSxcbiAgICB7XG4gICAgICBjb21wb25lbnRJZDogJ01hcCcsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnTG9jYXRpb24nKSxcbiAgICAgIF94OiA4LFxuICAgICAgX3k6IDksXG4gICAgICBfaGVpZ2h0OiA0LFxuICAgICAgX3dpZHRoOiAxNlxuICAgIH1cbiAgXSBhcyBXaWRnZXRbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29udGV4dFN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLnBhcmVudC5kYXRhXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh7IGNvbnRleHREYXRhIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnRpdGxlID0gY29udGV4dERhdGEubmFtZTtcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZE5hbWUgPSBgJHtjb250ZXh0RGF0YS5pZH0tZGV2aWNlLWluZm9gO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyBkYXRhID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dCA9IGRhdGEgYXMgQ29udGV4dERhdGE7XG4gICAgICAgIHRoaXMuYWRkRGV2aWNlVGFyZ2V0Rm9yRFAoZGF0YS5jb250ZXh0RGF0YS5pZCwgZGF0YS5jb250ZXh0RGF0YS5uYW1lKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy53aWRnZXRzU3Vic2NyaXB0aW9uID0gZnJvbSh0aGlzLkRFVklDRV9JTkZPX1dJREdFVFMpXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2VNYXAod2lkZ2V0ID0+IHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KSksXG4gICAgICAgIG1hcCh3aWRnZXQgPT4gKHtcbiAgICAgICAgICAuLi53aWRnZXQsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAuLi53aWRnZXQuY29uZmlnLFxuICAgICAgICAgICAgZGV2aWNlOiB0aGlzLnJvdXRlci5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfSkpLFxuICAgICAgICB0b0FycmF5KClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgZGF0YSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU3VwcG9ydGVkU2VyaWVzRm9yRFAodGhpcy5jdXJyZW50Q29udGV4dC5jb250ZXh0RGF0YS5pZCwgZGF0YSk7XG4gICAgICAgIHRoaXMud2lkZ2V0c0xpc3QgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGREZXZpY2VUYXJnZXRGb3JEUChpZDogc3RyaW5nIHwgbnVtYmVyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkcFdpZGdldCA9IHRoaXMuREVWSUNFX0lORk9fV0lER0VUUy5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgPT0gJ0RhdGEgcG9pbnRzIGdyYXBoJylbMF07XG4gICAgLy8gQWRkIHRhcmdldCB0byBkYXRhUG9pbnQgY29uZmlnXG4gICAgZHBXaWRnZXQuY29uZmlnLmRhdGFwb2ludHMubWFwKGl0ZW0gPT4gKGl0ZW1bJ19fdGFyZ2V0J10gPSB7IGlkLCBuYW1lIH0pKTtcbiAgICAvLyBBZGQgdGFyZ2V0IHRvIGFsYXJtRXZlbnRzIENvbmZpZ1xuICAgIGRwV2lkZ2V0LmNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzLm1hcChpdGVtID0+IChpdGVtWydfX3RhcmdldCddID0geyBpZCwgbmFtZSB9KSk7XG4gIH1cblxuICBhc3luYyBmaWx0ZXJTdXBwb3J0ZWRTZXJpZXNGb3JEUChpZDogc3RyaW5nIHwgbnVtYmVyLCB3aWRnZXRzOiBXaWRnZXRbXSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZE1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5nZXRNZWFzdXJlbWVudHNBbmRTZXJpZXMoaWQpO1xuICAgIGNvbnN0IGlzRGF0YVBvaW50U3VwcG9ydGVkID0gZHAgPT5cbiAgICAgIHN1cHBvcnRlZE1lYXN1cmVtZW50cy5zb21lKFxuICAgICAgICAoeyBmcmFnbWVudCwgc2VyaWVzIH0pID0+IGRwLmZyYWdtZW50ID09PSBmcmFnbWVudCAmJiBkcC5zZXJpZXMgPT09IHNlcmllc1xuICAgICAgKTtcbiAgICBjb25zdCBkcFdpZGdldCA9IHdpZGdldHMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdEYXRhIHBvaW50cyBncmFwaCcpO1xuICAgIGRwV2lkZ2V0LmNvbmZpZy5kYXRhcG9pbnRzID0gZHBXaWRnZXQuY29uZmlnLmRhdGFwb2ludHMuZmlsdGVyKGlzRGF0YVBvaW50U3VwcG9ydGVkKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMud2lkZ2V0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29udGV4dFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICA8Yzh5LXRpdGxlPlxuICAgIHt7IHRpdGxlIH19XG4gIDwvYzh5LXRpdGxlPlxuICA8Yzh5LWNvbnRleHQtZGFzaGJvYXJkXG4gICAgW3RyYW5zbGF0ZVdpZGdldFRpdGxlXT1cInRydWVcIlxuICAgIFtuYW1lXT1cImRhc2hib2FyZE5hbWVcIlxuICAgIFtjb250ZXh0XT1cImN1cnJlbnRDb250ZXh0XCJcbiAgICBbZGVmYXVsdFdpZGdldHNdPVwid2lkZ2V0c0xpc3RcIlxuICAgIFtjYW5EZWxldGVdPVwiZmFsc2VcIlxuICA+PC9jOHktY29udGV4dC1kYXNoYm9hcmQ+XG48L2Rpdj5cbiJdfQ==
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWluZm8tZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2RldmljZS1pbmZvLWRhc2hib2FyZC9kZXZpY2UtaW5mby1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLWluZm8tZGFzaGJvYXJkL2RldmljZS1pbmZvLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFlLE9BQU8sRUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQU1sRCxNQUFNLE9BQU8sNEJBQTRCO0lBd092QyxZQUNVLE1BQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxnQkFBa0M7UUFIbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBM081QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGtC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QUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FDM0UsQ0FBQztRQUNKLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsQ0FBQztRQUMxRSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekMsQ0FBQzs7eUhBcFNVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDJFQ2J6QyxvVkFhQTsyRkRBYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dERhdGEsIGdldHRleHQsIFdpZGdldCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCB0YXAsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi4vd2lkZ2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGV2aWNlLWluZm8tZGFzaGJvYXJkLWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtaW5mby1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERldmljZUluZm9EYXNoYm9hcmRDb21wb25lbnQge1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuICB0aXRsZTogc3RyaW5nO1xuICBkYXNoYm9hcmROYW1lID0gJyc7XG4gIHdpZGdldHNMaXN0OiBXaWRnZXRbXTtcbiAgY3VycmVudENvbnRleHQ6IENvbnRleHREYXRhO1xuICBjb250ZXh0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHdpZGdldHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBERVZJQ0VfSU5GT19XSURHRVRTID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdkZXZpY2VTdGF0dXNXaWRnZXQnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0RldmljZSBzdGF0dXMnKSxcbiAgICAgIF94OiAwLFxuICAgICAgX3k6IDAsXG4gICAgICBfaGVpZ2h0OiA1LFxuICAgICAgX3dpZHRoOiA4XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnRGF0YSBwb2ludHMgZ3JhcGgnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0RldmljZSBhbmQgY29tbXVuaWNhdGlvbicpLFxuICAgICAgX3g6IDgsXG4gICAgICBfeTogMCxcbiAgICAgIF9oZWlnaHQ6IDUsXG4gICAgICBfd2lkdGg6IDE2LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGludGVydmFsOiAnaG91cnMnLFxuICAgICAgICBhZ2dyZWdhdGlvbjogJ05PTkUnLFxuICAgICAgICByZWFsdGltZTogdHJ1ZSxcbiAgICAgICAgZGF0YXBvaW50c0luaXRpYWxEaXNwbGF5TGltaXQ6IDMsXG4gICAgICAgIGRhdGFwb2ludHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9CYXR0ZXJ5JyxcbiAgICAgICAgICAgIHNlcmllczogJ2xldmVsJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQmF0dGVyeTogbGV2ZWwnKSxcbiAgICAgICAgICAgIHVuaXQ6ICclJyxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnIzVlMDdiMycsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfU2lnbmFsU3RyZW5ndGgnLFxuICAgICAgICAgICAgc2VyaWVzOiAncnNzaScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NpZ25hbDogUlNTSScpLFxuICAgICAgICAgICAgdW5pdDogJ2RCbScsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyNhN2QwZjEnLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X01lbW9yeU1lYXN1cmVtZW50JyxcbiAgICAgICAgICAgIHNlcmllczogJ1VzZWQnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNZW1vcnk6IHVzZWQnKSxcbiAgICAgICAgICAgIHVuaXQ6ICdNQicsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyNmNzUyMjknLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X0NQVU1lYXN1cmVtZW50JyxcbiAgICAgICAgICAgIHNlcmllczogJ1dvcmtsb2FkJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ1BVOiB3b3JrbG9hZCcpLFxuICAgICAgICAgICAgdW5pdDogJyUnLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjYjI0ZjNlJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9OZXR3b3JrU3RhdGlzdGljcycsXG4gICAgICAgICAgICBzZXJpZXM6ICdVcGxvYWQnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdOZXR3b3JrOiB1cGxvYWQnKSxcbiAgICAgICAgICAgIHVuaXQ6ICdLQi9zJyxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnIzg4YzAzOScsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfU2lnbmFsU3RyZW5ndGgnLFxuICAgICAgICAgICAgc2VyaWVzOiAnUkNTUCcsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NpZ25hbDogUkNTUCcpLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjNWUyZjE5JyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9TaWduYWxTdHJlbmd0aCcsXG4gICAgICAgICAgICBzZXJpZXM6ICdSU0NQJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU2lnbmFsOiBSU0NQJyksXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyM1ZTJmMTknLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X1NpZ25hbFN0cmVuZ3RoJyxcbiAgICAgICAgICAgIHNlcmllczogJ1JTUlAnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdTaWduYWw6IFJTUlAnKSxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnIzQzYmEzYicsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfU2lnbmFsU3RyZW5ndGgnLFxuICAgICAgICAgICAgc2VyaWVzOiAnUlNSUScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NpZ25hbDogUlNSUScpLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjMTRiMGIzJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9TaWduYWxTdHJlbmd0aCcsXG4gICAgICAgICAgICBzZXJpZXM6ICdiZXInLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdTaWduYWw6IEJFUicpLFxuICAgICAgICAgICAgdW5pdDogJyUnLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjNDRmZjMzJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmcmFnbWVudDogJ2M4eV9TaWduYWxTdHJlbmd0aCcsXG4gICAgICAgICAgICBzZXJpZXM6ICdFQ04wJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnU2lnbmFsOiBFQ04wJyksXG4gICAgICAgICAgICByZW5kZXJUeXBlOiAnbWluJyxcbiAgICAgICAgICAgIGxpbmVUeXBlOiAnbGluZScsXG4gICAgICAgICAgICBjb2xvcjogJyM4NzNlZmEnLFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZyYWdtZW50OiAnYzh5X05ldHdvcmtTdGF0aXN0aWNzJyxcbiAgICAgICAgICAgIHNlcmllczogJ0Rvd25sb2FkJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTmV0d29yazogZG93bmxvYWQnKSxcbiAgICAgICAgICAgIHVuaXQ6ICdLQi9zJyxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6ICdtaW4nLFxuICAgICAgICAgICAgbGluZVR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgIGNvbG9yOiAnI2YyN2E0NScsXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJhZ21lbnQ6ICdjOHlfTWVtb3J5TWVhc3VyZW1lbnQnLFxuICAgICAgICAgICAgc2VyaWVzOiAnVG90YWwnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdNZW1vcnk6IHRvdGFsJyksXG4gICAgICAgICAgICB1bml0OiAnTUInLFxuICAgICAgICAgICAgcmVuZGVyVHlwZTogJ21pbicsXG4gICAgICAgICAgICBsaW5lVHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgY29sb3I6ICcjZGFkZDhjJyxcbiAgICAgICAgICAgIF9fYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBhbGFybXNFdmVudHNDb25maWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdjOHlfTG9jYXRpb25VcGRhdGUnLFxuICAgICAgICAgICAgdGltZWxpbmVUeXBlOiAnRVZFTlQnLFxuICAgICAgICAgICAgY29sb3I6ICcjNmY2Y2QwJyxcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2M4eV9Mb2NhdGlvblVwZGF0ZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfX2FjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdjOHlfVW5hdmFpbGFiaWxpdHlBbGFybScsXG4gICAgICAgICAgICB0aW1lbGluZVR5cGU6ICdBTEFSTScsXG4gICAgICAgICAgICBjb2xvcjogJyMzNzViZjInLFxuICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICB0eXBlOiAnYzh5X1VuYXZhaWxhYmlsaXR5QWxhcm0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX19hY3RpdmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdBc3NldCBQcm9wZXJ0aWVzJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdEZXZpY2UgZGF0YScpLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgICBhbGxvd0Rpc3BsYXlBbmRFZGl0S25vd25Qcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgICAgIGhpZGRlblByb3BlcnRpZXNLZXlQYXRoczogWydvd25lciddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfeDogMCxcbiAgICAgIF95OiA1LFxuICAgICAgX2hlaWdodDogOCxcbiAgICAgIF93aWR0aDogOFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0FsYXJtIGxpc3QnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ0FjdGl2ZSwgY3JpdGljYWwgYWxhcm1zJyksXG4gICAgICBfeDogOCxcbiAgICAgIF95OiA1LFxuICAgICAgX2hlaWdodDogNCxcbiAgICAgIF93aWR0aDogOCxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb3JkZXJNb2RlOiAnQUNUSVZFX0ZJUlNUJyxcbiAgICAgICAgICBzZXZlcml0eTogeyBDUklUSUNBTDogdHJ1ZSB9LFxuICAgICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgQUNUSVZFOiB0cnVlLFxuICAgICAgICAgICAgQUNLTk9XTEVER0VEOiBmYWxzZSxcbiAgICAgICAgICAgIENMRUFSRUQ6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eXBlczogW11cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RldmljZUdyb3VwQXNzaWdubWVudFdpZGdldCcsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnR3JvdXAgYXNzaWdubWVudCcpLFxuICAgICAgX3g6IDE2LFxuICAgICAgX3k6IDUsXG4gICAgICBfaGVpZ2h0OiA0LFxuICAgICAgX3dpZHRoOiA4XG4gICAgfSxcbiAgICB7XG4gICAgICBjb21wb25lbnRJZDogJ01hcCcsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnTG9jYXRpb24nKSxcbiAgICAgIF94OiA4LFxuICAgICAgX3k6IDksXG4gICAgICBfaGVpZ2h0OiA0LFxuICAgICAgX3dpZHRoOiAxNlxuICAgIH1cbiAgXSBhcyBXaWRnZXRbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29udGV4dFN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLnBhcmVudC5kYXRhXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh7IGNvbnRleHREYXRhIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnRpdGxlID0gY29udGV4dERhdGEubmFtZTtcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZE5hbWUgPSBgJHtjb250ZXh0RGF0YS5pZH0tZGV2aWNlLWluZm9gO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyBkYXRhID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dCA9IGRhdGEgYXMgQ29udGV4dERhdGE7XG4gICAgICAgIHRoaXMuYWRkRGV2aWNlVGFyZ2V0Rm9yRFAoZGF0YS5jb250ZXh0RGF0YS5pZCwgZGF0YS5jb250ZXh0RGF0YS5uYW1lKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy53aWRnZXRzU3Vic2NyaXB0aW9uID0gZnJvbSh0aGlzLkRFVklDRV9JTkZPX1dJREdFVFMpXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2VNYXAod2lkZ2V0ID0+IHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KSksXG4gICAgICAgIG1hcCh3aWRnZXQgPT4gKHtcbiAgICAgICAgICAuLi53aWRnZXQsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAuLi53aWRnZXQuY29uZmlnLFxuICAgICAgICAgICAgZGV2aWNlOiB0aGlzLnJvdXRlci5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfSkpLFxuICAgICAgICB0b0FycmF5KClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgZGF0YSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU3VwcG9ydGVkU2VyaWVzRm9yRFAodGhpcy5jdXJyZW50Q29udGV4dC5jb250ZXh0RGF0YS5pZCwgZGF0YSk7XG4gICAgICAgIHRoaXMud2lkZ2V0c0xpc3QgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGREZXZpY2VUYXJnZXRGb3JEUChpZDogc3RyaW5nIHwgbnVtYmVyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkcFdpZGdldCA9IHRoaXMuREVWSUNFX0lORk9fV0lER0VUUy5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgPT0gJ0RhdGEgcG9pbnRzIGdyYXBoJylbMF07XG4gICAgLy8gQWRkIHRhcmdldCB0byBkYXRhUG9pbnQgY29uZmlnXG4gICAgZHBXaWRnZXQuY29uZmlnLmRhdGFwb2ludHMubWFwKGl0ZW0gPT4gKGl0ZW1bJ19fdGFyZ2V0J10gPSB7IGlkLCBuYW1lIH0pKTtcbiAgICAvLyBBZGQgdGFyZ2V0IHRvIGFsYXJtRXZlbnRzIENvbmZpZ1xuICAgIGRwV2lkZ2V0LmNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzLm1hcChpdGVtID0+IChpdGVtWydfX3RhcmdldCddID0geyBpZCwgbmFtZSB9KSk7XG4gIH1cblxuICBhc3luYyBmaWx0ZXJTdXBwb3J0ZWRTZXJpZXNGb3JEUChpZDogc3RyaW5nIHwgbnVtYmVyLCB3aWRnZXRzOiBXaWRnZXRbXSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZE1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5nZXRNZWFzdXJlbWVudHNBbmRTZXJpZXMoaWQpO1xuICAgIGNvbnN0IGlzRGF0YVBvaW50U3VwcG9ydGVkID0gZHAgPT5cbiAgICAgIHN1cHBvcnRlZE1lYXN1cmVtZW50cy5zb21lKFxuICAgICAgICAoeyBmcmFnbWVudCwgc2VyaWVzIH0pID0+IGRwLmZyYWdtZW50ID09PSBmcmFnbWVudCAmJiBkcC5zZXJpZXMgPT09IHNlcmllc1xuICAgICAgKTtcbiAgICBjb25zdCBkcFdpZGdldCA9IHdpZGdldHMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdEYXRhIHBvaW50cyBncmFwaCcpO1xuICAgIGRwV2lkZ2V0LmNvbmZpZy5kYXRhcG9pbnRzID0gZHBXaWRnZXQuY29uZmlnLmRhdGFwb2ludHMuZmlsdGVyKGlzRGF0YVBvaW50U3VwcG9ydGVkKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMud2lkZ2V0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29udGV4dFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICA8Yzh5LXRpdGxlPlxuICAgIHt7IHRpdGxlIH19XG4gIDwvYzh5LXRpdGxlPlxuICA8Yzh5LWNvbnRleHQtZGFzaGJvYXJkXG4gICAgW3RyYW5zbGF0ZVdpZGdldFRpdGxlXT1cInRydWVcIlxuICAgIFtuYW1lXT1cImRhc2hib2FyZE5hbWVcIlxuICAgIFtjb250ZXh0XT1cImN1cnJlbnRDb250ZXh0XCJcbiAgICBbZGVmYXVsdFdpZGdldHNdPVwid2lkZ2V0c0xpc3RcIlxuICAgIFtjYW5EZWxldGVdPVwiZmFsc2VcIlxuICAgIFtoaWRlQXZhaWxhYmlsaXR5XT1cInRydWVcIlxuICA+PC9jOHktY29udGV4dC1kYXNoYm9hcmQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -38,9 +38,9 @@ export class DeviceManagementHomeDashboardComponent {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
DeviceManagementHomeDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceManagementHomeDashboardComponent, deps: [{ token: i1.WidgetService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
-
DeviceManagementHomeDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceManagementHomeDashboardComponent, selector: "c8y-device-management-home-dashboard", ngImport: i0, template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n", dependencies: [{ kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "disabled", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
|
|
41
|
+
DeviceManagementHomeDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceManagementHomeDashboardComponent, selector: "c8y-device-management-home-dashboard", ngImport: i0, template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n", dependencies: [{ kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "disabled", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle", "hideAvailability"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
|
|
42
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceManagementHomeDashboardComponent, decorators: [{
|
|
43
43
|
type: Component,
|
|
44
|
-
args: [{ selector: 'c8y-device-management-home-dashboard', template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n" }]
|
|
44
|
+
args: [{ selector: 'c8y-device-management-home-dashboard', template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n" }]
|
|
45
45
|
}], ctorParameters: function () { return [{ type: i1.WidgetService }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sc0NBQXNDO0lBc0JqRCxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCaEQsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGtCQUFhLEdBQUcsVUFBVSxDQUFDO1FBQzNCLG1CQUFjLEdBQUc7WUFDZjtnQkFDRSxJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztnQkFDN0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLEVBQUU7YUFDWDtZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDL0IsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLEVBQUU7YUFDWDtTQUNVLENBQUM7SUFFcUMsQ0FBQztJQUVwRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxDQUFDLGFBQWE7aUJBQ3JCLFNBQVMsQ0FBQyxNQUFNLENBQUM7aUJBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUlBOUJVLHNDQUFzQzt1SEFBdEMsc0NBQXNDLDRFQ1JuRCx5T0FVQTsyRkRGYSxzQ0FBc0M7a0JBSmxELFNBQVM7K0JBQ0Usc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIFdpZGdldCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4uL3dpZGdldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1tYW5hZ2VtZW50LWhvbWUtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS1tYW5hZ2VtZW50LWhvbWUtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VNYW5hZ2VtZW50SG9tZURhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHdpZGdldHMgPSBbXTtcbiAgZGFzaGJvYXJkTmFtZSA9ICdob21lLWRtMSc7XG4gIGRlZmF1bHRXaWRnZXRzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdkZXZpY2VtYW5hZ2VtZW50LndlbGNvbWUud2lkZ2V0JyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdRdWljayBsaW5rcycpLFxuICAgICAgX3g6IDAsXG4gICAgICBfeTogMCxcbiAgICAgIF9oZWlnaHQ6IDQsXG4gICAgICBfd2lkdGg6IDEyXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnUmVjZW50IEFsYXJtcycsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnUmVjZW50IGFsYXJtcycpLFxuICAgICAgX3g6IDEyLFxuICAgICAgX3k6IDAsXG4gICAgICBfaGVpZ2h0OiA0LFxuICAgICAgX3dpZHRoOiAxMlxuICAgIH1cbiAgXSBhcyBXaWRnZXRbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZWZhdWx0V2lkZ2V0cy5tYXAoYXN5bmMgd2lkZ2V0ID0+IHtcbiAgICAgIGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZVxuICAgICAgICAubWFwTGVnYWN5KHdpZGdldClcbiAgICAgICAgLnRoZW4odHJhbnNmb3JtZWRXaWRnZXQgPT4gdGhpcy53aWRnZXRzLnB1c2godHJhbnNmb3JtZWRXaWRnZXQpKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ0hvbWUnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1jb250ZXh0LWRhc2hib2FyZFxuICBbbmFtZV09XCJkYXNoYm9hcmROYW1lXCJcbiAgW2RlZmF1bHRXaWRnZXRzXT1cImRlZmF1bHRXaWRnZXRzXCJcbiAgW2NhbkRlbGV0ZV09XCJmYWxzZVwiXG4gIFtoaWRlQXZhaWxhYmlsaXR5XT1cInRydWVcIlxuPjwvYzh5LWNvbnRleHQtZGFzaGJvYXJkPlxuIl19
|
|
@@ -6,8 +6,9 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "../common/icon.directive";
|
|
7
7
|
import * as i2 from "../common/outlet.directive";
|
|
8
8
|
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "
|
|
10
|
-
import * as i5 from "
|
|
9
|
+
import * as i4 from "../common/component-outlet.directive";
|
|
10
|
+
import * as i5 from "ngx-bootstrap/dropdown";
|
|
11
|
+
import * as i6 from "../i18n/c8y-translate.pipe";
|
|
11
12
|
/**
|
|
12
13
|
* This component is used as the outlet to show the action list.
|
|
13
14
|
* In a c8ycli app it is by default placed on the header component near app-switcher.
|
|
@@ -50,11 +51,11 @@ export class ActionOutletComponent {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
ActionOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ActionOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
ActionOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: { items: "items" }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *
|
|
54
|
+
ActionOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: { items: "items" }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *c8yComponentOutlet=\"item.component; environmentInjector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
54
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ActionOutletComponent, decorators: [{
|
|
55
56
|
type: Component,
|
|
56
|
-
args: [{ selector: 'c8y-action-outlet', host: { class: 'd-contents' }, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *
|
|
57
|
+
args: [{ selector: 'c8y-action-outlet', host: { class: 'd-contents' }, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *c8yComponentOutlet=\"item.component; environmentInjector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n" }]
|
|
57
58
|
}], propDecorators: { items: [{
|
|
58
59
|
type: Input
|
|
59
60
|
}] } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FjdGlvbi9hY3Rpb24tb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYWN0aW9uL2FjdGlvbi1vdXRsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFHckM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1FOztXQUVHO1FBQ0gsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBYXRCLFdBQU0sR0FBOEIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEU7O1dBRUc7UUFDSCx3QkFBbUIsR0FBeUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNWLE1BQU0sQ0FDSixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQ3pDLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQ0YsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCxnQkFBVyxHQUF5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ1YsTUFBTSxDQUNKLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQ3hDLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQ0YsQ0FDRixDQUFDO0tBY0g7SUFqREM7O09BRUc7SUFDSCxJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQTRCRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFNO1FBQ1gsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQUk7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQzs7a0hBdERVLHFCQUFxQjtzR0FBckIscUJBQXFCLDZIQ2ZsQywwNkNBcUNBOzJGRHRCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CLFFBRXZCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTs4QkFZekIsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24ubW9kZWwnO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgYXMgdGhlIG91dGxldCB0byBzaG93IHRoZSBhY3Rpb24gbGlzdC5cbiAqIEluIGEgYzh5Y2xpIGFwcCBpdCBpcyBieSBkZWZhdWx0IHBsYWNlZCBvbiB0aGUgaGVhZGVyIGNvbXBvbmVudCBuZWFyIGFwcC1zd2l0Y2hlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFjdGlvbi1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdkLWNvbnRlbnRzJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbk91dGxldENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIGluIGEgbW9iaWxlIHZpZXcgdGhlIHRvb2xiYXIgaXMgZXhwYW5kZWQgb3Igbm90LlxuICAgKi9cbiAgaXNQYWdlVG9vbGJhckV4cGFuZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIGFjdGlvbiBkcm9wZG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpdGVtcyh2YWx1ZSkge1xuICAgIHRoaXMuaXRlbXMkLm5leHQodmFsdWUpO1xuICB9XG4gIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcyQudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGl0ZW1zJDogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVtcyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIFwiYWRkXCItZHJvcGRvd24gb3JkZXJlZCBieSBwcmlvcml0eS5cbiAgICovXG4gIHRlbXBsYXRlc0FuZExhYmVscyQ6IE9ic2VydmFibGU8QWN0aW9uW10+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoaXRlbXMgPT5cbiAgICAgIHNvcnRCeShcbiAgICAgICAgaXRlbXMuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLmNvbXBvbmVudCksXG4gICAgICAgIHRoaXMuYnlQcmlvcml0eVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlbXMgdGhhdCBhcmUgZGlzcGxheWVkIGF0IHRoZSB0b3AgbmF2aWdhdGlvbi5cbiAgICovXG4gIGNvbXBvbmVudHMkOiBPYnNlcnZhYmxlPEFjdGlvbltdPiA9IHRoaXMuaXRlbXMkLnBpcGUoXG4gICAgbWFwKGl0ZW1zID0+XG4gICAgICBzb3J0QnkoXG4gICAgICAgIGl0ZW1zLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLmNvbXBvbmVudCksXG4gICAgICAgIHRoaXMuYnlQcmlvcml0eVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICAvKipcbiAgICogSW52b2tlcyBhY3Rpb24gYWZ0ZXIgYW4gYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBpbnZva2UoYWN0aW9uKSB7XG4gICAgaWYgKGFjdGlvbi5hY3Rpb24pIHtcbiAgICAgIGFjdGlvbi5hY3Rpb24uY2FsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnlQcmlvcml0eShpdGVtKSB7XG4gICAgcmV0dXJuIC1pdGVtLnByaW9yaXR5O1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbXBvbmVudHMkIHwgYXN5bmMpPy5sZW5ndGggPiAwXCI+XG4gIDxkaXYgY2xhc3M9XCJtYWluLWhlYWRlci1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29tcG9uZW50cyQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKmM4eUNvbXBvbmVudE91dGxldD1cIml0ZW0uY29tcG9uZW50OyBlbnZpcm9ubWVudEluamVjdG9yOiBpdGVtLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwibWFpbi1oZWFkZXItaXRlbVwiICpuZ0lmPVwiKHRlbXBsYXRlc0FuZExhYmVscyQgfCBhc3luYyk/Lmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiBkcm9wZG93bj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwibWFpbi1oZWFkZXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZSBjOHktZHJvcGRvd25cIlxuICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0FjdGlvbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGkgW2M4eUljb25dPVwiJ3BsdXMtY2lyY2xlJ1wiIGNsYXNzPVwiaWNvbi0yeFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGNvZy1kcm9wZG93blwiICpkcm9wZG93bk1lbnU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGVtcGxhdGVzQW5kTGFiZWxzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqYzh5T3V0bGV0PVwiaXRlbS50ZW1wbGF0ZTsgaW5qZWN0b3I6IGl0ZW0uaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJpdGVtLmxhYmVsXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2tlKGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBbYzh5SWNvbl09XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|