UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

93 lines 14.6 kB
import { Directive, forwardRef, Input } from '@angular/core'; import { ValidationAlertSeverity } from '../validation-alert/validation-alert'; import { FormValidatorBase } from './base-validator'; import { SME_VALIDATORS } from './sme-validator'; import * as i0 from "@angular/core"; /** * Provider for the FormFieldValidatorDirective directive */ export const MACHINE_NAME_VALIDATOR = { provide: SME_VALIDATORS, useExisting: forwardRef(() => MachineNameValidatorDirective), multi: true }; /** * A Directive that marks a field as invalid if it does not conform to machine naming standards */ export class MachineNameValidatorDirective extends FormValidatorBase { /** * Instantiates a new instance of MachineNameValidatorDirective */ constructor() { super(); /** * Internal placeholder for smeMachineNameTrim */ this.internalSmeMachineNameTrim = true; this.invalidCharacters = new RegExp(/(\\|\/|\*|\?|'|"|<|>|\|)/, 'i'); this.invalidCharactersWithSpace = new RegExp(/(\\|\/|\*|\?|'|"|<|>|\||\s)/, 'i'); } /** * Indicates that the value should be trimmed before validation. Only use when trimming the value before using it. */ get smeMachineNameTrim() { return this.internalSmeMachineNameTrim; } set smeMachineNameTrim(value) { // warn if value is undefined or truthy and not 'false' string this.internalSmeMachineNameTrim = MsftSme.isUndefined(value) || (!!value && `${value}` !== 'false'); this.revalidate(); } /** * Implementation of Validator interface. * Validates the value of the field attached to this control to be a valid machine name * @param c The FormControl attached to this element * @return null when valid, otherwise returns a validation object */ validate(c) { const alerts = super.validate(c) || {}; let value = c.value; // dont check for required here. The field could be optional in some forms // if there is no value, then just skip checking if (!value) { return this.alertsOrNull(alerts); } const strings = MsftSme.self().Resources.strings; if (this.smeMachineNameTrim) { value = value.trim(); alerts['smeMachineName.trimWarning'] = { valid: true, message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.whitespaceWillBeTrimmed, severity: ValidationAlertSeverity.Warning }; if (this.invalidCharacters.test(c.value)) { alerts['smeMachineName.noInvalidCharacters'] = { message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.invalidCharacters }; } } else if (this.invalidCharactersWithSpace.test(c.value)) { alerts['smeMachineName.noInvalidCharacters'] = { message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.invalidCharactersWithSpace }; } if (value.startsWith('.')) { alerts['smeMachineName.noStartWithPeriod'] = { message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.noStartWithPeriod }; } return this.alertsOrNull(alerts); } } /** @nocollapse */ MachineNameValidatorDirective.ɵfac = function MachineNameValidatorDirective_Factory(t) { return new (t || MachineNameValidatorDirective)(); }; /** @nocollapse */ MachineNameValidatorDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MachineNameValidatorDirective, selectors: [["sme-form-field", "smeMachineName", "", "formControlName", ""], ["sme-form-field", "smeMachineName", "", "formControl", ""], ["sme-form-field", "smeMachineName", "", "ngModel", ""]], inputs: { smeMachineNameTrim: "smeMachineNameTrim" }, features: [i0.ɵɵProvidersFeature([MACHINE_NAME_VALIDATOR]), i0.ɵɵInheritDefinitionFeature] }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MachineNameValidatorDirective, [{ type: Directive, args: [{ // eslint-disable-next-line max-len selector: 'sme-form-field[smeMachineName][formControlName],sme-form-field[smeMachineName][formControl],sme-form-field[smeMachineName][ngModel]', providers: [MACHINE_NAME_VALIDATOR] }] }], function () { return []; }, { smeMachineNameTrim: [{ type: Input, args: ['smeMachineNameTrim'] }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjaGluZS1uYW1lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2Zvcm0vdmFsaWRhdG9ycy9tYWNoaW5lLW5hbWUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFHN0UsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBbUI7SUFDbEQsT0FBTyxFQUFFLGNBQWM7SUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztJQUM1RCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7R0FFRztBQU1ILE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxpQkFBaUI7SUFzQ2hFOztPQUVHO0lBQ0g7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQVRaOztXQUVHO1FBQ0ssK0JBQTBCLEdBQUcsSUFBSSxDQUFDO1FBT3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxNQUFNLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQXZCRDs7T0FFRztJQUNILElBQ1csa0JBQWtCLEtBQWMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLElBQVcsa0JBQWtCLENBQUMsS0FBYztRQUN4Qyw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFnQkQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsQ0FBYztRQUMxQixNQUFNLE1BQU0sR0FBcUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxLQUFLLEdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU1QiwwRUFBMEU7UUFDMUUsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEM7UUFDRCxNQUFNLE9BQU8sR0FBWSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLHVCQUF1QjtnQkFDaEcsUUFBUSxFQUFFLHVCQUF1QixDQUFDLE9BQU87YUFDNUMsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHO29CQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtpQkFDN0YsQ0FBQzthQUNMO1NBQ0o7YUFBTSxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RELE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHO2dCQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLDBCQUEwQjthQUN0RyxDQUFDO1NBQ0w7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLEdBQUc7Z0JBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCO2FBQzdGLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs2SEF4RlEsNkJBQTZCOytHQUE3Qiw2QkFBNkIsNlJBRjNCLENBQUMsc0JBQXNCLENBQUM7dUZBRTFCLDZCQUE2QjtjQUx6QyxTQUFTO2VBQUM7Z0JBQ1AsbUNBQW1DO2dCQUNuQyxRQUFRLEVBQUUscUlBQXFJO2dCQUMvSSxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUN0QztzQ0EyQmMsa0JBQWtCO2tCQUQ1QixLQUFLO21CQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIFN0YXRpY1Byb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQWxlcnRzLCBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eSB9IGZyb20gJy4uL3ZhbGlkYXRpb24tYWxlcnQvdmFsaWRhdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IEZvcm1WYWxpZGF0b3JCYXNlIH0gZnJvbSAnLi9iYXNlLXZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFNNRV9WQUxJREFUT1JTIH0gZnJvbSAnLi9zbWUtdmFsaWRhdG9yJztcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlciBmb3IgdGhlIEZvcm1GaWVsZFZhbGlkYXRvckRpcmVjdGl2ZSBkaXJlY3RpdmVcclxuICovXHJcbmV4cG9ydCBjb25zdCBNQUNISU5FX05BTUVfVkFMSURBVE9SOiBTdGF0aWNQcm92aWRlciA9IHtcclxuICAgIHByb3ZpZGU6IFNNRV9WQUxJREFUT1JTLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWFjaGluZU5hbWVWYWxpZGF0b3JEaXJlY3RpdmUpLFxyXG4gICAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbi8qKlxyXG4gKiBBIERpcmVjdGl2ZSB0aGF0IG1hcmtzIGEgZmllbGQgYXMgaW52YWxpZCBpZiBpdCBkb2VzIG5vdCBjb25mb3JtIHRvIG1hY2hpbmUgbmFtaW5nIHN0YW5kYXJkc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgc2VsZWN0b3I6ICdzbWUtZm9ybS1maWVsZFtzbWVNYWNoaW5lTmFtZV1bZm9ybUNvbnRyb2xOYW1lXSxzbWUtZm9ybS1maWVsZFtzbWVNYWNoaW5lTmFtZV1bZm9ybUNvbnRyb2xdLHNtZS1mb3JtLWZpZWxkW3NtZU1hY2hpbmVOYW1lXVtuZ01vZGVsXScsXHJcbiAgICBwcm92aWRlcnM6IFtNQUNISU5FX05BTUVfVkFMSURBVE9SXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFjaGluZU5hbWVWYWxpZGF0b3JEaXJlY3RpdmUgZXh0ZW5kcyBGb3JtVmFsaWRhdG9yQmFzZSB7XHJcbiAgICAvKipcclxuICAgICAqIFJlZ2V4IHRvIGRldGVjdCBpbnZhbGlkIGNoYXJhY3RlcnMuIERvZXMgbm90IGFsbG93OlxyXG4gICAgICogIC0gYmFja3NsYXNoIChcXClcclxuICAgICAqICAtIHNsYXNoIG1hcmsgKC8pXHJcbiAgICAgKiAgLSBhc3RlcmlzayAoKilcclxuICAgICAqICAtIHF1ZXN0aW9uIG1hcmsgKD8pXHJcbiAgICAgKiAgLSBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKCcpXHJcbiAgICAgKiAgLSBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFwiKVxyXG4gICAgICogIC0gbGVzcyB0aGFuIHNpZ24gKDwpXHJcbiAgICAgKiAgLSBncmVhdGVyIHRoYW4gc2lnbiAoPilcclxuICAgICAqICAtIHZlcnRpY2FsIGJhciAofClcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbnZhbGlkQ2hhcmFjdGVyczogUmVnRXhwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnZXggdG8gZGV0ZWN0IGludmFsaWQgY2hhcmFjdGVycy4gRG9lcyBub3QgYWxsb3c6XHJcbiAgICAgKiAgLSBldmVyeXRoaW5nIGZyb20gQHNlZSBpbnZhbGlkQ2hhcmFjdGVyc1xyXG4gICAgICogIC0gc3BhY2UgKCApXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW52YWxpZENoYXJhY3RlcnNXaXRoU3BhY2U6IFJlZ0V4cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSB2YWx1ZSBzaG91bGQgYmUgdHJpbW1lZCBiZWZvcmUgdmFsaWRhdGlvbi4gT25seSB1c2Ugd2hlbiB0cmltbWluZyB0aGUgdmFsdWUgYmVmb3JlIHVzaW5nIGl0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ3NtZU1hY2hpbmVOYW1lVHJpbScpXHJcbiAgICBwdWJsaWMgZ2V0IHNtZU1hY2hpbmVOYW1lVHJpbSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaW50ZXJuYWxTbWVNYWNoaW5lTmFtZVRyaW07IH1cclxuICAgIHB1YmxpYyBzZXQgc21lTWFjaGluZU5hbWVUcmltKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgLy8gd2FybiBpZiB2YWx1ZSBpcyB1bmRlZmluZWQgb3IgdHJ1dGh5IGFuZCBub3QgJ2ZhbHNlJyBzdHJpbmdcclxuICAgICAgICB0aGlzLmludGVybmFsU21lTWFjaGluZU5hbWVUcmltID0gTXNmdFNtZS5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKCEhdmFsdWUgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJyk7XHJcbiAgICAgICAgdGhpcy5yZXZhbGlkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnRlcm5hbCBwbGFjZWhvbGRlciBmb3Igc21lTWFjaGluZU5hbWVUcmltXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW50ZXJuYWxTbWVNYWNoaW5lTmFtZVRyaW0gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zdGFudGlhdGVzIGEgbmV3IGluc3RhbmNlIG9mIE1hY2hpbmVOYW1lVmFsaWRhdG9yRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5pbnZhbGlkQ2hhcmFjdGVycyA9IG5ldyBSZWdFeHAoLyhcXFxcfFxcL3xcXCp8XFw/fCd8XCJ8PHw+fFxcfCkvLCAnaScpO1xyXG4gICAgICAgIHRoaXMuaW52YWxpZENoYXJhY3RlcnNXaXRoU3BhY2UgPSBuZXcgUmVnRXhwKC8oXFxcXHxcXC98XFwqfFxcP3wnfFwifDx8PnxcXHx8XFxzKS8sICdpJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBWYWxpZGF0b3IgaW50ZXJmYWNlLlxyXG4gICAgICogVmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgYXR0YWNoZWQgdG8gdGhpcyBjb250cm9sIHRvIGJlIGEgdmFsaWQgbWFjaGluZSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gYyBUaGUgRm9ybUNvbnRyb2wgYXR0YWNoZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKiBAcmV0dXJuIG51bGwgd2hlbiB2YWxpZCwgb3RoZXJ3aXNlIHJldHVybnMgYSB2YWxpZGF0aW9uIG9iamVjdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uQWxlcnRzIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgYWxlcnRzOiBWYWxpZGF0aW9uQWxlcnRzID0gc3VwZXIudmFsaWRhdGUoYykgfHwge307XHJcbiAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgPSBjLnZhbHVlO1xyXG5cclxuICAgICAgICAvLyBkb250IGNoZWNrIGZvciByZXF1aXJlZCBoZXJlLiBUaGUgZmllbGQgY291bGQgYmUgb3B0aW9uYWwgaW4gc29tZSBmb3Jtc1xyXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIHZhbHVlLCB0aGVuIGp1c3Qgc2tpcCBjaGVja2luZ1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnRzT3JOdWxsKGFsZXJ0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0cmluZ3MgPSA8U3RyaW5ncz5Nc2Z0U21lLnNlbGYoKS5SZXNvdXJjZXMuc3RyaW5ncztcclxuICAgICAgICBpZiAodGhpcy5zbWVNYWNoaW5lTmFtZVRyaW0pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIGFsZXJ0c1snc21lTWFjaGluZU5hbWUudHJpbVdhcm5pbmcnXSA9IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hY2hpbmVOYW1lLndoaXRlc3BhY2VXaWxsQmVUcmltbWVkLFxyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFZhbGlkYXRpb25BbGVydFNldmVyaXR5Lldhcm5pbmdcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW52YWxpZENoYXJhY3RlcnMudGVzdChjLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgYWxlcnRzWydzbWVNYWNoaW5lTmFtZS5ub0ludmFsaWRDaGFyYWN0ZXJzJ10gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hY2hpbmVOYW1lLmludmFsaWRDaGFyYWN0ZXJzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmludmFsaWRDaGFyYWN0ZXJzV2l0aFNwYWNlLnRlc3QoYy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgYWxlcnRzWydzbWVNYWNoaW5lTmFtZS5ub0ludmFsaWRDaGFyYWN0ZXJzJ10gPSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5Gb3JtLlZhbGlkYXRpb24uTWFjaGluZU5hbWUuaW52YWxpZENoYXJhY3RlcnNXaXRoU3BhY2VcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcuJykpIHtcclxuICAgICAgICAgICAgYWxlcnRzWydzbWVNYWNoaW5lTmFtZS5ub1N0YXJ0V2l0aFBlcmlvZCddID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hY2hpbmVOYW1lLm5vU3RhcnRXaXRoUGVyaW9kXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydHNPck51bGwoYWxlcnRzKTtcclxuICAgIH1cclxufVxyXG4iXX0=