barsa-sap-ui 2.2.66 → 2.2.68

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.
@@ -1,4 +1,4 @@
1
- import { Component, HostListener, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, HostListener, Input, ViewChild, ChangeDetectionStrategy, signal } from '@angular/core';
2
2
  import { of, Subject } from 'rxjs';
3
3
  import { debounceTime, filter, distinctUntilChanged, tap, takeUntil, switchMap } from 'rxjs/operators';
4
4
  import { ComboboxComponent } from '@fundamental-ngx/core';
@@ -19,6 +19,7 @@ export class UiMoInfoUlvComboComponent extends FieldBaseComponent {
19
19
  super(...arguments);
20
20
  this.smartChange = new Subject();
21
21
  this.allColumns = [];
22
+ this.showExtraButtons = signal(false);
22
23
  this._openPopupFormSelectionSource = new Subject();
23
24
  this._closeDialogSource = new Subject();
24
25
  this._loadingSource = new Subject();
@@ -246,8 +247,27 @@ export class UiMoInfoUlvComboComponent extends FieldBaseComponent {
246
247
  this._setValueText(value);
247
248
  this._checkHasValue(value);
248
249
  super._setValue(value);
250
+ this._checkShowExtraButtons();
249
251
  // this._setComboText(value);
250
252
  }
253
+ _checkShowExtraButtons() {
254
+ let showExtraButtos = false;
255
+ this.showExtraButtons.set(false);
256
+ if (this.hasValue && !this.inlineEdit) {
257
+ showExtraButtos = true;
258
+ }
259
+ if (!this.hasValue && this.Setting.ShowNewButton) {
260
+ showExtraButtos = true;
261
+ this.showExtraButtons.set(true);
262
+ }
263
+ if (this.hasValue && this.Setting.ViewRelatedFormType !== 'Hide') {
264
+ showExtraButtos = true;
265
+ }
266
+ if (this.context._showPopup && !this.value) {
267
+ showExtraButtos = true;
268
+ }
269
+ this.showExtraButtons.set(showExtraButtos);
270
+ }
251
271
  _checkHasValue(value) {
252
272
  this.hasValue = typeof value !== 'undefined' && value !== null && value !== '';
253
273
  }
@@ -380,11 +400,11 @@ export class UiMoInfoUlvComboComponent extends FieldBaseComponent {
380
400
  // this._triggerClick('ItemSelect', this.value);
381
401
  }
382
402
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiMoInfoUlvComboComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
383
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiMoInfoUlvComboComponent, selector: "bsu-ui-mo-info-ulv-combo", inputs: { ulvAdapter: "ulvAdapter", Control: "Control", UlvMainCtrlr: "UlvMainCtrlr", UlvUi: "UlvUi", IsExpanded: "IsExpanded", Collapse: "Collapse", Expand: "Expand", on: "on", Focus: "Focus", SetUlvAdapter: "SetUlvAdapter", IsUiCreated: "IsUiCreated", Mask: "Mask", hide: "hide", show: "show", Unmask: "Unmask", getRawValue: "getRawValue" }, host: { listeners: { "keydown": "onKeyDown($event)", "keydown.alt": "onAlt($event)" } }, viewQueries: [{ propertyName: "fdComboRef", first: true, predicate: ComboboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container\r\n *ngTemplateOutlet=\"\r\n comboTemplate;\r\n context: {\r\n $implicit:\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging,\r\n deviceSize: deviceSize$ | async,\r\n disableOrReadonly: disableOrReadonly$ | async,\r\n disable: disable$ | async,\r\n readonly: readonly$ | async,\r\n isSearch: context._showPopup || context._showDropDown === false\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n\r\n<ng-template #btnsTpl let-disableOrReadonly=\"disableOrReadonly\">\r\n <div class=\"extra-buttons fd-input-group fd-input-group--control\" contentDensity>\r\n @if (hasValue && disableOrReadonly !== true) {\r\n <span class=\"fd-input-group__addon--button combo-popup-btn\" fd-input-group-addon>\r\n <button tabindex=\"-1\" fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\r\n </span>\r\n } @if (!hasValue && disableOrReadonly !== true && Setting.ShowNewButton) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\r\n </span>\r\n } @if (hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType !== 'Hide') {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\r\n </span>\r\n } @if (context._showPopup && !value && disableOrReadonly !== true) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\r\n </span>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #comboTemplate\r\n let-moDataList\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n let-isSearch=\"isSearch\"\r\n>\r\n <div class=\"simple-combo-wrapper\">\r\n <fd-combobox\r\n #fdCombobox\r\n class=\"combo-mo-ulv\"\r\n [class.canAdd]=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\r\n [class.canEdit]=\"hasValue && disableOrReadonly !== true\"\r\n [class.disableorreadonly]=\"disableOrReadonly === true\"\r\n [comboboxId]=\"comboboxId\"\r\n [class.has-Value]=\"hasValue\"\r\n [placeholder]=\"'Select' | bbbTranslate\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"mobileConfig\"\r\n [fillOnSelect]=\"true\"\r\n [readOnly]=\"readonly === true ? true : false\"\r\n [disabled]=\"disable === true ? true : false\"\r\n [dropdownValues]=\"moDataList\"\r\n [filterFn]=\"customFilter\"\r\n [openOnKeyboardEvent]=\"true\"\r\n [byline]=\"allColumns.length > 0\"\r\n [isSearch]=\"false\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [displayFn]=\"displayFunc\"\r\n [showDropdownButton]=\"context._showDropDown !== false && disableOrReadonly !== true\"\r\n (itemClicked)=\"onItemClick($event, moDataList)\"\r\n (inputTextChange)=\"onInputChange($event)\"\r\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\r\n >\r\n </fd-combobox>\r\n <ng-container\r\n *ngTemplateOutlet=\"btnsTpl; context: { disableOrReadonly: this.disableOrReadonly }\"\r\n ></ng-container>\r\n </div>\r\n <ng-template #itemTemplate let-item>\r\n @if (item.$isLoading) {\r\n <div fd-list-content style=\"width: 100%; height: 20px\">\r\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\r\n </div>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"item.$LoadMore ? loadMoreButton : showItem; context: { ulv: ulvAdapter || UlvUi }\"\r\n >\r\n </ng-container>\r\n }\r\n <ng-template #loadMoreButton let-ulv=\"ulv\">\r\n @if (ulv) {\r\n <bsu-ulv-paging\r\n (click)=\"onPagingClick($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n [pagingSetting]=\"ulv.Setting.Data.Paging\"\r\n >\r\n </bsu-ulv-paging>\r\n }\r\n <!-- <button\r\n style=\"width: 100%\"\r\n *ngIf=\"ulv && ulv.Setting.Data.Paging.Page + 1 < ulv.Setting.Data.Paging.TotalPages\"\r\n fd-button\r\n (click)=\"onPageChange2(ulv.Setting.Data.Paging, $event)\"\r\n [label]=\"'More' | bbbTranslate\"\r\n ></button> -->\r\n </ng-template>\r\n <ng-template #showItem>\r\n @if (allColumns?.length && !item.isEmpty) { @if (!item.$__IsLast) {\r\n <div class=\"moinfoulv devider\"></div>\r\n } @if (item.$Icon) {\r\n <span fd-list-thumbnail><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\r\n }\r\n <div fd-list-content class=\"moinfoulv hasColumns\">\r\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\r\n @if (allColumns[1]) {\r\n <div fd-list-byline class=\"byline\">\r\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\r\n </div>\r\n }\r\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\r\n @for (column of allColumns; track column; let index = $index) { @if (index > 1) { @if (column.Alias\r\n | rval: item:allColumns:true; as value) {\r\n <span> {{ column.Alias }}:{{ value }}</span>\r\n } } }\r\n </div>\r\n </div>\r\n } @else {\r\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\"\r\n >{{ item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate) }}\r\n </span>\r\n }\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group{min-width:fit-content}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv[class*=has-]:not(.disableorreadonly) .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canAdd:not(.disableorreadonly) .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canEdit:not(.disableorreadonly) .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display:none}.extra-buttons{width:auto;border-right:none;border-left:none;margin:0}.extra-buttons>span{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ComboboxComponent, selector: "fd-combobox", inputs: ["comboboxId", "inputId", "ariaLabel", "ariaLabelledBy", "required", "dropdownValues", "filterFn", "disabled", "placeholder", "isSearch", "glyph", "glyphFont", "showClearButton", "triggers", "closeOnOutsideClick", "openOnKeyboardEvent", "state", "itemTemplate", "groupFn", "maxHeight", "width", "searchFn", "highlighting", "closeOnSelect", "fillOnSelect", "autoComplete", "fillControlMode", "communicateByObject", "displayFn", "buttonFocusable", "clearButtonFocusable", "readOnly", "mobile", "mobileConfig", "showDropdownButton", "includes", "title", "byline", "tabOutStrategy"], outputs: ["itemClicked", "openChange", "inputTextChange"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: i6.InputGroupAddOnDirective, selector: "[fdInputGroupAddon], [fd-input-group-addon]", inputs: ["class", "placement", "type", "state", "button"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i7.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i7.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i7.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "component", type: i8.UlvPagingComponent, selector: "bsu-ulv-paging", inputs: ["pagingSetting"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i9.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "directive", type: i10.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
403
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiMoInfoUlvComboComponent, selector: "bsu-ui-mo-info-ulv-combo", inputs: { ulvAdapter: "ulvAdapter", Control: "Control", UlvMainCtrlr: "UlvMainCtrlr", UlvUi: "UlvUi", IsExpanded: "IsExpanded", Collapse: "Collapse", Expand: "Expand", on: "on", Focus: "Focus", SetUlvAdapter: "SetUlvAdapter", IsUiCreated: "IsUiCreated", Mask: "Mask", hide: "hide", show: "show", Unmask: "Unmask", getRawValue: "getRawValue" }, host: { listeners: { "keydown": "onKeyDown($event)", "keydown.alt": "onAlt($event)" } }, viewQueries: [{ propertyName: "fdComboRef", first: true, predicate: ComboboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container\r\n *ngTemplateOutlet=\"\r\n comboTemplate;\r\n context: {\r\n $implicit:\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging,\r\n deviceSize: deviceSize$ | async,\r\n disableOrReadonly: disableOrReadonly$ | async,\r\n disable: disable$ | async,\r\n readonly: readonly$ | async,\r\n isSearch: context._showPopup || context._showDropDown === false\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n\r\n<ng-template #btnsTpl let-disableOrReadonly=\"disableOrReadonly\">\r\n @if( showExtraButtons() ){\r\n <div class=\"extra-buttons fd-input-group fd-input-group--control\" contentDensity>\r\n @if (hasValue && !inlineEdit) {\r\n <span class=\"fd-input-group__addon--button combo-popup-btn\" fd-input-group-addon>\r\n <button tabindex=\"-1\" fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\r\n </span>\r\n } @if (!hasValue && Setting.ShowNewButton) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\r\n </span>\r\n } @if (hasValue && Setting.ViewRelatedFormType !== 'Hide') {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\r\n </span>\r\n } @if (context._showPopup && !value ) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n<ng-template\r\n #comboTemplate\r\n let-moDataList\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n let-isSearch=\"isSearch\"\r\n>\r\n <div class=\"simple-combo-wrapper\">\r\n <fd-combobox\r\n #fdCombobox\r\n class=\"combo-mo-ulv\"\r\n [class.canAdd]=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\r\n [class.canEdit]=\"hasValue && disableOrReadonly !== true\"\r\n [class.disableorreadonly]=\"disableOrReadonly === true\"\r\n [class.showExtraButtons]=\"disableOrReadonly !== true && showExtraButtons()\"\r\n [comboboxId]=\"comboboxId\"\r\n [class.has-Value]=\"hasValue\"\r\n [placeholder]=\"'Select' | bbbTranslate\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"mobileConfig\"\r\n [fillOnSelect]=\"true\"\r\n [readOnly]=\"readonly === true ? true : false\"\r\n [disabled]=\"disable === true ? true : false\"\r\n [dropdownValues]=\"moDataList\"\r\n [filterFn]=\"customFilter\"\r\n [openOnKeyboardEvent]=\"true\"\r\n [byline]=\"allColumns.length > 0\"\r\n [isSearch]=\"false\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [displayFn]=\"displayFunc\"\r\n [showDropdownButton]=\"context._showDropDown !== false && disableOrReadonly !== true\"\r\n (itemClicked)=\"onItemClick($event, moDataList)\"\r\n (inputTextChange)=\"onInputChange($event)\"\r\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\r\n >\r\n </fd-combobox>\r\n <ng-container\r\n *ngTemplateOutlet=\"btnsTpl; context: { disableOrReadonly: this.disableOrReadonly }\"\r\n ></ng-container>\r\n </div>\r\n <ng-template #itemTemplate let-item>\r\n @if (item.$isLoading) {\r\n <div fd-list-content style=\"width: 100%; height: 20px\">\r\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\r\n </div>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"item.$LoadMore ? loadMoreButton : showItem; context: { ulv: ulvAdapter || UlvUi }\"\r\n >\r\n </ng-container>\r\n }\r\n <ng-template #loadMoreButton let-ulv=\"ulv\">\r\n @if (ulv) {\r\n <bsu-ulv-paging\r\n (click)=\"onPagingClick($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n [pagingSetting]=\"ulv.Setting.Data.Paging\"\r\n >\r\n </bsu-ulv-paging>\r\n }\r\n <!-- <button\r\n style=\"width: 100%\"\r\n *ngIf=\"ulv && ulv.Setting.Data.Paging.Page + 1 < ulv.Setting.Data.Paging.TotalPages\"\r\n fd-button\r\n (click)=\"onPageChange2(ulv.Setting.Data.Paging, $event)\"\r\n [label]=\"'More' | bbbTranslate\"\r\n ></button> -->\r\n </ng-template>\r\n <ng-template #showItem>\r\n @if (allColumns?.length && !item.isEmpty) { @if (!item.$__IsLast) {\r\n <div class=\"moinfoulv devider\"></div>\r\n } @if (item.$Icon) {\r\n <span fd-list-thumbnail><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\r\n }\r\n <div fd-list-content class=\"moinfoulv hasColumns\">\r\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\r\n @if (allColumns[1]) {\r\n <div fd-list-byline class=\"byline\">\r\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\r\n </div>\r\n }\r\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\r\n @for (column of allColumns; track column; let index = $index) { @if (index > 1) { @if (column.Alias\r\n | rval: item:allColumns:true; as value) {\r\n <span> {{ column.Alias }}:{{ value }}</span>\r\n } } }\r\n </div>\r\n </div>\r\n } @else {\r\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\"\r\n >{{ item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate) }}\r\n </span>\r\n }\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group{min-width:fit-content}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv.showExtraButtons:not(.disableorreadonly) .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display:none}.extra-buttons{width:auto;border-right:none;border-left:none;margin:0}.extra-buttons>span{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ComboboxComponent, selector: "fd-combobox", inputs: ["comboboxId", "inputId", "ariaLabel", "ariaLabelledBy", "required", "dropdownValues", "filterFn", "disabled", "placeholder", "isSearch", "glyph", "glyphFont", "showClearButton", "triggers", "closeOnOutsideClick", "openOnKeyboardEvent", "state", "itemTemplate", "groupFn", "maxHeight", "width", "searchFn", "highlighting", "closeOnSelect", "fillOnSelect", "autoComplete", "fillControlMode", "communicateByObject", "displayFn", "buttonFocusable", "clearButtonFocusable", "readOnly", "mobile", "mobileConfig", "showDropdownButton", "includes", "title", "byline", "tabOutStrategy"], outputs: ["itemClicked", "openChange", "inputTextChange"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: i6.InputGroupAddOnDirective, selector: "[fdInputGroupAddon], [fd-input-group-addon]", inputs: ["class", "placement", "type", "state", "button"] }, { kind: "directive", type: i7.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i7.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i7.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i7.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "component", type: i8.UlvPagingComponent, selector: "bsu-ulv-paging", inputs: ["pagingSetting"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i9.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "directive", type: i10.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
384
404
  }
385
405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiMoInfoUlvComboComponent, decorators: [{
386
406
  type: Component,
387
- args: [{ selector: 'bsu-ui-mo-info-ulv-combo', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container\r\n *ngTemplateOutlet=\"\r\n comboTemplate;\r\n context: {\r\n $implicit:\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging,\r\n deviceSize: deviceSize$ | async,\r\n disableOrReadonly: disableOrReadonly$ | async,\r\n disable: disable$ | async,\r\n readonly: readonly$ | async,\r\n isSearch: context._showPopup || context._showDropDown === false\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n\r\n<ng-template #btnsTpl let-disableOrReadonly=\"disableOrReadonly\">\r\n <div class=\"extra-buttons fd-input-group fd-input-group--control\" contentDensity>\r\n @if (hasValue && disableOrReadonly !== true) {\r\n <span class=\"fd-input-group__addon--button combo-popup-btn\" fd-input-group-addon>\r\n <button tabindex=\"-1\" fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\r\n </span>\r\n } @if (!hasValue && disableOrReadonly !== true && Setting.ShowNewButton) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\r\n </span>\r\n } @if (hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType !== 'Hide') {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\r\n </span>\r\n } @if (context._showPopup && !value && disableOrReadonly !== true) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\r\n </span>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #comboTemplate\r\n let-moDataList\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n let-isSearch=\"isSearch\"\r\n>\r\n <div class=\"simple-combo-wrapper\">\r\n <fd-combobox\r\n #fdCombobox\r\n class=\"combo-mo-ulv\"\r\n [class.canAdd]=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\r\n [class.canEdit]=\"hasValue && disableOrReadonly !== true\"\r\n [class.disableorreadonly]=\"disableOrReadonly === true\"\r\n [comboboxId]=\"comboboxId\"\r\n [class.has-Value]=\"hasValue\"\r\n [placeholder]=\"'Select' | bbbTranslate\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"mobileConfig\"\r\n [fillOnSelect]=\"true\"\r\n [readOnly]=\"readonly === true ? true : false\"\r\n [disabled]=\"disable === true ? true : false\"\r\n [dropdownValues]=\"moDataList\"\r\n [filterFn]=\"customFilter\"\r\n [openOnKeyboardEvent]=\"true\"\r\n [byline]=\"allColumns.length > 0\"\r\n [isSearch]=\"false\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [displayFn]=\"displayFunc\"\r\n [showDropdownButton]=\"context._showDropDown !== false && disableOrReadonly !== true\"\r\n (itemClicked)=\"onItemClick($event, moDataList)\"\r\n (inputTextChange)=\"onInputChange($event)\"\r\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\r\n >\r\n </fd-combobox>\r\n <ng-container\r\n *ngTemplateOutlet=\"btnsTpl; context: { disableOrReadonly: this.disableOrReadonly }\"\r\n ></ng-container>\r\n </div>\r\n <ng-template #itemTemplate let-item>\r\n @if (item.$isLoading) {\r\n <div fd-list-content style=\"width: 100%; height: 20px\">\r\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\r\n </div>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"item.$LoadMore ? loadMoreButton : showItem; context: { ulv: ulvAdapter || UlvUi }\"\r\n >\r\n </ng-container>\r\n }\r\n <ng-template #loadMoreButton let-ulv=\"ulv\">\r\n @if (ulv) {\r\n <bsu-ulv-paging\r\n (click)=\"onPagingClick($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n [pagingSetting]=\"ulv.Setting.Data.Paging\"\r\n >\r\n </bsu-ulv-paging>\r\n }\r\n <!-- <button\r\n style=\"width: 100%\"\r\n *ngIf=\"ulv && ulv.Setting.Data.Paging.Page + 1 < ulv.Setting.Data.Paging.TotalPages\"\r\n fd-button\r\n (click)=\"onPageChange2(ulv.Setting.Data.Paging, $event)\"\r\n [label]=\"'More' | bbbTranslate\"\r\n ></button> -->\r\n </ng-template>\r\n <ng-template #showItem>\r\n @if (allColumns?.length && !item.isEmpty) { @if (!item.$__IsLast) {\r\n <div class=\"moinfoulv devider\"></div>\r\n } @if (item.$Icon) {\r\n <span fd-list-thumbnail><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\r\n }\r\n <div fd-list-content class=\"moinfoulv hasColumns\">\r\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\r\n @if (allColumns[1]) {\r\n <div fd-list-byline class=\"byline\">\r\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\r\n </div>\r\n }\r\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\r\n @for (column of allColumns; track column; let index = $index) { @if (index > 1) { @if (column.Alias\r\n | rval: item:allColumns:true; as value) {\r\n <span> {{ column.Alias }}:{{ value }}</span>\r\n } } }\r\n </div>\r\n </div>\r\n } @else {\r\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\"\r\n >{{ item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate) }}\r\n </span>\r\n }\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group{min-width:fit-content}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv[class*=has-]:not(.disableorreadonly) .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canAdd:not(.disableorreadonly) .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canEdit:not(.disableorreadonly) .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display:none}.extra-buttons{width:auto;border-right:none;border-left:none;margin:0}.extra-buttons>span{overflow:hidden}\n"] }]
407
+ args: [{ selector: 'bsu-ui-mo-info-ulv-combo', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container\r\n *ngTemplateOutlet=\"\r\n comboTemplate;\r\n context: {\r\n $implicit:\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging,\r\n deviceSize: deviceSize$ | async,\r\n disableOrReadonly: disableOrReadonly$ | async,\r\n disable: disable$ | async,\r\n readonly: readonly$ | async,\r\n isSearch: context._showPopup || context._showDropDown === false\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n\r\n<ng-template #btnsTpl let-disableOrReadonly=\"disableOrReadonly\">\r\n @if( showExtraButtons() ){\r\n <div class=\"extra-buttons fd-input-group fd-input-group--control\" contentDensity>\r\n @if (hasValue && !inlineEdit) {\r\n <span class=\"fd-input-group__addon--button combo-popup-btn\" fd-input-group-addon>\r\n <button tabindex=\"-1\" fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\r\n </span>\r\n } @if (!hasValue && Setting.ShowNewButton) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\r\n </span>\r\n } @if (hasValue && Setting.ViewRelatedFormType !== 'Hide') {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\r\n </span>\r\n } @if (context._showPopup && !value ) {\r\n <span fd-input-group-addon class=\"fd-input-group__addon--button combo-popup-btn\">\r\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\r\n </span>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n<ng-template\r\n #comboTemplate\r\n let-moDataList\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n let-isSearch=\"isSearch\"\r\n>\r\n <div class=\"simple-combo-wrapper\">\r\n <fd-combobox\r\n #fdCombobox\r\n class=\"combo-mo-ulv\"\r\n [class.canAdd]=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\r\n [class.canEdit]=\"hasValue && disableOrReadonly !== true\"\r\n [class.disableorreadonly]=\"disableOrReadonly === true\"\r\n [class.showExtraButtons]=\"disableOrReadonly !== true && showExtraButtons()\"\r\n [comboboxId]=\"comboboxId\"\r\n [class.has-Value]=\"hasValue\"\r\n [placeholder]=\"'Select' | bbbTranslate\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"mobileConfig\"\r\n [fillOnSelect]=\"true\"\r\n [readOnly]=\"readonly === true ? true : false\"\r\n [disabled]=\"disable === true ? true : false\"\r\n [dropdownValues]=\"moDataList\"\r\n [filterFn]=\"customFilter\"\r\n [openOnKeyboardEvent]=\"true\"\r\n [byline]=\"allColumns.length > 0\"\r\n [isSearch]=\"false\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [displayFn]=\"displayFunc\"\r\n [showDropdownButton]=\"context._showDropDown !== false && disableOrReadonly !== true\"\r\n (itemClicked)=\"onItemClick($event, moDataList)\"\r\n (inputTextChange)=\"onInputChange($event)\"\r\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\r\n >\r\n </fd-combobox>\r\n <ng-container\r\n *ngTemplateOutlet=\"btnsTpl; context: { disableOrReadonly: this.disableOrReadonly }\"\r\n ></ng-container>\r\n </div>\r\n <ng-template #itemTemplate let-item>\r\n @if (item.$isLoading) {\r\n <div fd-list-content style=\"width: 100%; height: 20px\">\r\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\r\n </div>\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"item.$LoadMore ? loadMoreButton : showItem; context: { ulv: ulvAdapter || UlvUi }\"\r\n >\r\n </ng-container>\r\n }\r\n <ng-template #loadMoreButton let-ulv=\"ulv\">\r\n @if (ulv) {\r\n <bsu-ulv-paging\r\n (click)=\"onPagingClick($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n [pagingSetting]=\"ulv.Setting.Data.Paging\"\r\n >\r\n </bsu-ulv-paging>\r\n }\r\n <!-- <button\r\n style=\"width: 100%\"\r\n *ngIf=\"ulv && ulv.Setting.Data.Paging.Page + 1 < ulv.Setting.Data.Paging.TotalPages\"\r\n fd-button\r\n (click)=\"onPageChange2(ulv.Setting.Data.Paging, $event)\"\r\n [label]=\"'More' | bbbTranslate\"\r\n ></button> -->\r\n </ng-template>\r\n <ng-template #showItem>\r\n @if (allColumns?.length && !item.isEmpty) { @if (!item.$__IsLast) {\r\n <div class=\"moinfoulv devider\"></div>\r\n } @if (item.$Icon) {\r\n <span fd-list-thumbnail><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\r\n }\r\n <div fd-list-content class=\"moinfoulv hasColumns\">\r\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\r\n @if (allColumns[1]) {\r\n <div fd-list-byline class=\"byline\">\r\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\r\n </div>\r\n }\r\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\r\n @for (column of allColumns; track column; let index = $index) { @if (index > 1) { @if (column.Alias\r\n | rval: item:allColumns:true; as value) {\r\n <span> {{ column.Alias }}:{{ value }}</span>\r\n } } }\r\n </div>\r\n </div>\r\n } @else {\r\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\"\r\n >{{ item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate) }}\r\n </span>\r\n }\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group{min-width:fit-content}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv.showExtraButtons:not(.disableorreadonly) .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display:none}.extra-buttons{width:auto;border-right:none;border-left:none;margin:0}.extra-buttons>span{overflow:hidden}\n"] }]
388
408
  }], propDecorators: { ulvAdapter: [{
389
409
  type: Input
390
410
  }], Control: [{
@@ -427,4 +447,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
427
447
  }], getRawValue: [{
428
448
  type: Input
429
449
  }] } });
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFHMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQTJCLE1BQU0sdUJBQXVCLENBQUM7QUFFbkYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixRQUFRLEVBTVIsa0JBQWtCLEVBR2xCLFdBQVcsRUFFZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGtCQUFrQjtJQVBqRTs7UUFzQ0ksZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBYXBDLGVBQVUsR0FBdUIsRUFBRSxDQUFDO1FBRzVCLGtDQUE2QixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDcEQsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUF5SGhELGdCQUFXLEdBQUcsQ0FBQyxHQUF3QixFQUFFLEVBQUU7WUFDdkMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBc0NGLG9CQUFvQjtRQUNYLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNoQixPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztRQUNyRCxDQUFDLENBQUM7UUFDRixpRUFBaUU7UUFDakUsb0JBQW9CO1FBQ1gsYUFBUSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDakMsb0JBQW9CO1FBQ1gsV0FBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUNGLG9CQUFvQjtRQUNYLE9BQUUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDdkIsb0JBQW9CO1FBQ1gsVUFBSyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUUxQixrQkFBYSxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixvQkFBb0I7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsZ0JBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1lBQ1osb0JBQW9CO1FBQ3hCLENBQUMsQ0FBQztRQUVGLFNBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0Isb0JBQW9CO1FBQ3hCLENBQUMsQ0FBQztRQUVGLFNBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLENBQUM7WUFDRCxvQkFBb0I7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsU0FBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsc0VBQXNFO1lBQ3JILENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFMUIsb0JBQW9CO1FBQ3hCLENBQUMsQ0FBQztRQUVGLFdBQU0sR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsb0JBQW9CO1FBQ3hCLENBQUMsQ0FBQztRQUVGLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3JCLG9CQUFvQjtRQUN4QixDQUFDLENBQUM7S0F5Skw7SUE3WkcsSUFBYSxLQUFLLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUF3Qm9DLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBQztRQUNILENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLHFCQUFxQjtnQkFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxLQUFLLFFBQVE7b0JBQzlELE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVzthQUNYLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUMzQixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2pELG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQzFDO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFDUCxJQUFJLENBQUMsNkJBQTZCO2FBQzdCLFlBQVksRUFBRTthQUNkLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQ2xDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzNCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUNsRDthQUNBLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxjQUFjLENBQUM7UUFDOUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUFDO1FBQ1gsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFTO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEQsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBZSxFQUFFLFVBQWlDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxhQUFhLENBQUMsV0FBMEIsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDNUQsTUFBTSxVQUFVLEdBQTBCLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUM3RSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQWU7UUFDcEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLHdGQUF3RjtRQUM1RixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsYUFBYSxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELGNBQWMsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELGFBQWEsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsTUFBTTtRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxvQkFBb0I7SUFDcEIsWUFBWSxDQUFDLE9BQWMsRUFBRSxVQUFrQjtRQUMzQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBU0QsaUJBQWlCLENBQUMsT0FBbUMsRUFBRSxPQUFlLEVBQUUsWUFBb0I7UUFDeEYsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkIsT0FBTyxZQUFZLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksY0FBYyxDQUFDO1FBQ25CLE1BQU0sTUFBTSxHQUEwQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQ2xFLElBQUksQ0FBQyxVQUFVLEVBQ2YseUJBQXlCLEVBQ3pCLEVBQUUsQ0FDTCxDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxjQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osY0FBYyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxrQkFBa0I7UUFDZCxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUM1RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDM0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQ3BELENBQUM7Z0JBQ0YsSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUM1QixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBaUVTLGlCQUFpQixDQUFDLFVBQWlDLEVBQUUsRUFBdUI7UUFDbEYsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDUyxTQUFTLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2Qiw2QkFBNkI7SUFDakMsQ0FBQztJQUNTLGNBQWMsQ0FBQyxLQUFLO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztJQUNuRixDQUFDO0lBQ1MsYUFBYSxDQUFDLEtBQUs7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDUyxhQUFhLENBQUMsS0FBSztRQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQy9DLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUN0RixPQUFPLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzFELENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBQ1MsYUFBYSxDQUFDLEtBQWE7UUFDakMsd0RBQXdEO1FBQ3hELHdCQUF3QjtRQUN4QixzQ0FBc0M7UUFDdEMseUNBQXlDO1FBQ3pDLElBQUk7UUFDSixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLFVBQVUsRUFBRSxjQUFjLENBQUM7UUFDN0MsSUFBSSxVQUFVLElBQUksS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ25DLDBDQUEwQztZQUMxQyx5Q0FBeUM7WUFDekMsaURBQWlEO1lBQ2pELGdDQUFnQztZQUNoQywwQkFBMEI7WUFDMUIsaUdBQWlHO1lBQ2pHLGlFQUFpRTtZQUNqRSxRQUFRO1lBQ1IscUVBQXFFO1lBQ3JFLElBQUk7WUFDSixVQUFVLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUNTLHVCQUF1QjtRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDLHVGQUF1RjtRQUM1SSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN6RSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN4QyxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ1Msa0JBQWtCLENBQUMsS0FBSztRQUM5QixJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pFLG9CQUFvQjtRQUNwQiw4RUFBOEU7UUFDOUUsMkJBQTJCO1FBQzNCLHFDQUFxQztRQUNyQyxhQUFhO1FBQ2IsU0FBUztRQUNULHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsUUFBUTtRQUNSLGlEQUFpRDtRQUVqRCwyQ0FBMkM7UUFDM0MsNEVBQTRFO1FBQzVFLG9DQUFvQztRQUNwQyxVQUFVO1FBQ1Ysb0JBQW9CO1FBQ3BCLDhCQUE4QjtRQUM5QiwyQ0FBMkM7UUFDM0MsUUFBUTtRQUNSLElBQUk7UUFDSixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBQ1MsV0FBVztRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFhLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQ2pELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNMLENBQUM7SUFDUyxNQUFNO1FBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQUs7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVTLGFBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxPQUFPO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBMEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUNsRSxJQUFJLENBQUMsVUFBVSxFQUNmLHlCQUF5QixFQUN6QixFQUFFLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPO1FBQ1gsQ0FBQztRQUNELDRDQUE0QztRQUU1QyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNOLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDUyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLG1DQUFtQztRQUNuQyw2QkFBNkI7UUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ25DLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUNoQyxDQUFDO1FBQ04sQ0FBQztRQUNELGdEQUFnRDtJQUNwRCxDQUFDOytHQTNhUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw2aEJBYXZCLGlCQUFpQix1RUNoRGhDLGlpTkE0SUE7OzRGRHpHYSx5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OEJBR1IsVUFBVTtzQkFBbEIsS0FBSztnQkFVRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDd0IsVUFBVTtzQkFBdkMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBRWYsS0FBSztzQkFBakIsS0FBSztnQkFvQytCLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFuQyxLQUFLO3NCQURKLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTZKOUIsVUFBVTtzQkFBbEIsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxFQUFFO3NCQUFWLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBTU4sSUFBSTtzQkFESCxLQUFLO2dCQU1OLElBQUk7c0JBREgsS0FBSztnQkFRTixJQUFJO3NCQURILEtBQUs7Z0JBWU4sTUFBTTtzQkFETCxLQUFLO2dCQU1OLFdBQVc7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgT25Jbml0LFxyXG4gICAgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCwgdGFrZVVudGlsLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50LCBDb21ib2JveEl0ZW0sIERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRmllbGRCYXNlQ29tcG9uZW50LFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBSZXBvcnRFeHRyYUluZm8sXHJcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxyXG4gICAgQ2xhc3NOYW1lc01vZGVsLFxyXG4gICAgVmlld1R5cGVzLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIFByZXZlbnREZWZhdWxFdmVudCxcclxuICAgIFBhZ2luZ1NldHRpbmcsXHJcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxyXG4gICAgZ2V0VW5pcXVlSWQsXHJcbiAgICBHcmlkVmlld1xyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktbW8taW5mby11bHYtY29tYm8nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLW1vLWluZm8tdWx2LWNvbWJvLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLW1vLWluZm8tdWx2LWNvbWJvLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaU1vSW5mb1VsdkNvbWJvQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBJbnB1dCgpIHVsdkFkYXB0ZXI6IHtcclxuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbiAgICAgICAgU2V0dGluZzoge1xyXG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbiAgICAgICAgICAgIFZpZXc6IFZpZXdUeXBlcztcclxuICAgICAgICAgICAgQ2xhc3NOYW1lczogQ2xhc3NOYW1lc01vZGVsO1xyXG4gICAgICAgICAgICBFeHRyYTogUmVwb3J0RXh0cmFJbmZvO1xyXG4gICAgICAgICAgICBEYXRhOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgQ29udHJvbDogYW55O1xyXG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBhbnk7XHJcbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBmZENvbWJvUmVmOiBDb21ib2JveENvbXBvbmVudDtcclxuXHJcbiAgICBASW5wdXQoKSBzZXQgVWx2VWkodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuX1VsdlVpID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhbHVlLnZpZXdlckNvbnRyb2wub24oe1xyXG4gICAgICAgICAgICAgICAgTW9EYXRhTGlzdENoYW5nZWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgVWx2VWkoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fVWx2VWk7XHJcbiAgICB9XHJcblxyXG4gICAgX1VsdlVpOiBhbnk7XHJcbiAgICBpc0V4cGFuZDogYm9vbGVhbjtcclxuICAgIHNtYXJ0Q2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICB0aWNrUmVmOiBhbnk7XHJcbiAgICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpc0ZpcnN0TG9hZDogYm9vbGVhbjtcclxuICAgIHBvcG92ZXJFbGVtZW50OiBhbnk7XHJcbiAgICByYXdWYWx1ZTogc3RyaW5nO1xyXG4gICAgZm9ybVNlbGVjdGlvbkRpYWxvZzogRGlhbG9nUmVmO1xyXG4gICAgaXNPcGVuU2VsZWN0aW9uRGlhbG9nOiBib29sZWFuO1xyXG4gICAgaGFzUmVwb3J0OiBhbnk7XHJcbiAgICBvcmlnaW5hbFZhbHVlOiBhbnk7XHJcbiAgICBpc0RhdGFMb2FkZWRGaXJzdFRpbWU6IGJvb2xlYW47XHJcbiAgICB2YWx1ZVRleHQ6IHN0cmluZztcclxuICAgIGFsbENvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSA9IFtdO1xyXG4gICAgaGFzVmFsdWU6IGJvb2xlYW47XHJcbiAgICBjb21ib2JveElkOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX2Nsb3NlRGlhbG9nU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX2xvYWRpbmdTb3VyY2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleURvd24oZSk6IHZvaWQge1xyXG4gICAgICAgIGUgPSBuZXcgQmFyc2FBcGkuRXh0LkV2ZW50T2JqZWN0SW1wbChlKTtcclxuICAgICAgICBjb25zdCBrID0gZS5nZXRLZXkoKTtcclxuICAgICAgICBpZiAoZS5rZXlDb2RlID09PSBlLkVOVEVSIHx8IGsgPT09IEJhcnNhQXBpLkV4dC5FdmVudE9iamVjdC5UQUIpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgna2V5ZG93bicsIHRoaXMuY29udGV4dCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hbHQnLCBbJyRldmVudCddKVxyXG4gICAgb25BbHQoZSk6IHZvaWQge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb21ib2JveElkID0gZ2V0VW5pcXVlSWQoMyk7XHJcbiAgICAgICAgdGhpcy5fY2hlY2tIYXNWYWx1ZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmckID0gdGhpcy5fbG9hZGluZ1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZpcnN0VGltZSA9XHJcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy51bHZBZGFwdGVyPy5TZXR0aW5nPy5EYXRhPy5Nb0RhdGFMaXN0ID09PSAnb2JqZWN0JyB8fFxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuVWx2VWk/LlNldHRpbmc/LkRhdGE/Lk1vRGF0YUxpc3QgPT09ICdvYmplY3QnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc21hcnRDaGFuZ2VcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHRoaXMuX2ZpbHRlclNtYXJ0Q2hhbmdlKHZhbHVlKSksXHJcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCh2YWx1ZSkgPT4gKHRoaXMucmF3VmFsdWUgPSB2YWx1ZSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1NtYXJ0Q2hhbmdlJywgdGhpcy5jb250ZXh0LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX29wZW5Qb3B1cEZvcm1TZWxlY3Rpb25Tb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Nsb3NlRGlhbG9nU291cmNlKSxcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uKCkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICB0aGlzLmhhc1JlcG9ydCA9IHRoaXMuU2V0dGluZy5SZWxhdGlvblZpZXdUeXBlID09PSAnUmVwb3J0VmlldycgfHwgdGhpcy5TZXR0aW5nLlJlcG9ydE5hbWUgPT09ICdIaWVyYXJjaGljYWwnO1xyXG4gICAgICAgIHRoaXMuQ29udHJvbCA9IHRoaXM7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlVGV4dCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG9uUGFnaW5nQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcclxuICAgIH1cclxuICAgIG9uUGFnZUNoYW5nZShlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuVWx2VWkpIHtcclxuICAgICAgICAgICAgdGhpcy5VbHZVaS5maXJlRXZlbnQoJ1BhZ2VDaGFuZ2UnLCB0aGlzLlVsdlVpLCBlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVsdkFkYXB0ZXIuRGF0YUN0cmxyLk1vdmVUb1BhZ2UoZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25JdGVtQ2xpY2soZTogQ29tYm9ib3hJdGVtLCBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVJdGVtU2VsZWN0KG1vRGF0YUxpc3QsIGUuaXRlbSk7XHJcbiAgICB9XHJcbiAgICBvblBhZ2VDaGFuZ2UyKHBhZ2VTZXR0aW5nOiBQYWdpbmdTZXR0aW5nLCBlKTogdm9pZCB7XHJcbiAgICAgICAgUHJldmVudERlZmF1bEV2ZW50KGUpO1xyXG4gICAgICAgIGlmICghdGhpcy51bHZBZGFwdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuVWx2VWkuZmlyZUV2ZW50KCdQYWdlQ2hhbmdlJywgdGhpcy5VbHZVaSwgcGFnZVNldHRpbmcuUGFnZSArIDEpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dCh0cnVlKTtcclxuICAgICAgICBjb25zdCB1bHZBZGFwdGVyID0gdGhpcy51bHZBZGFwdGVyO1xyXG4gICAgICAgIGNvbnN0IHRlbXAxID0gdWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuTW9EYXRhTGlzdDtcclxuICAgICAgICB0ZW1wMS5zcGxpY2UodGVtcDEubGVuZ3RoIC0gMSwgMSk7XHJcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdE9sZCA9IFsuLi50ZW1wMV07XHJcbiAgICAgICAgbW9EYXRhTGlzdE9sZC5mb3JFYWNoKChjKSA9PiAoYy4kX19Jc0xhc3QgPSBmYWxzZSkpO1xyXG4gICAgICAgIHRoaXMudWx2QWRhcHRlci5EYXRhQ3RybHIuTW92ZVRvUGFnZShwYWdlU2V0dGluZy5QYWdlICsgMSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSB1bHZBZGFwdGVyLlNldHRpbmcuRGF0YS5Nb0RhdGFMaXN0O1xyXG4gICAgICAgICAgICBtb0RhdGFMaXN0LnNwbGljZSgwLCAwLCAuLi5tb0RhdGFMaXN0T2xkKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG9uT3BlbkNoYW5nZShmZENvbWJvYm94LCBpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzKCk7XHJcbiAgICAgICAgICAgIC8vIGZkQ29tYm9ib3gub3BlbiA9IGZhbHNlOyAvLyBpdCBjbG9zZSBwb3B1cCB3aGVuIGNsaWNrIG9uIGRyb3Bkb3duIGJ1dHRvbiBpbiBjb21wb25lbnRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dFRleHQgPSB0aGlzLmZkQ29tYm9SZWY/LmlucHV0VGV4dFZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUgJiYgaW5wdXRUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yYWlzZVNtYXJ0Q2hhbmdlKGlucHV0VGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbklucHV0Q2hhbmdlKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yYWlzZVNtYXJ0Q2hhbmdlKGUpO1xyXG4gICAgfVxyXG4gICAgb25JbnB1dENoYW5nZTIoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JhaXNlU21hcnRDaGFuZ2UoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgb25WYWx1ZUNoYW5nZShlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmFpc2VWYWx1ZUNoYW5nZWQoZS50YXJnZXQudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgb25OZXcoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdOZXcnKTtcclxuICAgIH1cclxuICAgIG9uQ2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdEZWxldGUnKTtcclxuICAgIH1cclxuICAgIG9uRWRpdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2soJ0VkaXQnKTtcclxuICAgIH1cclxuICAgIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGljaygnUG9wdXAnKTtcclxuICAgIH1cclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBjdXN0b21GaWx0ZXIoY29udGVudDogYW55W10sIHNlYXJjaFRlcm06IHN0cmluZyk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5RnVuYyA9IChvYmo6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcclxuICAgICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLmdldEZpcnN0Q29sdW1uTmFtZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRNb1ZhbHVlQ2FwdGlvbihvYmosIGNvbE5hbWUsIG9iai4kQ2FwdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH07XHJcbiAgICBnZXRNb1ZhbHVlQ2FwdGlvbih2YWx1ZU1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCwgY29sTmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbHVlTW8gPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNhcHRpb25WYWx1ZU1vO1xyXG4gICAgICAgIGNvbnN0IG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHRoaXMudWx2QWRhcHRlcixcclxuICAgICAgICAgICAgJ1NldHRpbmcuRGF0YS5Nb0RhdGFMaXN0JyxcclxuICAgICAgICAgICAgW11cclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGZvdW5kZWRNbyA9IG1vbGlzdC5maW5kKChjKSA9PiBjLklkID09PSB2YWx1ZU1vLklkKTtcclxuICAgICAgICBpZiAoY29sTmFtZSAmJiBmb3VuZGVkTW8gJiYgZm91bmRlZE1vW2NvbE5hbWVdKSB7XHJcbiAgICAgICAgICAgIGlmIChmb3VuZGVkTW9bY29sTmFtZSArICckQ2FwdGlvbiddKSB7XHJcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsdWVNbyA9IGZvdW5kZWRNb1tjb2xOYW1lICsgJyRDYXB0aW9uJ107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRlZE1vW2NvbE5hbWVdLiRDYXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsdWVNbyA9IGZvdW5kZWRNb1tjb2xOYW1lXS4kQ2FwdGlvbjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhcHRpb25WYWx1ZU1vID0gZm91bmRlZE1vW2NvbE5hbWVdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybShjYXB0aW9uVmFsdWVNbyB8fCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZ2V0Rmlyc3RDb2x1bW5OYW1lKCkge1xyXG4gICAgICAgIGxldCBjb2xOYW1lID0gJyRDYXB0aW9uJztcclxuICAgICAgICBpZiAodGhpcy5VbHZNYWluQ3RybHIgJiYgdGhpcy5VbHZNYWluQ3RybHI/LkRkPy5TZXR0aW5nPy5WaWV3KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlVsdk1haW5DdHJsci5EZC5TZXR0aW5nLlZpZXcuQ29sdW1ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDb2wgPSB0aGlzLlVsdk1haW5DdHJsci5EZC5TZXR0aW5nLlZpZXcuQ29sdW1ucy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChjKSA9PiAhYy5OYW1lLnN0YXJ0c1dpdGgoJyQnKSAmJiBjLk5hbWUgIT09ICdJZCdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RDb2w/Lk5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xOYW1lID0gZmlyc3RDb2wuTmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29sTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgSXNFeHBhbmRlZCA9ICh0eXBlKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdEZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5mZENvbWJvUmVmPy5wb3BvdmVyQ29tcG9uZW50Py5pc09wZW47XHJcbiAgICB9O1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuY29tYm9SZWYubmF0aXZlRWxlbWVudC5yZXNwb25zaXZlUG9wb3Zlci5pc09wZW4oKTtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBASW5wdXQoKSBDb2xsYXBzZSA9ICh0eXBlKSA9PiB7fTtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBASW5wdXQoKSBFeHBhbmQgPSAodHlwZSkgPT4ge1xyXG4gICAgICAgIHRoaXMudWx2QWRhcHRlciA9IHRoaXMuVWx2TWFpbkN0cmxyW3R5cGVdO1xyXG4gICAgfTtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBASW5wdXQoKSBvbiA9ICgpID0+IHt9O1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIEZvY3VzID0gKCkgPT4ge307XHJcbiAgICBASW5wdXQoKVxyXG4gICAgU2V0VWx2QWRhcHRlciA9ICh0eXBlLCB1bHZBZGFwdGVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy51bHZBZGFwdGVyID0gdWx2QWRhcHRlcjtcclxuICAgICAgICB0aGlzLl9zZXRDb2x1bW5zKCk7XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIH07XHJcbiAgICBASW5wdXQoKVxyXG4gICAgSXNVaUNyZWF0ZWQgPSAodHlwZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICB9O1xyXG4gICAgQElucHV0KClcclxuICAgIE1hc2sgPSAodHlwZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dCh0cnVlKTtcclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBoaWRlID0gKHR5cGUpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtU2VsZWN0aW9uRGlhbG9nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVNlbGVjdGlvbkRpYWxvZy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzaG93ID0gKHR5cGUpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5VbHZVaSAmJiAhdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgJiYgdGhpcy5jb250ZXh0Ll9zaG93UG9wdXApIHtcclxuICAgICAgICAgICAgdGhpcy5fb3BlblBvcHVwRm9ybVNlbGVjdGlvblNvdXJjZS5uZXh0KCk7IC8vIHJhYmV0ZSB0YWtpIGdlbmVyYWwgaW5mbyAucG9wdXAgYmF6IG1pc2hvZCBrZSBiYWlhZCBkcm9wZG93biBiYXNoZS5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZkQ29tYm9SZWYgJiYgKHRoaXMuZmRDb21ib1JlZi5vcGVuID0gdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICB9O1xyXG4gICAgQElucHV0KClcclxuICAgIFVubWFzayA9ICh0eXBlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXRSYXdWYWx1ZSA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZTtcclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgX2hhbmRsZUl0ZW1TZWxlY3QobW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIG1vRGF0YUxpc3QuZm9yRWFjaCgoYykgPT4gKGMuJElzQ2hlY2tlZCA9IGZhbHNlKSk7XHJcbiAgICAgICAgdGhpcy5fZmlyZVZhbHVlQ2hhbmdlKG1vKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NldFZhbHVlVGV4dCh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fY2hlY2tIYXNWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgc3VwZXIuX3NldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAvLyB0aGlzLl9zZXRDb21ib1RleHQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9jaGVja0hhc1ZhbHVlKHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zZXRWYWx1ZVRleHQodmFsdWUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlVGV4dCA9IHRoaXMuX2dldFZhbHVlVGV4dCh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fc2V0Q29tYm9UZXh0KHRoaXMudmFsdWVUZXh0KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZ2V0VmFsdWVUZXh0KHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLiRDYXB0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiB2YWx1ZSAmJiB0aGlzLlVsdk1haW5DdHJsciAmJiB0aGlzLlVsdk1haW5DdHJsci5EZCkge1xyXG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5VbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3O1xyXG4gICAgICAgICAgICBsZXQgY29sTmFtZSA9ICckQ2FwdGlvbic7XHJcbiAgICAgICAgICAgIGlmICh2aWV3LkNvbHVtbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdmlldy5Db2x1bW5zLmZpbmQoKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJyk7XHJcbiAgICAgICAgICAgICAgICBjb2xOYW1lID0gZmlyc3RDb2w/Lk5hbWUgPyBmaXJzdENvbC5OYW1lIDogJyRDYXB0aW9uJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0Q29tYm9UZXh0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIC8vIHRoaXMuX3ZhbHVlTW8gPSBudWxsO1xyXG4gICAgICAgIC8vdGhpcy5mZENvbWJvUmVmLmlucHV0VGV4dFZhbHVlID0gJyc7XHJcbiAgICAgICAgLy90aGlzLmZkQ29tYm9SZWYuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY29uc3QgZmRDb21ib1JlZiA9IHRoaXMuZmRDb21ib1JlZjtcclxuICAgICAgICBjb25zdCBpbnB1dFRleHQgPSBmZENvbWJvUmVmPy5pbnB1dFRleHRWYWx1ZTtcclxuICAgICAgICBpZiAoZmRDb21ib1JlZiAmJiB2YWx1ZSAhPSBpbnB1dFRleHQpIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgVWx2TWFpbkN0cmxyID0gdGhpcy5VbHZNYWluQ3RybHI7XHJcbiAgICAgICAgICAgIC8vIGlmIChVbHZNYWluQ3RybHIgJiYgVWx2TWFpbkN0cmxyLkRkKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zdCB2aWV3ID0gVWx2TWFpbkN0cmxyLkRkLlNldHRpbmcuVmlldztcclxuICAgICAgICAgICAgLy8gICAgIGxldCBjb2xOYW1lID0gJyRDYXB0aW9uJztcclxuICAgICAgICAgICAgLy8gICAgIGlmICh2aWV3LkNvbHVtbnMpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICBjb25zdCBmaXJzdENvbCA9IHZpZXcuQ29sdW1ucy5maW5kKChjKSA9PiAhYy5OYW1lLnN0YXJ0c1dpdGgoJyQnKSAmJiBjLk5hbWUgIT09ICdJZCcpO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbE5hbWUgPSBmaXJzdENvbD8uTmFtZSA/IGZpcnN0Q29sLk5hbWUgOiAnJENhcHRpb24nO1xyXG4gICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgdmFsdWUgPSB0aGlzLmdldE1vVmFsdWVDYXB0aW9uKHRoaXMuX3ZhbHVlTW8sIGNvbE5hbWUsIHZhbHVlKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBmZENvbWJvUmVmLmlucHV0VGV4dCA9IHZhbHVlID8gdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0odmFsdWUpICsgJycgOiAnJztcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX29wZW5Qb3B1cEZvcm1TZWxlY3Rpb24oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuVWx2VWkudmlld2VyQ29udHJvbC5TaG93T2tDYW5jZWxCdXR0b25zID0gdHJ1ZTsgLy8gdGhpcyBpcyB1c2VmdWwgdG8gdWx2IG1hbmFnZSB0b29sYmFyIGJ1dHRvbnMuZm9yIGV4YW1wbGUgbW92ZSBpbiB0cmVlIGRvZXMgbm90IHNob3duXHJcbiAgICAgICAgdGhpcy5mb3JtU2VsZWN0aW9uRGlhbG9nID0gQmFyc2FBcGkuQncuVWx2Rm9ybU11bHRpU2VsZWN0LlNob3codGhpcy5jb250ZXh0LCB7XHJcbiAgICAgICAgICAgIHVsdjE6IHRoaXMuVWx2VWksXHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybSgnU2VsZWN0JyksXHJcbiAgICAgICAgICAgIElzTG9hZGVkOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuU2VsZWN0aW9uRGlhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclNtYXJ0Q2hhbmdlKHZhbHVlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGNhblJlcXVlc3QgPSAodGhpcy51bHZBZGFwdGVyIHx8IHRoaXMuVWx2VWkpICYmIHZhbHVlICE9PSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIC8vIGlmIChjYW5SZXF1ZXN0KSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnN0IG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLnVsdkFkYXB0ZXIsXHJcbiAgICAgICAgLy8gICAgICAgICAnU2V0dGluZy5EYXRhLk1vRGF0YUxpc3QnLFxyXG4gICAgICAgIC8vICAgICAgICAgW11cclxuICAgICAgICAvLyAgICAgKTtcclxuICAgICAgICAvLyAgICAgaWYgKCFtb2xpc3QpIHtcclxuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLmdldEZpcnN0Q29sdW1uTmFtZSgpO1xyXG5cclxuICAgICAgICAvLyAgICAgY29uc3QgZmluZE1vID0gbW9saXN0LmZpbmQoKG1vKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBjYXB0aW9uID0gdGhpcy5nZXRNb1ZhbHVlQ2FwdGlvbihtbywgY29sTmFtZSwgbW8uJENhcHRpb24pO1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIGNhcHRpb24gPT09IHZhbHVlO1xyXG4gICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAvLyAgICAgaWYgKGZpbmRNbykge1xyXG4gICAgICAgIC8vICAgICAgICAgY2FuUmVxdWVzdCA9IGZhbHNlO1xyXG4gICAgICAgIC8vICAgICAgICAgLy90aGlzLl9maXJlVmFsdWVDaGFuZ2UoZmluZE1vKTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICByZXR1cm4gY2FuUmVxdWVzdDtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0Q29sdW1ucygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB1bHZBZGFwdGVyID0gdGhpcy51bHZBZGFwdGVyO1xyXG4gICAgICAgIGNvbnN0IHZpZXcgPSA8R3JpZFZpZXc+dWx2QWRhcHRlcj8uU2V0dGluZz8uVmlldztcclxuICAgICAgICBpZiAodmlldyAmJiB2aWV3LkNvbHVtbnM/Lmxlbmd0aCAmJiB0aGlzLmFsbENvbHVtbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsQ29sdW1ucyA9IHZpZXcuQ29sdW1ucy5maWx0ZXIoKGMpID0+IE51bWJlcihjLk1ldGFGaWVsZFR5cGVJZCkgPiAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2ZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGljaygnTm9ybWFsJyk7XHJcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmFpc2VTbWFydENoYW5nZSh2YWx1ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc21hcnRDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF90cmlnZ2VyQ2xpY2soZXZlbnROYW1lLCB2YWx1ZSA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdUcmlnZ2VyQ2xpY2snLCB0aGlzLmNvbnRleHQsIGV2ZW50TmFtZSwgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmFpc2VWYWx1ZUNoYW5nZWQoY2FwdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjYXB0aW9uO1xyXG4gICAgICAgIGNvbnN0IG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHRoaXMudWx2QWRhcHRlcixcclxuICAgICAgICAgICAgJ1NldHRpbmcuRGF0YS5Nb0RhdGFMaXN0JyxcclxuICAgICAgICAgICAgW11cclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghbW9saXN0IHx8IG1vbGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2NvbnN0IGNvbE5hbWUgPSB0aGlzLmdldEZpcnN0Q29sdW1uTmFtZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBtbyA9IG1vbGlzdC5maW5kKChjKSA9PiBjLiRDYXB0aW9uID09PSBpbnB1dFZhbHVlKTtcclxuICAgICAgICBpZiAoIW1vKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9saXN0LmZvckVhY2goKGMpID0+IChjLiRJc0NoZWNrZWQgPSBmYWxzZSkpO1xyXG5cclxuICAgICAgICB0aGlzLl9maXJlVmFsdWVDaGFuZ2UobW8pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXJlVmFsdWVDaGFuZ2UobW8pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gbW87XHJcbiAgICAgICAgbW8uJElzQ2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fc2V0VmFsdWVUZXh0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIC8vIHRoaXMuX3NldENvbWJvVGV4dChtby4kQ2FwdGlvbik7XHJcbiAgICAgICAgLy8gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAodGhpcy5VbHZVaSkge1xyXG4gICAgICAgICAgICB0aGlzLlVsdlVpLnZpZXdlckNvbnRyb2wuZmlyZUV2ZW50KCdyb3djbGljaycsIHRoaXMuVWx2VWksIDAsIG1vKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudWx2QWRhcHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnVsdkFkYXB0ZXIuVmlld2VyQWRhcHRlci5maXJlRXZlbnQoXHJcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5VbC5VbHZNYWluQ3RybHIuRXZlbnRFbnVtLkl0ZW1DbGljayxcclxuICAgICAgICAgICAgICAgIHRoaXMudWx2QWRhcHRlci5WaWV3ZXJBZGFwdGVyXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuX3RyaWdnZXJDbGljaygnSXRlbVNlbGVjdCcsIHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXJcclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgY29tYm9UZW1wbGF0ZTtcclxuICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICRpbXBsaWNpdDpcclxuICAgICAgICAgICAgICAgIChsb2FkaW5nJCB8IGFzeW5jKSA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfCBtb0luZm9VbHZNb0xpc3RcclxuICAgICAgICAgICAgICAgICAgICA6IGlzRGF0YUxvYWRlZEZpcnN0VGltZVxyXG4gICAgICAgICAgICAgICAgICAgIDogdWx2QWRhcHRlcj8uU2V0dGluZz8uRGF0YT8uTW9EYXRhTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIDogVWx2VWk/LlNldHRpbmc/LkRhdGE/Lk1vRGF0YUxpc3RcclxuICAgICAgICAgICAgICAgICAgICA6IHVsdkFkYXB0ZXI/LlNldHRpbmc/LkRhdGE/LlBhZ2luZ1xyXG4gICAgICAgICAgICAgICAgICAgIDogVWx2VWk/LlNldHRpbmc/LkRhdGE/LlBhZ2luZyxcclxuICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSQgfCBhc3luYyxcclxuICAgICAgICAgICAgZGlzYWJsZU9yUmVhZG9ubHk6IGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jLFxyXG4gICAgICAgICAgICBkaXNhYmxlOiBkaXNhYmxlJCB8IGFzeW5jLFxyXG4gICAgICAgICAgICByZWFkb25seTogcmVhZG9ubHkkIHwgYXN5bmMsXHJcbiAgICAgICAgICAgIGlzU2VhcmNoOiBjb250ZXh0Ll9zaG93UG9wdXAgfHwgY29udGV4dC5fc2hvd0Ryb3BEb3duID09PSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgIFwiXHJcbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2J0bnNUcGwgbGV0LWRpc2FibGVPclJlYWRvbmx5PVwiZGlzYWJsZU9yUmVhZG9ubHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJleHRyYS1idXR0b25zIGZkLWlucHV0LWdyb3VwIGZkLWlucHV0LWdyb3VwLS1jb250cm9sXCIgY29udGVudERlbnNpdHk+XHJcbiAgICAgICAgQGlmIChoYXNWYWx1ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24gY29tYm8tcG9wdXAtYnRuXCIgZmQtaW5wdXQtZ3JvdXAtYWRkb24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkNsZWFyKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAaWYgKCFoYXNWYWx1ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZSAmJiBTZXR0aW5nLlNob3dOZXdCdXR0b24pIHtcclxuICAgICAgICA8c3BhbiBmZC1pbnB1dC1ncm91cC1hZGRvbiBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIGNvbWJvLXBvcHVwLWJ0blwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGdseXBoPVwiYWRkXCIgKGNsaWNrKT1cIm9uTmV3KClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAaWYgKGhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIFNldHRpbmcuVmlld1JlbGF0ZWRGb3JtVHlwZSAhPT0gJ0hpZGUnKSB7XHJcbiAgICAgICAgPHNwYW4gZmQtaW5wdXQtZ3JvdXAtYWRkb24gY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiBjb21iby1wb3B1cC1idG5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cImVkaXRcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAaWYgKGNvbnRleHQuX3Nob3dQb3B1cCAmJiAhdmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUpIHtcclxuICAgICAgICA8c3BhbiBmZC1pbnB1dC1ncm91cC1hZGRvbiBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIGNvbWJvLXBvcHVwLWJ0blwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGdseXBoPVwic2VhcmNoXCIgKGNsaWNrKT1cIm9uU2VhcmNoKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZVxyXG4gICAgI2NvbWJvVGVtcGxhdGVcclxuICAgIGxldC1tb0RhdGFMaXN0XHJcbiAgICBsZXQtZGV2aWNlU2l6ZT1cImRldmljZVNpemVcIlxyXG4gICAgbGV0LWRpc2FibGVPclJlYWRvbmx5PVwiZGlzYWJsZU9yUmVhZG9ubHlcIlxyXG4gICAgbGV0LWRpc2FibGU9XCJkaXNhYmxlXCJcclxuICAgIGxldC1yZWFkb25seT1cInJlYWRvbmx5XCJcclxuICAgIGxldC1pc1NlYXJjaD1cImlzU2VhcmNoXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpbXBsZS1jb21iby13cmFwcGVyXCI+XHJcbiAgICAgICAgPGZkLWNvbWJvYm94XHJcbiAgICAgICAgICAgICNmZENvbWJvYm94XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29tYm8tbW8tdWx2XCJcclxuICAgICAgICAgICAgW2NsYXNzLmNhbkFkZF09XCIhaGFzVmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgU2V0dGluZy5TaG93TmV3QnV0dG9uXCJcclxuICAgICAgICAgICAgW2NsYXNzLmNhbkVkaXRdPVwiaGFzVmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWVcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZW9ycmVhZG9ubHldPVwiZGlzYWJsZU9yUmVhZG9ubHkgPT09IHRydWVcIlxyXG4gICAgICAgICAgICBbY29tYm9ib3hJZF09XCJjb21ib2JveElkXCJcclxuICAgICAgICAgICAgW2NsYXNzLmhhcy1WYWx1ZV09XCJoYXNWYWx1ZVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcclxuICAgICAgICAgICAgW21vYmlsZUNvbmZpZ109XCJtb2JpbGVDb25maWdcIlxyXG4gICAgICAgICAgICBbZmlsbE9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgIFtkcm9wZG93blZhbHVlc109XCJtb0RhdGFMaXN0XCJcclxuICAgICAgICAgICAgW2ZpbHRlckZuXT1cImN1c3RvbUZpbHRlclwiXHJcbiAgICAgICAgICAgIFtvcGVuT25LZXlib2FyZEV2ZW50XT1cInRydWVcIlxyXG4gICAgICAgICAgICBbYnlsaW5lXT1cImFsbENvbHVtbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgIFtpc1NlYXJjaF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJkaXNwbGF5RnVuY1wiXHJcbiAgICAgICAgICAgIFtzaG93RHJvcGRvd25CdXR0b25dPVwiY29udGV4dC5fc2hvd0Ryb3BEb3duICE9PSBmYWxzZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgIChpdGVtQ2xpY2tlZCk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIG1vRGF0YUxpc3QpXCJcclxuICAgICAgICAgICAgKGlucHV0VGV4dENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoZmRDb21ib2JveCwgJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvZmQtY29tYm9ib3g+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImJ0bnNUcGw7IGNvbnRleHQ6IHsgZGlzYWJsZU9yUmVhZG9ubHk6IHRoaXMuZGlzYWJsZU9yUmVhZG9ubHkgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT5cclxuICAgICAgICBAaWYgKGl0ZW0uJGlzTG9hZGluZykge1xyXG4gICAgICAgIDxkaXYgZmQtbGlzdC1jb250ZW50IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMjBweFwiPlxyXG4gICAgICAgICAgICA8YnN1LW1hc2sgW3NpemVdPVwiJ3MnXCIgW3RvcF09XCInMTBweCdcIj48L2JzdS1tYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtLiRMb2FkTW9yZSA/IGxvYWRNb3JlQnV0dG9uIDogc2hvd0l0ZW07IGNvbnRleHQ6IHsgdWx2OiB1bHZBZGFwdGVyIHx8IFVsdlVpIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkTW9yZUJ1dHRvbiBsZXQtdWx2PVwidWx2XCI+XHJcbiAgICAgICAgICAgIEBpZiAodWx2KSB7XHJcbiAgICAgICAgICAgIDxic3UtdWx2LXBhZ2luZ1xyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUGFnaW5nQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbcGFnaW5nU2V0dGluZ109XCJ1bHYuU2V0dGluZy5EYXRhLlBhZ2luZ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9ic3UtdWx2LXBhZ2luZz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcclxuICAgICAgICAqbmdJZj1cInVsdiAmJiB1bHYuU2V0dGluZy5EYXRhLlBhZ2luZy5QYWdlICsgMSA8IHVsdi5TZXR0aW5nLkRhdGEuUGFnaW5nLlRvdGFsUGFnZXNcIlxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJvblBhZ2VDaGFuZ2UyKHVsdi5TZXR0aW5nLkRhdGEuUGFnaW5nLCAkZXZlbnQpXCJcclxuICAgICAgICBbbGFiZWxdPVwiJ01vcmUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgPjwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0l0ZW0+XHJcbiAgICAgICAgICAgIEBpZiAoYWxsQ29sdW1ucz8ubGVuZ3RoICYmICFpdGVtLmlzRW1wdHkpIHsgQGlmICghaXRlbS4kX19Jc0xhc3QpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vaW5mb3VsdiBkZXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGlmIChpdGVtLiRJY29uKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGh1bWJuYWlsPjxmZC1pY29uIFtnbHlwaF09XCJpdGVtLiRJY29uXCI+PC9mZC1pY29uPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8ZGl2IGZkLWxpc3QtY29udGVudCBjbGFzcz1cIm1vaW5mb3VsdiBoYXNDb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPnt7IGFsbENvbHVtbnNbMF0uQWxpYXMgfCBydmFsOiBpdGVtOmFsbENvbHVtbnM6dHJ1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgQGlmIChhbGxDb2x1bW5zWzFdKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtYnlsaW5lIGNsYXNzPVwiYnlsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgYWxsQ29sdW1uc1sxXS5BbGlhcyB8IHJ2YWw6IGl0ZW06YWxsQ29sdW1uczp0cnVlIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBjb2x1bW4tZ2FwOiA4cHg7IGZsZXgtd3JhcDogd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBhbGxDb2x1bW5zOyB0cmFjayBjb2x1bW47IGxldCBpbmRleCA9ICRpbmRleCkgeyBAaWYgKGluZGV4ID4gMSkgeyBAaWYgKGNvbHVtbi5BbGlhc1xyXG4gICAgICAgICAgICAgICAgICAgIHwgcnZhbDogaXRlbTphbGxDb2x1bW5zOnRydWU7IGFzIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IGNvbHVtbi5BbGlhcyB9fTp7eyB2YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB9IH0gfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZSBbY2xhc3MubGlzdC1lbXB0eS1pdGVtXT1cIml0ZW0uaXNFbXB0eVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgaXRlbS5pc0VtcHR5ID8gKCdOb0RhdGEnIHwgYmJiVHJhbnNsYXRlKSA6IChpdGVtLiRNb0NhcHRpb24gfHwgaXRlbS4kQ2FwdGlvbiB8IGJiYlRyYW5zbGF0ZSkgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFHdkIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLHVCQUF1QixDQUFDO0FBRW5GLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsUUFBUSxFQU1SLGtCQUFrQixFQUdsQixXQUFXLEVBRWQsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUzlCLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFQakU7O1FBc0NJLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQWFwQyxlQUFVLEdBQXVCLEVBQUUsQ0FBQztRQUVwQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekIsa0NBQTZCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwRCx1QkFBa0IsR0FBRyxJQUFJLE9B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dExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIE9uSW5pdCxcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAsIHRha2VVbnRpbCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21ib2JveENvbXBvbmVudCwgQ29tYm9ib3hJdGVtLCBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEZpZWxkQmFzZUNvbXBvbmVudCxcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgUmVwb3J0RXh0cmFJbmZvLFxyXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcclxuICAgIENsYXNzTmFtZXNNb2RlbCxcclxuICAgIFZpZXdUeXBlcyxcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICBQcmV2ZW50RGVmYXVsRXZlbnQsXHJcbiAgICBQYWdpbmdTZXR0aW5nLFxyXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcclxuICAgIGdldFVuaXF1ZUlkLFxyXG4gICAgR3JpZFZpZXdcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLW1vLWluZm8tdWx2LWNvbWJvJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1tby1pbmZvLXVsdi1jb21iby5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1tby1pbmZvLXVsdi1jb21iby5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlNb0luZm9VbHZDb21ib0NvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBASW5wdXQoKSB1bHZBZGFwdGVyOiB7XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgICAgIFNldHRpbmc6IHtcclxuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgICAgICAgICBWaWV3OiBWaWV3VHlwZXM7XHJcbiAgICAgICAgICAgIENsYXNzTmFtZXM6IENsYXNzTmFtZXNNb2RlbDtcclxuICAgICAgICAgICAgRXh0cmE6IFJlcG9ydEV4dHJhSW5mbztcclxuICAgICAgICAgICAgRGF0YTogTW9Gb3JSZXBvcnRNb2RlbDtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIENvbnRyb2w6IGFueTtcclxuICAgIEBJbnB1dCgpIFVsdk1haW5DdHJscjogYW55O1xyXG4gICAgQFZpZXdDaGlsZChDb21ib2JveENvbXBvbmVudCkgZmRDb21ib1JlZjogQ29tYm9ib3hDb21wb25lbnQ7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IFVsdlVpKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9VbHZVaSA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB2YWx1ZS52aWV3ZXJDb250cm9sLm9uKHtcclxuICAgICAgICAgICAgICAgIE1vRGF0YUxpc3RDaGFuZ2VkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IFVsdlVpKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX1VsdlVpO1xyXG4gICAgfVxyXG5cclxuICAgIF9VbHZVaTogYW55O1xyXG4gICAgaXNFeHBhbmQ6IGJvb2xlYW47XHJcbiAgICBzbWFydENoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgdGlja1JlZjogYW55O1xyXG4gICAgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaXNGaXJzdExvYWQ6IGJvb2xlYW47XHJcbiAgICBwb3BvdmVyRWxlbWVudDogYW55O1xyXG4gICAgcmF3VmFsdWU6IHN0cmluZztcclxuICAgIGZvcm1TZWxlY3Rpb25EaWFsb2c6IERpYWxvZ1JlZjtcclxuICAgIGlzT3BlblNlbGVjdGlvbkRpYWxvZzogYm9vbGVhbjtcclxuICAgIGhhc1JlcG9ydDogYW55O1xyXG4gICAgb3JpZ2luYWxWYWx1ZTogYW55O1xyXG4gICAgaXNEYXRhTG9hZGVkRmlyc3RUaW1lOiBib29sZWFuO1xyXG4gICAgdmFsdWVUZXh0OiBzdHJpbmc7XHJcbiAgICBhbGxDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10gPSBbXTtcclxuICAgIGhhc1ZhbHVlOiBib29sZWFuO1xyXG4gICAgc2hvd0V4dHJhQnV0dG9ucyA9IHNpZ25hbChmYWxzZSk7XHJcbiAgICBjb21ib2JveElkOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX2Nsb3NlRGlhbG9nU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgX2xvYWRpbmdTb3VyY2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleURvd24oZSk6IHZvaWQge1xyXG4gICAgICAgIGUgPSBuZXcgQmFyc2FBcGkuRXh0LkV2ZW50T2JqZWN0SW1wbChlKTtcclxuICAgICAgICBjb25zdCBrID0gZS5nZXRLZXkoKTtcclxuICAgICAgICBpZiAoZS5rZXlDb2RlID09PSBlLkVOVEVSIHx8IGsgPT09IEJhcnNhQXBpLkV4dC5FdmVudE9iamVjdC5UQUIpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgna2V5ZG93bicsIHRoaXMuY29udGV4dCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hbHQnLCBbJyRldmVudCddKVxyXG4gICAgb25BbHQoZSk6IHZvaWQge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb21ib2JveElkID0gZ2V0VW5pcXVlSWQoMyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NoZWNrSGFzVmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuX2xvYWRpbmdTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWRGaXJzdFRpbWUgPVxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMudWx2QWRhcHRlcj8uU2V0dGluZz8uRGF0YT8uTW9EYXRhTGlzdCA9PT0gJ29iamVjdCcgfHxcclxuICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLlVsdlVpPy5TZXR0aW5nPy5EYXRhPy5Nb0RhdGFMaXN0ID09PSAnb2JqZWN0JztcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNtYXJ0Q2hhbmdlXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB0aGlzLl9maWx0ZXJTbWFydENoYW5nZSh2YWx1ZSkpLFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHRhcCgodmFsdWUpID0+ICh0aGlzLnJhd1ZhbHVlID0gdmFsdWUpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdTbWFydENoYW5nZScsIHRoaXMuY29udGV4dCwgdmFsdWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uU291cmNlXHJcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9jbG9zZURpYWxvZ1NvdXJjZSksXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fb3BlblBvcHVwRm9ybVNlbGVjdGlvbigpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgdGhpcy5oYXNSZXBvcnQgPSB0aGlzLlNldHRpbmcuUmVsYXRpb25WaWV3VHlwZSA9PT0gJ1JlcG9ydFZpZXcnIHx8IHRoaXMuU2V0dGluZy5SZXBvcnROYW1lID09PSAnSGllcmFyY2hpY2FsJztcclxuICAgICAgICB0aGlzLkNvbnRyb2wgPSB0aGlzO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZVRleHQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBvblBhZ2luZ0NsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBQcmV2ZW50RGVmYXVsRXZlbnQoZSk7XHJcbiAgICB9XHJcbiAgICBvblBhZ2VDaGFuZ2UoZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KHRydWUpO1xyXG4gICAgICAgIGlmICh0aGlzLlVsdlVpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuVWx2VWkuZmlyZUV2ZW50KCdQYWdlQ2hhbmdlJywgdGhpcy5VbHZVaSwgZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51bHZBZGFwdGVyLkRhdGFDdHJsci5Nb3ZlVG9QYWdlKGUsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG9uSXRlbUNsaWNrKGU6IENvbWJvYm94SXRlbSwgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlSXRlbVNlbGVjdChtb0RhdGFMaXN0LCBlLml0ZW0pO1xyXG4gICAgfVxyXG4gICAgb25QYWdlQ2hhbmdlMihwYWdlU2V0dGluZzogUGFnaW5nU2V0dGluZywgZSk6IHZvaWQge1xyXG4gICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcclxuICAgICAgICBpZiAoIXRoaXMudWx2QWRhcHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLlVsdlVpLmZpcmVFdmVudCgnUGFnZUNoYW5nZScsIHRoaXMuVWx2VWksIHBhZ2VTZXR0aW5nLlBhZ2UgKyAxKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgY29uc3QgdWx2QWRhcHRlciA9IHRoaXMudWx2QWRhcHRlcjtcclxuICAgICAgICBjb25zdCB0ZW1wMSA9IHVsdkFkYXB0ZXIuU2V0dGluZy5EYXRhLk1vRGF0YUxpc3Q7XHJcbiAgICAgICAgdGVtcDEuc3BsaWNlKHRlbXAxLmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3RPbGQgPSBbLi4udGVtcDFdO1xyXG4gICAgICAgIG1vRGF0YUxpc3RPbGQuZm9yRWFjaCgoYykgPT4gKGMuJF9fSXNMYXN0ID0gZmFsc2UpKTtcclxuICAgICAgICB0aGlzLnVsdkFkYXB0ZXIuRGF0YUN0cmxyLk1vdmVUb1BhZ2UocGFnZVNldHRpbmcuUGFnZSArIDEsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gdWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuTW9EYXRhTGlzdDtcclxuICAgICAgICAgICAgbW9EYXRhTGlzdC5zcGxpY2UoMCwgMCwgLi4ubW9EYXRhTGlzdE9sZCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBvbk9wZW5DaGFuZ2UoZmRDb21ib2JveCwgaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGlzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xyXG4gICAgICAgICAgICAvLyBmZENvbWJvYm94Lm9wZW4gPSBmYWxzZTsgLy8gaXQgY2xvc2UgcG9wdXAgd2hlbiBjbGljayBvbiBkcm9wZG93biBidXR0b24gaW4gY29tcG9uZW50XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXRUZXh0ID0gdGhpcy5mZENvbWJvUmVmPy5pbnB1dFRleHRWYWx1ZTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnZhbHVlICYmIGlucHV0VGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmFpc2VTbWFydENoYW5nZShpbnB1dFRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25JbnB1dENoYW5nZShlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmFpc2VTbWFydENoYW5nZShlKTtcclxuICAgIH1cclxuICAgIG9uSW5wdXRDaGFuZ2UyKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yYWlzZVNtYXJ0Q2hhbmdlKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuICAgIG9uVmFsdWVDaGFuZ2UoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JhaXNlVmFsdWVDaGFuZ2VkKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuICAgIG9uTmV3KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGljaygnTmV3Jyk7XHJcbiAgICB9XHJcbiAgICBvbkNsZWFyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGljaygnRGVsZXRlJyk7XHJcbiAgICB9XHJcbiAgICBvbkVkaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdFZGl0Jyk7XHJcbiAgICB9XHJcbiAgICBvblNlYXJjaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2soJ1BvcHVwJyk7XHJcbiAgICB9XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgY3VzdG9tRmlsdGVyKGNvbnRlbnQ6IGFueVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheUZ1bmMgPSAob2JqOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKG9iaikge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xOYW1lID0gdGhpcy5nZXRGaXJzdENvbHVtbk5hbWUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9WYWx1ZUNhcHRpb24ob2JqLCBjb2xOYW1lLCBvYmouJENhcHRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9O1xyXG4gICAgZ2V0TW9WYWx1ZUNhcHRpb24odmFsdWVNbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwsIGNvbE5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh2YWx1ZU1vID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjYXB0aW9uVmFsdWVNbztcclxuICAgICAgICBjb25zdCBtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICB0aGlzLnVsdkFkYXB0ZXIsXHJcbiAgICAgICAgICAgICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsXHJcbiAgICAgICAgICAgIFtdXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBmb3VuZGVkTW8gPSBtb2xpc3QuZmluZCgoYykgPT4gYy5JZCA9PT0gdmFsdWVNby5JZCk7XHJcbiAgICAgICAgaWYgKGNvbE5hbWUgJiYgZm91bmRlZE1vICYmIGZvdW5kZWRNb1tjb2xOYW1lXSkge1xyXG4gICAgICAgICAgICBpZiAoZm91bmRlZE1vW2NvbE5hbWUgKyAnJENhcHRpb24nXSkge1xyXG4gICAgICAgICAgICAgICAgY2FwdGlvblZhbHVlTW8gPSBmb3VuZGVkTW9bY29sTmFtZSArICckQ2FwdGlvbiddO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kZWRNb1tjb2xOYW1lXS4kQ2FwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FwdGlvblZhbHVlTW8gPSBmb3VuZGVkTW9bY29sTmFtZV0uJENhcHRpb247XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsdWVNbyA9IGZvdW5kZWRNb1tjb2xOYW1lXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0oY2FwdGlvblZhbHVlTW8gfHwgZGVmYXVsdFZhbHVlKTtcclxuICAgIH1cclxuICAgIGdldEZpcnN0Q29sdW1uTmFtZSgpIHtcclxuICAgICAgICBsZXQgY29sTmFtZSA9ICckQ2FwdGlvbic7XHJcbiAgICAgICAgaWYgKHRoaXMuVWx2TWFpbkN0cmxyICYmIHRoaXMuVWx2TWFpbkN0cmxyPy5EZD8uU2V0dGluZz8uVmlldykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5VbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3LkNvbHVtbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdGhpcy5VbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3LkNvbHVtbnMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAoYykgPT4gIWMuTmFtZS5zdGFydHNXaXRoKCckJykgJiYgYy5OYW1lICE9PSAnSWQnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0Q29sPy5OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sTmFtZSA9IGZpcnN0Q29sLk5hbWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvbE5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIElzRXhwYW5kZWQgPSAodHlwZSkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnRGQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmRDb21ib1JlZj8ucG9wb3ZlckNvbXBvbmVudD8uaXNPcGVuO1xyXG4gICAgfTtcclxuICAgIC8vIHJldHVybiB0aGlzLmNvbWJvUmVmLm5hdGl2ZUVsZW1lbnQucmVzcG9uc2l2ZVBvcG92ZXIuaXNPcGVuKCk7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgQ29sbGFwc2UgPSAodHlwZSkgPT4ge307XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgRXhwYW5kID0gKHR5cGUpID0+IHtcclxuICAgICAgICB0aGlzLnVsdkFkYXB0ZXIgPSB0aGlzLlVsdk1haW5DdHJsclt0eXBlXTtcclxuICAgIH07XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgb24gPSAoKSA9PiB7fTtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBASW5wdXQoKSBGb2N1cyA9ICgpID0+IHt9O1xyXG4gICAgQElucHV0KClcclxuICAgIFNldFVsdkFkYXB0ZXIgPSAodHlwZSwgdWx2QWRhcHRlcikgPT4ge1xyXG4gICAgICAgIHRoaXMudWx2QWRhcHRlciA9IHVsdkFkYXB0ZXI7XHJcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1ucygpO1xyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICB9O1xyXG4gICAgQElucHV0KClcclxuICAgIElzVWlDcmVhdGVkID0gKHR5cGUpID0+IHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBNYXNrID0gKHR5cGUpID0+IHtcclxuICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIH07XHJcbiAgICBASW5wdXQoKVxyXG4gICAgaGlkZSA9ICh0eXBlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVNlbGVjdGlvbkRpYWxvZykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1TZWxlY3Rpb25EaWFsb2cuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIH07XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2hvdyA9ICh0eXBlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuVWx2VWkgJiYgIXRoaXMuaXNPcGVuU2VsZWN0aW9uRGlhbG9nICYmIHRoaXMuY29udGV4dC5fc2hvd1BvcHVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29wZW5Qb3B1cEZvcm1TZWxlY3Rpb25Tb3VyY2UubmV4dCgpOyAvLyByYWJldGUgdGFraSBnZW5lcmFsIGluZm8gLnBvcHVwIGJheiBtaXNob2Qga2UgYmFpYWQgZHJvcGRvd24gYmFzaGUuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mZENvbWJvUmVmICYmICh0aGlzLmZkQ29tYm9SZWYub3BlbiA9IHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBVbm1hc2sgPSAodHlwZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIH07XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0UmF3VmFsdWUgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3VmFsdWU7XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIH07XHJcblxyXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVJdGVtU2VsZWN0KG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSwgbW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICBtb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IChjLiRJc0NoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgICAgIHRoaXMuX2ZpcmVWYWx1ZUNoYW5nZShtbyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3NldFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zZXRWYWx1ZVRleHQodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuX2NoZWNrSGFzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIHN1cGVyLl9zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fY2hlY2tTaG93RXh0cmFCdXR0b25zKCk7XHJcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29tYm9UZXh0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY2hlY2tTaG93RXh0cmFCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIGxldCBzaG93RXh0cmFCdXR0b3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dFeHRyYUJ1dHRvbnMuc2V0KGZhbHNlKTtcclxuICAgICAgICBpZiAodGhpcy5oYXNWYWx1ZSAmJiAhdGhpcy5pbmxpbmVFZGl0KSB7XHJcbiAgICAgICAgICAgIHNob3dFeHRyYUJ1dHRvcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSAmJiB0aGlzLlNldHRpbmcuU2hvd05ld0J1dHRvbikge1xyXG4gICAgICAgICAgICBzaG93RXh0cmFCdXR0b3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dFeHRyYUJ1dHRvbnMuc2V0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5oYXNWYWx1ZSAmJiB0aGlzLlNldHRpbmcuVmlld1JlbGF0ZWRGb3JtVHlwZSAhPT0gJ0hpZGUnKSB7XHJcbiAgICAgICAgICAgIHNob3dFeHRyYUJ1dHRvcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQuX3Nob3dQb3B1cCAmJiAhdGhpcy52YWx1ZSkge1xyXG4gICAgICAgICAgICBzaG93RXh0cmFCdXR0b3MgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dFeHRyYUJ1dHRvbnMuc2V0KHNob3dFeHRyYUJ1dHRvcyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NoZWNrSGFzVmFsdWUodmFsdWUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJyc7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3NldFZhbHVlVGV4dCh2YWx1ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0ID0gdGhpcy5fZ2V0VmFsdWVUZXh0KHZhbHVlKTtcclxuICAgICAgICB0aGlzLl9zZXRDb21ib1RleHQodGhpcy52YWx1ZVRleHQpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9nZXRWYWx1ZVRleHQodmFsdWUpIHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuJENhcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmIHZhbHVlICYmIHRoaXMuVWx2TWFpbkN0cmxyICYmIHRoaXMuVWx2TWFpbkN0cmxyLkRkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLlVsdk1haW5DdHJsci5EZC5TZXR0aW5nLlZpZXc7XHJcbiAgICAgICAgICAgIGxldCBjb2xOYW1lID0gJyRDYXB0aW9uJztcclxuICAgICAgICAgICAgaWYgKHZpZXcuQ29sdW1ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDb2wgPSB2aWV3LkNvbHVtbnMuZmluZCgoYykgPT4gIWMuTmFtZS5zdGFydHNXaXRoKCckJykgJiYgYy5OYW1lICE9PSAnSWQnKTtcclxuICAgICAgICAgICAgICAgIGNvbE5hbWUgPSBmaXJzdENvbD8uTmFtZSA/IGZpcnN0Q29sLk5hbWUgOiAnJENhcHRpb24nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zZXRDb21ib1RleHQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8vIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgLy8gdGhpcy5fdmFsdWVNbyA9IG51bGw7XHJcbiAgICAgICAgLy90aGlzLmZkQ29tYm9SZWYuaW5wdXRUZXh0VmFsdWUgPSAnJztcclxuICAgICAgICAvL3RoaXMuZmRDb21ib1JlZi5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBjb25zdCBmZENvbWJvUmVmID0gdGhpcy5mZENvbWJvUmVmO1xyXG4gICAgICAgIGNvbnN0IGlucHV0VGV4dCA9IGZkQ29tYm9SZWY/LmlucHV0VGV4dFZhbHVlO1xyXG4gICAgICAgIGlmIChmZENvbWJvUmVmICYmIHZhbHVlICE9IGlucHV0VGV4dCkge1xyXG4gICAgICAgICAgICAvLyBjb25zdCBVbHZNYWluQ3RybHIgPSB0aGlzLlVsdk1haW5DdHJscjtcclxuICAgICAgICAgICAgLy8gaWYgKFVsdk1haW5DdHJsciAmJiBVbHZNYWluQ3RybHIuRGQpIHtcclxuICAgICAgICAgICAgLy8gICAgIGNvbnN0IHZpZXcgPSBVbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3O1xyXG4gICAgICAgICAgICAvLyAgICAgbGV0IGNvbE5hbWUgPSAnJENhcHRpb24nO1xyXG4gICAgICAgICAgICAvLyAgICAgaWYgKHZpZXcuQ29sdW1ucykge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdmlldy5Db2x1bW5zLmZpbmQoKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJyk7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29sTmFtZSA9IGZpcnN0Q29sPy5OYW1lID8gZmlyc3RDb2wuTmFtZSA6ICckQ2FwdGlvbic7XHJcbiAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICB2YWx1ZSA9IHRoaXMuZ2V0TW9WYWx1ZUNhcHRpb24odGhpcy5fdmFsdWVNbywgY29sTmFtZSwgdmFsdWUpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGZkQ29tYm9SZWYuaW5wdXRUZXh0ID0gdmFsdWUgPyB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybSh2YWx1ZSkgKyAnJyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfb3BlblBvcHVwRm9ybVNlbGVjdGlvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmlzT3BlblNlbGVjdGlvbkRpYWxvZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5VbHZVaS52aWV3ZXJDb250cm9sLlNob3dPa0NhbmNlbEJ1dHRvbnMgPSB0cnVlOyAvLyB0aGlzIGlzIHVzZWZ1bCB0byB1bHYgbWFuYWdlIHRvb2xiYXIgYnV0dG9ucy5mb3IgZXhhbXBsZSBtb3ZlIGluIHRyZWUgZG9lcyBub3Qgc2hvd25cclxuICAgICAgICB0aGlzLmZvcm1TZWxlY3Rpb25EaWFsb2cgPSBCYXJzYUFwaS5Cdy5VbHZGb3JtTXVsdGlTZWxlY3QuU2hvdyh0aGlzLmNvbnRleHQsIHtcclxuICAgICAgICAgICAgdWx2MTogdGhpcy5VbHZVaSxcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKCdTZWxlY3QnKSxcclxuICAgICAgICAgICAgSXNMb2FkZWQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZmlsdGVyU21hcnRDaGFuZ2UodmFsdWUpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgY2FuUmVxdWVzdCA9ICh0aGlzLnVsdkFkYXB0ZXIgfHwgdGhpcy5VbHZVaSkgJiYgdmFsdWUgIT09IHRoaXMudmFsdWU7XHJcbiAgICAgICAgLy8gaWYgKGNhblJlcXVlc3QpIHtcclxuICAgICAgICAvLyAgICAgY29uc3QgbW9saXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMudWx2QWRhcHRlcixcclxuICAgICAgICAvLyAgICAgICAgICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsXHJcbiAgICAgICAgLy8gICAgICAgICBbXVxyXG4gICAgICAgIC8vICAgICApO1xyXG4gICAgICAgIC8vICAgICBpZiAoIW1vbGlzdCkge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgY29uc3QgY29sTmFtZSA9IHRoaXMuZ2V0Rmlyc3RDb2x1bW5OYW1lKCk7XHJcblxyXG4gICAgICAgIC8vICAgICBjb25zdCBmaW5kTW8gPSBtb2xpc3QuZmluZCgobW8pID0+IHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNhcHRpb24gPSB0aGlzLmdldE1vVmFsdWVDYXB0aW9uKG1vLCBjb2xOYW1lLCBtby4kQ2FwdGlvbik7XHJcbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gY2FwdGlvbiA9PT0gdmFsdWU7XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vICAgICBpZiAoZmluZE1vKSB7XHJcbiAgICAgICAgLy8gICAgICAgICBjYW5SZXF1ZXN0ID0gZmFsc2U7XHJcbiAgICAgICAgLy8gICAgICAgICAvL3RoaXMuX2ZpcmVWYWx1ZUNoYW5nZShmaW5kTW8pO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHJldHVybiBjYW5SZXF1ZXN0O1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zZXRDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHVsdkFkYXB0ZXIgPSB0aGlzLnVsdkFkYXB0ZXI7XHJcbiAgICAgICAgY29uc3QgdmlldyA9IDxHcmlkVmlldz51bHZBZGFwdGVyPy5TZXR0aW5nPy5WaWV3O1xyXG4gICAgICAgIGlmICh2aWV3ICYmIHZpZXcuQ29sdW1ucz8ubGVuZ3RoICYmIHRoaXMuYWxsQ29sdW1ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hbGxDb2x1bW5zID0gdmlldy5Db2x1bW5zLmZpbHRlcigoYykgPT4gTnVtYmVyKGMuTWV0YUZpZWxkVHlwZUlkKSA+IDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZm9jdXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdOb3JtYWwnKTtcclxuICAgICAgICB0aGlzLl9zZXRDb2x1bW5zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yYWlzZVNtYXJ0Q2hhbmdlKHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zbWFydENoYW5nZS5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXJDbGljayhldmVudE5hbWUsIHZhbHVlID0gbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1RyaWdnZXJDbGljaycsIHRoaXMuY29udGV4dCwgZXZlbnROYW1lLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yYWlzZVZhbHVlQ2hhbmdlZChjYXB0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGNhcHRpb247XHJcbiAgICAgICAgY29uc3QgbW9saXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLFxyXG4gICAgICAgICAgICAnU2V0dGluZy5EYXRhLk1vRGF0YUxpc3QnLFxyXG4gICAgICAgICAgICBbXVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKCFtb2xpc3QgfHwgbW9saXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vY29uc3QgY29sTmFtZSA9IHRoaXMuZ2V0Rmlyc3RDb2x1bW5OYW1lKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IG1vID0gbW9saXN0LmZpbmQoKGMpID0+IGMuJENhcHRpb24gPT09IGlucHV0VmFsdWUpO1xyXG4gICAgICAgIGlmICghbW8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtb2xpc3QuZm9yRWFjaCgoYykgPT4gKGMuJElzQ2hlY2tlZCA9IGZhbHNlKSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2ZpcmVWYWx1ZUNoYW5nZShtbyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2ZpcmVWYWx1ZUNoYW5nZShtbyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBtbztcclxuICAgICAgICBtby4kSXNDaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9zZXRWYWx1ZVRleHQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29tYm9UZXh0KG1vLiRDYXB0aW9uKTtcclxuICAgICAgICAvLyB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGlmICh0aGlzLlVsdlVpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuVWx2VWkudmlld2VyQ29udHJvbC5maXJlRXZlbnQoJ3Jvd2NsaWNrJywgdGhpcy5VbHZVaSwgMCwgbW8pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51bHZBZGFwdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudWx2QWRhcHRlci5WaWV3ZXJBZGFwdGVyLmZpcmVFdmVudChcclxuICAgICAgICAgICAgICAgIEJhcnNhQXBpLlVsLlVsdk1haW5DdHJsci5FdmVudEVudW0uSXRlbUNsaWNrLFxyXG4gICAgICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLlZpZXdlckFkYXB0ZXJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5fdHJpZ2dlckNsaWNrKCdJdGVtU2VsZWN0JywgdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICBjb21ib1RlbXBsYXRlO1xyXG4gICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgJGltcGxpY2l0OlxyXG4gICAgICAgICAgICAgICAgKGxvYWRpbmckIHwgYXN5bmMpID09PSB0cnVlXHJcbiAgICAgICAgICAgICAgICB8IG1vSW5mb1Vsdk1vTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIDogaXNEYXRhTG9hZGVkRmlyc3RUaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgOiB1bHZBZGFwdGVyPy5TZXR0aW5nPy5EYXRhPy5Nb0RhdGFMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgOiBVbHZVaT8uU2V0dGluZz8uRGF0YT8uTW9EYXRhTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIDogdWx2QWRhcHRlcj8uU2V0dGluZz8uRGF0YT8uUGFnaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgOiBVbHZVaT8uU2V0dGluZz8uRGF0YT8uUGFnaW5nLFxyXG4gICAgICAgICAgICBkZXZpY2VTaXplOiBkZXZpY2VTaXplJCB8IGFzeW5jLFxyXG4gICAgICAgICAgICBkaXNhYmxlT3JSZWFkb25seTogZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMsXHJcbiAgICAgICAgICAgIGRpc2FibGU6IGRpc2FibGUkIHwgYXN5bmMsXHJcbiAgICAgICAgICAgIHJlYWRvbmx5OiByZWFkb25seSQgfCBhc3luYyxcclxuICAgICAgICAgICAgaXNTZWFyY2g6IGNvbnRleHQuX3Nob3dQb3B1cCB8fCBjb250ZXh0Ll9zaG93RHJvcERvd24gPT09IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgXCJcclxuPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnRuc1RwbCBsZXQtZGlzYWJsZU9yUmVhZG9ubHk9XCJkaXNhYmxlT3JSZWFkb25seVwiPlxyXG4gICAgQGlmKCBzaG93RXh0cmFCdXR0b25zKCkgKXtcclxuICAgIDxkaXYgY2xhc3M9XCJleHRyYS1idXR0b25zIGZkLWlucHV0LWdyb3VwIGZkLWlucHV0LWdyb3VwLS1jb250cm9sXCIgY29udGVudERlbnNpdHk+XHJcbiAgICAgICAgQGlmIChoYXNWYWx1ZSAmJiAhaW5saW5lRWRpdCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24gY29tYm8tcG9wdXAtYnRuXCIgZmQtaW5wdXQtZ3JvdXAtYWRkb24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkNsZWFyKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAaWYgKCFoYXNWYWx1ZSAmJiBTZXR0aW5nLlNob3dOZXdCdXR0b24pIHtcclxuICAgICAgICA8c3BhbiBmZC1pbnB1dC1ncm91cC1hZGRvbiBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIGNvbWJvLXBvcHVwLWJ0blwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGdseXBoPVwiYWRkXCIgKGNsaWNrKT1cIm9uTmV3KClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAaWYgKGhhc1ZhbHVlICYmIFNldHRpbmcuVmlld1JlbGF0ZWRGb3JtVHlwZSAhPT0gJ0hpZGUnKSB7XHJcbiAgICAgICAgPHNwYW4gZmQtaW5wdXQtZ3JvdXAtYWRkb24gY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiBjb21iby1wb3B1cC1idG5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cImVkaXRcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSBAaWYgKGNvbnRleHQuX3Nob3dQb3B1cCAmJiAhdmFsdWUgKSB7XHJcbiAgICAgICAgPHNwYW4gZmQtaW5wdXQtZ3JvdXAtYWRkb24gY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiBjb21iby1wb3B1cC1idG5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cInNlYXJjaFwiIChjbGljayk9XCJvblNlYXJjaCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGVcclxuICAgICNjb21ib1RlbXBsYXRlXHJcbiAgICBsZXQtbW9EYXRhTGlzdFxyXG4gICAgbGV0LWRldmljZVNpemU9XCJkZXZpY2VTaXplXCJcclxuICAgIGxldC1kaXNhYmxlT3JSZWFkb25seT1cImRpc2FibGVPclJlYWRvbmx5XCJcclxuICAgIGxldC1kaXNhYmxlPVwiZGlzYWJsZVwiXHJcbiAgICBsZXQtcmVhZG9ubHk9XCJyZWFkb25seVwiXHJcbiAgICBsZXQtaXNTZWFyY2g9XCJpc1NlYXJjaFwiXHJcbj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaW1wbGUtY29tYm8td3JhcHBlclwiPlxyXG4gICAgICAgIDxmZC1jb21ib2JveFxyXG4gICAgICAgICAgICAjZmRDb21ib2JveFxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbWJvLW1vLXVsdlwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5jYW5BZGRdPVwiIWhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIFNldHRpbmcuU2hvd05ld0J1dHRvblwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5jYW5FZGl0XT1cImhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVvcnJlYWRvbmx5XT1cImRpc2FibGVPclJlYWRvbmx5ID09PSB0cnVlXCJcclxuICAgICAgICAgICAgW2NsYXNzLnNob3dFeHRyYUJ1dHRvbnNdPVwiZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgc2hvd0V4dHJhQnV0dG9ucygpXCJcclxuICAgICAgICAgICAgW2NvbWJvYm94SWRdPVwiY29tYm9ib3hJZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5oYXMtVmFsdWVdPVwiaGFzVmFsdWVcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbbW9iaWxlXT1cImRldmljZVNpemUgPT09ICdzJ1wiXHJcbiAgICAgICAgICAgIFttb2JpbGVDb25maWddPVwibW9iaWxlQ29uZmlnXCJcclxuICAgICAgICAgICAgW2ZpbGxPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGUgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwibW9EYXRhTGlzdFwiXHJcbiAgICAgICAgICAgIFtmaWx0ZXJGbl09XCJjdXN0b21GaWx0ZXJcIlxyXG4gICAgICAgICAgICBbb3Blbk9uS2V5Ym9hcmRFdmVudF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2J5bGluZV09XCJhbGxDb2x1bW5zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICBbaXNTZWFyY2hdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiZGlzcGxheUZ1bmNcIlxyXG4gICAgICAgICAgICBbc2hvd0Ryb3Bkb3duQnV0dG9uXT1cImNvbnRleHQuX3Nob3dEcm9wRG93biAhPT0gZmFsc2UgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWVcIlxyXG4gICAgICAgICAgICAoaXRlbUNsaWNrZWQpPVwib25JdGVtQ2xpY2soJGV2ZW50LCBtb0RhdGFMaXN0KVwiXHJcbiAgICAgICAgICAgIChpbnB1dFRleHRDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKGZkQ29tYm9ib3gsICRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2ZkLWNvbWJvYm94PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidG5zVHBsOyBjb250ZXh0OiB7IGRpc2FibGVPclJlYWRvbmx5OiB0aGlzLmRpc2FibGVPclJlYWRvbmx5IH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGUgbGV0LWl0ZW0+XHJcbiAgICAgICAgQGlmIChpdGVtLiRpc0xvYWRpbmcpIHtcclxuICAgICAgICA8ZGl2IGZkLWxpc3QtY29udGVudCBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDIwcHhcIj5cclxuICAgICAgICAgICAgPGJzdS1tYXNrIFtzaXplXT1cIidzJ1wiIFt0b3BdPVwiJzEwcHgnXCI+PC9ic3UtbWFzaz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbS4kTG9hZE1vcmUgPyBsb2FkTW9yZUJ1dHRvbiA6IHNob3dJdGVtOyBjb250ZXh0OiB7IHVsdjogdWx2QWRhcHRlciB8fCBVbHZVaSB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZE1vcmVCdXR0b24gbGV0LXVsdj1cInVsdlwiPlxyXG4gICAgICAgICAgICBAaWYgKHVsdikge1xyXG4gICAgICAgICAgICA8YnN1LXVsdi1wYWdpbmdcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblBhZ2luZ0NsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3BhZ2luZ1NldHRpbmddPVwidWx2LlNldHRpbmcuRGF0YS5QYWdpbmdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvYnN1LXVsdi1wYWdpbmc+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXHJcbiAgICAgICAgKm5nSWY9XCJ1bHYgJiYgdWx2LlNldHRpbmcuRGF0YS5QYWdpbmcuUGFnZSArIDEgPCB1bHYuU2V0dGluZy5EYXRhLlBhZ2luZy5Ub3RhbFBhZ2VzXCJcclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwib25QYWdlQ2hhbmdlMih1bHYuU2V0dGluZy5EYXRhLlBhZ2luZywgJGV2ZW50KVwiXHJcbiAgICAgICAgW2xhYmVsXT1cIidNb3JlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgID48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dJdGVtPlxyXG4gICAgICAgICAgICBAaWYgKGFsbENvbHVtbnM/Lmxlbmd0aCAmJiAhaXRlbS5pc0VtcHR5KSB7IEBpZiAoIWl0ZW0uJF9fSXNMYXN0KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2luZm91bHYgZGV2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICB9IEBpZiAoaXRlbS4kSWNvbikge1xyXG4gICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRodW1ibmFpbD48ZmQtaWNvbiBbZ2x5cGhdPVwiaXRlbS4kSWNvblwiPjwvZmQtaWNvbj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGRpdiBmZC1saXN0LWNvbnRlbnQgY2xhc3M9XCJtb2luZm91bHYgaGFzQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1saXN0LXRpdGxlIGNsYXNzPVwidGl0bGVcIj57eyBhbGxDb2x1bW5zWzBdLkFsaWFzIHwgcnZhbDogaXRlbTphbGxDb2x1bW5zOnRydWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIEBpZiAoYWxsQ29sdW1uc1sxXSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1saXN0LWJ5bGluZSBjbGFzcz1cImJ5bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFsbENvbHVtbnNbMV0uQWxpYXMgfCBydmFsOiBpdGVtOmFsbENvbHVtbnM6dHJ1ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgY29sdW1uLWdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgYWxsQ29sdW1uczsgdHJhY2sgY29sdW1uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHsgQGlmIChpbmRleCA+IDEpIHsgQGlmIChjb2x1bW4uQWxpYXNcclxuICAgICAgICAgICAgICAgICAgICB8IHJ2YWw6IGl0ZW06YWxsQ29sdW1uczp0cnVlOyBhcyB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBjb2x1bW4uQWxpYXMgfX06e3sgdmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgfSB9IH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGUgW2NsYXNzLmxpc3QtZW1wdHktaXRlbV09XCJpdGVtLmlzRW1wdHlcIlxyXG4gICAgICAgICAgICAgICAgPnt7IGl0ZW0uaXNFbXB0eSA/ICgnTm9EYXRhJyB8IGJiYlRyYW5zbGF0ZSkgOiAoaXRlbS4kTW9DYXB0aW9uIHx8IGl0ZW0uJENhcHRpb24gfCBiYmJUcmFuc2xhdGUpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -9,13 +9,13 @@ export class UiNumIntUiComponent extends NumberBaseComponent {
9
9
  super.ngOnInit();
10
10
  }
11
11
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiNumIntUiComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiNumIntUiComponent, selector: "bsu-ui-num-int-ui", viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<input\r\n #inputRef\r\n fd-form-control\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n [type]=\"hasMask ? 'text' : 'number'\"\r\n [id]=\"id\"\r\n [style.direction]=\"'ltr'\"\r\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : 'right'\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (input)=\"onValueChange($event)\"\r\n [class.inlineEdit]=\"inlineEdit \"\r\n [class.cellEdit]=\"cellEdit\"\r\n \r\n/>\r\n\r\n\r\n", styles: [":host{display:block}.number-input{display:block}\n"], dependencies: [{ kind: "component", type: i1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiNumIntUiComponent, selector: "bsu-ui-num-int-ui", viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<input\r\n #inputRef\r\n fd-form-control\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n [type]=\"hasMask ? 'text' : 'number'\"\r\n [id]=\"id\"\r\n [style.direction]=\"'ltr'\"\r\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : 'right'\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (input)=\"onValueChange($event)\"\r\n \r\n/>\r\n\r\n\r\n", styles: [":host{display:block}.number-input{display:block}\n"], dependencies: [{ kind: "component", type: i1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
13
13
  }
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiNumIntUiComponent, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: 'bsu-ui-num-int-ui', standalone: false, template: "<input\r\n #inputRef\r\n fd-form-control\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n [type]=\"hasMask ? 'text' : 'number'\"\r\n [id]=\"id\"\r\n [style.direction]=\"'ltr'\"\r\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : 'right'\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (input)=\"onValueChange($event)\"\r\n [class.inlineEdit]=\"inlineEdit \"\r\n [class.cellEdit]=\"cellEdit\"\r\n \r\n/>\r\n\r\n\r\n", styles: [":host{display:block}.number-input{display:block}\n"] }]
16
+ args: [{ selector: 'bsu-ui-num-int-ui', standalone: false, template: "<input\r\n #inputRef\r\n fd-form-control\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n [type]=\"hasMask ? 'text' : 'number'\"\r\n [id]=\"id\"\r\n [style.direction]=\"'ltr'\"\r\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : 'right'\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (input)=\"onValueChange($event)\"\r\n \r\n/>\r\n\r\n\r\n", styles: [":host{display:block}.number-input{display:block}\n"] }]
17
17
  }], propDecorators: { inputRef: [{
18
18
  type: ViewChild,
19
19
  args: ['inputRef', { read: ElementRef, static: true }]
20
20
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbnVtLWludC11aS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1udW0taW50LXVpL3VpLW51bS1pbnQtdWkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbnVtLWludC11aS91aS1udW0taW50LXVpLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU8zRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBS3hELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQ2hELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQVJRLG1CQUFtQjttR0FBbkIsbUJBQW1CLDBJQUNHLFVBQVUsa0VDVjdDLGdsQkFrQkE7OzRGRFRhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxtQkFBbUIsY0FHakIsS0FBSzs4QkFJakIsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE51bWJlckJhc2VDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktbnVtLWludC11aScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktbnVtLWludC11aS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1udW0taW50LXVpLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlOdW1JbnRVaUNvbXBvbmVudCBleHRlbmRzIE51bWJlckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgaW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGlucHV0XHJcbiAgICAjaW5wdXRSZWZcclxuICAgIGZkLWZvcm0tY29udHJvbFxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIlNldHRpbmcuTnVsbFRleHQgfHwgJydcIlxyXG4gICAgW2F0dHIucmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgIFthdHRyLmRpc2FibGVkXT1cIihkaXNhYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgIFt0eXBlXT1cImhhc01hc2sgPyAndGV4dCcgOiAnbnVtYmVyJ1wiXHJcbiAgICBbaWRdPVwiaWRcIlxyXG4gICAgW3N0eWxlLmRpcmVjdGlvbl09XCInbHRyJ1wiXHJcbiAgICBbc3R5bGUudGV4dC1hbGlnbl09XCJTZXR0aW5nLklzTHRyID09PSB0cnVlID8gJ2xlZnQnIDogJ3JpZ2h0J1wiXHJcbiAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgIFtjbGFzcy5pbmxpbmVFZGl0XT1cImlubGluZUVkaXQgXCJcclxuICAgIFtjbGFzcy5jZWxsRWRpdF09XCJjZWxsRWRpdFwiXHJcbiAgICBcclxuLz5cclxuXHJcblxyXG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbnVtLWludC11aS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1udW0taW50LXVpL3VpLW51bS1pbnQtdWkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbnVtLWludC11aS91aS1udW0taW50LXVpLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU8zRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBS3hELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQ2hELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQVJRLG1CQUFtQjttR0FBbkIsbUJBQW1CLDBJQUNHLFVBQVUsa0VDVjdDLGlnQkFnQkE7OzRGRFBhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxtQkFBbUIsY0FHakIsS0FBSzs4QkFJakIsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE51bWJlckJhc2VDb21wb25lbnQgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktbnVtLWludC11aScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktbnVtLWludC11aS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1udW0taW50LXVpLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlOdW1JbnRVaUNvbXBvbmVudCBleHRlbmRzIE51bWJlckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgaW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50ID0gdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGlucHV0XHJcbiAgICAjaW5wdXRSZWZcclxuICAgIGZkLWZvcm0tY29udHJvbFxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIlNldHRpbmcuTnVsbFRleHQgfHwgJydcIlxyXG4gICAgW2F0dHIucmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgIFthdHRyLmRpc2FibGVkXT1cIihkaXNhYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgIFt0eXBlXT1cImhhc01hc2sgPyAndGV4dCcgOiAnbnVtYmVyJ1wiXHJcbiAgICBbaWRdPVwiaWRcIlxyXG4gICAgW3N0eWxlLmRpcmVjdGlvbl09XCInbHRyJ1wiXHJcbiAgICBbc3R5bGUudGV4dC1hbGlnbl09XCJTZXR0aW5nLklzTHRyID09PSB0cnVlID8gJ2xlZnQnIDogJ3JpZ2h0J1wiXHJcbiAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgIFxyXG4vPlxyXG5cclxuXHJcbiJdfQ==
@@ -232,9 +232,10 @@ export * from './lib/barsa-form-layout-panel/barsa-form-layout-panel.component';
232
232
  export * from './lib/ui-report-carousel-view/ui-report-carousel-view.component';
233
233
  export * from './lib/barsa-card-banner/barsa-card-banner.component';
234
234
  export * from './lib/contentDensity.directive';
235
+ export * from './lib/barsa-theme/barsa-theme.component';
235
236
  /*
236
237
  * Public API Surface of barsa-sap-ui
237
238
  */
238
239
  export * from './lib/constants';
239
240
  export * from './lib/barsa-sap-ui.module';
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYywyQ0FBMkMsQ0FBQztBQUMx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QUFDO0FBQzFFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQzs7R0FFRztBQUNILGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FudHQtZGh0bWwtY2hhcnQtdmlldy9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWdhbnR0LWNoYXJ0L3VpLWdhbnR0LWNoYXJ0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW1vLWluZm8tZ2VuZXJhbC1vYmplY3QtdWkvdWktbW8taW5mby1nZW5lcmFsLW9iamVjdC11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLWluLWRpYWxvZy9maWxlLWluLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1hc3Atdmlld2VyL2JhcnNhLWFzcC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLWRhdGUtdGltZS9jdXN0b20tZGF0ZS10aW1lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWV4Y2VwdGlvbi1mb3JtL3VpLWV4Y2VwdGlvbi1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW1hdHJpeC12aWV3L3VpLW1hdHJpeC12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbHVtbi1tYXRyaXgtcmVuZGVyZXIvY29sdW1uLW1hdHJpeC1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2x1bW4tbWF0cml4LXJlbmRlcmVyL21hdHJpeC12YWx1ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1pYy1wYWdlLXNpemUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL29iamVjdC1zdGF0dXMtaWNvbi5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZWRpdGFibGUtZ3JpZC91aS1lZGl0YWJsZS1ncmlkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWdyYXBoL3VpLWdyYXBoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW1hcC91aS1tYXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktYXNwLXJlcG9ydC12aWV3ZXIvdWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktY2FsZW5kYXIvdWktY2FsZW5kYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktdHJlZS91aS10cmVlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXRyZWUtdmlldy91aS10cmVlLXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5saW5lLXNhdmUtYW5kLWNhbmNlbC9pbmxpbmUtc2F2ZS1hbmQtY2FuY2VsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vLWRhdGEvbm8tZGF0YS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2x1bW4tcmVuZGVyZXIvY29sdW1uLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXJlcG9ydC1jb250YWluZXIvdWktcmVwb3J0LWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1jYXJkLXZpZXcvdWktY2FyZC12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWxpc3Qtdmlldy91aS1saXN0LXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VsLW5vdGlmeS1wb3B1cC91bC1ub3RpZnktcG9wdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZGF0ZS1yYW5nZS1leC91aS1kYXRlLXJhbmdlLWV4LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWdyaWQtZmlsdGVyLWl0ZW0vdWktZ3JpZC1maWx0ZXItaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1ncmlkLWZpbHRlci1zZXR0aW5ncy91aS1ncmlkLWZpbHRlci1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXBvcnQtc2VhcmNoLXBhbmVsLXNhdmUvcmVwb3J0LXNlYXJjaC1wYW5lbC1zYXZlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaC1wYW5lbC9zZWFyY2gtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVwb3J0LXNlYXJjaC1maWVsZHMtaGlkZGVuLXNldHRpbmdzL3JlcG9ydC1zZWFyY2gtZmllbGRzLWhpZGRlbi1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXBvcnQtc2VhcmNoLWZpZWxkcy1tYW5hZ2UvcmVwb3J0LXNlYXJjaC1maWVsZHMtbWFuYWdlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hbmFnZS1maWx0ZXJzLXJlcG9ydC9tYW5hZ2UtZmlsdGVycy1yZXBvcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVwb3J0LW5hdmlnYXRvci9yZXBvcnQtbmF2aWdhdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LWxpbmUvbHktbGluZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS11bHYtbWFpbi11aS91aS11bHYtbWFpbi11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1jb2xvci11aS91aS1jb2xvci11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10cmVlLWl0ZW0vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWRhdGUtdGltZS1waWNrZXIvYmFyc2EtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1tb25hY28tZWRpdG9yL2JhcnNhLW1vbmFjby1lZGl0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbW9uYWNvLWVkaXRvci91aS1tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRpbnllbWNlL2JhcnNhLXRpbnllbWNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXBkZi12aWV3ZXIvdWktcGRmLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1saXN0LWZpbGUtbGluZWFyL2JhcnNhLWxpc3QtZmlsZS1saW5lYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LWZpbHRlci1zZXR0aW5ncy91bHYtZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi1jb2x1bW4tc2V0dGluZ3MvdWx2LWNvbHVtbi1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtZ3JvdXBieS1zZXR0aW5ncy91bHYtZ3JvdXBieS1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtc29ydC1zZXR0aW5ncy91bHYtc29ydC1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtZm9ybS1tdWx0aS1zZWxlY3QvdWx2LWZvcm0tbXVsdGktc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXVsdi1mb3JtLW11bHRpLXNlbGVjdC11aS91aS11bHYtZm9ybS1tdWx0aS1zZWxlY3QtdWkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbHktbGF5b3V0LWNvbnRhaW5lci9seS1sYXlvdXQtY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xheW91dC1hY3Rpb25zL2xheW91dC1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS9mdW5kYW1lbnRhbC1keW5hbWljLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uL3VpLWxpbmVhci1saXN0LWNvbnRhaW5lci13aXRoLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLXN0cmlwL21lc3NhZ2Utc3RyaXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWwtdG9hc3QtYWRhcHRlci91bC10b2FzdC1hZGFwdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRpYy10ZXh0L3N0YXRpYy10ZXh0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h5cGVybGluay9oeXBlcmxpbmsuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2xvYmFsLXNlYXJjaC9nbG9iYWwtc2VhcmNoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsb2JhbC1zZWFyY2gtbW9kdWxlL2dsb2JhbC1zZWFyY2gtbW9kdWxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsb2JhbC1zZWFyY2gtcGFuZWwvZ2xvYmFsLXNlYXJjaC1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1zaW1wbGUtbGFiZWwvbHktc2ltcGxlLWxhYmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcHRjaGEtZmllbGQvY2FwdGNoYS1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10ZXh0LWZpZWxkLWF1dG8tY29tcGxldGUvdWktdGV4dC1maWVsZC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VsLWxvYWRpbmctbWFzay11aS91bC1sb2FkaW5nLW1hc2stdWkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LWNvbnRleHQtbWVudS91bHYtY29udGV4dC1tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXdvcmtmbG93LXBhbmVsLXVpL3VpLXdvcmtmbG93LXBhbmVsLXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlYWRlci1hdmF0YXIvaGVhZGVyLWF2YXRhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10cmVlL3VpLXRyZWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWwtbXNnLWJveC1hZGFwdGVyL3VsLW1zZy1ib3gtYWRhcHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tby1pbmZvLWNvbWJvLXZpZXdlci91aS1tby1pbmZvLWNvbWJvLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1sYWJlbC9seS1sYWJlbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS10YWItcGFnZS9seS10YWItcGFnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS10YWItY29udGFpbmVyL2x5LXRhYi1jb250YWluZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbHktdmVydGljYWwtbGF5b3V0L2x5LXZlcnRpY2FsLWxheW91dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1ob3Jpem9udGFsLWxheW91dC9seS1ob3Jpem9udGFsLWxheW91dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1waWN0dXJlcy1pbmZvL3VpLXBpY3R1cmVzLWluZm8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmljaC10ZXh0LXN0YXRpYy9yaWNoLXRleHQtc3RhdGljLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tZGlhbG9nLWxlc3MvZm9ybS1kaWFsb2ctbGVzcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLXdpemFyZC9mb3JtLXdpemFyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYXlvdXQtd2l6YXJkL2xheW91dC13aXphcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktdGV4dC1hcmVhL3VpLXRleHQtYXJlYS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNwb25zaXZlLXRvb2xiYXItcmVuZGVyZXIvcmVzcG9uc2l2ZS10b29sYmFyLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3BvbnNpdmUtdG9vbGJhci9yZXNwb25zaXZlLXRvb2xiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbW8taW5mby1zdWItZm9ybS11aS91aS1tby1pbmZvLXN1Yi1mb3JtLXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tZGlhbG9nL2Zvcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWRhdGUtdGltZS91aS1kYXRlLXRpbWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktYnV0dG9uL3VpLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10aW55bWNlL3VpLXRpbnltY2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LXNldHRpbmdzL3Vsdi1zZXR0aW5ncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1zZWFyY2gtY29tbWFuZC1pbmZvLXVpL3VpLXNlYXJjaC1jb21tYW5kLWluZm8tdWkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZm9ybS1wYW5lbC91aS1mb3JtLXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0tdG9vbGJhci9mb3JtLXRvb2xiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktaW5mby1iYXItcGFuZWwvdWktaW5mby1iYXItcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFzay9tYXNrLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWdyaWQtY29sdW1ucy91aS1ncmlkLWNvbHVtbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZ3JpZC1zb3J0LWl0ZW0vdWktZ3JpZC1zb3J0LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZ3JpZC1zb3J0LXNldHRpbmcvdWktZ3JpZC1zb3J0LXNldHRpbmcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LXBhZ2luZy91bHYtcGFnaW5nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi10b29sYmFyL3Vsdi10b29sYmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi1zZWxlY3Rpb24vdWx2LXNlbGVjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1zaW5nbGUtcGljdHVyZS91aS1zaW5nbGUtcGljdHVyZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1lbXB0eS1zcGFjZS9seS1lbXB0eS1zcGFjZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1maWxlLWxpbmVhci1saXN0LWJveC91aS1maWxlLWxpbmVhci1saXN0LWJveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10aW1lLXNwYW4vdWktdGltZS1zcGFuLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW51bS1pbnQtdWkvdWktbnVtLWludC11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1udW0tZGVjaW1hbC11aS91aS1udW0tZGVjaW1hbC11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tdWx0aS1zZWxlY3QtY29tYm8vdWktbXVsdGktc2VsZWN0LWNvbWJvLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW1vLWluZm8tdWx2LWNvbWJvL3VpLW1vLWluZm8tdWx2LWNvbWJvLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXBpY3R1cmUtZmlsZS91aS1waWN0dXJlLWZpbGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktY29udGFpbmVyLXdpdGgtYnV0dG9uL3VpLWNvbnRhaW5lci13aXRoLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1yZWFkLW9ubHktZmllbGQvdWktcmVhZC1vbmx5LWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LWxheW91dC1wYW5lbC9seS1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290L2x5LWxheW91dC1jb250YWluZXItb2Ytcm9vdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1ncmlkL3VpLWdyaWQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktcmFkaW8tZ3JvdXAvdWktcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbGFiZWwvdWktbGFiZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktcmFkaW8tZ3JvdXAvdWktcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktc2ltcGxlLWNvbWJvL3VpLXNpbXBsZS1jb21iby5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1jaGVjay1ib3gvdWktY2hlY2stYm94LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXN3aXRjaC1idXR0b24vdWktc3dpdGNoLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1sYXlvdXQtZmllbGQtbGFiZWwvbHktbGF5b3V0LWZpZWxkLWxhYmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXRleHQtZmllbGQvdWktdGV4dC1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtY29udGV4dC1tZW51L3Vsdi1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd2l6YXJkLWxheW91dC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2wtcmVuZGVyZXIuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbHktY29uZGl0aW9uYWwtZm9ybW1hdGluZ3MuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXBsb2FkLWZpbGUtc3RhdHVzLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zYXAtZm9udC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2FwLWZvbnQtY2xhc3MucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NhcC11aS1yZXBvcnQtYmFzZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXBvcnQtdmlldy1yZW5kZXJlci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mdWxsc2NyZWVuLWRpYWxvZy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10cmVlLWl0ZW0vbm9kZS1oYXMtb25lLWRlcHRoLWxldmVsLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLWl0ZW0vY2FyZC1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcmQtdmlldy1jb250ZW50L2NhcmQtdmlldy1jb250ZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWNhcmQtdmlldy1ob3Jpem9udGFsLWdyb3VwL3VpLWNhcmQtdmlldy1ob3Jpem9udGFsLWdyb3VwLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXVsdi1tYWluL2JhcnNhLXVsdi1tYWluLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHRyZWUtY3JlYXRlLW5ldy9odHJlZS1jcmVhdGUtbmV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRhYmxlLXJvdy9iYXJzYS10YWJsZS1yb3cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGFibGUtY29sdW1uL2JhcnNhLXRhYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10YWJsZS1oZWFkZXIvYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXZpY2UtaW5mby1maWVsZC1iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2Etc2FwLXVpLXJvdXRpbmcubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS10b29sYmFyLWJ1dHRvbi9mb3JtLXRvb2xiYXItYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXNlYXJjaC1mb3JtL2JhcnNhLXNlYXJjaC1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlcG9ydC1uZXctdG9wLWZvcm0vcmVwb3J0LW5ldy10b3AtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1uZXR3b3JrLW9mZmxpbmUvYmFyc2EtbmV0d29yay1vZmZsaW5lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtdmlld2VyLWNvbnRlbnQvZmlsZS12aWV3ZXItY29udGVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLXZpZXdlci1wb3BvdmVyL2ZpbGUtdmlld2VyLXBvcG92ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS12aWV3ZXIvZmlsZS12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmxvYi12aWV3ZXIvYmxvYi12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZnVsbHNjcmVlbi1maWxlcy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb3dubG9hZC1maWxlcy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24taXRlbS9ub3RpZmljYXRpb24taXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jYXJ0YWJsZS10ZW1wbGF0ZS9iYXJzYS1jYXJ0YWJsZS10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jYXJ0YWJsZS1mb3JtL2JhcnNhLWNhcnRhYmxlLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZ3JvdXAtY2FydGFibGUvYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY29sdW1uLWluZGljYXRvci9iYXJzYS1jb2x1bW4taW5kaWNhdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWZpZWxkLWtleS12YWx1ZS9iYXJzYS1maWVsZC1rZXktdmFsdWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdG9vbGJhcml0ZW0tc2VhcmNoL2JhcnNhLXRvb2xiYXJpdGVtLXNlYXJjaC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1odG1sLXZpZXdlci91aS1odG1sLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1waXNobmFtYXllc2gtcGF5YW0vYmFyc2EtcGlzaG5hbWF5ZXNoLXBheWFtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRleHQtZWxsaXBzaXMvYmFyc2EtdGV4dC1lbGxpcHNpcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1saXN0LWZpbGUtbGluZWFyLWdtYWlsL2JhcnNhLWxpc3QtZmlsZS1saW5lYXItZ21haWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtbGlua2FibGUtaXRlbXMtcGFuZWwvYmFyc2EtbGlua2FibGUtaXRlbXMtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZW51bS1tZW51LWJ1dHRvbi9iYXJzYS1lbnVtLW1lbnUtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcmQtbGF5b3V0LXBhbmVsL2JhcnNhLWNhcmQtbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWhvcml6b250YWwtZmxleC1wYW5lbC9iYXJzYS1ob3Jpem9udGFsLWZsZXgtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtYmFzZS1wYW5lbC9iYXJzYS1iYXNlLWxheW91dC1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1iYXItcGFuZWwvYmFyc2EtYmFyLXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcmQtbGF5b3V0LXBhbmVsL2JhcnNhLWNhcmQtbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWZvcm0tc2lkZS1jb250ZW50L2JhcnNhLWZvcm0tc2lkZS1jb250ZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpYWxvZy1oYW5kbGVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXNpbXBsZS1mb3JtL2JhcnNhLXNpbXBsZS1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcmQtbGF5b3V0LXBhbmVsL2JhcnNhLWNhcmQtbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWxpc3QtbGF5b3V0LXBhbmVsL2JhcnNhLWxpc3QtbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWdyaWQtbGF5b3V0LXBhbmVsL2JhcnNhLWdyaWQtbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWR5bmFtaWMtZmllbGQvYmFyc2EtZHluYW1pYy1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zYXAtc2l6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXZhdGFyLXNpemUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW11bHRpLXNlbGVjdC1yYWRpby91aS1tdWx0aS1zZWxlY3QtcmFkaW8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbXVsdGktc2VsZWN0LWNoZWNrYm94L3VpLW11bHRpLXNlbGVjdC1jaGVja2JveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tdWx0aS1zZWxlY3Qtc2xpZGVyL3VpLW11bHRpLXNlbGVjdC1zbGlkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbXVsdGktc2VsZWN0LWNhcmQvdWktbXVsdGktc2VsZWN0LWNhcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbXVsdGktc2VsZWN0LXNtaWxlL3VpLW11bHRpLXNlbGVjdC1zbWlsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1udW0taW50LXNsaWRlci91aS1udW0taW50LXNsaWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1yZXBvcnQtY2hlY2tib3gtc3dpdGNoLWJ1dHRvbi9iYXJzYS1yZXBvcnQtY2hlY2tib3gtc3dpdGNoLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jb2x1bW4tcm93bnVtYmVyL2JhcnNhLWNvbHVtbi1yb3dudW1iZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtcmVwb3J0LW9uZS1vZi1saXN0L2JhcnNhLXJlcG9ydC1vbmUtb2YtbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jYXJkLXJvdy1wYXlhbS9iYXJzYS1jYXJkLXJvdy1wYXlhbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1wb3N0L2JhcnNhLXF1ZXN0aW9uLXBvc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWZvcm0vYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWZvcm0tYWRkLWNvbW1lbnQvYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWZvcm0tYWRkLWNvbW1lbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtYW5zd2VyLWNhcmQvYmFyc2EtYW5zd2VyLWNhcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWNyZWF0b3ItdGltZS1zZWN0aW9uL2JhcnNhLXF1ZXN0aW9uLWFuc3dlci1jcmVhdG9yLXRpbWUtc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItY29tbWVudHMtc2VjdGlvbi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItY29tbWVudHMtc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItdm90ZS1zZWN0aW9uL2JhcnNhLXF1ZXN0aW9uLWFuc3dlci12b3RlLXNlY3Rpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWNvbnRlbnQtYWN0aW9ucy1zZWN0aW9uL2JhcnNhLXF1ZXN0aW9uLWFuc3dlci1jb250ZW50LWFjdGlvbnMtc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGlwL2JhcnNhLWNoaXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGFnLWNoaXAvYmFyc2EtdGFnLWNoaXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtcmVwb3J0LWNhcmQtZmxleC12aWV3L2JhcnNhLXJlcG9ydC1jYXJkLWZsZXgtdmlldy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10YWdzLWNhdGVnb3J5LXJvdy9iYXJzYS10YWdzLWNhdGVnb3J5LXJvdy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10YWctY2F0ZWdvcmllcy9iYXJzYS10YWctY2F0ZWdvcmllcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jdXN0b20taW5saW5lLWVkaXQvYmFyc2EtY3VzdG9tLWlubGluZS1lZGl0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWN1c3RvbS1pbmxpbmUtZWRpdC1yb3cvYmFyc2EtY3VzdG9tLWlubGluZS1lZGl0LXJvdy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0L2JhcnNhLWNoYXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2hhdC1jb250ZW50LXRvb2xiYXIvYmFyc2EtY2hhdC1jb250ZW50LXRvb2xiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2hhdC1tZXNzYWdlL2JhcnNhLWNoYXQtbWVzc2FnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0LXRocmVhZC9iYXJzYS1jaGF0LXRocmVhZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0LWNvbnRlbnQvYmFyc2EtY2hhdC1jb250ZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoYXQtdGhyZWFkcy1saXN0LXRvb2xiYXIvYmFyc2EtY2hhdC10aHJlYWRzLWxpc3QtdG9vbGJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0LXRocmVhZHMtbGlzdC9iYXJzYS1jaGF0LXRocmVhZHMtbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0LWxpc3QvYmFyc2EtY2hhdC1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLW1vZGFsL2JhcnNhLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRhYi1yb3V0ZS1tYW5hZ2VyL2JhcnNhLXRhYi1yb3V0ZS1tYW5hZ2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWJyZWFkY3J1bWJzL2JhcnNhLWJyZWFkY3J1bWJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXRoLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXJvdy1pbmxpbmUtYWN0aW9ubGlzdC9iYXJzYS1yb3ctaW5saW5lLWFjdGlvbmxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktYnBtbi12aWV3ZXIvdWktYnBtbi12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtYmFyLWRvd25sb2FkLWZpbGUvYmFyc2EtYmFyLWRvd25sb2FkLWZpbGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbm90aWZpY2F0aW9uLXZpZXcvdWktbm90aWZpY2F0aW9uLXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9uLWl0ZW0tYWN0aW9ucy9ub3RpZmljYXRpb24taXRlbS1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWZvcm0tbGF5b3V0LXBhbmVsL2JhcnNhLWZvcm0tbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXJlcG9ydC1jYXJvdXNlbC12aWV3L3VpLXJlcG9ydC1jYXJvdXNlbC12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcmQtYmFubmVyL2JhcnNhLWNhcmQtYmFubmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRlbnREZW5zaXR5LmRpcmVjdGl2ZSc7XHJcblxyXG4vKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYmFyc2Etc2FwLXVpXHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1zYXAtdWkubW9kdWxlJztcclxuIl19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYywyQ0FBMkMsQ0FBQztBQUMx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QUFDO0FBQzFFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHlDQUF5QyxDQUFDO0FBRXhEOztHQUVHO0FBQ0gsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nYW50dC1kaHRtbC1jaGFydC12aWV3L2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZ2FudHQtY2hhcnQvdWktZ2FudHQtY2hhcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbW8taW5mby1nZW5lcmFsLW9iamVjdC11aS91aS1tby1pbmZvLWdlbmVyYWwtb2JqZWN0LXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtaW4tZGlhbG9nL2ZpbGUtaW4tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWFzcC12aWV3ZXIvYmFyc2EtYXNwLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tZGF0ZS10aW1lL2N1c3RvbS1kYXRlLXRpbWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZXhjZXB0aW9uLWZvcm0vdWktZXhjZXB0aW9uLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbWF0cml4LXZpZXcvdWktbWF0cml4LXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sdW1uLW1hdHJpeC1yZW5kZXJlci9jb2x1bW4tbWF0cml4LXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbHVtbi1tYXRyaXgtcmVuZGVyZXIvbWF0cml4LXZhbHVlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9keW5hbWljLXBhZ2Utc2l6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JqZWN0LXN0YXR1cy1pY29uLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1lZGl0YWJsZS1ncmlkL3VpLWVkaXRhYmxlLWdyaWQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZ3JhcGgvdWktZ3JhcGguY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbWFwL3VpLW1hcC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1hc3AtcmVwb3J0LXZpZXdlci91aS1hc3AtcmVwb3J0LXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1jYWxlbmRhci91aS1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10cmVlL3VpLXRyZWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktdHJlZS12aWV3L3VpLXRyZWUtdmlldy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbmxpbmUtc2F2ZS1hbmQtY2FuY2VsL2lubGluZS1zYXZlLWFuZC1jYW5jZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbm8tZGF0YS9uby1kYXRhLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbHVtbi1yZW5kZXJlci9jb2x1bW4tcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktcmVwb3J0LWNvbnRhaW5lci91aS1yZXBvcnQtY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWNhcmQtdmlldy91aS1jYXJkLXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbGlzdC12aWV3L3VpLWxpc3Qtdmlldy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWwtbm90aWZ5LXBvcHVwL3VsLW5vdGlmeS1wb3B1cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1kYXRlLXJhbmdlLWV4L3VpLWRhdGUtcmFuZ2UtZXguY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZ3JpZC1maWx0ZXItaXRlbS91aS1ncmlkLWZpbHRlci1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWdyaWQtZmlsdGVyLXNldHRpbmdzL3VpLWdyaWQtZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlcG9ydC1zZWFyY2gtcGFuZWwtc2F2ZS9yZXBvcnQtc2VhcmNoLXBhbmVsLXNhdmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VhcmNoLXBhbmVsL3NlYXJjaC1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXBvcnQtc2VhcmNoLWZpZWxkcy1oaWRkZW4tc2V0dGluZ3MvcmVwb3J0LXNlYXJjaC1maWVsZHMtaGlkZGVuLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlcG9ydC1zZWFyY2gtZmllbGRzLW1hbmFnZS9yZXBvcnQtc2VhcmNoLWZpZWxkcy1tYW5hZ2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFuYWdlLWZpbHRlcnMtcmVwb3J0L21hbmFnZS1maWx0ZXJzLXJlcG9ydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXBvcnQtbmF2aWdhdG9yL3JlcG9ydC1uYXZpZ2F0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbHktbGluZS9seS1saW5lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXVsdi1tYWluLXVpL3VpLXVsdi1tYWluLXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWNvbG9yLXVpL3VpLWNvbG9yLXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZGF0ZS10aW1lLXBpY2tlci9iYXJzYS1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLW1vbmFjby1lZGl0b3IvYmFyc2EtbW9uYWNvLWVkaXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tb25hY28tZWRpdG9yL3VpLW1vbmFjby1lZGl0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWxpc3QtZmlsZS1saW5lYXIvYmFyc2EtbGlzdC1maWxlLWxpbmVhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtZmlsdGVyLXNldHRpbmdzL3Vsdi1maWx0ZXItc2V0dGluZ3MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LWNvbHVtbi1zZXR0aW5ncy91bHYtY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi1ncm91cGJ5LXNldHRpbmdzL3Vsdi1ncm91cGJ5LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi1zb3J0LXNldHRpbmdzL3Vsdi1zb3J0LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi1mb3JtLW11bHRpLXNlbGVjdC91bHYtZm9ybS1tdWx0aS1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktdWx2LWZvcm0tbXVsdGktc2VsZWN0LXVpL3VpLXVsdi1mb3JtLW11bHRpLXNlbGVjdC11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1sYXlvdXQtY29udGFpbmVyL2x5LWxheW91dC1jb250YWluZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGF5b3V0LWFjdGlvbnMvbGF5b3V0LWFjdGlvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1saW5lYXItbGlzdC1jb250YWluZXItd2l0aC1idXR0b24vdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2Utc3RyaXAvbWVzc2FnZS1zdHJpcC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bC10b2FzdC1hZGFwdGVyL3VsLXRvYXN0LWFkYXB0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGljLXRleHQvc3RhdGljLXRleHQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHlwZXJsaW5rL2h5cGVybGluay5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbG9iYWwtc2VhcmNoL2dsb2JhbC1zZWFyY2guY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2xvYmFsLXNlYXJjaC1tb2R1bGUvZ2xvYmFsLXNlYXJjaC1tb2R1bGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2xvYmFsLXNlYXJjaC1wYW5lbC9nbG9iYWwtc2VhcmNoLXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LXNpbXBsZS1sYWJlbC9seS1zaW1wbGUtbGFiZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FwdGNoYS1maWVsZC9jYXB0Y2hhLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXRleHQtZmllbGQtYXV0by1jb21wbGV0ZS91aS10ZXh0LWZpZWxkLWF1dG8tY29tcGxldGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWwtbG9hZGluZy1tYXNrLXVpL3VsLWxvYWRpbmctbWFzay11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtY29udGV4dC1tZW51L3Vsdi1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktd29ya2Zsb3ctcGFuZWwtdWkvdWktd29ya2Zsb3ctcGFuZWwtdWkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVhZGVyLWF2YXRhci9oZWFkZXItYXZhdGFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXRyZWUvdWktdHJlZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bC1tc2ctYm94LWFkYXB0ZXIvdWwtbXNnLWJveC1hZGFwdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW1vLWluZm8tY29tYm8tdmlld2VyL3VpLW1vLWluZm8tY29tYm8tdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LWxhYmVsL2x5LWxhYmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LXRhYi1wYWdlL2x5LXRhYi1wYWdlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LXRhYi1jb250YWluZXIvbHktdGFiLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS12ZXJ0aWNhbC1sYXlvdXQvbHktdmVydGljYWwtbGF5b3V0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LWhvcml6b250YWwtbGF5b3V0L2x5LWhvcml6b250YWwtbGF5b3V0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXBpY3R1cmVzLWluZm8vdWktcGljdHVyZXMtaW5mby5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yaWNoLXRleHQtc3RhdGljL3JpY2gtdGV4dC1zdGF0aWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1kaWFsb2ctbGVzcy9mb3JtLWRpYWxvZy1sZXNzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0td2l6YXJkL2Zvcm0td2l6YXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xheW91dC13aXphcmQvbGF5b3V0LXdpemFyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYXlvdXQtY29udHJvbC9sYXlvdXQtY29udHJvbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS10ZXh0LWFyZWEvdWktdGV4dC1hcmVhLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3BvbnNpdmUtdG9vbGJhci1yZW5kZXJlci9yZXNwb25zaXZlLXRvb2xiYXItcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzcG9uc2l2ZS10b29sYmFyL3Jlc3BvbnNpdmUtdG9vbGJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tby1pbmZvLXN1Yi1mb3JtLXVpL3VpLW1vLWluZm8tc3ViLWZvcm0tdWkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZGF0ZS10aW1lL3VpLWRhdGUtdGltZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1idXR0b24vdWktYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXRpbnltY2UvdWktdGlueW1jZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtc2V0dGluZ3MvdWx2LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXNlYXJjaC1jb21tYW5kLWluZm8tdWkvdWktc2VhcmNoLWNvbW1hbmQtaW5mby11aS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1mb3JtLXBhbmVsL3VpLWZvcm0tcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS10b29sYmFyL2Zvcm0tdG9vbGJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1pbmZvLWJhci1wYW5lbC91aS1pbmZvLWJhci1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXNrL21hc2suY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktZ3JpZC1jb2x1bW5zL3VpLWdyaWQtY29sdW1ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1ncmlkLXNvcnQtaXRlbS91aS1ncmlkLXNvcnQtaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1ncmlkLXNvcnQtc2V0dGluZy91aS1ncmlkLXNvcnQtc2V0dGluZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91bHYtcGFnaW5nL3Vsdi1wYWdpbmcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWx2LXNlbGVjdGlvbi91bHYtc2VsZWN0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXNpbmdsZS1waWN0dXJlL3VpLXNpbmdsZS1waWN0dXJlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LWVtcHR5LXNwYWNlL2x5LWVtcHR5LXNwYWNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWZpbGUtbGluZWFyLWxpc3QtYm94L3VpLWZpbGUtbGluZWFyLWxpc3QtYm94LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXRpbWUtc3Bhbi91aS10aW1lLXNwYW4uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbnVtLWludC11aS91aS1udW0taW50LXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW51bS1kZWNpbWFsLXVpL3VpLW51bS1kZWNpbWFsLXVpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW11bHRpLXNlbGVjdC1jb21iby91aS1tdWx0aS1zZWxlY3QtY29tYm8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktcGljdHVyZS1maWxlL3VpLXBpY3R1cmUtZmlsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1jb250YWluZXItd2l0aC1idXR0b24vdWktY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLXJlYWQtb25seS1maWVsZC91aS1yZWFkLW9ubHktZmllbGQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbHktbGF5b3V0LXBhbmVsL2x5LWxheW91dC1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9seS1sYXlvdXQtY29udGFpbmVyLW9mLXJvb3QvbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWdyaWQvdWktZ3JpZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1yYWRpby1ncm91cC91aS1yYWRpby1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1sYWJlbC91aS1sYWJlbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1yYWRpby1ncm91cC91aS1yYWRpby1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1zaW1wbGUtY29tYm8vdWktc2ltcGxlLWNvbWJvLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWNoZWNrLWJveC91aS1jaGVjay1ib3guY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktc3dpdGNoLWJ1dHRvbi91aS1zd2l0Y2gtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2x5LWxheW91dC1maWVsZC1sYWJlbC9seS1sYXlvdXQtZmllbGQtbGFiZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktdGV4dC1maWVsZC91aS10ZXh0LWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Vsdi1jb250ZXh0LW1lbnUvdWx2LWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93aXphcmQtbGF5b3V0LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbC1yZW5kZXJlci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBseS1jb25kaXRpb25hbC1mb3JtbWF0aW5ncy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91cGxvYWQtZmlsZS1zdGF0dXMucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NhcC1mb250LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zYXAtZm9udC1jbGFzcy5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2FwLXVpLXJlcG9ydC1iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlcG9ydC12aWV3LXJlbmRlcmVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bGxzY3JlZW4tZGlhbG9nLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRyZWUtaXRlbS9ub2RlLWhhcy1vbmUtZGVwdGgtbGV2ZWwucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcmQtaXRlbS9jYXJkLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC12aWV3LWNvbnRlbnQvY2FyZC12aWV3LWNvbnRlbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdWx2LW1haW4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHJlZS1jcmVhdGUtbmV3L2h0cmVlLWNyZWF0ZS1uZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGFibGUtcm93L2JhcnNhLXRhYmxlLXJvdy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10YWJsZS1jb2x1bW4vYmFyc2EtdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1zYXAtdWktcm91dGluZy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLXRvb2xiYXItYnV0dG9uL2Zvcm0tdG9vbGJhci1idXR0b24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2Etc2VhcmNoLWZvcm0vYmFyc2Etc2VhcmNoLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVwb3J0LW5ldy10b3AtZm9ybS9yZXBvcnQtbmV3LXRvcC1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLW5ldHdvcmstb2ZmbGluZS9iYXJzYS1uZXR3b3JrLW9mZmxpbmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS12aWV3ZXItY29udGVudC9maWxlLXZpZXdlci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtdmlld2VyLXBvcG92ZXIvZmlsZS12aWV3ZXItcG9wb3Zlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLXZpZXdlci9maWxlLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ibG9iLXZpZXdlci9ibG9iLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mdWxsc2NyZWVuLWZpbGVzLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rvd25sb2FkLWZpbGVzLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGlmaWNhdGlvbi1pdGVtL25vdGlmaWNhdGlvbi1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcnRhYmxlLXRlbXBsYXRlL2JhcnNhLWNhcnRhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcnRhYmxlLWZvcm0vYmFyc2EtY2FydGFibGUtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1ncm91cC1jYXJ0YWJsZS9iYXJzYS1jYXJ0YWJsZS1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jb2x1bW4taW5kaWNhdG9yL2JhcnNhLWNvbHVtbi1pbmRpY2F0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZmllbGQta2V5LXZhbHVlL2JhcnNhLWZpZWxkLWtleS12YWx1ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10b29sYmFyaXRlbS1zZWFyY2gvYmFyc2EtdG9vbGJhcml0ZW0tc2VhcmNoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWh0bWwtdmlld2VyL3VpLWh0bWwtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXBpc2huYW1heWVzaC1wYXlhbS9iYXJzYS1waXNobmFtYXllc2gtcGF5YW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGV4dC1lbGxpcHNpcy9iYXJzYS10ZXh0LWVsbGlwc2lzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWxpc3QtZmlsZS1saW5lYXItZ21haWwvYmFyc2EtbGlzdC1maWxlLWxpbmVhci1nbWFpbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1saW5rYWJsZS1pdGVtcy1wYW5lbC9iYXJzYS1saW5rYWJsZS1pdGVtcy1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1lbnVtLW1lbnUtYnV0dG9uL2JhcnNhLWVudW0tbWVudS1idXR0b24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2FyZC1sYXlvdXQtcGFuZWwvYmFyc2EtY2FyZC1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtaG9yaXpvbnRhbC1mbGV4LXBhbmVsL2JhcnNhLWhvcml6b250YWwtZmxleC1wYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1iYXNlLXBhbmVsL2JhcnNhLWJhc2UtbGF5b3V0LXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWJhci1wYW5lbC9iYXJzYS1iYXItcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2FyZC1sYXlvdXQtcGFuZWwvYmFyc2EtY2FyZC1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZm9ybS1zaWRlLWNvbnRlbnQvYmFyc2EtZm9ybS1zaWRlLWNvbnRlbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlhbG9nLWhhbmRsZXIuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2Etc2ltcGxlLWZvcm0vYmFyc2Etc2ltcGxlLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2FyZC1sYXlvdXQtcGFuZWwvYmFyc2EtY2FyZC1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtbGlzdC1sYXlvdXQtcGFuZWwvYmFyc2EtbGlzdC1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZ3JpZC1sYXlvdXQtcGFuZWwvYmFyc2EtZ3JpZC1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZHluYW1pYy1maWVsZC9iYXJzYS1keW5hbWljLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NhcC1zaXplLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXItc2l6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbXVsdGktc2VsZWN0LXJhZGlvL3VpLW11bHRpLXNlbGVjdC1yYWRpby5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tdWx0aS1zZWxlY3QtY2hlY2tib3gvdWktbXVsdGktc2VsZWN0LWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW11bHRpLXNlbGVjdC1zbGlkZXIvdWktbXVsdGktc2VsZWN0LXNsaWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tdWx0aS1zZWxlY3QtY2FyZC91aS1tdWx0aS1zZWxlY3QtY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1tdWx0aS1zZWxlY3Qtc21pbGUvdWktbXVsdGktc2VsZWN0LXNtaWxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLW51bS1pbnQtc2xpZGVyL3VpLW51bS1pbnQtc2xpZGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXJlcG9ydC1jaGVja2JveC1zd2l0Y2gtYnV0dG9uL2JhcnNhLXJlcG9ydC1jaGVja2JveC1zd2l0Y2gtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNvbHVtbi1yb3dudW1iZXIvYmFyc2EtY29sdW1uLXJvd251bWJlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1yZXBvcnQtb25lLW9mLWxpc3QvYmFyc2EtcmVwb3J0LW9uZS1vZi1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNhcmQtcm93LXBheWFtL2JhcnNhLWNhcmQtcm93LXBheWFtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXF1ZXN0aW9uLXBvc3QvYmFyc2EtcXVlc3Rpb24tcG9zdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItZm9ybS9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItZm9ybS1hZGQtY29tbWVudC9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItZm9ybS1hZGQtY29tbWVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1hbnN3ZXItY2FyZC9iYXJzYS1hbnN3ZXItY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItY3JlYXRvci10aW1lLXNlY3Rpb24vYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWNyZWF0b3ItdGltZS1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXF1ZXN0aW9uLWFuc3dlci1jb21tZW50cy1zZWN0aW9uL2JhcnNhLXF1ZXN0aW9uLWFuc3dlci1jb21tZW50cy1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXF1ZXN0aW9uLWFuc3dlci12b3RlLXNlY3Rpb24vYmFyc2EtcXVlc3Rpb24tYW5zd2VyLXZvdGUtc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1xdWVzdGlvbi1hbnN3ZXItY29udGVudC1hY3Rpb25zLXNlY3Rpb24vYmFyc2EtcXVlc3Rpb24tYW5zd2VyLWNvbnRlbnQtYWN0aW9ucy1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoaXAvYmFyc2EtY2hpcC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS10YWctY2hpcC9iYXJzYS10YWctY2hpcC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1yZXBvcnQtY2FyZC1mbGV4LXZpZXcvYmFyc2EtcmVwb3J0LWNhcmQtZmxleC12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRhZ3MtY2F0ZWdvcnktcm93L2JhcnNhLXRhZ3MtY2F0ZWdvcnktcm93LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXRhZy1jYXRlZ29yaWVzL2JhcnNhLXRhZy1jYXRlZ29yaWVzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWN1c3RvbS1pbmxpbmUtZWRpdC9iYXJzYS1jdXN0b20taW5saW5lLWVkaXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY3VzdG9tLWlubGluZS1lZGl0LXJvdy9iYXJzYS1jdXN0b20taW5saW5lLWVkaXQtcm93LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoYXQvYmFyc2EtY2hhdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0LWNvbnRlbnQtdG9vbGJhci9iYXJzYS1jaGF0LWNvbnRlbnQtdG9vbGJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1jaGF0LW1lc3NhZ2UvYmFyc2EtY2hhdC1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoYXQtdGhyZWFkL2JhcnNhLWNoYXQtdGhyZWFkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoYXQtY29udGVudC9iYXJzYS1jaGF0LWNvbnRlbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2hhdC10aHJlYWRzLWxpc3QtdG9vbGJhci9iYXJzYS1jaGF0LXRocmVhZHMtbGlzdC10b29sYmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoYXQtdGhyZWFkcy1saXN0L2JhcnNhLWNoYXQtdGhyZWFkcy1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLWNoYXQtbGlzdC9iYXJzYS1jaGF0LWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtbW9kYWwvYmFyc2EtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGFiLXJvdXRlLW1hbmFnZXIvYmFyc2EtdGFiLXJvdXRlLW1hbmFnZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtYnJlYWRjcnVtYnMvYmFyc2EtYnJlYWRjcnVtYnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUtdGguZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2Etcm93LWlubGluZS1hY3Rpb25saXN0L2JhcnNhLXJvdy1pbmxpbmUtYWN0aW9ubGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1icG1uLXZpZXdlci91aS1icG1uLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXJzYS1iYXItZG93bmxvYWQtZmlsZS9iYXJzYS1iYXItZG93bmxvYWQtZmlsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91aS1ub3RpZmljYXRpb24tdmlldy91aS1ub3RpZmljYXRpb24tdmlldy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24taXRlbS1hY3Rpb25zL25vdGlmaWNhdGlvbi1pdGVtLWFjdGlvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtZm9ybS1sYXlvdXQtcGFuZWwvYmFyc2EtZm9ybS1sYXlvdXQtcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktcmVwb3J0LWNhcm91c2VsLXZpZXcvdWktcmVwb3J0LWNhcm91c2VsLXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtY2FyZC1iYW5uZXIvYmFyc2EtY2FyZC1iYW5uZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGVudERlbnNpdHkuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFyc2EtdGhlbWUvYmFyc2EtdGhlbWUuY29tcG9uZW50JztcclxuXHJcbi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBiYXJzYS1zYXAtdWlcclxuICovXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnN0YW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhcnNhLXNhcC11aS5tb2R1bGUnO1xyXG4iXX0=