@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
168 lines • 19.8 kB
JavaScript
import { Component, Injector, Input } from '@angular/core';
import { CoreBaseComponent } from '../common/base.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../pivot/pivot.component";
import * as i3 from "../pivot/pivot-tab.component";
import * as i4 from "../header/header.component";
import * as i5 from "../../directives/markdown/markdown.directive";
import * as i6 from "@angular/forms";
import * as i7 from "../form/form-field/code/code-form-field.component";
import * as i8 from "../form/form-field/form-field-accessor.directive";
import * as i9 from "../form/form-field/form-field-validator.directive";
function DocumentationComponent_sme_header_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "sme-header", 5);
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵproperty("text", ctx_r0.document == null ? null : ctx_r0.document.name);
} }
function DocumentationComponent_ng_template_4_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "div", 8);
} if (rf & 2) {
const ctx_r4 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("smeMarkdown", ctx_r4.document == null ? null : ctx_r4.document.overview);
} }
function DocumentationComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 6);
i0.ɵɵtemplate(1, DocumentationComponent_ng_template_4_div_1_Template, 1, 1, "div", 7);
i0.ɵɵelementStart(2, "h4");
i0.ɵɵtext(3);
i0.ɵɵelementEnd();
i0.ɵɵprojection(4);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r1.document == null ? null : ctx_r1.document.overview);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(ctx_r1.strings.MsftSmeShell.Angular.Documentation.Overview.liveExampleHeader);
} }
function DocumentationComponent_sme_pivot_tab_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "div", 6);
} }
function DocumentationComponent_sme_pivot_tab_5_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "sme-pivot-tab", 3);
i0.ɵɵtemplate(1, DocumentationComponent_sme_pivot_tab_5_ng_template_1_Template, 1, 0, "ng-template");
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵproperty("label", ctx_r2.strings.MsftSmeShell.Angular.Documentation.Tabs.API.label);
} }
function DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_sme_pivot_tab_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {
const _r14 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "sme-form-field", 13);
i0.ɵɵlistener("ngModelChange", function DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_sme_pivot_tab_4_ng_template_1_Template_sme_form_field_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const file_r10 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(file_r10.contents = $event); });
i0.ɵɵelementEnd();
} if (rf & 2) {
const file_r10 = i0.ɵɵnextContext().$implicit;
i0.ɵɵproperty("ngModel", file_r10.contents)("label", file_r10.name || file_r10.language)("hideHeader", true)("language", file_r10.language)("readonly", true);
} }
function DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_sme_pivot_tab_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "sme-pivot-tab", 3);
i0.ɵɵtemplate(1, DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_sme_pivot_tab_4_ng_template_1_Template, 1, 5, "ng-template");
i0.ɵɵelementEnd();
} if (rf & 2) {
const file_r10 = ctx.$implicit;
i0.ɵɵproperty("label", file_r10.name || file_r10.language);
} }
function DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵelementStart(1, "h4", 10);
i0.ɵɵtext(2);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(3, "sme-pivot", 11);
i0.ɵɵtemplate(4, DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_sme_pivot_tab_4_Template, 2, 1, "sme-pivot-tab", 12);
i0.ɵɵelementEnd();
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const example_r8 = ctx.$implicit;
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(example_r8.value.name);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngForOf", example_r8.value.files);
} }
function DocumentationComponent_sme_pivot_tab_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 6);
i0.ɵɵtemplate(1, DocumentationComponent_sme_pivot_tab_6_ng_template_1_ng_container_1_Template, 5, 2, "ng-container", 9);
i0.ɵɵpipe(2, "keyvalue");
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r6 = i0.ɵɵnextContext(2);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, ctx_r6.document.examples));
} }
function DocumentationComponent_sme_pivot_tab_6_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "sme-pivot-tab", 3);
i0.ɵɵtemplate(1, DocumentationComponent_sme_pivot_tab_6_ng_template_1_Template, 3, 3, "ng-template");
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r3 = i0.ɵɵnextContext();
i0.ɵɵproperty("label", ctx_r3.strings.MsftSmeShell.Angular.Documentation.Tabs.Examples.label);
} }
const _c0 = ["*"];
/**
*
* @smeDoc {@label Documentation @id sme-documentation-component}
*
* @overview
* @file {@filepath ./examples/documentation-overview.md}
*
* @example {@label Basic Usage @id basic-usage}
* @file {@filename component.ts @filepath ./examples/documentation-basic-usage.component.ts}
* @file {@filename component.html @filepath ./examples/documentation-basic-usage.component.html}
*
*/
export class DocumentationComponent extends CoreBaseComponent {
constructor(injector) {
super(injector);
this.examples = [];
}
/**
* The source name to use for logging
*/
get logSourceName() {
return 'DocumentationComponent';
}
ngOnChanges(changes) {
super.ngOnChanges(changes);
if (changes.document) {
this.examples = this.document.examples ? Object.keys(this.document.examples) : [];
}
}
/**
* Gets the initial host classes to be applied to this element
*/
getInitialHostClasses() {
return super.getInitialHostClasses().concat([
'sme-documentation-presenter'
]);
}
}
/** @nocollapse */ DocumentationComponent.ɵfac = function DocumentationComponent_Factory(t) { return new (t || DocumentationComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ DocumentationComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DocumentationComponent, selectors: [["sme-documentation"]], inputs: { document: "document" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 7, vars: 4, consts: [[1, "sme-layout-main-content-padding"], ["type", "tool-header", 3, "text", 4, "ngIf"], [1, "sme-position-flex-auto"], [3, "label"], [3, "label", 4, "ngIf"], ["type", "tool-header", 3, "text"], [1, "sme-padding-horizontal-lg"], [3, "smeMarkdown", 4, "ngIf"], [3, "smeMarkdown"], [4, "ngFor", "ngForOf"], [1, "sme-example-header"], [1, "sme-position-flex-auto", "sme-example-content"], [3, "label", 4, "ngFor", "ngForOf"], ["type", "code", "name", "code", "orientation", "vertical", 3, "ngModel", "label", "hideHeader", "language", "readonly", "ngModelChange"]], template: function DocumentationComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵprojectionDef();
i0.ɵɵelementStart(0, "div", 0);
i0.ɵɵtemplate(1, DocumentationComponent_sme_header_1_Template, 1, 1, "sme-header", 1);
i0.ɵɵelementStart(2, "sme-pivot", 2)(3, "sme-pivot-tab", 3);
i0.ɵɵtemplate(4, DocumentationComponent_ng_template_4_Template, 5, 2, "ng-template");
i0.ɵɵelementEnd();
i0.ɵɵtemplate(5, DocumentationComponent_sme_pivot_tab_5_Template, 2, 1, "sme-pivot-tab", 4);
i0.ɵɵtemplate(6, DocumentationComponent_sme_pivot_tab_6_Template, 2, 1, "sme-pivot-tab", 4);
i0.ɵɵelementEnd()();
} if (rf & 2) {
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.document == null ? null : ctx.document.name);
i0.ɵɵadvance(2);
i0.ɵɵproperty("label", ctx.strings.MsftSmeShell.Angular.Documentation.Tabs.Overview.label);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx.document == null ? null : ctx.document.api);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.examples.length > 0);
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.PivotComponent, i3.PivotTabComponent, i4.HeaderComponent, i5.MarkdownDirective, i6.NgControlStatus, i6.NgModel, i7.CodeFormFieldComponent, i8.FormFieldAccessorDirective, i9.FormFieldValidatorDirective, i1.KeyValuePipe], encapsulation: 2 });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DocumentationComponent, [{
type: Component,
args: [{ selector: 'sme-documentation', template: "<div class=\"sme-layout-main-content-padding\">\r\n <sme-header *ngIf=\"document?.name\" type=\"tool-header\" [text]=\"document?.name\"></sme-header>\r\n <sme-pivot class=\"sme-position-flex-auto\">\r\n <sme-pivot-tab [label]=\"strings.MsftSmeShell.Angular.Documentation.Tabs.Overview.label\">\r\n <ng-template>\r\n <div class=\"sme-padding-horizontal-lg\">\r\n <div *ngIf=\"document?.overview\" [smeMarkdown]=\"document?.overview\"></div>\r\n <h4>{{strings.MsftSmeShell.Angular.Documentation.Overview.liveExampleHeader}}</h4>\r\n <ng-content></ng-content>\r\n </div>\r\n </ng-template>\r\n </sme-pivot-tab>\r\n <sme-pivot-tab *ngIf=\"document?.api\" [label]=\"strings.MsftSmeShell.Angular.Documentation.Tabs.API.label\">\r\n <ng-template>\r\n <div class=\"sme-padding-horizontal-lg\">\r\n <!-- TODO: Currently this tab will never show. We will figure it out when we start generating API documentation. -->\r\n </div>\r\n </ng-template>\r\n </sme-pivot-tab>\r\n <sme-pivot-tab *ngIf=\"examples.length > 0\" [label]=\"strings.MsftSmeShell.Angular.Documentation.Tabs.Examples.label\">\r\n <ng-template>\r\n <div class=\"sme-padding-horizontal-lg\">\r\n <ng-container *ngFor=\"let example of document.examples | keyvalue\">\r\n <h4 class=\"sme-example-header\">{{example.value.name}}</h4>\r\n <sme-pivot class=\"sme-position-flex-auto sme-example-content\">\r\n <sme-pivot-tab *ngFor=\"let file of example.value.files\" [label]=\"file.name || file.language\">\r\n <ng-template>\r\n <!-- TODO: use code editor to display code in the right language with syntax highlighting -->\r\n <sme-form-field type=\"code\" name=\"code\" [(ngModel)]=\"file.contents\" [label]=\"file.name || file.language\" [hideHeader]=\"true\" orientation=\"vertical\" [language]=\"file.language\" [readonly]=\"true\">\r\n </sme-form-field>\r\n </ng-template>\r\n </sme-pivot-tab>\r\n </sme-pivot>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </sme-pivot-tab>\r\n </sme-pivot>\r\n</div>\r\n" }]
}], function () { return [{ type: i0.Injector }]; }, { document: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9kb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztJQ0EzRCxnQ0FBMkY7OztJQUFyQyw0RUFBdUI7OztJQUtyRSx5QkFBeUU7OztJQUF6Qyx1RkFBa0M7OztJQURwRSw4QkFBdUM7SUFDckMscUZBQXlFO0lBQ3pFLDBCQUFJO0lBQUEsWUFBeUU7SUFBQSxpQkFBSztJQUNoRixrQkFBeUI7SUFDN0IsaUJBQU07OztJQUhFLGVBQXdCO0lBQXhCLGdGQUF3QjtJQUMxQixlQUF5RTtJQUF6RSxrR0FBeUU7OztJQU8vRSx5QkFFTTs7O0lBSlYsd0NBQXlHO0lBQ3ZHLG9HQUljO0lBQ2hCLGlCQUFnQjs7O0lBTnFCLHdGQUFtRTs7OztJQWdCMUYsMENBQWlNO0lBQXpKLG1SQUFhLDBDQUFxQixJQUFQO0lBQ25FLGlCQUFpQjs7O0lBRHVCLDJDQUEyQiw2Q0FBQSxvQkFBQSwrQkFBQSxrQkFBQTs7O0lBSHZFLHdDQUE2RjtJQUMzRixpSkFJYztJQUNoQixpQkFBZ0I7OztJQU53QywwREFBb0M7OztJQUhoRyw2QkFBbUU7SUFDakUsOEJBQStCO0lBQUEsWUFBc0I7SUFBQSxpQkFBSztJQUMxRCxxQ0FBOEQ7SUFDNUQseUlBTWdCO0lBQ2xCLGlCQUFZO0lBQ2QsMEJBQWU7OztJQVZrQixlQUFzQjtJQUF0QiwyQ0FBc0I7SUFFbkIsZUFBc0I7SUFBdEIsZ0RBQXNCOzs7SUFKNUQsOEJBQXVDO0lBQ3JDLHVIQVdlOztJQUNqQixpQkFBTTs7O0lBWjhCLGVBQStCO0lBQS9CLHdFQUErQjs7O0lBSHZFLHdDQUFvSDtJQUNsSCxvR0FlYztJQUNoQixpQkFBZ0I7OztJQWpCMkIsNkZBQXdFOzs7QURmdkg7Ozs7Ozs7Ozs7O0dBV0c7QUFLSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQWlCO0lBaUJ6RCxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBbEJEOztPQUVHO0lBQ0gsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8sd0JBQXdCLENBQUM7SUFDcEMsQ0FBQztJQWVNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNyRjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLHFCQUFxQjtRQUMzQixPQUFPLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUN4Qyw2QkFBNkI7U0FDaEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7K0dBcENRLHNCQUFzQjt3R0FBdEIsc0JBQXNCOztRQ3BCbkMsOEJBQTZDO1FBQzNDLHFGQUEyRjtRQUMzRixvQ0FBMEMsdUJBQUE7UUFFdEMsb0ZBTWM7UUFDaEIsaUJBQWdCO1FBQ2hCLDJGQU1nQjtRQUNoQiwyRkFpQmdCO1FBQ2xCLGlCQUFZLEVBQUE7O1FBcENDLGVBQW9CO1FBQXBCLHNFQUFvQjtRQUVoQixlQUF3RTtRQUF4RSwwRkFBd0U7UUFTdkUsZUFBbUI7UUFBbkIscUVBQW1CO1FBT25CLGVBQXlCO1FBQXpCLDhDQUF5Qjs7dUZEQ2hDLHNCQUFzQjtjQUpsQyxTQUFTOzJCQUNJLG1CQUFtQjsyREFnQnRCLFFBQVE7a0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudGF0aW9uRG9jdW1lbnQgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG4vKipcclxuICpcclxuICogQHNtZURvYyB7QGxhYmVsIERvY3VtZW50YXRpb24gQGlkIHNtZS1kb2N1bWVudGF0aW9uLWNvbXBvbmVudH1cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9kb2N1bWVudGF0aW9uLW92ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZG9jdW1lbnRhdGlvbi1iYXNpYy11c2FnZS5jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZG9jdW1lbnRhdGlvbi1iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtZG9jdW1lbnRhdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ0RvY3VtZW50YXRpb25Db21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRvY3VtZW50IHRvIHNob3dcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRhdGlvbkRvY3VtZW50O1xyXG5cclxuICAgIHB1YmxpYyBleGFtcGxlczogc3RyaW5nW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuZXhhbXBsZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhhbXBsZXMgPSB0aGlzLmRvY3VtZW50LmV4YW1wbGVzID8gT2JqZWN0LmtleXModGhpcy5kb2N1bWVudC5leGFtcGxlcykgOiBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLWRvY3VtZW50YXRpb24tcHJlc2VudGVyJ1xyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtbGF5b3V0LW1haW4tY29udGVudC1wYWRkaW5nXCI+XHJcbiAgPHNtZS1oZWFkZXIgKm5nSWY9XCJkb2N1bWVudD8ubmFtZVwiIHR5cGU9XCJ0b29sLWhlYWRlclwiIFt0ZXh0XT1cImRvY3VtZW50Py5uYW1lXCI+PC9zbWUtaGVhZGVyPlxyXG4gIDxzbWUtcGl2b3QgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvXCI+XHJcbiAgICA8c21lLXBpdm90LXRhYiBbbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Eb2N1bWVudGF0aW9uLlRhYnMuT3ZlcnZpZXcubGFiZWxcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtcGFkZGluZy1ob3Jpem9udGFsLWxnXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnQ/Lm92ZXJ2aWV3XCIgW3NtZU1hcmtkb3duXT1cImRvY3VtZW50Py5vdmVydmlld1wiPjwvZGl2PlxyXG4gICAgICAgICAgPGg0Pnt7c3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Eb2N1bWVudGF0aW9uLk92ZXJ2aWV3LmxpdmVFeGFtcGxlSGVhZGVyfX08L2g0PlxyXG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3NtZS1waXZvdC10YWI+XHJcbiAgICA8c21lLXBpdm90LXRhYiAqbmdJZj1cImRvY3VtZW50Py5hcGlcIiBbbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Eb2N1bWVudGF0aW9uLlRhYnMuQVBJLmxhYmVsXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLXBhZGRpbmctaG9yaXpvbnRhbC1sZ1wiPlxyXG4gICAgICAgICAgPCEtLSBUT0RPOiBDdXJyZW50bHkgdGhpcyB0YWIgd2lsbCBuZXZlciBzaG93LiBXZSB3aWxsIGZpZ3VyZSBpdCBvdXQgd2hlbiB3ZSBzdGFydCBnZW5lcmF0aW5nIEFQSSBkb2N1bWVudGF0aW9uLiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvc21lLXBpdm90LXRhYj5cclxuICAgIDxzbWUtcGl2b3QtdGFiICpuZ0lmPVwiZXhhbXBsZXMubGVuZ3RoID4gMFwiIFtsYWJlbF09XCJzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkRvY3VtZW50YXRpb24uVGFicy5FeGFtcGxlcy5sYWJlbFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wYWRkaW5nLWhvcml6b250YWwtbGdcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGV4YW1wbGUgb2YgZG9jdW1lbnQuZXhhbXBsZXMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJzbWUtZXhhbXBsZS1oZWFkZXJcIj57e2V4YW1wbGUudmFsdWUubmFtZX19PC9oND5cclxuICAgICAgICAgICAgPHNtZS1waXZvdCBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWV4YW1wbGUtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxzbWUtcGl2b3QtdGFiICpuZ0Zvcj1cImxldCBmaWxlIG9mIGV4YW1wbGUudmFsdWUuZmlsZXNcIiBbbGFiZWxdPVwiZmlsZS5uYW1lIHx8IGZpbGUubGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUT0RPOiB1c2UgY29kZSBlZGl0b3IgdG8gZGlzcGxheSBjb2RlIGluIHRoZSByaWdodCBsYW5ndWFnZSB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzbWUtZm9ybS1maWVsZCB0eXBlPVwiY29kZVwiIG5hbWU9XCJjb2RlXCIgWyhuZ01vZGVsKV09XCJmaWxlLmNvbnRlbnRzXCIgW2xhYmVsXT1cImZpbGUubmFtZSB8fCBmaWxlLmxhbmd1YWdlXCIgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIG9yaWVudGF0aW9uPVwidmVydGljYWxcIiBbbGFuZ3VhZ2VdPVwiZmlsZS5sYW5ndWFnZVwiIFtyZWFkb25seV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvc21lLXBpdm90LXRhYj5cclxuICAgICAgICAgICAgPC9zbWUtcGl2b3Q+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvc21lLXBpdm90LXRhYj5cclxuICA8L3NtZS1waXZvdD5cclxuPC9kaXY+XHJcbiJdfQ==