@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
194 lines • 26 kB
JavaScript
import { Component } from '@angular/core';
import { BaseDialogComponent } from '../base-dialog.component';
import { DialogService } from '../dialog.service';
import * as i0 from "@angular/core";
import * as i1 from "../dialog.service";
import * as i2 from "@angular/common";
import * as i3 from "@angular/forms";
import * as i4 from "../../loading-wheel/loading-wheel.component";
import * as i5 from "../../tooltip/tooltip.directive";
import * as i6 from "../dialog.component";
function ConfirmationListDialogComponent_sme_loading_wheel_7_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "sme-loading-wheel", 10);
} }
function ConfirmationListDialogComponent_p_8_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "p");
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx_r2.listHeaderText);
} }
function ConfirmationListDialogComponent_ul_9_li_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "li", 13);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const item_r8 = ctx.$implicit;
i0.ɵɵproperty("title", (item_r8 == null ? null : item_r8.title) || "");
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", (item_r8 == null ? null : item_r8.value) || item_r8, " ");
} }
function ConfirmationListDialogComponent_ul_9_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "ul", 11);
i0.ɵɵtemplate(1, ConfirmationListDialogComponent_ul_9_li_1_Template, 2, 2, "li", 12);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r3 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", ctx_r3.listData);
} }
function ConfirmationListDialogComponent_div_10_div_1_Template(rf, ctx) { if (rf & 1) {
const _r13 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 15)(1, "label", 16)(2, "input", 17);
i0.ɵɵlistener("ngModelChange", function ConfirmationListDialogComponent_div_10_div_1_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.radioSelectionResult = $event); });
i0.ɵɵelementEnd();
i0.ɵɵelementStart(3, "span", 18);
i0.ɵɵtext(4);
i0.ɵɵelementEnd()()();
} if (rf & 2) {
const item_r10 = ctx.$implicit;
const ctx_r9 = i0.ɵɵnextContext(2);
i0.ɵɵadvance(1);
i0.ɵɵproperty("title", (item_r10 == null ? null : item_r10.title) || "");
i0.ɵɵadvance(1);
i0.ɵɵproperty("value", item_r10)("ngModel", ctx_r9.radioSelectionResult);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate((item_r10 == null ? null : item_r10.value) || item_r10);
} }
function ConfirmationListDialogComponent_div_10_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div");
i0.ɵɵtemplate(1, ConfirmationListDialogComponent_div_10_div_1_Template, 5, 4, "div", 14);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r4 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", ctx_r4.listData);
} }
function ConfirmationListDialogComponent_div_11_Template(rf, ctx) { if (rf & 1) {
const _r15 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 19)(1, "label", 20)(2, "input", 21);
i0.ɵɵlistener("ngModelChange", function ConfirmationListDialogComponent_div_11_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.checked = $event); });
i0.ɵɵelementEnd();
i0.ɵɵelementStart(3, "span");
i0.ɵɵtext(4);
i0.ɵɵelementEnd()()();
} if (rf & 2) {
const ctx_r5 = i0.ɵɵnextContext();
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngModel", ctx_r5.checked);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(ctx_r5.checkboxText);
} }
function ConfirmationListDialogComponent_p_12_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "p");
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r6 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx_r6.listFooterText);
} }
export class ConfirmationListDialogComponent extends BaseDialogComponent {
constructor(dialogService) {
super(dialogService);
}
closeRequested(reason) {
this.onCancel();
}
show(options) {
if (!options) {
throw new Error('ConfirmationListDialogComponent.show: Options are required to show the dialog.');
}
const result = super.show(options);
this.cancelButtonText = options.cancelButtonText;
this.checkboxText = options.checkboxText;
this.checked = false;
this.confirmButtonText = options.confirmButtonText;
this.listFooterText = options.listFooterText;
this.listData = [];
this.radioSelectionResult = null;
this.listType = options.listType;
this.listHeaderText = options.listHeaderText;
this.title = options.title;
this.loading = true;
this.dataSourceSubscription = options.listDataSource.subscribe(strings => {
this.loading = false;
this.listData = strings;
this.radioSelectionResult = this.listData ? this.listData[0] : '';
}, (error) => {
this.hide({
confirmed: false,
observableError: error
});
});
return result;
}
hide(result) {
this.dataSourceSubscription?.unsubscribe();
super.hide(result);
}
onConfirm() {
this.hide({
confirmed: true,
checkboxResult: (this.checkboxText) ? this.checked : null,
radioSelectionResult: this.radioSelectionResult
});
}
onCancel() {
this.hide({
confirmed: false
});
}
}
/** @nocollapse */ ConfirmationListDialogComponent.ɵfac = function ConfirmationListDialogComponent_Factory(t) { return new (t || ConfirmationListDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogService)); };
/** @nocollapse */ ConfirmationListDialogComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ConfirmationListDialogComponent, selectors: [["sme-confirmation-list-dialog"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 11, consts: [["dialogMode", "centered", 3, "clickBackdrop"], ["dialog", ""], ["id", "sme-dialog-title"], ["id", "sme-confirmation-list-dialog-form"], ["size", "medium", 4, "ngIf"], [4, "ngIf"], ["class", "sme-list sme-position-flex-auto sme-margin-top-xxs", 4, "ngIf"], ["class", "sme-checkbox sme-position-flex-none sme-margin-top-xxs", 4, "ngIf"], ["type", "submit", "form", "sme-confirmation-list-dialog-form", "data-uta-id", "dialog-list-confirm-button", 1, "sme-button-primary", 3, "disabled", "click"], ["type", "button", "data-uta-id", "dialog-list-cancel-button", 3, "click"], ["size", "medium"], [1, "sme-list", "sme-position-flex-auto", "sme-margin-top-xxs"], [3, "title", 4, "ngFor", "ngForOf"], [3, "title"], ["class", "sme-radio sme-position-flex-auto sme-margin-top-xxs", 4, "ngFor", "ngForOf"], [1, "sme-radio", "sme-position-flex-auto", "sme-margin-top-xxs"], [1, "sme-font-body", 3, "title"], ["type", "radio", "name", "selection", 3, "value", "ngModel", "ngModelChange"], ["aria-hidden", "true"], [1, "sme-checkbox", "sme-position-flex-none", "sme-margin-top-xxs"], [1, "sme-font-body"], ["type", "checkbox", 3, "ngModel", "ngModelChange"]], template: function ConfirmationListDialogComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "sme-dialog", 0, 1)(2, "sme-dialog-header")(3, "h2", 2);
i0.ɵɵtext(4);
i0.ɵɵelementEnd()();
i0.ɵɵelementStart(5, "sme-dialog-content")(6, "form", 3);
i0.ɵɵtemplate(7, ConfirmationListDialogComponent_sme_loading_wheel_7_Template, 1, 0, "sme-loading-wheel", 4);
i0.ɵɵtemplate(8, ConfirmationListDialogComponent_p_8_Template, 2, 1, "p", 5);
i0.ɵɵtemplate(9, ConfirmationListDialogComponent_ul_9_Template, 2, 1, "ul", 6);
i0.ɵɵtemplate(10, ConfirmationListDialogComponent_div_10_Template, 2, 1, "div", 5);
i0.ɵɵtemplate(11, ConfirmationListDialogComponent_div_11_Template, 5, 2, "div", 7);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(12, ConfirmationListDialogComponent_p_12_Template, 2, 1, "p", 5);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(13, "sme-dialog-footer")(14, "button", 8);
i0.ɵɵlistener("click", function ConfirmationListDialogComponent_Template_button_click_14_listener() { return ctx.onConfirm(); });
i0.ɵɵtext(15);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(16, "button", 9);
i0.ɵɵlistener("click", function ConfirmationListDialogComponent_Template_button_click_16_listener() { return ctx.onCancel(); });
i0.ɵɵtext(17);
i0.ɵɵelementEnd()()();
} if (rf & 2) {
i0.ɵɵproperty("clickBackdrop", false);
i0.ɵɵadvance(4);
i0.ɵɵtextInterpolate(ctx.title);
i0.ɵɵadvance(3);
i0.ɵɵproperty("ngIf", ctx.loading);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.listHeaderText);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", !ctx.listType || ctx.listType === "list");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.listType === "radio");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.checkboxText);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.listFooterText);
i0.ɵɵadvance(2);
i0.ɵɵproperty("disabled", ctx.loading);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx.confirmButtonText);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(ctx.cancelButtonText);
} }, dependencies: [i2.NgForOf, i2.NgIf, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.RadioControlValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.NgForm, i4.LoadingWheelComponent, i5.TooltipDirective, i6.DialogComponent, i6.DialogContentComponent, i6.DialogFooterComponent, i6.DialogHeaderComponent], encapsulation: 2 });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationListDialogComponent, [{
type: Component,
args: [{ selector: 'sme-confirmation-list-dialog', template: "<sme-dialog #dialog dialogMode=\"centered\" [clickBackdrop]='false'>\r\n <sme-dialog-header>\r\n <h2 id=\"sme-dialog-title\">{{title}}</h2>\r\n </sme-dialog-header>\r\n <sme-dialog-content>\r\n <form id=\"sme-confirmation-list-dialog-form\">\r\n <sme-loading-wheel *ngIf=\"loading\" size=\"medium\"></sme-loading-wheel>\r\n <p *ngIf=\"listHeaderText\">{{listHeaderText}}</p>\r\n\r\n <ul *ngIf=\"!listType || listType === 'list'\" class=\"sme-list sme-position-flex-auto sme-margin-top-xxs\">\r\n <li *ngFor=\"let item of listData\" [title]=\"item?.title || ''\">\r\n {{ item?.value || item }}\r\n </li>\r\n </ul>\r\n\r\n <div *ngIf=\"listType === 'radio'\">\r\n <div *ngFor=\"let item of listData; let i = index\" class=\"sme-radio sme-position-flex-auto sme-margin-top-xxs\">\r\n <label class=\"sme-font-body\" [title]=\"item?.title || ''\">\r\n <input type=\"radio\" name=\"selection\" [value]=\"item\" [(ngModel)]=\"radioSelectionResult\">\r\n <span aria-hidden=\"true\">{{item?.value || item}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"sme-checkbox sme-position-flex-none sme-margin-top-xxs\" *ngIf=\"checkboxText\">\r\n <label class=\"sme-font-body\">\r\n <input type=\"checkbox\" [(ngModel)]=\"checked\" />\r\n <span>{{checkboxText}}</span>\r\n </label>\r\n </div>\r\n </form>\r\n <p *ngIf=\"listFooterText\">{{listFooterText}}</p>\r\n </sme-dialog-content>\r\n <sme-dialog-footer>\r\n <button type=\"submit\" class=\"sme-button-primary\" form=\"sme-confirmation-list-dialog-form\" [disabled]=\"loading\"\r\n (click)=\"onConfirm()\" data-uta-id=\"dialog-list-confirm-button\">{{confirmButtonText}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" data-uta-id=\"dialog-list-cancel-button\">{{cancelButtonText}}</button>\r\n </sme-dialog-footer>\r\n</sme-dialog>\r\n" }]
}], function () { return [{ type: i1.DialogService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2RpYWxvZy9jb25maXJtYXRpb24tbGlzdC1kaWFsb2cvY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2RpYWxvZy9jb25maXJtYXRpb24tbGlzdC1kaWFsb2cvY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLG1CQUFtQixFQUErQixNQUFNLDBCQUEwQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7O0lDRTVDLHdDQUFxRTs7O0lBQ3JFLHlCQUEwQjtJQUFBLFlBQWtCO0lBQUEsaUJBQUk7OztJQUF0QixlQUFrQjtJQUFsQiwyQ0FBa0I7OztJQUcxQyw4QkFBOEQ7SUFDNUQsWUFDRjtJQUFBLGlCQUFLOzs7SUFGNkIsc0VBQTJCO0lBQzNELGVBQ0Y7SUFERSxvRkFDRjs7O0lBSEYsOEJBQXdHO0lBQ3RHLG9GQUVLO0lBQ1AsaUJBQUs7OztJQUhrQixlQUFXO0lBQVgseUNBQVc7Ozs7SUFNaEMsK0JBQThHLGdCQUFBLGdCQUFBO0lBRXRELG9RQUFrQztJQUF0RixpQkFBdUY7SUFDdkYsZ0NBQXlCO0lBQUEsWUFBdUI7SUFBQSxpQkFBTyxFQUFBLEVBQUE7Ozs7SUFGNUIsZUFBMkI7SUFBM0Isd0VBQTJCO0lBQ2pCLGVBQWM7SUFBZCxnQ0FBYyx3Q0FBQTtJQUMxQixlQUF1QjtJQUF2Qiw0RUFBdUI7OztJQUp0RCwyQkFBa0M7SUFD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UTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixTQUFTLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDOztpSUExRVEsK0JBQStCO2lIQUEvQiwrQkFBK0I7UUNwRjVDLHdDQUFrRSx3QkFBQSxZQUFBO1FBRXBDLFlBQVM7UUFBQSxpQkFBSyxFQUFBO1FBRTFDLDBDQUFvQixjQUFBO1FBRWhCLDRHQUFxRTtRQUNyRSw0RUFBZ0Q7UUFFaEQsOEVBSUs7UUFFTCxrRkFPTTtRQUVOLGtGQUtNO1FBQ1IsaUJBQU87UUFDUCw4RUFBZ0Q7UUFDbEQsaUJBQXFCO1FBQ3JCLDBDQUFtQixpQkFBQTtRQUVmLDZHQUFTLGVBQVcsSUFBQztRQUEwQyxhQUFxQjtRQUFBLGlCQUFTO1FBQy9GLGtDQUFtRjtRQUE3RCw2R0FBUyxjQUFVLElBQUM7UUFBeUMsYUFBb0I7UUFBQSxpQkFBUyxFQUFBLEVBQUE7O1FBcEMxRSxxQ0FBdUI7UUFFbkMsZUFBUztRQUFULCtCQUFTO1FBSWIsZUFBYTtRQUFiLGtDQUFhO1FBQzdCLGVBQW9CO1FBQXBCLHlDQUFvQjtRQUVuQixlQUFzQztRQUF0QywrREFBc0M7UUFNckMsZUFBMEI7UUFBMUIsK0NBQTBCO1FBU3FDLGVBQWtCO1FBQWxCLHVDQUFrQjtRQU9yRixlQUFvQjtRQUFwQix5Q0FBb0I7UUFHa0UsZUFBb0I7UUFBcEIsc0NBQW9CO1FBQzdDLGVBQXFCO1FBQXJCLDJDQUFxQjtRQUNILGVBQW9CO1FBQXBCLDBDQUFvQjs7dUZEZ0Q5RiwrQkFBK0I7Y0FKM0MsU0FBUzsyQkFFSSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJhc2VEaWFsb2dDb21wb25lbnQsIERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2Jhc2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlUmVhc29uIH0gZnJvbSAnLi4vZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9kaWFsb2cuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogVGhlIGNvbmZpcm1hdGlvbiBsaXN0IGRpYWxvZyBvcHRpb25zLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25MaXN0RGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY2FuY2VsIGJ1dHRvbiB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBjYW5jZWxCdXR0b25UZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY2hlY2tib3ggdGV4dC5cclxuICAgICAqL1xyXG4gICAgY2hlY2tib3hUZXh0Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbmZpcm1hdGlvbiBidXR0b24gdGV4dC5cclxuICAgICAqL1xyXG4gICAgY29uZmlybUJ1dHRvblRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IGZvb3RlciB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBsaXN0Rm9vdGVyVGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG9ic2VydmFibGUgb2YgZGF0YSBzb3VyY2UuXHJcbiAgICAgKi9cclxuICAgIGxpc3REYXRhU291cmNlOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3QgdHlwZSAobGlzdCwgcmFkaW8pLlxyXG4gICAgICovXHJcbiAgICBsaXN0VHlwZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsaXN0IGhlYWRlciB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBsaXN0SGVhZGVyVGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRpdGxlIHRleHQuXHJcbiAgICAgKi9cclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBkaWFsb2cgaXMgb3BlbmVkIGZyb20gUnBjXHJcbiAgICAgKi9cclxuICAgIGlzRnJvbVJwYz86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgY29uZmlybWF0aW9uIGxpc3QgZGlhbG9nIHJlc3VsdC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybWF0aW9uTGlzdERpYWxvZ1Jlc3VsdCBleHRlbmRzIERpYWxvZ1Jlc3VsdCB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBjb25maXJtYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGNvbmZpcm1lZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjaGVja2JveCByZXN1bHQuXHJcbiAgICAgKi9cclxuICAgIGNoZWNrYm94UmVzdWx0PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzZWxlY3Rpb24gcmVzdWx0LlxyXG4gICAgICovXHJcbiAgICByYWRpb1NlbGVjdGlvblJlc3VsdD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvYnNlcnZhYmxlIGVycm9yIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgb2JzZXJ2YWJsZUVycm9yPzogYW55O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtYXRpb24tbGlzdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc2VsZWN0b3I6ICdzbWUtY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uTGlzdERpYWxvZ0NvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBCYXNlRGlhbG9nQ29tcG9uZW50PENvbmZpcm1hdGlvbkxpc3REaWFsb2dPcHRpb25zLCBDb25maXJtYXRpb25MaXN0RGlhbG9nUmVzdWx0PiB7XHJcbiAgICBwdWJsaWMgY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nO1xyXG4gICAgcHVibGljIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgcmFkaW9TZWxlY3Rpb25SZXN1bHQ6IGFueTtcclxuICAgIHB1YmxpYyBjaGVja2JveFRleHQ6IHN0cmluZztcclxuICAgIHB1YmxpYyBjb25maXJtQnV0dG9uVGV4dDogc3RyaW5nO1xyXG4gICAgcHVibGljIGxpc3RGb290ZXJUZXh0OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgbGlzdERhdGE6IGFueVtdO1xyXG4gICAgcHVibGljIGxpc3RUeXBlOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgbGlzdEhlYWRlclRleHQ6IHN0cmluZztcclxuICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xyXG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGRpYWxvZ1NlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9zZVJlcXVlc3RlZChyZWFzb246IERpYWxvZ0Nsb3NlUmVhc29uKSB7XHJcbiAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaG93KG9wdGlvbnM6IENvbmZpcm1hdGlvbkxpc3REaWFsb2dPcHRpb25zKTogU3ViamVjdDxDb25maXJtYXRpb25MaXN0RGlhbG9nUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29uZmlybWF0aW9uTGlzdERpYWxvZ0NvbXBvbmVudC5zaG93OiBPcHRpb25zIGFyZSByZXF1aXJlZCB0byBzaG93IHRoZSBkaWFsb2cuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBzdXBlci5zaG93KG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsQnV0dG9uVGV4dCA9IG9wdGlvbnMuY2FuY2VsQnV0dG9uVGV4dDtcclxuICAgICAgICB0aGlzLmNoZWNrYm94VGV4dCA9IG9wdGlvbnMuY2hlY2tib3hUZXh0O1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybUJ1dHRvblRleHQgPSBvcHRpb25zLmNvbmZpcm1CdXR0b25UZXh0O1xyXG4gICAgICAgIHRoaXMubGlzdEZvb3RlclRleHQgPSBvcHRpb25zLmxpc3RGb290ZXJUZXh0O1xyXG4gICAgICAgIHRoaXMubGlzdERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnJhZGlvU2VsZWN0aW9uUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmxpc3RUeXBlID0gb3B0aW9ucy5saXN0VHlwZTtcclxuICAgICAgICB0aGlzLmxpc3RIZWFkZXJUZXh0ID0gb3B0aW9ucy5saXN0SGVhZGVyVGV4dDtcclxuICAgICAgICB0aGlzLnRpdGxlID0gb3B0aW9ucy50aXRsZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVN1YnNjcmlwdGlvbiA9IG9wdGlvbnMubGlzdERhdGFTb3VyY2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICBzdHJpbmdzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IHN0cmluZ3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJhZGlvU2VsZWN0aW9uUmVzdWx0ID0gdGhpcy5saXN0RGF0YSA/IHRoaXMubGlzdERhdGFbMF0gOiAnJztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YWJsZUVycm9yOiBlcnJvclxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoaWRlKHJlc3VsdD86IENvbmZpcm1hdGlvbkxpc3REaWFsb2dSZXN1bHQpIHtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgc3VwZXIuaGlkZShyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkNvbmZpcm0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oaWRlKHtcclxuICAgICAgICAgICAgY29uZmlybWVkOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGVja2JveFJlc3VsdDogKHRoaXMuY2hlY2tib3hUZXh0KSA/IHRoaXMuY2hlY2tlZCA6IG51bGwsXHJcbiAgICAgICAgICAgIHJhZGlvU2VsZWN0aW9uUmVzdWx0OiB0aGlzLnJhZGlvU2VsZWN0aW9uUmVzdWx0XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZSh7XHJcbiAgICAgICAgICAgIGNvbmZpcm1lZDogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPHNtZS1kaWFsb2cgI2RpYWxvZyBkaWFsb2dNb2RlPVwiY2VudGVyZWRcIiBbY2xpY2tCYWNrZHJvcF09J2ZhbHNlJz5cclxuICA8c21lLWRpYWxvZy1oZWFkZXI+XHJcbiAgICA8aDIgaWQ9XCJzbWUtZGlhbG9nLXRpdGxlXCI+e3t0aXRsZX19PC9oMj5cclxuICA8L3NtZS1kaWFsb2ctaGVhZGVyPlxyXG4gIDxzbWUtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8Zm9ybSBpZD1cInNtZS1jb25maXJtYXRpb24tbGlzdC1kaWFsb2ctZm9ybVwiPlxyXG4gICAgICA8c21lLWxvYWRpbmctd2hlZWwgKm5nSWY9XCJsb2FkaW5nXCIgc2l6ZT1cIm1lZGl1bVwiPjwvc21lLWxvYWRpbmctd2hlZWw+XHJcbiAgICAgIDxwICpuZ0lmPVwibGlzdEhlYWRlclRleHRcIj57e2xpc3RIZWFkZXJUZXh0fX08L3A+XHJcblxyXG4gICAgICA8dWwgKm5nSWY9XCIhbGlzdFR5cGUgfHwgbGlzdFR5cGUgPT09ICdsaXN0J1wiIGNsYXNzPVwic21lLWxpc3Qgc21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtbWFyZ2luLXRvcC14eHNcIj5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdERhdGFcIiBbdGl0bGVdPVwiaXRlbT8udGl0bGUgfHwgJydcIj5cclxuICAgICAgICAgIHt7IGl0ZW0/LnZhbHVlIHx8IGl0ZW0gfX1cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImxpc3RUeXBlID09PSAncmFkaW8nXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0RGF0YTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwic21lLXJhZGlvIHNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLW1hcmdpbi10b3AteHhzXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWUtZm9udC1ib2R5XCIgW3RpdGxlXT1cIml0ZW0/LnRpdGxlIHx8ICcnXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic2VsZWN0aW9uXCIgW3ZhbHVlXT1cIml0ZW1cIiBbKG5nTW9kZWwpXT1cInJhZGlvU2VsZWN0aW9uUmVzdWx0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7aXRlbT8udmFsdWUgfHwgaXRlbX19PC9zcGFuPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLWNoZWNrYm94IHNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLW1hcmdpbi10b3AteHhzXCIgKm5nSWY9XCJjaGVja2JveFRleHRcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWUtZm9udC1ib2R5XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjaGVja2VkXCIgLz5cclxuICAgICAgICAgIDxzcGFuPnt7Y2hlY2tib3hUZXh0fX08L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgICA8cCAqbmdJZj1cImxpc3RGb290ZXJUZXh0XCI+e3tsaXN0Rm9vdGVyVGV4dH19PC9wPlxyXG4gIDwvc21lLWRpYWxvZy1jb250ZW50PlxyXG4gIDxzbWUtZGlhbG9nLWZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwic21lLWJ1dHRvbi1wcmltYXJ5XCIgZm9ybT1cInNtZS1jb25maXJtYXRpb24tbGlzdC1kaWFsb2ctZm9ybVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCIgZGF0YS11dGEtaWQ9XCJkaWFsb2ctbGlzdC1jb25maXJtLWJ1dHRvblwiPnt7Y29uZmlybUJ1dHRvblRleHR9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBkYXRhLXV0YS1pZD1cImRpYWxvZy1saXN0LWNhbmNlbC1idXR0b25cIj57e2NhbmNlbEJ1dHRvblRleHR9fTwvYnV0dG9uPlxyXG4gIDwvc21lLWRpYWxvZy1mb290ZXI+XHJcbjwvc21lLWRpYWxvZz5cclxuIl19