@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1317-c → 1.5.1317-e
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/assets/i18n/en.json +33 -1
- package/assets/i18n/es.json +34 -2
- package/assets/styles/main.min.css +1 -1
- package/assets/styles/main.min.css.map +1 -1
- package/assets/styles/micro.min.css +1 -0
- package/assets/styles/micro.min.css.map +1 -0
- package/esm2022/assets/i18n/en.json +33 -1
- package/esm2022/assets/i18n/es.json +34 -2
- package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +2 -2
- package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +9 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +13 -8
- package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +3 -3
- package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +1 -1
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +2 -2
- package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +2 -2
- package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +4 -2
- package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +177 -91
- package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +2 -2
- package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +3 -2
- package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +2 -2
- package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +2 -2
- package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +2 -2
- package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +2 -2
- package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +30 -9
- package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +1 -1
- package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +1 -1
- package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +5 -7
- package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +66 -8
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.mjs +51 -0
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +66 -24
- package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +11 -17
- package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +33 -15
- package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +9 -3
- package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +2 -2
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +6 -3
- package/esm2022/lib/services/projection/projection.service.mjs +1 -1
- package/esm2022/lib/utils/formControl.mjs +6 -4
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +712 -387
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
- package/lib/components/bmb-dropdown/bmb-dropdown.component.d.ts +3 -2
- package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +39 -20
- package/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.d.ts +3 -2
- package/lib/components/bmb-progress-bar/bmb-progress-bar.component.d.ts +8 -2
- package/lib/components/bmb-tables/bmb-tables.component.d.ts +8 -1
- package/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.d.ts +13 -0
- package/lib/components/bmb-text-editor/bmb-text-editor.component.d.ts +10 -4
- package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +1 -2
- package/lib/components/bmb-value-counter/bmb-value-counter.component.d.ts +10 -4
- package/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.d.ts +2 -1
- package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.d.ts +2 -1
- package/lib/utils/formControl.d.ts +2 -2
- package/package.json +4 -4
- package/esm2022/lib/services/calendar.service.mjs +0 -51
- package/esm2022/lib/services/index.mjs +0 -3
- package/esm2022/lib/services/native-modal.service.mjs +0 -60
- package/esm2022/lib/services/notification.service.mjs +0 -84
- package/esm2022/lib/services/projection.service.mjs +0 -49
- package/esm2022/lib/services/tabs.service.mjs +0 -30
- package/esm2022/lib/services/theme.service.mjs +0 -30
- package/esm2022/lib/services/toast.service.mjs +0 -24
- package/lib/services/calendar.service.d.ts +0 -15
- package/lib/services/index.d.ts +0 -2
- package/lib/services/native-modal.service.d.ts +0 -18
- package/lib/services/notification.service.d.ts +0 -20
- package/lib/services/projection.service.d.ts +0 -31
- package/lib/services/tabs.service.d.ts +0 -13
- package/lib/services/theme.service.d.ts +0 -11
- package/lib/services/toast.service.d.ts +0 -9
|
@@ -36,6 +36,7 @@ export class BmbDropdownComponent {
|
|
|
36
36
|
this.isFilterable = input(false);
|
|
37
37
|
this.inputId = input(this.name());
|
|
38
38
|
this.customValidation = input();
|
|
39
|
+
this.customFilterFunction = input(null);
|
|
39
40
|
this.control = model(newFormControlByType());
|
|
40
41
|
this.onValueChange = output();
|
|
41
42
|
this.onFocus = output();
|
|
@@ -140,6 +141,7 @@ export class BmbDropdownComponent {
|
|
|
140
141
|
items: this.parsedOptions(),
|
|
141
142
|
isKeyboardEvent: this.isKeyboardEvent,
|
|
142
143
|
enableFilter: this.isFilterable(),
|
|
144
|
+
customFilterFunction: this.customFilterFunction(),
|
|
143
145
|
},
|
|
144
146
|
focusOnOpen: true,
|
|
145
147
|
};
|
|
@@ -159,7 +161,7 @@ export class BmbDropdownComponent {
|
|
|
159
161
|
return showError(this.control());
|
|
160
162
|
}
|
|
161
163
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropdownComponent, deps: [{ token: i1.BmbProjectionContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: BmbDropdownComponent, isStandalone: true, selector: "bmb-dropdown", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, preferredOptions: { classPropertyName: "preferredOptions", publicName: "preferredOptions", isSignal: true, isRequired: false, transformFunction: null }, isMultiSelect: { classPropertyName: "isMultiSelect", publicName: "isMultiSelect", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isFilterable: { classPropertyName: "isFilterable", publicName: "isFilterable", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, isModalOpen: { classPropertyName: "isModalOpen", publicName: "isModalOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", onValueChange: "onValueChange", onFocus: "onFocus", isModalOpen: "isModalOpenChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\n class=\"bmb_dropdown\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"getValidInitialValues()\"\n [label]=\"label()!\"\n [errorMessage]=\"errorMessage()\"\n [helperMessage]=\"helperText()\"\n [isRequired]=\"required()\"\n [isDisabled]=\"disabled()\"\n [control]=\"control()\"\n [showError]=\"shouldShowError\"\n [tooltip]=\"tooltip()\"\n [tooltipPosition]=\"tooltipPosition()\"\n [customValidation]=\"customValidation()\"\n>\n <div #contentDiv>\n <bmb-input-content\n class=\"bmb_dropdown-field\"\n type=\"text\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [icon]=\"getIcon()\"\n [control]=\"selectionControl\"\n [isReadOnly]=\"true\"\n [placeholder]=\"placeholder()\"\n [isError]=\"shouldShowError\"\n (click)=\"openList()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"handleValidity()\"\n (onFocus)=\"handleFocus($event)\"\n >\n <ng-template #customContent>\n <label [htmlFor]=\"inputId()\">\n <bmb-icon\n class=\"bmb_field-actions\"\n icon=\"keyboard_arrow_down\"\n (click)=\"openList()\"\n [size]=\"24\"\n />\n </label>\n </ng-template>\n </bmb-input-content>\n </div>\n <input\n hidden\n type=\"text\"\n [id]=\"getUUID('id')\"\n [name]=\"name()\"\n [formControl]=\"control()\"\n />\n</bmb-input-validator>\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: BmbDropdownComponent, isStandalone: true, selector: "bmb-dropdown", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, preferredOptions: { classPropertyName: "preferredOptions", publicName: "preferredOptions", isSignal: true, isRequired: false, transformFunction: null }, isMultiSelect: { classPropertyName: "isMultiSelect", publicName: "isMultiSelect", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isFilterable: { classPropertyName: "isFilterable", publicName: "isFilterable", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, customFilterFunction: { classPropertyName: "customFilterFunction", publicName: "customFilterFunction", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, isModalOpen: { classPropertyName: "isModalOpen", publicName: "isModalOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", onValueChange: "onValueChange", onFocus: "onFocus", isModalOpen: "isModalOpenChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\n class=\"bmb_dropdown\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"getValidInitialValues()\"\n [label]=\"label()!\"\n [errorMessage]=\"errorMessage()\"\n [helperMessage]=\"helperText()\"\n [isRequired]=\"required()\"\n [isDisabled]=\"disabled()\"\n [control]=\"control()\"\n [showError]=\"shouldShowError\"\n [tooltip]=\"tooltip()\"\n [tooltipPosition]=\"tooltipPosition()\"\n [customValidation]=\"customValidation()\"\n>\n <div #contentDiv>\n <bmb-input-content\n class=\"bmb_dropdown-field\"\n type=\"text\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [icon]=\"getIcon()\"\n [control]=\"selectionControl\"\n [isReadOnly]=\"true\"\n [placeholder]=\"placeholder()\"\n [isError]=\"shouldShowError\"\n (click)=\"openList()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"handleValidity()\"\n (onFocus)=\"handleFocus($event)\"\n >\n <ng-template #customContent>\n <label [htmlFor]=\"inputId()\">\n <bmb-icon\n class=\"bmb_field-actions\"\n icon=\"keyboard_arrow_down\"\n (click)=\"openList()\"\n [size]=\"24\"\n />\n </label>\n </ng-template>\n </bmb-input-content>\n </div>\n <input\n hidden\n type=\"text\"\n [id]=\"getUUID('id')\"\n [name]=\"name()\"\n [formControl]=\"control()\"\n />\n</bmb-input-validator>\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "isMultipleFile", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
163
165
|
}
|
|
164
166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropdownComponent, decorators: [{
|
|
165
167
|
type: Component,
|
|
@@ -174,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
174
176
|
type: ViewChild,
|
|
175
177
|
args: ['contentDiv', { static: true }]
|
|
176
178
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxN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LGc4RkMvRGpDLDA2Q0FvREEsd1JEQUksWUFBWSwrQkFDWixnQkFBZ0IsNkpBQ2hCLG1CQUFtQiwwa0JBQ25CLDBCQUEwQixxYkFDMUIsd0JBQXdCOzs0RkFPZixvQkFBb0I7a0JBZmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDekIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7Z0dBdUNNLFVBQVU7c0JBQXBELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBtb2RlbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBjb21wdXRlZCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgY29udmVydExpc3RUb1NlbGVjdExpc3QsXG4gIGdldFNlbGVjdGVkVmFsdWVzLFxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7XG4gIElCbWJJbnB1dEVycm9yLFxuICBJQm1iSW5wdXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxzL2JtYi1kcm9wZG93bi1jb250ZW50L2JtYi1kcm9wZG93bi1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC1jb250ZW50L2JtYi1pbnB1dC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQge1xuICBhc3NpZ25OZXdGb3JtQ29udHJvbCxcbiAgaGFuZGxlVmFsaWRpdHksXG4gIG5ld0Zvcm1Db250cm9sQnlUeXBlLFxuICBzaG93RXJyb3IsXG59IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1Db250cm9sJztcbmltcG9ydCB7IEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC12YWxpZGF0b3IvYm1iLWlucHV0LXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iUHJvamVjdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdGlvbi9wcm9qZWN0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCbWJEcm9wZG93bkl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHNlbGVjdGVkVGV4dD86IHN0cmluZzsgLy9pbnRlcm5hbFxuICBpY29uPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLWRyb3Bkb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCbWJJY29uQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQsXG4gICAgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wZG93bi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHNob3dJY29uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICBpY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXSB8IElCbWJEcm9wZG93bkl0ZW1bXT4oW10pO1xuICBoZWxwZXJUZXh0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGVycm9yTWVzc2FnZSA9IGlucHV0PHN0cmluZyB8IElCbWJJbnB1dEVycm9yPignJyk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIHByZWZlcnJlZE9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBpc011bHRpU2VsZWN0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB0b29sdGlwID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbj4oe1xuICAgIGFsaWduOiAnYWJvdmUnLFxuICAgIGp1c3RpZnk6ICdiZWZvcmUnLFxuICB9KTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZhbHVlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcnKTtcbiAgaXNGaWx0ZXJhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbnB1dElkID0gaW5wdXQ8c3RyaW5nPih0aGlzLm5hbWUoKSk7XG4gIGN1c3RvbVZhbGlkYXRpb24gPSBpbnB1dDxWYWxpZGF0b3JGbj4oKTtcblxuICBjb250cm9sID0gbW9kZWw8Rm9ybUNvbnRyb2w+KG5ld0Zvcm1Db250cm9sQnlUeXBlKCkpO1xuXG4gIG9uVmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICBvbkZvY3VzID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgdXVpZDogc3RyaW5nID0gZ2V0VVVJRCgpO1xuICBpc01vZGFsT3BlbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgc2VsZWN0aW9uQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobmV3IEZvcm1Db250cm9sKCkpO1xuICBzZWxlY3RlZEljb246IHN0cmluZyA9ICcnO1xuICBpc0tleWJvYXJkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNDb250cm9sTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJzZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbml0T3B0aW9ucyh0aGlzLm9wdGlvbnMoKSkpO1xuICBzZWxlY3RlZEl0ZW06IElEcm9wZG93bkl0ZW0gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdjb250ZW50RGl2JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudFJlZiE6IEVsZW1lbnRSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb2plY3Rpb25TZXJ2aWNlOiBCbWJQcm9qZWN0aW9uQ29udGVudFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2woKSkge1xuICAgICAgdGhpcy5jb250cm9sLnNldChhc3NpZ25OZXdGb3JtQ29udHJvbCh0aGlzLm5hbWUoKSwgdGhpcy5jb250cm9sKCkpISk7XG4gICAgICB0aGlzLmlzQ29udHJvbE51bGwgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc011bHRpU2VsZWN0KCkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmNvbnRyb2woKT8udmFsdWUpKSB7XG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sKClcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ2V0VmFsaWRJbml0aWFsVmFsdWVzKCkpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25Db250cm9sKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2woKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSh0aGlzLmdldFZhbGlkSW5pdGlhbFZhbHVlcygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbml0T3B0aW9ucyhsaXN0OiBzdHJpbmdbXSB8IElCbWJEcm9wZG93bkl0ZW1bXSk6IElEcm9wZG93bkl0ZW1bXSB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBjb252ZXJ0TGlzdFRvU2VsZWN0TGlzdChcbiAgICAgIGxpc3QsXG4gICAgICB0aGlzLmljb24oKSxcbiAgICAgIHRoaXMuc2hvd0ljb24oKSxcbiAgICApO1xuXG4gICAgbGV0IHBhcnNlZEl0ZW1zID0gbmV3SXRlbXMubWFwKChlbGVtZW50OiBJRHJvcGRvd25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICBpY29uOiAhdGhpcy5pc011bHRpU2VsZWN0KCkgJiYgdGhpcy5zaG93SWNvbigpID8gZWxlbWVudC5pY29uISA6ICcnLFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoZWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5wcm9qZWN0aW9uU2VydmljZS5jbG9zZUNvbnRlbnQoKTtcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgSURyb3Bkb3duSXRlbTtcbiAgICB9KTtcblxuICAgIGlmICghIXRoaXMucHJlZmVycmVkT3B0aW9ucygpLmxlbmd0aCkge1xuICAgICAgY29uc3QgcHJlZmVycmVkSXRlbXM6IElEcm9wZG93bkl0ZW1bXSA9IHBhcnNlZEl0ZW1zLmZpbHRlcigoZWxlbWVudCkgPT5cbiAgICAgICAgdGhpcy5wcmVmZXJyZWRPcHRpb25zKCkuaW5jbHVkZXMoZWxlbWVudC52YWx1ZSEpLFxuICAgICAgKTtcblxuICAgICAgcGFyc2VkSXRlbXMgPSBbLi4ubmV3IFNldChbLi4ucHJlZmVycmVkSXRlbXMsIC4uLnBhcnNlZEl0ZW1zXSldO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRJdGVtcztcbiAgfVxuXG4gIGhhbmRsZUZvY3VzKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgZ2V0VVVJRChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuYW1lfV8ke3RoaXMubmFtZSgpfV8ke3RoaXMudXVpZH1gO1xuICB9XG5cbiAgZ2V0SWNvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc011bHRpU2VsZWN0KCkgJiYgdGhpcy5zaG93SWNvbigpKVxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJY29uIHx8IHRoaXMuaWNvbigpO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldFZhbGlkSW5pdGlhbFZhbHVlcygpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGdldFZhbGlkSW5pdGlhbFZhbHVlcyhcbiAgICAgIHRoaXMuY29udHJvbCgpLnZhbHVlLFxuICAgICAgdGhpcy52YWx1ZSgpLFxuICAgICAgdGhpcy5vcHRpb25zKCksXG4gICAgICB0aGlzLmlzTXVsdGlTZWxlY3QoKSxcbiAgICApO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9uQ29udHJvbChjb250cm9sVmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKCEhY29udHJvbFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0KCkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMucGFyc2VkT3B0aW9ucygpLmZpbHRlcigoeyB2YWx1ZSB9KSA9PlxuICAgICAgICAgIGNvbnRyb2xWYWx1ZS5pbmNsdWRlcyh2YWx1ZSEpLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLm1hcCgoZWxlbWVudCkgPT4gYCAke2VsZW1lbnQuc2VsZWN0ZWRUZXh0fWApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnBhcnNlZE9wdGlvbnMoKS5maW5kKFxuICAgICAgICAoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gY29udHJvbFZhbHVlLFxuICAgICAgKTtcbiAgICAgIGlmICghIWl0ZW0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLnNldFZhbHVlKGl0ZW0/LnNlbGVjdGVkVGV4dCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dJY29uKCkpIHRoaXMuc2VsZWN0ZWRJY29uID0gaXRlbS5pY29uO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICBpZiAodGhpcy5zaG93SWNvbigpKSB0aGlzLnNlbGVjdGVkSWNvbiA9IHRoaXMuaWNvbigpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRWYWx1ZShlbGVtZW50OiBJRHJvcGRvd25JdGVtKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdCgpKSB7XG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZShcbiAgICAgICAgZ2V0U2VsZWN0ZWRWYWx1ZXModGhpcy5jb250cm9sKCkudmFsdWUsIGVsZW1lbnQudmFsdWUhKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKGVsZW1lbnQudmFsdWUhKTtcblxuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHRoaXMuY29udHJvbCgpLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5MaXN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBjb250ZW50OiBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQsXG4gICAgICB0YXJnZXRSZWY6IHRoaXMuY29udGVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgIGZpeFNpemVUb1JlZjogdHJ1ZSxcbiAgICAgIHNob3dCYWNrZHJvcDogZmFsc2UsXG4gICAgICBpbnB1dENvbnRleHQ6IHtcbiAgICAgICAgc2VsZWN0ZWRPcHRpb246IHRoaXMuY29udHJvbCgpLnZhbHVlLFxuICAgICAgICBpdGVtczogdGhpcy5wYXJzZWRPcHRpb25zKCksXG4gICAgICAgIGlzS2V5Ym9hcmRFdmVudDogdGhpcy5pc0tleWJvYXJkRXZlbnQsXG4gICAgICAgIGVuYWJsZUZpbHRlcjogdGhpcy5pc0ZpbHRlcmFibGUoKSxcbiAgICAgIH0sXG4gICAgICBmb2N1c09uT3BlbjogdHJ1ZSxcbiAgICB9O1xuICAgIHRoaXMucHJvamVjdGlvblNlcnZpY2Uub3BlbkNvbnRlbnQoZGF0YSk7XG4gIH1cblxuICAvLyBLZXlib2FyZHMgZXZlbnRzXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleWJvYXJkcyA9IFsnICcsICdBcnJvd0Rvd24nLCAnRG93biddO1xuXG4gICAgaWYgKGtleWJvYXJkcy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICB0aGlzLm9wZW5MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlVmFsaWRpdHkoKTogdm9pZCB7XG4gICAgaGFuZGxlVmFsaWRpdHkodGhpcy5jb250cm9sKCkpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2hvd0Vycm9yKHRoaXMuY29udHJvbCgpKTtcbiAgfVxufVxuIiwiPGJtYi1pbnB1dC12YWxpZGF0b3JcbiAgY2xhc3M9XCJibWJfZHJvcGRvd25cIlxuICBbaW5wdXRJZF09XCJpbnB1dElkKClcIlxuICBbbmFtZV09XCJuYW1lKClcIlxuICBbdmFsdWVdPVwiZ2V0VmFsaWRJbml0aWFsVmFsdWVzKClcIlxuICBbbGFiZWxdPVwibGFiZWwoKSFcIlxuICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZSgpXCJcbiAgW2hlbHBlck1lc3NhZ2VdPVwiaGVscGVyVGV4dCgpXCJcbiAgW2lzUmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG4gIFtpc0Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICBbY29udHJvbF09XCJjb250cm9sKClcIlxuICBbc2hvd0Vycm9yXT1cInNob3VsZFNob3dFcnJvclwiXG4gIFt0b29sdGlwXT1cInRvb2x0aXAoKVwiXG4gIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uKClcIlxuICBbY3VzdG9tVmFsaWRhdGlvbl09XCJjdXN0b21WYWxpZGF0aW9uKClcIlxuPlxuICA8ZGl2ICNjb250ZW50RGl2PlxuICAgIDxibWItaW5wdXQtY29udGVudFxuICAgICAgY2xhc3M9XCJibWJfZHJvcGRvd24tZmllbGRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbaWNvbl09XCJnZXRJY29uKClcIlxuICAgICAgW2NvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbFwiXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgIFtpc0Vycm9yXT1cInNob3VsZFNob3dFcnJvclwiXG4gICAgICAoY2xpY2spPVwib3Blbkxpc3QoKVwiXG4gICAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChvbkJsdXIpPVwiaGFuZGxlVmFsaWRpdHkoKVwiXG4gICAgICAob25Gb2N1cyk9XCJoYW5kbGVGb2N1cygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbUNvbnRlbnQ+XG4gICAgICAgIDxsYWJlbCBbaHRtbEZvcl09XCJpbnB1dElkKClcIj5cbiAgICAgICAgICA8Ym1iLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiYm1iX2ZpZWxkLWFjdGlvbnNcIlxuICAgICAgICAgICAgaWNvbj1cImtleWJvYXJkX2Fycm93X2Rvd25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5MaXN0KClcIlxuICAgICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYm1iLWlucHV0LWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8aW5wdXRcbiAgICBoaWRkZW5cbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW2lkXT1cImdldFVVSUQoJ2lkJylcIlxuICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2woKVwiXG4gIC8+XG48L2JtYi1pbnB1dC12YWxpZGF0b3I+XG4iXX0=
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxN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T0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0FsTVUsb0JBQW9CO21HQUFwQixvQkFBb0IscW1HQy9EakMsMDZDQW9EQSx3UkRBSSxZQUFZLCtCQUNaLGdCQUFnQiw2SkFDaEIsbUJBQW1CLDBrQkFDbkIsMEJBQTBCLHVjQUMxQix3QkFBd0I7OzRGQU9mLG9CQUFvQjtrQkFmaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3FCQUN6QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtnR0EwQ00sVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIG1vZGVsLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIGNvbXB1dGVkLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm1iSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pY29uL2JtYi1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBjb252ZXJ0TGlzdFRvU2VsZWN0TGlzdCxcbiAgZ2V0U2VsZWN0ZWRWYWx1ZXMsXG4gIGdldFZhbGlkSW5pdGlhbFZhbHVlcyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZHJvcGRvd24nO1xuaW1wb3J0IHtcbiAgSUJtYklucHV0RXJyb3IsXG4gIElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbixcbn0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvYm1iLWRyb3Bkb3duLWNvbnRlbnQvYm1iLWRyb3Bkb3duLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCbWJJbnB1dENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LWNvbnRlbnQvYm1iLWlucHV0LWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0VVVJRCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7XG4gIGFzc2lnbk5ld0Zvcm1Db250cm9sLFxuICBoYW5kbGVWYWxpZGl0eSxcbiAgbmV3Rm9ybUNvbnRyb2xCeVR5cGUsXG4gIHNob3dFcnJvcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybUNvbnRyb2wnO1xuaW1wb3J0IHsgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LXZhbGlkYXRvci9ibWItaW5wdXQtdmFsaWRhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJQcm9qZWN0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9qZWN0aW9uL3Byb2plY3Rpb24uc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJtYkRyb3Bkb3duSXRlbSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgc2VsZWN0ZWRUZXh0Pzogc3RyaW5nOyAvL2ludGVybmFsXG4gIGljb24/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItZHJvcGRvd24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkljb25Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCbWJJbnB1dFZhbGlkYXRvckNvbXBvbmVudCxcbiAgICBCbWJJbnB1dENvbnRlbnRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9ibWItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEJtYkRyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICByZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgc2hvd0ljb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgb3B0aW9ucyA9IGlucHV0PHN0cmluZ1tdIHwgSUJtYkRyb3Bkb3duSXRlbVtdPihbXSk7XG4gIGhlbHBlclRleHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgZXJyb3JNZXNzYWdlID0gaW5wdXQ8c3RyaW5nIHwgSUJtYklucHV0RXJyb3I+KCcnKTtcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgbmFtZSA9IGlucHV0PHN0cmluZz4oZ2V0VVVJRCgpKTtcbiAgcHJlZmVycmVkT3B0aW9ucyA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG4gIGlzTXVsdGlTZWxlY3QgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHRvb2x0aXAgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgdG9vbHRpcFBvc2l0aW9uID0gaW5wdXQ8SUJtYklucHV0VG9vbHRpcFBvc2l0aW9uPih7XG4gICAgYWxpZ246ICdhYm92ZScsXG4gICAganVzdGlmeTogJ2JlZm9yZScsXG4gIH0pO1xuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdmFsdWUgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycpO1xuICBpc0ZpbHRlcmFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlucHV0SWQgPSBpbnB1dDxzdHJpbmc+KHRoaXMubmFtZSgpKTtcbiAgY3VzdG9tVmFsaWRhdGlvbiA9IGlucHV0PFZhbGlkYXRvckZuPigpO1xuICBjdXN0b21GaWx0ZXJGdW5jdGlvbiA9IGlucHV0PFxuICAgICgoaXRlbTogSURyb3Bkb3duSXRlbSwgZmlsdGVyOiBzdHJpbmcpID0+IGJvb2xlYW4pIHwgbnVsbFxuICA+KG51bGwpO1xuXG4gIGNvbnRyb2wgPSBtb2RlbDxGb3JtQ29udHJvbD4obmV3Rm9ybUNvbnRyb2xCeVR5cGUoKSk7XG5cbiAgb25WYWx1ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIG9uRm9jdXMgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICB1dWlkOiBzdHJpbmcgPSBnZXRVVUlEKCk7XG4gIGlzTW9kYWxPcGVuID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBzZWxlY3Rpb25Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChuZXcgRm9ybUNvbnRyb2woKSk7XG4gIHNlbGVjdGVkSWNvbjogc3RyaW5nID0gJyc7XG4gIGlzS2V5Ym9hcmRFdmVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvbnRyb2xOdWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHBhcnNlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmluaXRPcHRpb25zKHRoaXMub3B0aW9ucygpKSk7XG4gIHNlbGVjdGVkSXRlbTogSURyb3Bkb3duSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnREaXYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50UmVmITogRWxlbWVudFJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdGlvblNlcnZpY2U6IEJtYlByb2plY3Rpb25Db250ZW50U2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5jb250cm9sKCkpIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXQoYXNzaWduTmV3Rm9ybUNvbnRyb2wodGhpcy5uYW1lKCksIHRoaXMuY29udHJvbCgpKSEpO1xuICAgICAgdGhpcy5pc0NvbnRyb2xOdWxsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodGhpcy5jb250cm9sKCk/LnZhbHVlKSkge1xuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbCgpXG4gICAgICA/LnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmdldFZhbGlkSW5pdGlhbFZhbHVlcygpKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uQ29udHJvbCh2YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250cm9sKCkgIT09IG51bGwpIHtcbiAgICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUodGhpcy5nZXRWYWxpZEluaXRpYWxWYWx1ZXMoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5pdE9wdGlvbnMobGlzdDogc3RyaW5nW10gfCBJQm1iRHJvcGRvd25JdGVtW10pOiBJRHJvcGRvd25JdGVtW10ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gY29udmVydExpc3RUb1NlbGVjdExpc3QoXG4gICAgICBsaXN0LFxuICAgICAgdGhpcy5pY29uKCksXG4gICAgICB0aGlzLnNob3dJY29uKCksXG4gICAgKTtcblxuICAgIGxldCBwYXJzZWRJdGVtcyA9IG5ld0l0ZW1zLm1hcCgoZWxlbWVudDogSURyb3Bkb3duSXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZWxlbWVudCxcbiAgICAgICAgaWNvbjogIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIHRoaXMuc2hvd0ljb24oKSA/IGVsZW1lbnQuaWNvbiEgOiAnJyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGVsZW1lbnQpO1xuICAgICAgICAgIHRoaXMucHJvamVjdGlvblNlcnZpY2UuY2xvc2VDb250ZW50KCk7XG4gICAgICAgIH0sXG4gICAgICB9IGFzIElEcm9wZG93bkl0ZW07XG4gICAgfSk7XG5cbiAgICBpZiAoISF0aGlzLnByZWZlcnJlZE9wdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHByZWZlcnJlZEl0ZW1zOiBJRHJvcGRvd25JdGVtW10gPSBwYXJzZWRJdGVtcy5maWx0ZXIoKGVsZW1lbnQpID0+XG4gICAgICAgIHRoaXMucHJlZmVycmVkT3B0aW9ucygpLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUhKSxcbiAgICAgICk7XG5cbiAgICAgIHBhcnNlZEl0ZW1zID0gWy4uLm5ldyBTZXQoWy4uLnByZWZlcnJlZEl0ZW1zLCAuLi5wYXJzZWRJdGVtc10pXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VkSXRlbXM7XG4gIH1cblxuICBoYW5kbGVGb2N1cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub25Gb2N1cy5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGdldFVVSUQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmFtZX1fJHt0aGlzLm5hbWUoKX1fJHt0aGlzLnV1aWR9YDtcbiAgfVxuXG4gIGdldEljb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIHRoaXMuc2hvd0ljb24oKSlcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWNvbiB8fCB0aGlzLmljb24oKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgIHJldHVybiBnZXRWYWxpZEluaXRpYWxWYWx1ZXMoXG4gICAgICB0aGlzLmNvbnRyb2woKS52YWx1ZSxcbiAgICAgIHRoaXMudmFsdWUoKSxcbiAgICAgIHRoaXMub3B0aW9ucygpLFxuICAgICAgdGhpcy5pc011bHRpU2VsZWN0KCksXG4gICAgKTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbkNvbnRyb2woY29udHJvbFZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICghIWNvbnRyb2xWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdCgpKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnBhcnNlZE9wdGlvbnMoKS5maWx0ZXIoKHsgdmFsdWUgfSkgPT5cbiAgICAgICAgICBjb250cm9sVmFsdWUuaW5jbHVkZXModmFsdWUhKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5tYXAoKGVsZW1lbnQpID0+IGAgJHtlbGVtZW50LnNlbGVjdGVkVGV4dH1gKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5wYXJzZWRPcHRpb25zKCkuZmluZChcbiAgICAgICAgKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGNvbnRyb2xWYWx1ZSxcbiAgICAgICk7XG4gICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShpdGVtPy5zZWxlY3RlZFRleHQpO1xuICAgICAgICBpZiAodGhpcy5zaG93SWNvbigpKSB0aGlzLnNlbGVjdGVkSWNvbiA9IGl0ZW0uaWNvbjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgaWYgKHRoaXMuc2hvd0ljb24oKSkgdGhpcy5zZWxlY3RlZEljb24gPSB0aGlzLmljb24oKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkVmFsdWUoZWxlbWVudDogSURyb3Bkb3duSXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3QoKSkge1xuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoXG4gICAgICAgIGdldFNlbGVjdGVkVmFsdWVzKHRoaXMuY29udHJvbCgpLnZhbHVlLCBlbGVtZW50LnZhbHVlISksXG4gICAgICApO1xuICAgIH0gZWxzZSB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZShlbGVtZW50LnZhbHVlISk7XG5cbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmNvbnRyb2woKS52YWx1ZSk7XG4gIH1cblxuICBvcGVuTGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgY29udGVudDogQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50LFxuICAgICAgdGFyZ2V0UmVmOiB0aGlzLmNvbnRlbnRSZWY/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBmaXhTaXplVG9SZWY6IHRydWUsXG4gICAgICBzaG93QmFja2Ryb3A6IGZhbHNlLFxuICAgICAgaW5wdXRDb250ZXh0OiB7XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uOiB0aGlzLmNvbnRyb2woKS52YWx1ZSxcbiAgICAgICAgaXRlbXM6IHRoaXMucGFyc2VkT3B0aW9ucygpLFxuICAgICAgICBpc0tleWJvYXJkRXZlbnQ6IHRoaXMuaXNLZXlib2FyZEV2ZW50LFxuICAgICAgICBlbmFibGVGaWx0ZXI6IHRoaXMuaXNGaWx0ZXJhYmxlKCksXG4gICAgICAgIGN1c3RvbUZpbHRlckZ1bmN0aW9uOiB0aGlzLmN1c3RvbUZpbHRlckZ1bmN0aW9uKCksXG4gICAgICB9LFxuICAgICAgZm9jdXNPbk9wZW46IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLnByb2plY3Rpb25TZXJ2aWNlLm9wZW5Db250ZW50KGRhdGEpO1xuICB9XG5cbiAgLy8gS2V5Ym9hcmRzIGV2ZW50c1xuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlib2FyZHMgPSBbJyAnLCAnQXJyb3dEb3duJywgJ0Rvd24nXTtcblxuICAgIGlmIChrZXlib2FyZHMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgdGhpcy5vcGVuTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVZhbGlkaXR5KCk6IHZvaWQge1xuICAgIGhhbmRsZVZhbGlkaXR5KHRoaXMuY29udHJvbCgpKTtcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93RXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNob3dFcnJvcih0aGlzLmNvbnRyb2woKSk7XG4gIH1cbn1cbiIsIjxibWItaW5wdXQtdmFsaWRhdG9yXG4gIGNsYXNzPVwiYm1iX2Ryb3Bkb3duXCJcbiAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcbiAgW25hbWVdPVwibmFtZSgpXCJcbiAgW3ZhbHVlXT1cImdldFZhbGlkSW5pdGlhbFZhbHVlcygpXCJcbiAgW2xhYmVsXT1cImxhYmVsKCkhXCJcbiAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2UoKVwiXG4gIFtoZWxwZXJNZXNzYWdlXT1cImhlbHBlclRleHQoKVwiXG4gIFtpc1JlcXVpcmVkXT1cInJlcXVpcmVkKClcIlxuICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCJcbiAgW3Nob3dFcnJvcl09XCJzaG91bGRTaG93RXJyb3JcIlxuICBbdG9vbHRpcF09XCJ0b29sdGlwKClcIlxuICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbigpXCJcbiAgW2N1c3RvbVZhbGlkYXRpb25dPVwiY3VzdG9tVmFsaWRhdGlvbigpXCJcbj5cbiAgPGRpdiAjY29udGVudERpdj5cbiAgICA8Ym1iLWlucHV0LWNvbnRlbnRcbiAgICAgIGNsYXNzPVwiYm1iX2Ryb3Bkb3duLWZpZWxkXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXG4gICAgICBbbmFtZV09XCJuYW1lKClcIlxuICAgICAgW2ljb25dPVwiZ2V0SWNvbigpXCJcbiAgICAgIFtjb250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xcIlxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICBbaXNFcnJvcl09XCJzaG91bGRTaG93RXJyb3JcIlxuICAgICAgKGNsaWNrKT1cIm9wZW5MaXN0KClcIlxuICAgICAgKG9uS2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAob25CbHVyKT1cImhhbmRsZVZhbGlkaXR5KClcIlxuICAgICAgKG9uRm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21Db250ZW50PlxuICAgICAgICA8bGFiZWwgW2h0bWxGb3JdPVwiaW5wdXRJZCgpXCI+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImJtYl9maWVsZC1hY3Rpb25zXCJcbiAgICAgICAgICAgIGljb249XCJrZXlib2FyZF9hcnJvd19kb3duXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTGlzdCgpXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2JtYi1pbnB1dC1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGlucHV0XG4gICAgaGlkZGVuXG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtpZF09XCJnZXRVVUlEKCdpZCcpXCJcbiAgICBbbmFtZV09XCJuYW1lKClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sKClcIlxuICAvPlxuPC9ibWItaW5wdXQtdmFsaWRhdG9yPlxuIl19
|