@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
29 lines • 19.3 kB
JavaScript
import { Component, Input } from '@angular/core';
import { NgForm, ControlContainer } from '@angular/forms';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components";
import * as i2 from "@angular/common";
import * as i3 from "@angular/forms";
import * as i4 from "ngx-bootstrap/buttons";
export class OpcuaDeviceProtocolDescription {
constructor() {
this.moId = '';
}
set model(_model) {
this.moId = _model.referencedServerId;
this._model = _model;
this.autoScan = _model.enabled ? '1' : '0';
}
setAutoScanOption(data) {
this._model.enabled = data !== '0' ? true : false;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaDeviceProtocolDescription, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OpcuaDeviceProtocolDescription, selector: "opcua-device-protocol-description", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-protocols\"></i>\n <p>\n <small class=\"label label-info\">{{ _model.fieldbusType }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <div class=\"form-group form-group-lg m-b-0\">\n <label class=\"sr-only\" translate>Name</label>\n <label class=\"editable\" [ngClass]=\"{ updated: ctrlName.dirty }\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n #ctrlName=\"ngModel\"\n [(ngModel)]=\"_model.name\"\n style=\"max-width:calc( {{ _model.name.length || 10 }} * 1ch + 14px)\"\n />\n </label>\n </div>\n <div class=\"form-group\">\n <label class=\"sr-only\" translate>Description</label>\n <label class=\"editable\" [ngClass]=\"{ updated: ctrlDescription.dirty }\">\n <textarea\n class=\"form-control\"\n rows=\"1\"\n name=\"description\"\n placeholder=\"{{ 'e.g. My protocol description' | translate }}\"\n #ctrlDescription=\"ngModel\"\n [(ngModel)]=\"_model.description\"\n style=\"max-width:calc( {{ _model.description?.length || 25 }} * 1ch + 14px)\"\n ></textarea>\n <span *ngIf=\"_model.description\">\n {{ _model.description }}\n </span>\n </label>\n </div>\n <div class=\"d-flex\">\n <div>\n <button\n type=\"button\"\n class=\"btn\"\n name=\"autoScanAddressSpace\"\n [(ngModel)]=\"autoScan\"\n (ngModelChange)=\"setAutoScanOption($event)\"\n btnCheckbox\n btnCheckboxTrue=\"1\"\n btnCheckboxFalse=\"0\"\n ngDefaultControl\n >\n <i *ngIf=\"autoScan === '1'\" c8yIcon=\"check\" class=\"text-success\"></i>\n <span *ngIf=\"autoScan === '1'\">\n {{ 'Active`auto scanning`' | translate }}\n </span>\n\n <i *ngIf=\"autoScan === '0'\" c8yIcon=\"ban\" class=\"text-danger\"></i>\n <span *ngIf=\"autoScan === '0'\">\n {{ 'Inactive`auto scanning`' | translate }}\n </span>\n </button>\n </div>\n <small class=\"m-l-16 text-muted\">\n {{\n 'When active, the gateway scans the address space of all servers and automatically applies this device protocol to all nodes matching the criteria.'\n | translate\n }}\n </small>\n </div>\n </div>\n <div class=\"flex-grow\">\n <ul class=\"list-unstyled small\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>ID</label>\n <span class=\"m-l-auto\">{{ _model.id }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>Date created</label>\n <span class=\"m-l-auto\">{{ _model.creationTime | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>Last update</label>\n <span class=\"m-l-auto\">{{ _model.lastUpdated | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>Fieldbus version</label>\n <span class=\"m-l-auto\">{{ _model.fieldbusVersion }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.ButtonCheckboxDirective, selector: "[btnCheckbox]", inputs: ["btnCheckboxTrue", "btnCheckboxFalse"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1.DatePipe, name: "c8yDate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaDeviceProtocolDescription, decorators: [{
type: Component,
args: [{ selector: 'opcua-device-protocol-description', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-protocols\"></i>\n <p>\n <small class=\"label label-info\">{{ _model.fieldbusType }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-9\">\n <div class=\"form-group form-group-lg m-b-0\">\n <label class=\"sr-only\" translate>Name</label>\n <label class=\"editable\" [ngClass]=\"{ updated: ctrlName.dirty }\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n #ctrlName=\"ngModel\"\n [(ngModel)]=\"_model.name\"\n style=\"max-width:calc( {{ _model.name.length || 10 }} * 1ch + 14px)\"\n />\n </label>\n </div>\n <div class=\"form-group\">\n <label class=\"sr-only\" translate>Description</label>\n <label class=\"editable\" [ngClass]=\"{ updated: ctrlDescription.dirty }\">\n <textarea\n class=\"form-control\"\n rows=\"1\"\n name=\"description\"\n placeholder=\"{{ 'e.g. My protocol description' | translate }}\"\n #ctrlDescription=\"ngModel\"\n [(ngModel)]=\"_model.description\"\n style=\"max-width:calc( {{ _model.description?.length || 25 }} * 1ch + 14px)\"\n ></textarea>\n <span *ngIf=\"_model.description\">\n {{ _model.description }}\n </span>\n </label>\n </div>\n <div class=\"d-flex\">\n <div>\n <button\n type=\"button\"\n class=\"btn\"\n name=\"autoScanAddressSpace\"\n [(ngModel)]=\"autoScan\"\n (ngModelChange)=\"setAutoScanOption($event)\"\n btnCheckbox\n btnCheckboxTrue=\"1\"\n btnCheckboxFalse=\"0\"\n ngDefaultControl\n >\n <i *ngIf=\"autoScan === '1'\" c8yIcon=\"check\" class=\"text-success\"></i>\n <span *ngIf=\"autoScan === '1'\">\n {{ 'Active`auto scanning`' | translate }}\n </span>\n\n <i *ngIf=\"autoScan === '0'\" c8yIcon=\"ban\" class=\"text-danger\"></i>\n <span *ngIf=\"autoScan === '0'\">\n {{ 'Inactive`auto scanning`' | translate }}\n </span>\n </button>\n </div>\n <small class=\"m-l-16 text-muted\">\n {{\n 'When active, the gateway scans the address space of all servers and automatically applies this device protocol to all nodes matching the criteria.'\n | translate\n }}\n </small>\n </div>\n </div>\n <div class=\"flex-grow\">\n <ul class=\"list-unstyled small\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>ID</label>\n <span class=\"m-l-auto\">{{ _model.id }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>Date created</label>\n <span class=\"m-l-auto\">{{ _model.creationTime | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>Last update</label>\n <span class=\"m-l-auto\">{{ _model.lastUpdated | c8yDate }}</span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\" translate>Fieldbus version</label>\n <span class=\"m-l-auto\">{{ _model.fieldbusVersion }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
}], propDecorators: { model: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWEtZGV2aWNlLXByb3RvY29sLWRlc2NyaXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb3RvY29sLW9wY3VhL29wY3VhLWRldmljZS1wcm90b2NvbC1kZXNjcmlwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9wcm90b2NvbC1vcGN1YS9vcGN1YS1kZXZpY2UtcHJvdG9jb2wtZGVzY3JpcHRpb24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU8xRCxNQUFNLE9BQU8sOEJBQThCO0lBTDNDO1FBY1UsU0FBSSxHQUFHLEVBQUUsQ0FBQztLQUtuQjtJQVhDLElBQWEsS0FBSyxDQUFDLE1BQU07UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM3QyxDQUFDO0lBSUQsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDOytHQWJVLDhCQUE4QjttR0FBOUIsOEJBQThCLHFHQ1IzQywrb0lBaUdBLHl1Q0QzRmlCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzs0RkFFeEQsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLG1DQUFtQyxpQkFFOUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7OEJBS3RELEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRm9ybSwgQ29udHJvbENvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnb3BjdWEtZGV2aWNlLXByb3RvY29sLWRlc2NyaXB0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb3BjdWEtZGV2aWNlLXByb3RvY29sLWRlc2NyaXB0aW9uLmh0bWwnLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE9wY3VhRGV2aWNlUHJvdG9jb2xEZXNjcmlwdGlvbiB7XHJcbiAgX21vZGVsOiBhbnk7XHJcbiAgYXV0b1NjYW46IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgbW9kZWwoX21vZGVsKSB7XHJcbiAgICB0aGlzLm1vSWQgPSBfbW9kZWwucmVmZXJlbmNlZFNlcnZlcklkO1xyXG4gICAgdGhpcy5fbW9kZWwgPSBfbW9kZWw7XHJcbiAgICB0aGlzLmF1dG9TY2FuID0gX21vZGVsLmVuYWJsZWQgPyAnMScgOiAnMCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vSWQgPSAnJztcclxuXHJcbiAgc2V0QXV0b1NjYW5PcHRpb24oZGF0YTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9tb2RlbC5lbmFibGVkID0gZGF0YSAhPT0gJzAnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBiZy1sZXZlbC0xIGZsZXgtbm8tc2hyaW5rIHAtdC0yNCBwLWItMjRcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC03MFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4IGM4eS1pY29uIGM4eS1pY29uLWRldmljZS1wcm90b2NvbHNcIj48L2k+XG4gICAgICA8cD5cbiAgICAgICAgPHNtYWxsIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiPnt7IF9tb2RlbC5maWVsZGJ1c1R5cGUgfX08L3NtYWxsPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3cgY29sLTEwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTgwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtbGcgbS1iLTBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNyLW9ubHlcIiB0cmFuc2xhdGU+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJlZGl0YWJsZVwiIFtuZ0NsYXNzXT1cInsgdXBkYXRlZDogY3RybE5hbWUuZGlydHkgfVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAjY3RybE5hbWU9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9tb2RlbC5uYW1lXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDpjYWxjKCB7eyBfbW9kZWwubmFtZS5sZW5ndGggfHwgMTAgfX0gKiAxY2ggKyAxNHB4KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgdHJhbnNsYXRlPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImVkaXRhYmxlXCIgW25nQ2xhc3NdPVwieyB1cGRhdGVkOiBjdHJsRGVzY3JpcHRpb24uZGlydHkgfVwiPlxuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBNeSBwcm90b2NvbCBkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICNjdHJsRGVzY3JpcHRpb249XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9tb2RlbC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6Y2FsYygge3sgX21vZGVsLmRlc2NyaXB0aW9uPy5sZW5ndGggfHwgMjUgfX0gKiAxY2ggKyAxNHB4KVwiXG4gICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9tb2RlbC5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IF9tb2RlbC5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImF1dG9TY2FuQWRkcmVzc1NwYWNlXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF1dG9TY2FuXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRBdXRvU2Nhbk9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBidG5DaGVja2JveFxuICAgICAgICAgICAgICAgIGJ0bkNoZWNrYm94VHJ1ZT1cIjFcIlxuICAgICAgICAgICAgICAgIGJ0bkNoZWNrYm94RmFsc2U9XCIwXCJcbiAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImF1dG9TY2FuID09PSAnMSdcIiBjOHlJY29uPVwiY2hlY2tcIiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImF1dG9TY2FuID09PSAnMSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdBY3RpdmVgYXV0byBzY2FubmluZ2AnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhdXRvU2NhbiA9PT0gJzAnXCIgYzh5SWNvbj1cImJhblwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdXRvU2NhbiA9PT0gJzAnXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnSW5hY3RpdmVgYXV0byBzY2FubmluZ2AnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwibS1sLTE2IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnV2hlbiBhY3RpdmUsIHRoZSBnYXRld2F5IHNjYW5zIHRoZSBhZGRyZXNzIHNwYWNlIG9mIGFsbCBzZXJ2ZXJzIGFuZCBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgdGhpcyBkZXZpY2UgcHJvdG9jb2wgdG8gYWxsIG5vZGVzIG1hdGNoaW5nIHRoZSBjcml0ZXJpYS4nXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIHNtYWxsXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSB0ZXh0LW5vd3JhcFwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOFwiIHRyYW5zbGF0ZT5JRDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG9cIj57eyBfbW9kZWwuaWQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLThcIiB0cmFuc2xhdGU+RGF0ZSBjcmVhdGVkPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPnt7IF9tb2RlbC5jcmVhdGlvblRpbWUgfCBjOHlEYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04XCIgdHJhbnNsYXRlPkxhc3QgdXBkYXRlPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPnt7IF9tb2RlbC5sYXN0VXBkYXRlZCB8IGM4eURhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLThcIiB0cmFuc2xhdGU+RmllbGRidXMgdmVyc2lvbjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG9cIj57eyBfbW9kZWwuZmllbGRidXNWZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19