ngx-histaff-alpha 0.4.2 → 0.4.3

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.
@@ -113,7 +113,7 @@ export class CoreControlComponent extends BaseComponent {
113
113
  this.control.click$?.next(e);
114
114
  }
115
115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreControlComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreControlComponent, isStandalone: true, selector: "core-control", inputs: { control: "control", form: "form", checkError$: "checkError$", rangeLimit: "rangeLimit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-control-container\">\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n <!-- START: LABEL SESSION-->\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n <i *ngIf=\"!!control.hint! && control.controlType !== 'CHECKBOX'\" class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\"></i>\r\n <!-- START: LABEL SESSION-->\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTBOX'\">\r\n <input *ngIf=\"control.type==='date'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly!\" useValueAsDate>\r\n\r\n <input *ngIf=\"control.type==='number'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" [step]=\"control.step || '1'\">\r\n\r\n <input *ngIf=\"control.type!=='date' && control.type!=='number'\" [formControlName]=\"control.field\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CURRENCY'\">\r\n <core-currency-input [formControlName]=\"control.field\"></core-currency-input>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTAREA'\">\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\"></textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKBOX'\">\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\"></core-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MCC'\">\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n ></core-mcc>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DATEPICKER'\">\r\n <core-date-picker [formControlName]=\"control.field\" [rangeLimit]=\"control.rangeLimit!\"></core-date-picker>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DROPDOWN' && !!control.dropdownOptions$\">\r\n <core-dropdown [formControlName]=\"control.field\" [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-dropdown>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='LIST'\">\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\"></core-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKLIST' && !!control.checklistOptions$\">\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-checklist>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='SEEKER' && !!control.seekerSourceType\">\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='EMPLOYEE_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='CONTRACT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WORKING_SEEK'\" [multiMode]=\"control.multiMode!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WAGE_SEEK'\" [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_SEEK'\" [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_CONCURRENT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='FILEUPLOADER' && !!control.uploadFileType\">\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ATTACHMENT'\">\r\n <core-attachment [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\"></core-attachment>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"control.controlType==='GRIDBUFFER' && !!control.gridBufferFormSections && !!control.gridBufferTableColumns\">\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ORGTREECHECK'\">\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\"></core-org-tree>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='RADIOGROUP'\">\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MONTHSELECTOR'\">\r\n <core-month-selector [formControlName]=\"control.field\"\r\n ></core-month-selector>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n</div>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreDropdownComponent, selector: "core-dropdown", inputs: ["getByIdObject$", "paramMode", "shownFrom", "options$", "height", "placeholder", "loading", "warningDisable", "itemHeight"] }, { kind: "component", type: CoreListComponent, selector: "core-list", inputs: ["title", "options"] }, { kind: "component", type: CoreChecklistComponent, selector: "core-checklist", inputs: ["paramMode", "getByIdObject$", "shownFrom", "options$", "height", "placeholder", "loading", "readonly", "disabled"] }, { kind: "component", type: CoreFormControlSeekerComponent, selector: "core-form-control-seeker", inputs: ["title", "showPageHeader", "preDefinedOuterParam$", "getByIdObject$", "paramMode", "multiMode", "objectList$", "shownSeekerColumns", "seekerSourceType", "boundFrom", "shownFrom", "alsoBindTo"], outputs: ["onDoubleClick"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreFileUploaderComponent, selector: "core-file-uploader", inputs: ["uploadFileType", "fileDataControlName", "fileNameControlName", "fileTypeControlName", "avatarSize", "defaultAvatar", "hidePreview", "verticalMode"] }, { kind: "component", type: CoreAttachmentComponent, selector: "core-attachment", inputs: ["readonly", "assignTo", "valueToShow"] }, { kind: "component", type: CoreGridBufferComponent, selector: "core-grid-buffer", inputs: ["formSections", "gridColumns"], outputs: ["onBufferFormCreated"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "rangeLimit", "readonly", "disabled"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreRadioGroupComponent, selector: "core-radio-group", inputs: ["options$", "vertical"] }, { kind: "component", type: CoreMccComponent, selector: "core-mcc", inputs: ["height", "columns", "shownFrom", "apiDefinition", "getByIdApi", "outerParam$", "selectedRow$", "outerFilterOperators", "outerInOperators"] }, { kind: "component", type: CoreMonthSelectorComponent, selector: "core-month-selector", outputs: ["onYearClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCurrencyInputComponent, selector: "core-currency-input", inputs: ["currencySign"] }] }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreControlComponent, isStandalone: true, selector: "core-control", inputs: { control: "control", form: "form", checkError$: "checkError$", rangeLimit: "rangeLimit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-control-container\">\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n <!-- START: LABEL SESSION-->\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n <i *ngIf=\"!!control.hint! && control.controlType !== 'CHECKBOX'\" class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\"></i>\r\n <!-- START: LABEL SESSION-->\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTBOX'\">\r\n <input *ngIf=\"control.type==='date'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly!\" useValueAsDate>\r\n\r\n <input *ngIf=\"control.type==='number'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" [step]=\"control.step || '1'\">\r\n\r\n <input *ngIf=\"control.type!=='date' && control.type!=='number'\" [formControlName]=\"control.field\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CURRENCY'\">\r\n <core-currency-input [formControlName]=\"control.field\"></core-currency-input>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTAREA'\">\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\"></textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKBOX'\">\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\"></core-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MCC'\">\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n ></core-mcc>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DATEPICKER'\">\r\n <core-date-picker [formControlName]=\"control.field\" [rangeLimit]=\"control.rangeLimit!\"></core-date-picker>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DROPDOWN' && !!control.dropdownOptions$\">\r\n <core-dropdown [formControlName]=\"control.field\" [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-dropdown>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='LIST'\">\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\"></core-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKLIST' && !!control.checklistOptions$\">\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-checklist>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='SEEKER' && !!control.seekerSourceType\">\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='EMPLOYEE_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='CONTRACT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WORKING_SEEK'\" [multiMode]=\"control.multiMode!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WAGE_SEEK'\" [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_SEEK'\" [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [seekerVerifyIgnore]=\"control.seekerVerifyIgnore!\"\r\n ></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_CONCURRENT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='FILEUPLOADER' && !!control.uploadFileType\">\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ATTACHMENT'\">\r\n <core-attachment [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\"></core-attachment>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"control.controlType==='GRIDBUFFER' && !!control.gridBufferFormSections && !!control.gridBufferTableColumns\">\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ORGTREECHECK'\">\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\"></core-org-tree>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='RADIOGROUP'\">\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MONTHSELECTOR'\">\r\n <core-month-selector [formControlName]=\"control.field\"\r\n ></core-month-selector>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n</div>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreDropdownComponent, selector: "core-dropdown", inputs: ["getByIdObject$", "paramMode", "shownFrom", "options$", "height", "placeholder", "loading", "warningDisable", "itemHeight"] }, { kind: "component", type: CoreListComponent, selector: "core-list", inputs: ["title", "options"] }, { kind: "component", type: CoreChecklistComponent, selector: "core-checklist", inputs: ["paramMode", "getByIdObject$", "shownFrom", "options$", "height", "placeholder", "loading", "readonly", "disabled"] }, { kind: "component", type: CoreFormControlSeekerComponent, selector: "core-form-control-seeker", inputs: ["title", "showPageHeader", "preDefinedOuterParam$", "getByIdObject$", "paramMode", "multiMode", "objectList$", "shownSeekerColumns", "seekerSourceType", "boundFrom", "shownFrom", "alsoBindTo", "seekerVerifyIgnore"], outputs: ["onDoubleClick"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreFileUploaderComponent, selector: "core-file-uploader", inputs: ["uploadFileType", "fileDataControlName", "fileNameControlName", "fileTypeControlName", "avatarSize", "defaultAvatar", "hidePreview", "verticalMode"] }, { kind: "component", type: CoreAttachmentComponent, selector: "core-attachment", inputs: ["readonly", "assignTo", "valueToShow"] }, { kind: "component", type: CoreGridBufferComponent, selector: "core-grid-buffer", inputs: ["formSections", "gridColumns"], outputs: ["onBufferFormCreated"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "rangeLimit", "readonly", "disabled"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreRadioGroupComponent, selector: "core-radio-group", inputs: ["options$", "vertical"] }, { kind: "component", type: CoreMccComponent, selector: "core-mcc", inputs: ["height", "columns", "shownFrom", "apiDefinition", "getByIdApi", "outerParam$", "selectedRow$", "outerFilterOperators", "outerInOperators"] }, { kind: "component", type: CoreMonthSelectorComponent, selector: "core-month-selector", outputs: ["onYearClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCurrencyInputComponent, selector: "core-currency-input", inputs: ["currencySign"] }] }); }
117
117
  }
118
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreControlComponent, decorators: [{
119
119
  type: Component,
@@ -137,7 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
137
137
  CoreMonthSelectorComponent,
138
138
  TooltipDirective,
139
139
  CoreCurrencyInputComponent,
140
- ], template: "<div class=\"core-control-container\">\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n <!-- START: LABEL SESSION-->\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n <i *ngIf=\"!!control.hint! && control.controlType !== 'CHECKBOX'\" class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\"></i>\r\n <!-- START: LABEL SESSION-->\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTBOX'\">\r\n <input *ngIf=\"control.type==='date'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly!\" useValueAsDate>\r\n\r\n <input *ngIf=\"control.type==='number'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" [step]=\"control.step || '1'\">\r\n\r\n <input *ngIf=\"control.type!=='date' && control.type!=='number'\" [formControlName]=\"control.field\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CURRENCY'\">\r\n <core-currency-input [formControlName]=\"control.field\"></core-currency-input>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTAREA'\">\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\"></textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKBOX'\">\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\"></core-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MCC'\">\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n ></core-mcc>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DATEPICKER'\">\r\n <core-date-picker [formControlName]=\"control.field\" [rangeLimit]=\"control.rangeLimit!\"></core-date-picker>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DROPDOWN' && !!control.dropdownOptions$\">\r\n <core-dropdown [formControlName]=\"control.field\" [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-dropdown>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='LIST'\">\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\"></core-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKLIST' && !!control.checklistOptions$\">\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-checklist>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='SEEKER' && !!control.seekerSourceType\">\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='EMPLOYEE_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='CONTRACT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WORKING_SEEK'\" [multiMode]=\"control.multiMode!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WAGE_SEEK'\" [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_SEEK'\" [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_CONCURRENT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='FILEUPLOADER' && !!control.uploadFileType\">\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ATTACHMENT'\">\r\n <core-attachment [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\"></core-attachment>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"control.controlType==='GRIDBUFFER' && !!control.gridBufferFormSections && !!control.gridBufferTableColumns\">\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ORGTREECHECK'\">\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\"></core-org-tree>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='RADIOGROUP'\">\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MONTHSELECTOR'\">\r\n <core-month-selector [formControlName]=\"control.field\"\r\n ></core-month-selector>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n</div>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}\n"] }]
140
+ ], template: "<div class=\"core-control-container\">\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n <!-- START: LABEL SESSION-->\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n <i *ngIf=\"!!control.hint! && control.controlType !== 'CHECKBOX'\" class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\"></i>\r\n <!-- START: LABEL SESSION-->\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTBOX'\">\r\n <input *ngIf=\"control.type==='date'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly!\" useValueAsDate>\r\n\r\n <input *ngIf=\"control.type==='number'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" [step]=\"control.step || '1'\">\r\n\r\n <input *ngIf=\"control.type!=='date' && control.type!=='number'\" [formControlName]=\"control.field\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CURRENCY'\">\r\n <core-currency-input [formControlName]=\"control.field\"></core-currency-input>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTAREA'\">\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\"></textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKBOX'\">\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\"></core-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MCC'\">\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n ></core-mcc>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DATEPICKER'\">\r\n <core-date-picker [formControlName]=\"control.field\" [rangeLimit]=\"control.rangeLimit!\"></core-date-picker>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DROPDOWN' && !!control.dropdownOptions$\">\r\n <core-dropdown [formControlName]=\"control.field\" [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-dropdown>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='LIST'\">\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\"></core-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKLIST' && !!control.checklistOptions$\">\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\"></core-checklist>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='SEEKER' && !!control.seekerSourceType\">\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='EMPLOYEE_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='CONTRACT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WORKING_SEEK'\" [multiMode]=\"control.multiMode!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WAGE_SEEK'\" [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_SEEK'\" [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [seekerVerifyIgnore]=\"control.seekerVerifyIgnore!\"\r\n ></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='POSITION_CONCURRENT_SEEK'\"\r\n [multiMode]=\"control.multiMode!\" [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='FILEUPLOADER' && !!control.uploadFileType\">\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ATTACHMENT'\">\r\n <core-attachment [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\"></core-attachment>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"control.controlType==='GRIDBUFFER' && !!control.gridBufferFormSections && !!control.gridBufferTableColumns\">\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='ORGTREECHECK'\">\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\"></core-org-tree>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='RADIOGROUP'\">\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='MONTHSELECTOR'\">\r\n <core-month-selector [formControlName]=\"control.field\"\r\n ></core-month-selector>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n</div>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}\n"] }]
141
141
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.AlertService }], propDecorators: { control: [{
142
142
  type: Input
143
143
  }], form: [{
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
147
147
  }], rangeLimit: [{
148
148
  type: Input
149
149
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbnRyb2wvY29yZS1jb250cm9sL2NvcmUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1jb250cm9sL2NvcmUtY29udHJvbC9jb3JlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQThCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxvRUFBb0UsQ0FBQztBQUVuSSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEZBQTRGLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0VB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QUFvQjtrQkEzQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7cUJBQzNCO29IQU1RLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBJRm9ybUJhc2VDb250cm9sIH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtL2NvcmUtZm9ybS9lbnVtLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlIH0gZnJvbSAnLi4vLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZURhdGVQaWNrZXJDb21wb25lbnQsIElDb3JlRGF0ZVBpY2tlclJhbmdlIH0gZnJvbSAnLi4vLi4vY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSUVycm9yIH0gZnJvbSAnLi9JRXJyb3InO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tsaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sU2Vla2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlR3JpZEJ1ZmZlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZ3JpZC1idWZmZXIvY29yZS1ncmlkLWJ1ZmZlci9jb3JlLWdyaWQtYnVmZmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDb3JlTWNjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1tY2MvY29yZS1tY2MvY29yZS1tY2MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZU1vbnRoU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW1vbnRoLXNlbGVjdG9yL2NvcmUtbW9udGgtc2VsZWN0b3IvY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWRyb3Bkb3duL2NvcmUtZHJvcGRvd24vY29yZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZpbGUtdXBsb2FkZXIvY29yZS1maWxlLXVwbG9hZGVyL2NvcmUtZmlsZS11cGxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtYXR0YWNobWVudC9jb3JlLWF0dGFjaG1lbnQvY29yZS1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1yYWRpby1ncm91cC9jb3JlLXJhZGlvLWdyb3VwL2NvcmUtcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlQ3VycmVuY3lJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtY3VycmVuY3ktaW5wdXQvY29yZS1jdXJyZW5jeS1pbnB1dC9jb3JlLWN1cnJlbmN5LWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ2VsbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90YWJsZS1jZWxsLnBpcGUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jb250cm9sJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIENvcmVEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIENvcmVMaXN0Q29tcG9uZW50LFxyXG4gICAgQ29yZUNoZWNrbGlzdENvbXBvbmVudCxcclxuICAgIENvcmVGb3JtQ29udHJvbFNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBDb3JlQXR0YWNobWVudENvbXBvbmVudCxcclxuICAgIENvcmVHcmlkQnVmZmVyQ29tcG9uZW50LFxyXG4gICAgQ29yZURhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlT3JnVHJlZUNvbXBvbmVudCxcclxuICAgIENvcmVSYWRpb0dyb3VwQ29tcG9uZW50LFxyXG4gICAgQ29yZU1jY0NvbXBvbmVudCxcclxuICAgIENvcmVNb250aFNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIENvcmVDdXJyZW5jeUlucHV0Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgY29udHJvbCE6IElGb3JtQmFzZUNvbnRyb2w7XHJcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBjaGVja0Vycm9yJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuICBASW5wdXQoKSByYW5nZUxpbWl0ITogSUNvcmVEYXRlUGlja2VyUmFuZ2U7XHJcblxyXG4gIC8qIFNUQVJUOiBUSElTIElTIE5BVElWRSBGT1JNIENPTlRST0wgKi9cclxuICByYXdDb250cm9sITogQWJzdHJhY3RDb250cm9sO1xyXG4gIC8qIEVORDogVEhJUyBJUyBOQVRJVkUgRk9STSBDT05UUk9MICovXHJcblxyXG4gIGNvbnRyb2xUeXBlITogc3RyaW5nO1xyXG4gIHJlcXVpcmVkITogYm9vbGVhbjtcclxuICBlcnJvcnM6IElFcnJvcltdID0gW107XHJcblxyXG4gIGNvcmVPcmdUcmVlRGVmYXVsdEFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzcGxheVZhbGlkYXRvck5hbWVNYXRoY2hpbmdFcnJvcigpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgXHJcbiAgICAgICAgJyR7dGhpcy5jb250cm9sLmZpZWxkfScgdmFsaWRhdG9yIGFycmF5IGRlZmluaXRpb24gZXJyb3I6IHZhbGlkYXRvciBuYW1lIG11c3QgZXF1YWwgVmFsaWRhdG9ycy4mbHQ7a2V5Jmd0O1xyXG4gICAgICBgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tFcnJvcigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5yYXdDb250cm9sLmVycm9ycykge1xyXG5cclxuICAgICAgY29uc3QgbmV3RXJyb3JzOiBJRXJyb3JbXSA9IFtdO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sLmZpZWxkXS5lcnJvcnMhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgLyogIFxyXG4gICAgICAgICAgdGFubGVpY2E6XHJcbiAgICAgICAgICAgIEJ5IGN1c3RvbSBkZXNpZ24sIGN1c3RvbSBlcnJvciBpcyBhbiBhcnJheVxyXG4gICAgICAgICAgICB3aGlsZSBidWlsdC1pbiB2YWxpZGF0b3Igc2hvdWxkIHByb2R1Y2UgYW4gb2JqZWN0IGVycm9yIGlmIGFueVxyXG4gICAgICAgICovXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmNvbnRyb2wuZmllbGRdLmVycm9ycyFba2V5XSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICBuZXdFcnJvcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmNvbnRyb2wuZmllbGRdLmVycm9ycyFba2V5XVsxXVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCEhdGhpcy5jb250cm9sLnZhbGlkYXRvcnMpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5jb250cm9sLnZhbGlkYXRvcnM/LmZpbHRlcih4ID0+IHgubmFtZS50b0xvd2VyQ2FzZSgpID09PSBrZXkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgaWYgKCEhZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIG5ld0Vycm9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBmaWx0ZXIhWzBdLmVycm9yTWVzc2FnZSFcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbGlkYXRvck5hbWVNYXRoY2hpbmdFcnJvcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWxpZGF0b3JOYW1lTWF0aGNoaW5nRXJyb3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXJyb3JzID0gbmV3RXJyb3JzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0RXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KSk7XHJcbiAgICB0aGlzLmNvbnRyb2xUeXBlID0gdGhpcy5jb250cm9sLmNvbnRyb2xUeXBlO1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9ICEhdGhpcy5jb250cm9sLnZhbGlkYXRvcnM/LmZpbHRlcih4ID0+IHgudmFsaWRhdG9yLm5hbWUgPT09ICdyZXF1aXJlZCcpLmxlbmd0aFxyXG5cclxuICAgIHRoaXMucmF3Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5jb250cm9sLmZpZWxkKSE7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMucmF3Q29udHJvbD8uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgaWYgKCEhdGhpcy5jaGVja0Vycm9yJCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNoZWNrRXJyb3IkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldEVycm9yKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbC5maWVsZF0udmFsaWQ7IH1cclxuXHJcbiAgb25Gb2N1cyhlOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5mb2N1cyQ/Lm5leHQoZSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZTogYW55KSB7XHJcbiAgICB0aGlzLmNvbnRyb2wuYmx1ciQ/Lm5leHQoZSk7XHJcbiAgfVxyXG4gIG9IYW5kbGVDbGljayhlOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5jbGljayQ/Lm5leHQoZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLWNvbnRyb2wtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtjbGFzcy5oaWRkZW5dPVwiISFjb250cm9sLmhpZGRlblwiPlxyXG5cclxuICAgICAgICA8IS0tIFNUQVJUOiBMQUJFTCBTRVNTSU9OLS0+XHJcbiAgICAgICAgPGxhYmVsIFtjbGFzc109XCInY29udHJvbC1sYWJlbCcgKyAgKHJlcXVpcmVkID8gJyByZXF1aXJlZCcgOiAnJylcIiBbYXR0ci5mb3JdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hdmF0YXItbGFiZWxdPVwiY29udHJvbC51cGxvYWRGaWxlVHlwZT09PSdJTUFHRV9BVkFUQVInXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbC50b29sdGlwISB8IHRyYW5zbGF0ZTogbGFuZ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAge3soY29udHJvbC5jb250cm9sVHlwZSE9PSdDSEVDS0JPWCcgJiYgY29udHJvbC5jb250cm9sVHlwZSE9PSdCVVRUT04nKSA/IChjb250cm9sLmxhYmVsIHwgdHJhbnNsYXRlOiBsYW5nKSA6ICcnfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiISFjb250cm9sLmhpbnQhICYmIGNvbnRyb2wuY29udHJvbFR5cGUgIT09ICdDSEVDS0JPWCdcIiBjbGFzcz1cImZlYXRoZXItaGVscC1jaXJjbGVcIiBbYXBwVG9vbHRpcF09XCJjb250cm9sLmhpbnQhXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcclxuICAgICAgICAgICAgbWFyZ2luTGVmdDogJzJweCdcclxuICAgICAgICB9XCI+PC9pPlxyXG4gICAgICAgIDwhLS0gU1RBUlQ6IExBQkVMIFNFU1NJT04tLT5cclxuXHJcbiAgICAgICAgPCEtLSBTVEFSVDogRk9STS1DT05UUk9MIFNFU1NJT04tLT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nVEVYVEJPWCdcIj5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29udHJvbC50eXBlPT09J2RhdGUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3R5cGVdPVwiY29udHJvbC50eXBlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cImNvbnRyb2wucmVhZG9ubHkhXCIgdXNlVmFsdWVBc0RhdGU+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJjb250cm9sLnR5cGU9PT0nbnVtYmVyJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFt0eXBlXT1cImNvbnRyb2wudHlwZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtyZWFkb25seV09XCJjb250cm9sLnJlYWRvbmx5XCIgW3N0ZXBdPVwiY29udHJvbC5zdGVwIHx8ICcxJ1wiPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29udHJvbC50eXBlIT09J2RhdGUnICYmIGNvbnRyb2wudHlwZSE9PSdudW1iZXInXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWUgfCB0YWJsZUNlbGw6IGNvbnRyb2wucGlwZSA6IGxhbmdcIiBbdHlwZV09XCJjb250cm9sLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbcmVhZG9ubHldPVwiY29udHJvbC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJmb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0NVUlJFTkNZJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1jdXJyZW5jeS1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIj48L2NvcmUtY3VycmVuY3ktaW5wdXQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J1RFWFRBUkVBJ1wiPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgW3Jvd3NdPVwiY29udHJvbC50ZXh0YXJlYVJvd3M/LnRvU3RyaW5nKCkgfHwgJzMnXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6ICd1bnNldCcgfVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtyZWFkb25seV09XCJjb250cm9sLnJlYWRvbmx5XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFt0ZXh0XT1cImNvbnRyb2wubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW2lucHV0VmFsdWVdPVwiY29udHJvbC52YWx1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nTUNDJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1tY2MgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW2NvbHVtbnNdPVwiY29udHJvbC5jb2x1bW5zIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCIgXHJcbiAgICAgICAgICAgIFthcGlEZWZpbml0aW9uXT1cImNvbnRyb2wuYXBpRGVmaW5pdGlvbiFcIiBbZ2V0QnlJZEFwaV09XCJjb250cm9sLmdldEJ5SWRBcGkhXCIgW3NlbGVjdGVkUm93JF09XCJjb250cm9sLnNlbGVjdGVkUm93JCFcIlxyXG4gICAgICAgICAgICBbb3V0ZXJQYXJhbSRdPVwiY29udHJvbC5vdXRlclBhcmFtJCFcIlxyXG4gICAgICAgICAgICA+PC9jb3JlLW1jYz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nREFURVBJQ0tFUidcIj5cclxuICAgICAgICAgICAgPGNvcmUtZGF0ZS1waWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3JhbmdlTGltaXRdPVwiY29udHJvbC5yYW5nZUxpbWl0IVwiPjwvY29yZS1kYXRlLXBpY2tlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nRFJPUERPV04nICYmICEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWRyb3Bkb3duIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtvcHRpb25zJF09XCJjb250cm9sLmRyb3Bkb3duT3B0aW9ucyQhXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCI+PC9jb3JlLWRyb3Bkb3duPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdMSVNUJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1saXN0IFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtvcHRpb25zXT1cImNvbnRyb2wubGlzdE9wdGlvbnMhXCI+PC9jb3JlLWxpc3Q+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0NIRUNLTElTVCcgJiYgISFjb250cm9sLmNoZWNrbGlzdE9wdGlvbnMkXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWNoZWNrbGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbb3B0aW9ucyRdPVwiY29udHJvbC5jaGVja2xpc3RPcHRpb25zJCFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIj48L2NvcmUtY2hlY2tsaXN0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdTRUVLRVInICYmICEhY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nRU1QTE9ZRUVfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJjb250cm9sLm11bHRpTW9kZSFcIiBbb2JqZWN0TGlzdCRdPVwiY29udHJvbC5vYmplY3RMaXN0JCFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiIFtwcmVEZWZpbmVkT3V0ZXJQYXJhbSRdPVwiY29udHJvbC5wcmVEZWZpbmVkT3V0ZXJQYXJhbSQhXCJcclxuICAgICAgICAgICAgICAgIFtib3VuZEZyb21dPVwiY29udHJvbC5ib3VuZEZyb20hXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIiBbYWxzb0JpbmRUb109XCJjb250cm9sLmFsc29CaW5kVG8hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyPlxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyICpuZ0lmPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlPT09J0NPTlRSQUNUX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFttdWx0aU1vZGVdPVwiY29udHJvbC5tdWx0aU1vZGUhXCIgW29iamVjdExpc3QkXT1cImNvbnRyb2wub2JqZWN0TGlzdCQhXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIiBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiXHJcbiAgICAgICAgICAgICAgICBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cImNvbnRyb2wucHJlRGVmaW5lZE91dGVyUGFyYW0kIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nV09SS0lOR19TRUVLJ1wiIFttdWx0aU1vZGVdPVwiY29udHJvbC5tdWx0aU1vZGUhXCJcclxuICAgICAgICAgICAgICAgIFtvYmplY3RMaXN0JF09XCJjb250cm9sLm9iamVjdExpc3QkIVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbc2Vla2VyU291cmNlVHlwZV09XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGUhXCIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJjb250cm9sLnByZURlZmluZWRPdXRlclBhcmFtJCFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nV0FHRV9TRUVLJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbbXVsdGlNb2RlXT1cImNvbnRyb2wubXVsdGlNb2RlIVwiIFtvYmplY3RMaXN0JF09XCJjb250cm9sLm9iamVjdExpc3QkIVwiXHJcbiAgICAgICAgICAgICAgICBbc2Vla2VyU291cmNlVHlwZV09XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGUhXCIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJjb250cm9sLnByZURlZmluZWRPdXRlclBhcmFtJCFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nUE9TSVRJT05fU0VFSydcIiBbb2JqZWN0TGlzdCRdPVwiY29udHJvbC5vYmplY3RMaXN0JCFcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJjb250cm9sLm11bHRpTW9kZSFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbYWxzb0JpbmRUb109XCJjb250cm9sLmFsc29CaW5kVG8hXCJcclxuICAgICAgICAgICAgICAgIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIiBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cImNvbnRyb2wucHJlRGVmaW5lZE91dGVyUGFyYW0kIVwiXHJcbiAgICAgICAgICAgICAgICBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyPlxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyICpuZ0lmPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlPT09J1BPU0lUSU9OX0NPTkNVUlJFTlRfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJjb250cm9sLm11bHRpTW9kZSFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbYWxzb0JpbmRUb109XCJjb250cm9sLmFsc29CaW5kVG8hXCJcclxuICAgICAgICAgICAgICAgIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIiBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cImNvbnRyb2wucHJlRGVmaW5lZE91dGVyUGFyYW0kIVwiXHJcbiAgICAgICAgICAgICAgICBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyPlxyXG5cclxuICAgICAgICAgICAgPGNvcmUtZm9ybS1jb250cm9sLXNlZWtlciAqbmdJZj1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZT09PSdPUkdBTklaQVRJT05fVU5JVF9TRUVLJ1wiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbc2Vla2VyU291cmNlVHlwZV09XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGUhXCJcclxuICAgICAgICAgICAgICAgIFtib3VuZEZyb21dPVwiY29udHJvbC5ib3VuZEZyb20hXCIgW2Fsc29CaW5kVG9dPVwiY29udHJvbC5hbHNvQmluZFRvIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyPlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nRklMRVVQTE9BREVSJyAmJiAhIWNvbnRyb2wudXBsb2FkRmlsZVR5cGVcIj5cclxuICAgICAgICAgICAgPGNvcmUtZmlsZS11cGxvYWRlciBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbdXBsb2FkRmlsZVR5cGVdPVwiY29udHJvbC51cGxvYWRGaWxlVHlwZVwiXHJcbiAgICAgICAgICAgICAgICBbZmlsZURhdGFDb250cm9sTmFtZV09XCJjb250cm9sLmZpbGVEYXRhQ29udHJvbE5hbWUhXCJcclxuICAgICAgICAgICAgICAgIFtmaWxlTmFtZUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmlsZU5hbWVDb250cm9sTmFtZSFcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVUeXBlQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWxlVHlwZUNvbnRyb2xOYW1lIVwiXHJcbiAgICAgICAgICAgICAgICBbdmVydGljYWxNb2RlXT1cImNvbnRyb2wudmVydGljYWxNb2RlIVwiPjwvY29yZS1maWxlLXVwbG9hZGVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdBVFRBQ0hNRU5UJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1hdHRhY2htZW50IFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFthc3NpZ25Ub109XCJjb250cm9sLmFzc2lnblRvIVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVUb1Nob3ddPVwiY29udHJvbC52YWx1ZVRvU2hvdyFcIj48L2NvcmUtYXR0YWNobWVudD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nR1JJREJVRkZFUicgJiYgISFjb250cm9sLmdyaWRCdWZmZXJGb3JtU2VjdGlvbnMgJiYgISFjb250cm9sLmdyaWRCdWZmZXJUYWJsZUNvbHVtbnNcIj5cclxuICAgICAgICAgICAgPGNvcmUtZ3JpZC1idWZmZXIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW2Zvcm1TZWN0aW9uc109XCJjb250cm9sLmdyaWRCdWZmZXJGb3JtU2VjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2dyaWRDb2x1bW5zXT1cImNvbnRyb2wuZ3JpZEJ1ZmZlclRhYmxlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAob25CdWZmZXJGb3JtQ3JlYXRlZCk9XCIhIWNvbnRyb2wub25CdWZmZXJGb3JtQ3JlYXRlZCA/IGNvbnRyb2wub25CdWZmZXJGb3JtQ3JlYXRlZCgkZXZlbnQpIDogbnVsbFwiPjwvY29yZS1ncmlkLWJ1ZmZlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nT1JHVFJFRUNIRUNLJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1vcmctdHJlZSBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW2FjY2Vzc29yTW9kZV09XCJjb3JlT3JnVHJlZURlZmF1bHRBY2Nlc3Nvck1vZGVcIj48L2NvcmUtb3JnLXRyZWU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J1JBRElPR1JPVVAnXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbb3B0aW9ucyRdPVwiY29udHJvbC5yYWRpb0dyb3VwT3B0aW9ucyQhXCJcclxuICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbF09XCJjb250cm9sLnZlcnRpY2FsTW9kZSFcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29yZS1yYWRpby1ncm91cD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nTU9OVEhTRUxFQ1RPUidcIj5cclxuICAgICAgICAgICAgPGNvcmUtbW9udGgtc2VsZWN0b3IgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgID48L2NvcmUtbW9udGgtc2VsZWN0b3I+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdCVVRUT04nXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgdGV4dFwiIChjbGljayk9XCJvSGFuZGxlQ2xpY2soJGV2ZW50KVwiPnt7Y29udHJvbC5sYWJlbHwgdHJhbnNsYXRlOiBsYW5nfX08L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIEVORDogRk9STS1DT05UUk9MIFNFU1NJT04tLT5cclxuXHJcbiAgICAgICAgPCEtLSBTVEFSVDogRVJST1IgU0VTU0lPTi0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhIWVycm9ycyEubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZXJyb3JcIiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBlcnJvci5lcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGU6IGxhbmcgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiEhIWVycm9ycyEubGVuZ3RoICYmICEhY2hlY2tFcnJvciQudmFsdWVcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIHt7ICcmbmJzcDsnIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gRU5EOiBFUlJPUiBTRVNTSU9OLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbnRyb2wvY29yZS1jb250cm9sL2NvcmUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1jb250cm9sL2NvcmUtY29udHJvbC9jb3JlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQThCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxvRUFBb0UsQ0FBQztBQUVuSSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEZBQTRGLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0VB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QUFvQjtrQkEzQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7cUJBQzNCO29IQU1RLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBJRm9ybUJhc2VDb250cm9sIH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtL2NvcmUtZm9ybS9lbnVtLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlIH0gZnJvbSAnLi4vLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZURhdGVQaWNrZXJDb21wb25lbnQsIElDb3JlRGF0ZVBpY2tlclJhbmdlIH0gZnJvbSAnLi4vLi4vY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSUVycm9yIH0gZnJvbSAnLi9JRXJyb3InO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tsaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sU2Vla2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlR3JpZEJ1ZmZlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZ3JpZC1idWZmZXIvY29yZS1ncmlkLWJ1ZmZlci9jb3JlLWdyaWQtYnVmZmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDb3JlTWNjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1tY2MvY29yZS1tY2MvY29yZS1tY2MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZU1vbnRoU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW1vbnRoLXNlbGVjdG9yL2NvcmUtbW9udGgtc2VsZWN0b3IvY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWRyb3Bkb3duL2NvcmUtZHJvcGRvd24vY29yZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZpbGUtdXBsb2FkZXIvY29yZS1maWxlLXVwbG9hZGVyL2NvcmUtZmlsZS11cGxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtYXR0YWNobWVudC9jb3JlLWF0dGFjaG1lbnQvY29yZS1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1yYWRpby1ncm91cC9jb3JlLXJhZGlvLWdyb3VwL2NvcmUtcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlQ3VycmVuY3lJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtY3VycmVuY3ktaW5wdXQvY29yZS1jdXJyZW5jeS1pbnB1dC9jb3JlLWN1cnJlbmN5LWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ2VsbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90YWJsZS1jZWxsLnBpcGUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jb250cm9sJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIENvcmVEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIENvcmVMaXN0Q29tcG9uZW50LFxyXG4gICAgQ29yZUNoZWNrbGlzdENvbXBvbmVudCxcclxuICAgIENvcmVGb3JtQ29udHJvbFNlZWtlckNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBDb3JlQXR0YWNobWVudENvbXBvbmVudCxcclxuICAgIENvcmVHcmlkQnVmZmVyQ29tcG9uZW50LFxyXG4gICAgQ29yZURhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlT3JnVHJlZUNvbXBvbmVudCxcclxuICAgIENvcmVSYWRpb0dyb3VwQ29tcG9uZW50LFxyXG4gICAgQ29yZU1jY0NvbXBvbmVudCxcclxuICAgIENvcmVNb250aFNlbGVjdG9yQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIENvcmVDdXJyZW5jeUlucHV0Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgY29udHJvbCE6IElGb3JtQmFzZUNvbnRyb2w7XHJcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBjaGVja0Vycm9yJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuICBASW5wdXQoKSByYW5nZUxpbWl0ITogSUNvcmVEYXRlUGlja2VyUmFuZ2U7XHJcblxyXG4gIC8qIFNUQVJUOiBUSElTIElTIE5BVElWRSBGT1JNIENPTlRST0wgKi9cclxuICByYXdDb250cm9sITogQWJzdHJhY3RDb250cm9sO1xyXG4gIC8qIEVORDogVEhJUyBJUyBOQVRJVkUgRk9STSBDT05UUk9MICovXHJcblxyXG4gIGNvbnRyb2xUeXBlITogc3RyaW5nO1xyXG4gIHJlcXVpcmVkITogYm9vbGVhbjtcclxuICBlcnJvcnM6IElFcnJvcltdID0gW107XHJcblxyXG4gIGNvcmVPcmdUcmVlRGVmYXVsdEFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzcGxheVZhbGlkYXRvck5hbWVNYXRoY2hpbmdFcnJvcigpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgXHJcbiAgICAgICAgJyR7dGhpcy5jb250cm9sLmZpZWxkfScgdmFsaWRhdG9yIGFycmF5IGRlZmluaXRpb24gZXJyb3I6IHZhbGlkYXRvciBuYW1lIG11c3QgZXF1YWwgVmFsaWRhdG9ycy4mbHQ7a2V5Jmd0O1xyXG4gICAgICBgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tFcnJvcigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5yYXdDb250cm9sLmVycm9ycykge1xyXG5cclxuICAgICAgY29uc3QgbmV3RXJyb3JzOiBJRXJyb3JbXSA9IFtdO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sLmZpZWxkXS5lcnJvcnMhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgLyogIFxyXG4gICAgICAgICAgdGFubGVpY2E6XHJcbiAgICAgICAgICAgIEJ5IGN1c3RvbSBkZXNpZ24sIGN1c3RvbSBlcnJvciBpcyBhbiBhcnJheVxyXG4gICAgICAgICAgICB3aGlsZSBidWlsdC1pbiB2YWxpZGF0b3Igc2hvdWxkIHByb2R1Y2UgYW4gb2JqZWN0IGVycm9yIGlmIGFueVxyXG4gICAgICAgICovXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmNvbnRyb2wuZmllbGRdLmVycm9ycyFba2V5XSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICBuZXdFcnJvcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmNvbnRyb2wuZmllbGRdLmVycm9ycyFba2V5XVsxXVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCEhdGhpcy5jb250cm9sLnZhbGlkYXRvcnMpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5jb250cm9sLnZhbGlkYXRvcnM/LmZpbHRlcih4ID0+IHgubmFtZS50b0xvd2VyQ2FzZSgpID09PSBrZXkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgaWYgKCEhZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIG5ld0Vycm9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBmaWx0ZXIhWzBdLmVycm9yTWVzc2FnZSFcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbGlkYXRvck5hbWVNYXRoY2hpbmdFcnJvcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWxpZGF0b3JOYW1lTWF0aGNoaW5nRXJyb3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXJyb3JzID0gbmV3RXJyb3JzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0RXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KSk7XHJcbiAgICB0aGlzLmNvbnRyb2xUeXBlID0gdGhpcy5jb250cm9sLmNvbnRyb2xUeXBlO1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9ICEhdGhpcy5jb250cm9sLnZhbGlkYXRvcnM/LmZpbHRlcih4ID0+IHgudmFsaWRhdG9yLm5hbWUgPT09ICdyZXF1aXJlZCcpLmxlbmd0aFxyXG5cclxuICAgIHRoaXMucmF3Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5jb250cm9sLmZpZWxkKSE7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMucmF3Q29udHJvbD8uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgaWYgKCEhdGhpcy5jaGVja0Vycm9yJCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNoZWNrRXJyb3IkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tFcnJvcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldEVycm9yKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbC5maWVsZF0udmFsaWQ7IH1cclxuXHJcbiAgb25Gb2N1cyhlOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5mb2N1cyQ/Lm5leHQoZSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZTogYW55KSB7XHJcbiAgICB0aGlzLmNvbnRyb2wuYmx1ciQ/Lm5leHQoZSk7XHJcbiAgfVxyXG4gIG9IYW5kbGVDbGljayhlOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5jbGljayQ/Lm5leHQoZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLWNvbnRyb2wtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtjbGFzcy5oaWRkZW5dPVwiISFjb250cm9sLmhpZGRlblwiPlxyXG5cclxuICAgICAgICA8IS0tIFNUQVJUOiBMQUJFTCBTRVNTSU9OLS0+XHJcbiAgICAgICAgPGxhYmVsIFtjbGFzc109XCInY29udHJvbC1sYWJlbCcgKyAgKHJlcXVpcmVkID8gJyByZXF1aXJlZCcgOiAnJylcIiBbYXR0ci5mb3JdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hdmF0YXItbGFiZWxdPVwiY29udHJvbC51cGxvYWRGaWxlVHlwZT09PSdJTUFHRV9BVkFUQVInXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbC50b29sdGlwISB8IHRyYW5zbGF0ZTogbGFuZ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAge3soY29udHJvbC5jb250cm9sVHlwZSE9PSdDSEVDS0JPWCcgJiYgY29udHJvbC5jb250cm9sVHlwZSE9PSdCVVRUT04nKSA/IChjb250cm9sLmxhYmVsIHwgdHJhbnNsYXRlOiBsYW5nKSA6ICcnfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiISFjb250cm9sLmhpbnQhICYmIGNvbnRyb2wuY29udHJvbFR5cGUgIT09ICdDSEVDS0JPWCdcIiBjbGFzcz1cImZlYXRoZXItaGVscC1jaXJjbGVcIiBbYXBwVG9vbHRpcF09XCJjb250cm9sLmhpbnQhXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcclxuICAgICAgICAgICAgbWFyZ2luTGVmdDogJzJweCdcclxuICAgICAgICB9XCI+PC9pPlxyXG4gICAgICAgIDwhLS0gU1RBUlQ6IExBQkVMIFNFU1NJT04tLT5cclxuXHJcbiAgICAgICAgPCEtLSBTVEFSVDogRk9STS1DT05UUk9MIFNFU1NJT04tLT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nVEVYVEJPWCdcIj5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29udHJvbC50eXBlPT09J2RhdGUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3R5cGVdPVwiY29udHJvbC50eXBlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cImNvbnRyb2wucmVhZG9ubHkhXCIgdXNlVmFsdWVBc0RhdGU+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJjb250cm9sLnR5cGU9PT0nbnVtYmVyJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFt0eXBlXT1cImNvbnRyb2wudHlwZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtyZWFkb25seV09XCJjb250cm9sLnJlYWRvbmx5XCIgW3N0ZXBdPVwiY29udHJvbC5zdGVwIHx8ICcxJ1wiPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29udHJvbC50eXBlIT09J2RhdGUnICYmIGNvbnRyb2wudHlwZSE9PSdudW1iZXInXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWUgfCB0YWJsZUNlbGw6IGNvbnRyb2wucGlwZSA6IGxhbmdcIiBbdHlwZV09XCJjb250cm9sLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbcmVhZG9ubHldPVwiY29udHJvbC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJmb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0NVUlJFTkNZJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1jdXJyZW5jeS1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIj48L2NvcmUtY3VycmVuY3ktaW5wdXQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J1RFWFRBUkVBJ1wiPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgW3Jvd3NdPVwiY29udHJvbC50ZXh0YXJlYVJvd3M/LnRvU3RyaW5nKCkgfHwgJzMnXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6ICd1bnNldCcgfVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtyZWFkb25seV09XCJjb250cm9sLnJlYWRvbmx5XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFt0ZXh0XT1cImNvbnRyb2wubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW2lucHV0VmFsdWVdPVwiY29udHJvbC52YWx1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nTUNDJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1tY2MgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW2NvbHVtbnNdPVwiY29udHJvbC5jb2x1bW5zIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCIgXHJcbiAgICAgICAgICAgIFthcGlEZWZpbml0aW9uXT1cImNvbnRyb2wuYXBpRGVmaW5pdGlvbiFcIiBbZ2V0QnlJZEFwaV09XCJjb250cm9sLmdldEJ5SWRBcGkhXCIgW3NlbGVjdGVkUm93JF09XCJjb250cm9sLnNlbGVjdGVkUm93JCFcIlxyXG4gICAgICAgICAgICBbb3V0ZXJQYXJhbSRdPVwiY29udHJvbC5vdXRlclBhcmFtJCFcIlxyXG4gICAgICAgICAgICA+PC9jb3JlLW1jYz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nREFURVBJQ0tFUidcIj5cclxuICAgICAgICAgICAgPGNvcmUtZGF0ZS1waWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3JhbmdlTGltaXRdPVwiY29udHJvbC5yYW5nZUxpbWl0IVwiPjwvY29yZS1kYXRlLXBpY2tlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nRFJPUERPV04nICYmICEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWRyb3Bkb3duIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtvcHRpb25zJF09XCJjb250cm9sLmRyb3Bkb3duT3B0aW9ucyQhXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCI+PC9jb3JlLWRyb3Bkb3duPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdMSVNUJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1saXN0IFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtvcHRpb25zXT1cImNvbnRyb2wubGlzdE9wdGlvbnMhXCI+PC9jb3JlLWxpc3Q+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0NIRUNLTElTVCcgJiYgISFjb250cm9sLmNoZWNrbGlzdE9wdGlvbnMkXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWNoZWNrbGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbb3B0aW9ucyRdPVwiY29udHJvbC5jaGVja2xpc3RPcHRpb25zJCFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIj48L2NvcmUtY2hlY2tsaXN0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdTRUVLRVInICYmICEhY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nRU1QTE9ZRUVfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJjb250cm9sLm11bHRpTW9kZSFcIiBbb2JqZWN0TGlzdCRdPVwiY29udHJvbC5vYmplY3RMaXN0JCFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiIFtwcmVEZWZpbmVkT3V0ZXJQYXJhbSRdPVwiY29udHJvbC5wcmVEZWZpbmVkT3V0ZXJQYXJhbSQhXCJcclxuICAgICAgICAgICAgICAgIFtib3VuZEZyb21dPVwiY29udHJvbC5ib3VuZEZyb20hXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIiBbYWxzb0JpbmRUb109XCJjb250cm9sLmFsc29CaW5kVG8hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyPlxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyICpuZ0lmPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlPT09J0NPTlRSQUNUX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFttdWx0aU1vZGVdPVwiY29udHJvbC5tdWx0aU1vZGUhXCIgW29iamVjdExpc3QkXT1cImNvbnRyb2wub2JqZWN0TGlzdCQhXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIiBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiXHJcbiAgICAgICAgICAgICAgICBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cImNvbnRyb2wucHJlRGVmaW5lZE91dGVyUGFyYW0kIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nV09SS0lOR19TRUVLJ1wiIFttdWx0aU1vZGVdPVwiY29udHJvbC5tdWx0aU1vZGUhXCJcclxuICAgICAgICAgICAgICAgIFtvYmplY3RMaXN0JF09XCJjb250cm9sLm9iamVjdExpc3QkIVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbc2Vla2VyU291cmNlVHlwZV09XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGUhXCIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJjb250cm9sLnByZURlZmluZWRPdXRlclBhcmFtJCFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nV0FHRV9TRUVLJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbbXVsdGlNb2RlXT1cImNvbnRyb2wubXVsdGlNb2RlIVwiIFtvYmplY3RMaXN0JF09XCJjb250cm9sLm9iamVjdExpc3QkIVwiXHJcbiAgICAgICAgICAgICAgICBbc2Vla2VyU291cmNlVHlwZV09XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGUhXCIgW3ByZURlZmluZWRPdXRlclBhcmFtJF09XCJjb250cm9sLnByZURlZmluZWRPdXRlclBhcmFtJCFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nUE9TSVRJT05fU0VFSydcIiBbb2JqZWN0TGlzdCRdPVwiY29udHJvbC5vYmplY3RMaXN0JCFcIlxyXG4gICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJjb250cm9sLm11bHRpTW9kZSFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbYWxzb0JpbmRUb109XCJjb250cm9sLmFsc29CaW5kVG8hXCJcclxuICAgICAgICAgICAgICAgIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIiBbcHJlRGVmaW5lZE91dGVyUGFyYW0kXT1cImNvbnRyb2wucHJlRGVmaW5lZE91dGVyUGFyYW0kIVwiXHJcbiAgICAgICAgICAgICAgICBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiXHJcbiAgICAgICAgICAgICAgICBbc2Vla2VyVmVyaWZ5SWdub3JlXT1cImNvbnRyb2wuc2Vla2VyVmVyaWZ5SWdub3JlIVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nUE9TSVRJT05fQ09OQ1VSUkVOVF9TRUVLJ1wiXHJcbiAgICAgICAgICAgICAgICBbbXVsdGlNb2RlXT1cImNvbnRyb2wubXVsdGlNb2RlIVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiIFtwcmVEZWZpbmVkT3V0ZXJQYXJhbSRdPVwiY29udHJvbC5wcmVEZWZpbmVkT3V0ZXJQYXJhbSQhXCJcclxuICAgICAgICAgICAgICAgIFtib3VuZEZyb21dPVwiY29udHJvbC5ib3VuZEZyb20hXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcblxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyICpuZ0lmPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlPT09J09SR0FOSVpBVElPTl9VTklUX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbYWxzb0JpbmRUb109XCJjb250cm9sLmFsc29CaW5kVG8hXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdGSUxFVVBMT0FERVInICYmICEhY29udHJvbC51cGxvYWRGaWxlVHlwZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS1maWxlLXVwbG9hZGVyIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFt1cGxvYWRGaWxlVHlwZV09XCJjb250cm9sLnVwbG9hZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICAgIFtmaWxlRGF0YUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmlsZURhdGFDb250cm9sTmFtZSFcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVOYW1lQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWxlTmFtZUNvbnRyb2xOYW1lIVwiXHJcbiAgICAgICAgICAgICAgICBbZmlsZVR5cGVDb250cm9sTmFtZV09XCJjb250cm9sLmZpbGVUeXBlQ29udHJvbE5hbWUhXCJcclxuICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbE1vZGVdPVwiY29udHJvbC52ZXJ0aWNhbE1vZGUhXCI+PC9jb3JlLWZpbGUtdXBsb2FkZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0FUVEFDSE1FTlQnXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWF0dGFjaG1lbnQgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW2Fzc2lnblRvXT1cImNvbnRyb2wuYXNzaWduVG8hXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZVRvU2hvd109XCJjb250cm9sLnZhbHVlVG9TaG93IVwiPjwvY29yZS1hdHRhY2htZW50PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdHUklEQlVGRkVSJyAmJiAhIWNvbnRyb2wuZ3JpZEJ1ZmZlckZvcm1TZWN0aW9ucyAmJiAhIWNvbnRyb2wuZ3JpZEJ1ZmZlclRhYmxlQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1ncmlkLWJ1ZmZlciBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbZm9ybVNlY3Rpb25zXT1cImNvbnRyb2wuZ3JpZEJ1ZmZlckZvcm1TZWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbZ3JpZENvbHVtbnNdPVwiY29udHJvbC5ncmlkQnVmZmVyVGFibGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIChvbkJ1ZmZlckZvcm1DcmVhdGVkKT1cIiEhY29udHJvbC5vbkJ1ZmZlckZvcm1DcmVhdGVkID8gY29udHJvbC5vbkJ1ZmZlckZvcm1DcmVhdGVkKCRldmVudCkgOiBudWxsXCI+PC9jb3JlLWdyaWQtYnVmZmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdPUkdUUkVFQ0hFQ0snXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLW9yZy10cmVlIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbYWNjZXNzb3JNb2RlXT1cImNvcmVPcmdUcmVlRGVmYXVsdEFjY2Vzc29yTW9kZVwiPjwvY29yZS1vcmctdHJlZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nUkFESU9HUk9VUCdcIj5cclxuICAgICAgICAgICAgPGNvcmUtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtvcHRpb25zJF09XCJjb250cm9sLnJhZGlvR3JvdXBPcHRpb25zJCFcIlxyXG4gICAgICAgICAgICAgICAgW3ZlcnRpY2FsXT1cImNvbnRyb2wudmVydGljYWxNb2RlIVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb3JlLXJhZGlvLWdyb3VwPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdNT05USFNFTEVDVE9SJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1tb250aC1zZWxlY3RvciBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29yZS1tb250aC1zZWxlY3Rvcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0JVVFRPTidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSB0ZXh0XCIgKGNsaWNrKT1cIm9IYW5kbGVDbGljaygkZXZlbnQpXCI+e3tjb250cm9sLmxhYmVsfCB0cmFuc2xhdGU6IGxhbmd9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gRU5EOiBGT1JNLUNPTlRST0wgU0VTU0lPTi0tPlxyXG5cclxuICAgICAgICA8IS0tIFNUQVJUOiBFUlJPUiBTRVNTSU9OLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiEhZXJyb3JzIS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1lcnJvclwiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgIHt7IGVycm9yLmVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZTogbGFuZyB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiISEhZXJyb3JzIS5sZW5ndGggJiYgISFjaGVja0Vycm9yJC52YWx1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAge3sgJyZuYnNwOycgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBFTkQ6IEVSUk9SIFNFU1NJT04tLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -105,7 +105,7 @@ export class CoreControlNoGridBufferComponent extends BaseComponent {
105
105
  this.control.click$?.next(e);
106
106
  }
107
107
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreControlNoGridBufferComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreControlNoGridBufferComponent, isStandalone: true, selector: "core-control-no-grid-buffer", inputs: { control: "control", form: "form", checkError$: "checkError$", rangeLimit: "rangeLimit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-control-no-grid-buffer-container\">\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n <!-- START: LABEL SESSION-->\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\">\r\n {{control.controlType!=='CHECKBOX' ? (control.label | translate: lang) : ''}}\r\n </label>\r\n <!-- START: LABEL SESSION-->\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTBOX'\">\r\n <input *ngIf=\"control.type==='date'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" useValueAsDate>\r\n\r\n <input *ngIf=\"control.type==='number'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" [step]=\"control.step || '1'\">\r\n\r\n <input *ngIf=\"control.type!=='date' && control.type!=='number'\" [formControlName]=\"control.field\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\">\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTAREA'\">\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\"></textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKBOX'\">\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\"></core-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DATEPICKER'\">\r\n <core-date-picker [formControlName]=\"control.field\"></core-date-picker>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DROPDOWN' && !!control.dropdownOptions$\">\r\n <core-dropdown [formControlName]=\"control.field\" [options$]=\"control.dropdownOptions$!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-dropdown>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='LIST'\">\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\"></core-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKLIST' && !!control.checklistOptions$\">\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [shownFrom]=\"control.shownFrom!\"\r\n ></core-checklist>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='SEEKER' && !!control.seekerSourceType\">\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='EMPLOYEE_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='CONTRACT_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WORKING_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"\r\n [formControlName]=\"control.field\" [shownFrom]=\"control.shownFrom!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='FILEUPLOADER' && !!control.uploadFileType\">\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"></core-file-uploader>\r\n </ng-container>\r\n\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">{{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n</div>", styles: [".core-control-no-grid-buffer-container>div.hidden{display:none}.core-control-no-grid-buffer-container label{color:#464646}.core-control-no-grid-buffer-container label.required:after{content:\"*\";color:#ff040b}.core-control-no-grid-buffer-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "rangeLimit", "readonly", "disabled"] }, { kind: "component", type: CoreDropdownComponent, selector: "core-dropdown", inputs: ["getByIdObject$", "paramMode", "shownFrom", "options$", "height", "placeholder", "loading", "warningDisable", "itemHeight"] }, { kind: "component", type: CoreListComponent, selector: "core-list", inputs: ["title", "options"] }, { kind: "component", type: CoreChecklistComponent, selector: "core-checklist", inputs: ["paramMode", "getByIdObject$", "shownFrom", "options$", "height", "placeholder", "loading", "readonly", "disabled"] }, { kind: "component", type: CoreFormControlSeekerComponent, selector: "core-form-control-seeker", inputs: ["title", "showPageHeader", "preDefinedOuterParam$", "getByIdObject$", "paramMode", "multiMode", "objectList$", "shownSeekerColumns", "seekerSourceType", "boundFrom", "shownFrom", "alsoBindTo"], outputs: ["onDoubleClick"] }, { kind: "component", type: CoreFileUploaderComponent, selector: "core-file-uploader", inputs: ["uploadFileType", "fileDataControlName", "fileNameControlName", "fileTypeControlName", "avatarSize", "defaultAvatar", "hidePreview", "verticalMode"] }] }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreControlNoGridBufferComponent, isStandalone: true, selector: "core-control-no-grid-buffer", inputs: { control: "control", form: "form", checkError$: "checkError$", rangeLimit: "rangeLimit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-control-no-grid-buffer-container\">\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n <!-- START: LABEL SESSION-->\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\">\r\n {{control.controlType!=='CHECKBOX' ? (control.label | translate: lang) : ''}}\r\n </label>\r\n <!-- START: LABEL SESSION-->\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTBOX'\">\r\n <input *ngIf=\"control.type==='date'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" useValueAsDate>\r\n\r\n <input *ngIf=\"control.type==='number'\" [formControlName]=\"control.field\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\" [step]=\"control.step || '1'\">\r\n\r\n <input *ngIf=\"control.type!=='date' && control.type!=='number'\" [formControlName]=\"control.field\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\" [type]=\"control.type\"\r\n class=\"form-control\" [readonly]=\"control.readonly\">\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='TEXTAREA'\">\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\"></textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKBOX'\">\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\"></core-checkbox>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DATEPICKER'\">\r\n <core-date-picker [formControlName]=\"control.field\"></core-date-picker>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='DROPDOWN' && !!control.dropdownOptions$\">\r\n <core-dropdown [formControlName]=\"control.field\" [options$]=\"control.dropdownOptions$!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-dropdown>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='LIST'\">\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\"></core-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='CHECKLIST' && !!control.checklistOptions$\">\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [shownFrom]=\"control.shownFrom!\"\r\n ></core-checklist>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='SEEKER' && !!control.seekerSourceType\">\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='EMPLOYEE_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='CONTRACT_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='WORKING_SEEK'\"\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n <core-form-control-seeker *ngIf=\"control.seekerSourceType==='ORGANIZATION_UNIT_SEEK'\"\r\n [formControlName]=\"control.field\" [shownFrom]=\"control.shownFrom!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"></core-form-control-seeker>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='FILEUPLOADER' && !!control.uploadFileType\">\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"></core-file-uploader>\r\n </ng-container>\r\n\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">{{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n</div>", styles: [".core-control-no-grid-buffer-container>div.hidden{display:none}.core-control-no-grid-buffer-container label{color:#464646}.core-control-no-grid-buffer-container label.required:after{content:\"*\";color:#ff040b}.core-control-no-grid-buffer-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "rangeLimit", "readonly", "disabled"] }, { kind: "component", type: CoreDropdownComponent, selector: "core-dropdown", inputs: ["getByIdObject$", "paramMode", "shownFrom", "options$", "height", "placeholder", "loading", "warningDisable", "itemHeight"] }, { kind: "component", type: CoreListComponent, selector: "core-list", inputs: ["title", "options"] }, { kind: "component", type: CoreChecklistComponent, selector: "core-checklist", inputs: ["paramMode", "getByIdObject$", "shownFrom", "options$", "height", "placeholder", "loading", "readonly", "disabled"] }, { kind: "component", type: CoreFormControlSeekerComponent, selector: "core-form-control-seeker", inputs: ["title", "showPageHeader", "preDefinedOuterParam$", "getByIdObject$", "paramMode", "multiMode", "objectList$", "shownSeekerColumns", "seekerSourceType", "boundFrom", "shownFrom", "alsoBindTo", "seekerVerifyIgnore"], outputs: ["onDoubleClick"] }, { kind: "component", type: CoreFileUploaderComponent, selector: "core-file-uploader", inputs: ["uploadFileType", "fileDataControlName", "fileNameControlName", "fileTypeControlName", "avatarSize", "defaultAvatar", "hidePreview", "verticalMode"] }] }); }
109
109
  }
110
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreControlNoGridBufferComponent, decorators: [{
111
111
  type: Component,
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
131
131
  }], rangeLimit: [{
132
132
  type: Input
133
133
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIvY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyL2NvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyL2NvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlci9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFekUsT0FBTyxFQUE4QixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxvRUFBb0UsQ0FBQztBQUVuSSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGlCQUFp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QUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXRFLE9BQU8sQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsWUFBWSxDQUFDLENBQU07UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBOUdVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLGtOQ3hDN0Msa21MQTJGTSw4WkRsRUYsWUFBWSxvVkFDWixtQkFBbUIsKzFCQUNuQixhQUFhLDZDQUNiLGFBQWEsa0RBQ2IscUJBQXFCLDBKQUNyQix1QkFBdUIsMExBQ3ZCLHFCQUFxQixnTUFDckIsaUJBQWlCLG9GQUNqQixzQkFBc0IseUxBQ3RCLDhCQUE4Qiw0U0FDOUIseUJBQXlCOzsyRkFLaEIsZ0NBQWdDO2tCQW5CNUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIseUJBQXlCO3FCQUMxQjtvSEFNUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUZvcm1CYXNlQ29udHJvbCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb3JlRGF0ZVBpY2tlckNvbXBvbmVudCwgSUNvcmVEYXRlUGlja2VyUmFuZ2UgfSBmcm9tICcuLi8uLi9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIvY29yZS1kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJRXJyb3IgfSBmcm9tICcuLi8uLi9jb3JlLWNvbnRyb2wvY29yZS1jb250cm9sL0lFcnJvcic7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUgfSBmcm9tICcuLi8uLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWRyb3Bkb3duL2NvcmUtZHJvcGRvd24vY29yZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVDaGVja2xpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRmlsZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1maWxlLXVwbG9hZGVyL2NvcmUtZmlsZS11cGxvYWRlci9jb3JlLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IFRhYmxlQ2VsbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90YWJsZS1jZWxsLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUYWJsZUNlbGxQaXBlLFxyXG4gICAgQ29yZUNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgQ29yZURhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlRHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBDb3JlTGlzdENvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2xpc3RDb21wb25lbnQsXHJcbiAgICBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlRmlsZVVwbG9hZGVyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUNvbnRyb2xOb0dyaWRCdWZmZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBjb250cm9sITogSUZvcm1CYXNlQ29udHJvbDtcclxuICBASW5wdXQoKSBmb3JtITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGNoZWNrRXJyb3IkITogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xyXG4gIEBJbnB1dCgpIHJhbmdlTGltaXQhOiBJQ29yZURhdGVQaWNrZXJSYW5nZTtcclxuXHJcbiAgLyogU1RBUlQ6IFRISVMgSVMgTkFUSVZFIEZPUk0gQ09OVFJPTCAqL1xyXG4gIHJhd0NvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgLyogRU5EOiBUSElTIElTIE5BVElWRSBGT1JNIENPTlRST0wgKi9cclxuXHJcbiAgY29udHJvbFR5cGUhOiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQhOiBib29sZWFuO1xyXG4gIGVycm9yczogSUVycm9yW10gPSBbXTtcclxuXHJcbiAgY29yZU9yZ1RyZWVEZWZhdWx0QWNjZXNzb3JNb2RlID0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSwgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwbGF5VmFsaWRhdG9yTmFtZU1hdGhjaGluZ0Vycm9yKCk6IHZvaWQge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBcclxuICAgICAgICAnJHt0aGlzLmNvbnRyb2wuZmllbGR9JyB2YWxpZGF0b3IgYXJyYXkgZGVmaW5pdGlvbiBlcnJvcjogdmFsaWRhdG9yIG5hbWUgbXVzdCBlcXVhbCBWYWxpZGF0b3JzLiZsdDtrZXkmZ3Q7XHJcbiAgICAgIGAsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0Vycm9yKCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnJhd0NvbnRyb2wuZXJyb3JzKSB7XHJcblxyXG4gICAgICBjb25zdCBuZXdFcnJvcnM6IElFcnJvcltdID0gW107XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmNvbnRyb2wuZmllbGRdLmVycm9ycyEpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAvKiAgXHJcbiAgICAgICAgICB0YW5sZWljYTpcclxuICAgICAgICAgICAgQnkgY3VzdG9tIGRlc2lnbiwgY3VzdG9tIGVycm9yIGlzIGFuIGFycmF5XHJcbiAgICAgICAgICAgIHdoaWxlIGJ1aWx0LWluIHZhbGlkYXRvciBzaG91bGQgcHJvZHVjZSBhbiBvYmplY3QgZXJyb3IgaWYgYW55XHJcbiAgICAgICAgKi9cclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbC5maWVsZF0uZXJyb3JzIVtrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIG5ld0Vycm9ycy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbC5maWVsZF0uZXJyb3JzIVtrZXldWzFdXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoISF0aGlzLmNvbnRyb2wudmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmNvbnRyb2wudmFsaWRhdG9ycz8uZmlsdGVyKHggPT4geC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IGtleS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICBpZiAoISFmaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbmV3RXJyb3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGZpbHRlciFbMF0uZXJyb3JNZXNzYWdlIVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsaWRhdG9yTmFtZU1hdGhjaGluZ0Vycm9yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbGlkYXRvck5hbWVNYXRoY2hpbmdFcnJvcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lcnJvcnMgPSBuZXdFcnJvcnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRFcnJvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3JzID0gW107XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpKTtcclxuICAgIHRoaXMuY29udHJvbFR5cGUgPSB0aGlzLmNvbnRyb2wuY29udHJvbFR5cGU7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gISF0aGlzLmNvbnRyb2wudmFsaWRhdG9ycz8uZmlsdGVyKHggPT4geC52YWxpZGF0b3IubmFtZSA9PT0gJ3JlcXVpcmVkJykubGVuZ3RoXHJcblxyXG4gICAgdGhpcy5yYXdDb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmNvbnRyb2wuZmllbGQpITtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yYXdDb250cm9sPy5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICBpZiAoISF0aGlzLmNoZWNrRXJyb3IkKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY2hlY2tFcnJvciQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0RXJyb3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVmFsaWQoKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sLmZpZWxkXS52YWxpZDsgfVxyXG5cclxuICBvbkZvY3VzKGU6IGFueSkge1xyXG4gICAgdGhpcy5jb250cm9sLmZvY3VzJD8ubmV4dChlKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihlOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5ibHVyJD8ubmV4dChlKTtcclxuICB9XHJcbiAgb0hhbmRsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgdGhpcy5jb250cm9sLmNsaWNrJD8ubmV4dChlKTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBbY2xhc3MuaGlkZGVuXT1cIiEhY29udHJvbC5oaWRkZW5cIj5cclxuXHJcbiAgICAgICAgPCEtLSBTVEFSVDogTEFCRUwgU0VTU0lPTi0tPlxyXG4gICAgICAgIDxsYWJlbCBbY2xhc3NdPVwiJ2NvbnRyb2wtbGFiZWwnICsgIChyZXF1aXJlZCA/ICcgcmVxdWlyZWQnIDogJycpXCIgW2F0dHIuZm9yXT1cImNvbnRyb2wuZmllbGRcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYXZhdGFyLWxhYmVsXT1cImNvbnRyb2wudXBsb2FkRmlsZVR5cGU9PT0nSU1BR0VfQVZBVEFSJ1wiPlxyXG4gICAgICAgICAgICB7e2NvbnRyb2wuY29udHJvbFR5cGUhPT0nQ0hFQ0tCT1gnID8gKGNvbnRyb2wubGFiZWwgfCB0cmFuc2xhdGU6IGxhbmcpIDogJyd9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPCEtLSBTVEFSVDogTEFCRUwgU0VTU0lPTi0tPlxyXG5cclxuICAgICAgICA8IS0tIFNUQVJUOiBGT1JNLUNPTlRST0wgU0VTU0lPTi0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdURVhUQk9YJ1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJjb250cm9sLnR5cGU9PT0nZGF0ZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbdHlwZV09XCJjb250cm9sLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbcmVhZG9ubHldPVwiY29udHJvbC5yZWFkb25seVwiIHVzZVZhbHVlQXNEYXRlPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29udHJvbC50eXBlPT09J251bWJlcidcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbdHlwZV09XCJjb250cm9sLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbcmVhZG9ubHldPVwiY29udHJvbC5yZWFkb25seVwiIFtzdGVwXT1cImNvbnRyb2wuc3RlcCB8fCAnMSdcIj5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImNvbnRyb2wudHlwZSE9PSdkYXRlJyAmJiBjb250cm9sLnR5cGUhPT0nbnVtYmVyJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZm9ybS5nZXQoY29udHJvbC5maWVsZCk/LnZhbHVlIHwgdGFibGVDZWxsOiBjb250cm9sLnBpcGUgOiBsYW5nXCIgW3R5cGVdPVwiY29udHJvbC50eXBlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cImNvbnRyb2wucmVhZG9ubHlcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nVEVYVEFSRUEnXCI+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBbcm93c109XCJjb250cm9sLnRleHRhcmVhUm93cz8udG9TdHJpbmcoKSB8fCAnMydcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogJ3Vuc2V0JyB9XCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cImNvbnRyb2wucmVhZG9ubHlcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgPGNvcmUtY2hlY2tib3ggW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3RleHRdPVwiY29udHJvbC5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXRWYWx1ZV09XCJjb250cm9sLnZhbHVlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdEQVRFUElDS0VSJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1kYXRlLXBpY2tlciBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIj48L2NvcmUtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0RST1BET1dOJyAmJiAhIWNvbnRyb2wuZHJvcGRvd25PcHRpb25zJFwiPlxyXG4gICAgICAgICAgICA8Y29yZS1kcm9wZG93biBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbb3B0aW9ucyRdPVwiY29udHJvbC5kcm9wZG93bk9wdGlvbnMkIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1kcm9wZG93bj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nTElTVCdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbb3B0aW9uc109XCJjb250cm9sLmxpc3RPcHRpb25zIVwiPjwvY29yZS1saXN0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdDSEVDS0xJU1QnICYmICEhY29udHJvbC5jaGVja2xpc3RPcHRpb25zJFwiPlxyXG4gICAgICAgICAgICA8Y29yZS1jaGVja2xpc3QgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW29wdGlvbnMkXT1cImNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQhXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb3JlLWNoZWNrbGlzdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nU0VFS0VSJyAmJiAhIWNvbnRyb2wuc2Vla2VyU291cmNlVHlwZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyICpuZ0lmPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlPT09J0VNUExPWUVFX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nQ09OVFJBQ1RfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiXHJcbiAgICAgICAgICAgICAgICBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCIgW2Fsc29CaW5kVG9dPVwiY29udHJvbC5hbHNvQmluZFRvIVwiXHJcbiAgICAgICAgICAgICAgICBbZ2V0QnlJZE9iamVjdCRdPVwiY29udHJvbC5nZXRCeUlkT2JqZWN0JCFcIj48L2NvcmUtZm9ybS1jb250cm9sLXNlZWtlcj5cclxuICAgICAgICAgICAgPGNvcmUtZm9ybS1jb250cm9sLXNlZWtlciAqbmdJZj1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZT09PSdXT1JLSU5HX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nT1JHQU5JWkFUSU9OX1VOSVRfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIlxyXG4gICAgICAgICAgICAgICAgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiXHJcbiAgICAgICAgICAgICAgICBbZ2V0QnlJZE9iamVjdCRdPVwiY29udHJvbC5nZXRCeUlkT2JqZWN0JCFcIj48L2NvcmUtZm9ybS1jb250cm9sLXNlZWtlcj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0ZJTEVVUExPQURFUicgJiYgISFjb250cm9sLnVwbG9hZEZpbGVUeXBlXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZpbGUtdXBsb2FkZXIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3VwbG9hZEZpbGVUeXBlXT1cImNvbnRyb2wudXBsb2FkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVEYXRhQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWxlRGF0YUNvbnRyb2xOYW1lIVwiXHJcbiAgICAgICAgICAgICAgICBbZmlsZU5hbWVDb250cm9sTmFtZV09XCJjb250cm9sLmZpbGVOYW1lQ29udHJvbE5hbWUhXCJcclxuICAgICAgICAgICAgICAgIFtmaWxlVHlwZUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmlsZVR5cGVDb250cm9sTmFtZSFcIj48L2NvcmUtZmlsZS11cGxvYWRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBFTkQ6IEZPUk0tQ09OVFJPTCBTRVNTSU9OLS0+XHJcblxyXG4gICAgICAgIDwhLS0gU1RBUlQ6IEVSUk9SIFNFU1NJT04tLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JzIS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1lcnJvclwiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj57eyBlcnJvci5lcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGU6IGxhbmcgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBFTkQ6IEVSUk9SIFNFU1NJT04tLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIvY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyL2NvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyL2NvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlci9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFekUsT0FBTyxFQUE4QixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxvRUFBb0UsQ0FBQztBQUVuSSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGlCQUFp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QUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXRFLE9BQU8sQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsWUFBWSxDQUFDLENBQU07UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBOUdVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLGtOQ3hDN0Msa21MQTJGTSw4WkRsRUYsWUFBWSxvVkFDWixtQkFBbUIsKzFCQUNuQixhQUFhLDZDQUNiLGFBQWEsa0RBQ2IscUJBQXFCLDBKQUNyQix1QkFBdUIsMExBQ3ZCLHFCQUFxQixnTUFDckIsaUJBQWlCLG9GQUNqQixzQkFBc0IseUxBQ3RCLDhCQUE4QixrVUFDOUIseUJBQXlCOzsyRkFLaEIsZ0NBQWdDO2tCQW5CNUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIseUJBQXlCO3FCQUMxQjtvSEFNUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUZvcm1CYXNlQ29udHJvbCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb3JlRGF0ZVBpY2tlckNvbXBvbmVudCwgSUNvcmVEYXRlUGlja2VyUmFuZ2UgfSBmcm9tICcuLi8uLi9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIvY29yZS1kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJRXJyb3IgfSBmcm9tICcuLi8uLi9jb3JlLWNvbnRyb2wvY29yZS1jb250cm9sL0lFcnJvcic7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUgfSBmcm9tICcuLi8uLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWRyb3Bkb3duL2NvcmUtZHJvcGRvd24vY29yZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVDaGVja2xpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRmlsZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1maWxlLXVwbG9hZGVyL2NvcmUtZmlsZS11cGxvYWRlci9jb3JlLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IFRhYmxlQ2VsbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90YWJsZS1jZWxsLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUYWJsZUNlbGxQaXBlLFxyXG4gICAgQ29yZUNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgQ29yZURhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlRHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBDb3JlTGlzdENvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2xpc3RDb21wb25lbnQsXHJcbiAgICBDb3JlRm9ybUNvbnRyb2xTZWVrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlRmlsZVVwbG9hZGVyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUNvbnRyb2xOb0dyaWRCdWZmZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBjb250cm9sITogSUZvcm1CYXNlQ29udHJvbDtcclxuICBASW5wdXQoKSBmb3JtITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGNoZWNrRXJyb3IkITogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xyXG4gIEBJbnB1dCgpIHJhbmdlTGltaXQhOiBJQ29yZURhdGVQaWNrZXJSYW5nZTtcclxuXHJcbiAgLyogU1RBUlQ6IFRISVMgSVMgTkFUSVZFIEZPUk0gQ09OVFJPTCAqL1xyXG4gIHJhd0NvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgLyogRU5EOiBUSElTIElTIE5BVElWRSBGT1JNIENPTlRST0wgKi9cclxuXHJcbiAgY29udHJvbFR5cGUhOiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQhOiBib29sZWFuO1xyXG4gIGVycm9yczogSUVycm9yW10gPSBbXTtcclxuXHJcbiAgY29yZU9yZ1RyZWVEZWZhdWx0QWNjZXNzb3JNb2RlID0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSwgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwbGF5VmFsaWRhdG9yTmFtZU1hdGhjaGluZ0Vycm9yKCk6IHZvaWQge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBcclxuICAgICAgICAnJHt0aGlzLmNvbnRyb2wuZmllbGR9JyB2YWxpZGF0b3IgYXJyYXkgZGVmaW5pdGlvbiBlcnJvcjogdmFsaWRhdG9yIG5hbWUgbXVzdCBlcXVhbCBWYWxpZGF0b3JzLiZsdDtrZXkmZ3Q7XHJcbiAgICAgIGAsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0Vycm9yKCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnJhd0NvbnRyb2wuZXJyb3JzKSB7XHJcblxyXG4gICAgICBjb25zdCBuZXdFcnJvcnM6IElFcnJvcltdID0gW107XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmNvbnRyb2wuZmllbGRdLmVycm9ycyEpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAvKiAgXHJcbiAgICAgICAgICB0YW5sZWljYTpcclxuICAgICAgICAgICAgQnkgY3VzdG9tIGRlc2lnbiwgY3VzdG9tIGVycm9yIGlzIGFuIGFycmF5XHJcbiAgICAgICAgICAgIHdoaWxlIGJ1aWx0LWluIHZhbGlkYXRvciBzaG91bGQgcHJvZHVjZSBhbiBvYmplY3QgZXJyb3IgaWYgYW55XHJcbiAgICAgICAgKi9cclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbC5maWVsZF0uZXJyb3JzIVtrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIG5ld0Vycm9ycy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbC5maWVsZF0uZXJyb3JzIVtrZXldWzFdXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoISF0aGlzLmNvbnRyb2wudmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmNvbnRyb2wudmFsaWRhdG9ycz8uZmlsdGVyKHggPT4geC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IGtleS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICBpZiAoISFmaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbmV3RXJyb3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGZpbHRlciFbMF0uZXJyb3JNZXNzYWdlIVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsaWRhdG9yTmFtZU1hdGhjaGluZ0Vycm9yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbGlkYXRvck5hbWVNYXRoY2hpbmdFcnJvcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lcnJvcnMgPSBuZXdFcnJvcnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRFcnJvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3JzID0gW107XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpKTtcclxuICAgIHRoaXMuY29udHJvbFR5cGUgPSB0aGlzLmNvbnRyb2wuY29udHJvbFR5cGU7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gISF0aGlzLmNvbnRyb2wudmFsaWRhdG9ycz8uZmlsdGVyKHggPT4geC52YWxpZGF0b3IubmFtZSA9PT0gJ3JlcXVpcmVkJykubGVuZ3RoXHJcblxyXG4gICAgdGhpcy5yYXdDb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmNvbnRyb2wuZmllbGQpITtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yYXdDb250cm9sPy5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrRXJyb3IoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICBpZiAoISF0aGlzLmNoZWNrRXJyb3IkKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY2hlY2tFcnJvciQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0Vycm9yKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0RXJyb3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVmFsaWQoKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sLmZpZWxkXS52YWxpZDsgfVxyXG5cclxuICBvbkZvY3VzKGU6IGFueSkge1xyXG4gICAgdGhpcy5jb250cm9sLmZvY3VzJD8ubmV4dChlKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihlOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5ibHVyJD8ubmV4dChlKTtcclxuICB9XHJcbiAgb0hhbmRsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgdGhpcy5jb250cm9sLmNsaWNrJD8ubmV4dChlKTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBbY2xhc3MuaGlkZGVuXT1cIiEhY29udHJvbC5oaWRkZW5cIj5cclxuXHJcbiAgICAgICAgPCEtLSBTVEFSVDogTEFCRUwgU0VTU0lPTi0tPlxyXG4gICAgICAgIDxsYWJlbCBbY2xhc3NdPVwiJ2NvbnRyb2wtbGFiZWwnICsgIChyZXF1aXJlZCA/ICcgcmVxdWlyZWQnIDogJycpXCIgW2F0dHIuZm9yXT1cImNvbnRyb2wuZmllbGRcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYXZhdGFyLWxhYmVsXT1cImNvbnRyb2wudXBsb2FkRmlsZVR5cGU9PT0nSU1BR0VfQVZBVEFSJ1wiPlxyXG4gICAgICAgICAgICB7e2NvbnRyb2wuY29udHJvbFR5cGUhPT0nQ0hFQ0tCT1gnID8gKGNvbnRyb2wubGFiZWwgfCB0cmFuc2xhdGU6IGxhbmcpIDogJyd9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPCEtLSBTVEFSVDogTEFCRUwgU0VTU0lPTi0tPlxyXG5cclxuICAgICAgICA8IS0tIFNUQVJUOiBGT1JNLUNPTlRST0wgU0VTU0lPTi0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdURVhUQk9YJ1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJjb250cm9sLnR5cGU9PT0nZGF0ZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbdHlwZV09XCJjb250cm9sLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbcmVhZG9ubHldPVwiY29udHJvbC5yZWFkb25seVwiIHVzZVZhbHVlQXNEYXRlPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiY29udHJvbC50eXBlPT09J251bWJlcidcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbdHlwZV09XCJjb250cm9sLnR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbcmVhZG9ubHldPVwiY29udHJvbC5yZWFkb25seVwiIFtzdGVwXT1cImNvbnRyb2wuc3RlcCB8fCAnMSdcIj5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImNvbnRyb2wudHlwZSE9PSdkYXRlJyAmJiBjb250cm9sLnR5cGUhPT0nbnVtYmVyJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZm9ybS5nZXQoY29udHJvbC5maWVsZCk/LnZhbHVlIHwgdGFibGVDZWxsOiBjb250cm9sLnBpcGUgOiBsYW5nXCIgW3R5cGVdPVwiY29udHJvbC50eXBlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cImNvbnRyb2wucmVhZG9ubHlcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nVEVYVEFSRUEnXCI+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBbcm93c109XCJjb250cm9sLnRleHRhcmVhUm93cz8udG9TdHJpbmcoKSB8fCAnMydcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogJ3Vuc2V0JyB9XCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cImNvbnRyb2wucmVhZG9ubHlcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgPGNvcmUtY2hlY2tib3ggW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3RleHRdPVwiY29udHJvbC5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXRWYWx1ZV09XCJjb250cm9sLnZhbHVlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdEQVRFUElDS0VSJ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1kYXRlLXBpY2tlciBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIj48L2NvcmUtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0RST1BET1dOJyAmJiAhIWNvbnRyb2wuZHJvcGRvd25PcHRpb25zJFwiPlxyXG4gICAgICAgICAgICA8Y29yZS1kcm9wZG93biBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbb3B0aW9ucyRdPVwiY29udHJvbC5kcm9wZG93bk9wdGlvbnMkIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiPjwvY29yZS1kcm9wZG93bj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nTElTVCdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmllbGRcIiBbb3B0aW9uc109XCJjb250cm9sLmxpc3RPcHRpb25zIVwiPjwvY29yZS1saXN0PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC5jb250cm9sVHlwZT09PSdDSEVDS0xJU1QnICYmICEhY29udHJvbC5jaGVja2xpc3RPcHRpb25zJFwiPlxyXG4gICAgICAgICAgICA8Y29yZS1jaGVja2xpc3QgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW29wdGlvbnMkXT1cImNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQhXCJcclxuICAgICAgICAgICAgICAgIFtnZXRCeUlkT2JqZWN0JF09XCJjb250cm9sLmdldEJ5SWRPYmplY3QkIVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb3JlLWNoZWNrbGlzdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wuY29udHJvbFR5cGU9PT0nU0VFS0VSJyAmJiAhIWNvbnRyb2wuc2Vla2VyU291cmNlVHlwZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyICpuZ0lmPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlPT09J0VNUExPWUVFX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nQ09OVFJBQ1RfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiXHJcbiAgICAgICAgICAgICAgICBbYm91bmRGcm9tXT1cImNvbnRyb2wuYm91bmRGcm9tIVwiIFtzaG93bkZyb21dPVwiY29udHJvbC5zaG93bkZyb20hXCIgW2Fsc29CaW5kVG9dPVwiY29udHJvbC5hbHNvQmluZFRvIVwiXHJcbiAgICAgICAgICAgICAgICBbZ2V0QnlJZE9iamVjdCRdPVwiY29udHJvbC5nZXRCeUlkT2JqZWN0JCFcIj48L2NvcmUtZm9ybS1jb250cm9sLXNlZWtlcj5cclxuICAgICAgICAgICAgPGNvcmUtZm9ybS1jb250cm9sLXNlZWtlciAqbmdJZj1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZT09PSdXT1JLSU5HX1NFRUsnXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWVsZFwiIFtzZWVrZXJTb3VyY2VUeXBlXT1cImNvbnRyb2wuc2Vla2VyU291cmNlVHlwZSFcIlxyXG4gICAgICAgICAgICAgICAgW2JvdW5kRnJvbV09XCJjb250cm9sLmJvdW5kRnJvbSFcIiBbc2hvd25Gcm9tXT1cImNvbnRyb2wuc2hvd25Gcm9tIVwiIFthbHNvQmluZFRvXT1cImNvbnRyb2wuYWxzb0JpbmRUbyFcIlxyXG4gICAgICAgICAgICAgICAgW2dldEJ5SWRPYmplY3QkXT1cImNvbnRyb2wuZ2V0QnlJZE9iamVjdCQhXCI+PC9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0tY29udHJvbC1zZWVrZXIgKm5nSWY9XCJjb250cm9sLnNlZWtlclNvdXJjZVR5cGU9PT0nT1JHQU5JWkFUSU9OX1VOSVRfU0VFSydcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3Nob3duRnJvbV09XCJjb250cm9sLnNob3duRnJvbSFcIlxyXG4gICAgICAgICAgICAgICAgW3NlZWtlclNvdXJjZVR5cGVdPVwiY29udHJvbC5zZWVrZXJTb3VyY2VUeXBlIVwiXHJcbiAgICAgICAgICAgICAgICBbZ2V0QnlJZE9iamVjdCRdPVwiY29udHJvbC5nZXRCeUlkT2JqZWN0JCFcIj48L2NvcmUtZm9ybS1jb250cm9sLXNlZWtlcj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmNvbnRyb2xUeXBlPT09J0ZJTEVVUExPQURFUicgJiYgISFjb250cm9sLnVwbG9hZEZpbGVUeXBlXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWZpbGUtdXBsb2FkZXIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLmZpZWxkXCIgW3VwbG9hZEZpbGVUeXBlXT1cImNvbnRyb2wudXBsb2FkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVEYXRhQ29udHJvbE5hbWVdPVwiY29udHJvbC5maWxlRGF0YUNvbnRyb2xOYW1lIVwiXHJcbiAgICAgICAgICAgICAgICBbZmlsZU5hbWVDb250cm9sTmFtZV09XCJjb250cm9sLmZpbGVOYW1lQ29udHJvbE5hbWUhXCJcclxuICAgICAgICAgICAgICAgIFtmaWxlVHlwZUNvbnRyb2xOYW1lXT1cImNvbnRyb2wuZmlsZVR5cGVDb250cm9sTmFtZSFcIj48L2NvcmUtZmlsZS11cGxvYWRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBFTkQ6IEZPUk0tQ09OVFJPTCBTRVNTSU9OLS0+XHJcblxyXG4gICAgICAgIDwhLS0gU1RBUlQ6IEVSUk9SIFNFU1NJT04tLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JzIS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC1lcnJvclwiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj57eyBlcnJvci5lcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGU6IGxhbmcgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBFTkQ6IEVSUk9SIFNFU1NJT04tLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGVcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL0lDb3JlRHJvcGRvd25PcHRpb25cIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRW51bUNvcmVGaWxlVXBsb2FkZXJUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUtZmlsZS11cGxvYWRlci9jb3JlLWZpbGUtdXBsb2FkZXIvY29yZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFbnVtSWNvbkNsYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2VudW0vRW51bUljb25DbGFzc1wiO1xyXG5pbXBvcnQgeyBJQ29yZUNoZWNrbGlzdE9wdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUNvcmVMaXN0T3B0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS10YWJsZS9FbnVtQ29yZVRhYmxlUGlwZVR5cGVcIjtcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVSYWRpb09wdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlLXJhZGlvLWdyb3VwL2NvcmUtcmFkaW8tZ3JvdXAvY29yZS1yYWRpby1ncm91cC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUNvcmVEYXRlUGlja2VyUmFuZ2UgfSBmcm9tIFwiLi4vLi4vY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9FbnVtRm9ybUJhc2VDb250b2xUeXBlXCI7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1CYXNlRHJvcGRvd25PcHRpb24ge1xyXG4gIGtleTogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvciB7XHJcbiAgbmFtZTogc3RyaW5nLCAvLyBtdXN0IGVxdWFsIHRoZSBlcnJvciBrZXlcclxuICB2YWxpZGF0b3I6IFZhbGlkYXRvckZuLFxyXG4gIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleSxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZUZvcm1Db250cm9sU2Vla2VyRXh0cmFCaW5kaW5nTW9kZWwge1xyXG4gIHRha2VGcm9tOiBzdHJpbmc7XHJcbiAgYmluZFRvOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVGb3JtU2VjdGlvbiB7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXksXHJcbiAgaWNvbkNsYXNzPzogRW51bUljb25DbGFzcyxcclxuICBhZGRNb2RlT25seT86IGJvb2xlYW47IC8vIFNvbWUgc2VjdGlvbiBmb3Igc3BlY2lmaWMgZWRpdCBjb21wb25lbnQgbmVlZCBub3QgdG8gY3JlYXRlIGFuZCByZW5kZXIgcGFydGljdWxhciBzZWN0aW9uLiBJZiBuZWVkZWQsIHNldCBhZGRNb2RlT25seSB0byB0cnVlXHJcbiAgdXBkYXRlTW9kZU9ubHk/OiBib29sZWFuOyAvLyBTb21lIHNlY3Rpb24gZm9yIHNwZWNpZmljIGVkaXQgY29tcG9uZW50IG5lZWQgbm90IHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHBhcnRpY3VsYXIgc2VjdGlvbi4gSWYgbmVlZGVkLCBzZXQgdXBkYXRlTW9kZU9ubHkgdG8gdHJ1ZVxyXG4gIGhpZGRlbj86IGJvb2xlYW47IC8vIFNvbWV0aW1lcyB3ZSBuZWVkIHNvbWUgc2VjdGlvbiBub3QgdG8gYmUgaW5pdGlhbGx5IHJlbmRlcmVkXHJcbiAgcm93czogSUZvcm1CYXNlQ29udHJvbFtdW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1CYXNlQ29udHJvbCB7XHJcbiAgZmxleFNpemU6IG51bWJlcjtcclxuICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZSxcclxuICBmaWVsZDogc3RyaW5nLFxyXG4gIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LFxyXG4gIHZhbHVlOiBhbnksXHJcbiAgb3B0aW9ucz86IElGb3JtQmFzZURyb3Bkb3duT3B0aW9uW10sXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuLFxyXG4gIGhpZGRlbj86IGJvb2xlYW4sXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuLFxyXG4gIHR5cGU/OiBzdHJpbmcsXHJcbiAgc3RlcD86IHN0cmluZywgLy8gd2hlbiB0eXBlOiAnbnVtYmVyJyBhbmQgeW91IGRlc2lyZSBkZWNpbWFsID0+IHN0ZXA6ICcuMDEnXHJcbiAgcGlwZT86IEVudW1Db3JlVGFibGVQaXBlVHlwZSwgLy8gc2hhcmVkIHBpcGUgZnJvbSBDb3JlVGFibGVcclxuICB0b29sdGlwPzogRW51bVRyYW5zbGF0ZUtleTtcclxuICBoaW50PzogRW51bVRyYW5zbGF0ZUtleTtcclxuXHJcbiAgdGV4dGFyZWFSb3dzPzogbnVtYmVyLCAvLyBXSEVOIFVTSU5HIHN0YW5kYXJkIFRleHRBcmVhXHJcblxyXG4gIHNlZWtlclNvdXJjZVR5cGU/OiBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSxcclxuXHJcbiAgLyogd2hlbiB1c2luZyBTRUVLRVIgZnJvbSBncmlkKi9cclxuICBwcmVEZWZpbmVkT3V0ZXJQYXJhbSQ/OiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuXHJcbiAgLyogd2hlbiB1c2luZyBhbG1vc3QgYWxsIGNvbnRyb2xzICovXHJcbiAgZ2V0QnlJZE9iamVjdCQ/OiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBnZXRCeUlkQXBpPzogYXBpO1xyXG5cclxuICAvKiB3aGVuIHVzaW5nIENvcmVFbXBsb3llZVNlZWtlciAqL1xyXG4gIGJvdW5kRnJvbT86IHN0cmluZztcclxuICBzaG93bkZyb20/OiBzdHJpbmc7IC8vIFdoZW4gdXNpbmcgTUNDIHRvb1xyXG4gIGFsc29CaW5kVG8/OiBJQ29yZUZvcm1Db250cm9sU2Vla2VyRXh0cmFCaW5kaW5nTW9kZWxbXTtcclxuXHJcbiAgZHJvcGRvd25PcHRpb25zJD86IEJlaGF2aW9yU3ViamVjdDxJQ29yZURyb3Bkb3duT3B0aW9uW10+OyAvLyBXSEVOIFVTSU5HIENvcmVEcm9wZG93bkNvbXBvbmVudFxyXG5cclxuICBsaXN0T3B0aW9ucz86IElDb3JlTGlzdE9wdGlvbltdOyAvLyBXSEVOIFVTSU5HIENvcmVMaXN0Q29tcG9uZW50XHJcblxyXG4gIG11bHRpTW9kZT86IGJvb2xlYW47IC8vIHdoZW4gdXNpbmcgU0VFS0VSIHdpdGggZ3JpZCAobXVsdGlNb2RlKVxyXG4gIG9iamVjdExpc3QkPzogQmVoYXZpb3JTdWJqZWN0PGFueVtdPjsgLy8gd2hlbiB1c2luZyBTRUVLRVIgd2l0aCBncmlkIChtdWx0aU1vZGUpXHJcbiAgZ2V0T2JqZWN0TGlzdEZyb20/OiBzdHJpbmc7IC8vIHdoZW4gdXNpbmcgU0VFS0VSIHdpdGggZ3JpZCAobXVsdGlNb2RlKVxyXG5cclxuICByYWRpb0dyb3VwT3B0aW9ucyQ/OiBCZWhhdmlvclN1YmplY3Q8SUNvcmVSYWRpb09wdGlvbltdPjsgLy8gV0hFTiBVU0lORyBDb3JlUmFkaW9Hcm91cENvbXBvbmVudFxyXG5cclxuICBjaGVja2xpc3RPcHRpb25zJD86IEJlaGF2aW9yU3ViamVjdDxJQ29yZUNoZWNrbGlzdE9wdGlvbltdPjsgLy8gV0hFTiBVU0lORyBDb3JlQ2hlY2tsaXN0Q29tcG9uZW50XHJcblxyXG4gIHVwbG9hZEZpbGVUeXBlPzogRW51bUNvcmVGaWxlVXBsb2FkZXJUeXBlOyAvLyBXSEVOIFVTSU5HIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnRcclxuICBmaWxlRGF0YUNvbnRyb2xOYW1lPzogc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnRcclxuICBmaWxlTmFtZUNvbnRyb2xOYW1lPzogc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnRcclxuICBmaWxlVHlwZUNvbnRyb2xOYW1lPzogc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnRcclxuICB2ZXJ0aWNhbE1vZGU/OiBib29sZWFuOyAvLyBXSEVOIFVTSU5HIENvcmVGaWxlVXBsb2FkZXJDb21wb25lbnRcclxuXHJcbiAgYXNzaWduVG8/OiBzdHJpbmc7IC8vIFdIRU4gVVNJTkcgQ29yZUF0dGNobWVudENvbXBvbmVudCA8PT09PSBORVdcclxuICB2YWx1ZVRvU2hvdz86IHN0cmluZzsgLy8gV0hFTiBVU0lORyBDb3JlQXR0Y2htZW50Q29tcG9uZW50IDw9PT09IE5FV1xyXG5cclxuICBncmlkQnVmZmVyRm9ybVNlY3Rpb25zPzogSUNvcmVGb3JtU2VjdGlvbltdOyAvLyBXSEVOIFVTSU5HIENvcmVHcmlkQnVmZmVyQ29tcG9uZW50XHJcbiAgZ3JpZEJ1ZmZlclRhYmxlQ29sdW1ucz86IElDb3JlVGFibGVDb2x1bW5JdGVtW107IC8vIFdIRU4gVVNJTkcgQ29yZUdyaWRCdWZmZXJDb21wb25lbnRcclxuICBvbkJ1ZmZlckZvcm1DcmVhdGVkPzogKGZvcm06IEZvcm1Hcm91cCkgPT4gdm9pZDsgLy8gV0hFTiBVU0lORyBDb3JlR3JpZEJ1ZmZlckNvbXBvbmVudC4gVVNFIENBU0U6IHRoaXMuZm9ybUJ1ZmZlciA9IGZvcm07IHRoaXMuZm9ybUJ1ZmZlci5nZXQoPFNPTUVfRklFTEQ+KT8udmFsdWVDaGFuZ2VzLi4uXHJcblxyXG4gIGNvbHVtbnM/OiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdOyAvLyBXSEVOIFVTSU5HIE1DQ1xyXG4gIGFwaURlZmluaXRpb24/OiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbjsgLy8gV0hFTiBVU0lORyBNQ0NcclxuICBzZWxlY3RlZFJvdyQ/OiBCZWhhdmlvclN1YmplY3Q8YW55PjsgLy8gV0hFTiBVU0lORyBNQ0NcclxuICBvdXRlclBhcmFtJD86IEJlaGF2aW9yU3ViamVjdDxhbnk+OyAvLyBXSEVOIFVTSU5HIE1DQ1xyXG5cclxuICAvKiB3aGVuIHVzaW5nIENvcmVEYXRlUGlja2VyICovXHJcbiAgcmFuZ2VMaW1pdD86IElDb3JlRGF0ZVBpY2tlclJhbmdlO1xyXG5cclxuICAvL21jY0RhdGE/OiBJTWNjSW5wdXQsXHJcbiAgdmFsaWRhdG9ycz86IElWYWxpZGF0b3JbXSxcclxuICAvL29uTWNjQ2hhbmdlZD86IChhcmdzOiBhbnkpID0+IHZvaWRcclxuXHJcbiAgZm9jdXMkPzogQmVoYXZpb3JTdWJqZWN0PGFueT47XHJcbiAgYmx1ciQ/OiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuXHJcbiAgY2xpY2skPzogQmVoYXZpb3JTdWJqZWN0PGFueT47IC8vIFdIRU4gVVNJTkcgVFlQRSBCVVRUT04sIEFERCBDTElDSyBFVkVOVFMgVE8gUkVDT0dOSVpFIFVTRVIgQUNUSU9OU1xyXG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGVcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL0lDb3JlRHJvcGRvd25PcHRpb25cIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRW51bUNvcmVGaWxlVXBsb2FkZXJUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUtZmlsZS11cGxvYWRlci9jb3JlLWZpbGUtdXBsb2FkZXIvY29yZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFbnVtSWNvbkNsYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2VudW0vRW51bUljb25DbGFzc1wiO1xyXG5pbXBvcnQgeyBJQ29yZUNoZWNrbGlzdE9wdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC9jb3JlLWNoZWNrbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUNvcmVMaXN0T3B0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS10YWJsZS9FbnVtQ29yZVRhYmxlUGlwZVR5cGVcIjtcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVSYWRpb09wdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlLXJhZGlvLWdyb3VwL2NvcmUtcmFkaW8tZ3JvdXAvY29yZS1yYWRpby1ncm91cC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUNvcmVEYXRlUGlja2VyUmFuZ2UgfSBmcm9tIFwiLi4vLi4vY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uIH0gZnJvbSBcIi4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9FbnVtRm9ybUJhc2VDb250b2xUeXBlXCI7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1CYXNlRHJvcGRvd25PcHRpb24ge1xyXG4gIGtleTogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvciB7XHJcbiAgbmFtZTogc3RyaW5nLCAvLyBtdXN0IGVxdWFsIHRoZSBlcnJvciBrZXlcclxuICB2YWxpZGF0b3I6IFZhbGlkYXRvckZuLFxyXG4gIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleSxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZUZvcm1Db250cm9sU2Vla2VyRXh0cmFCaW5kaW5nTW9kZWwge1xyXG4gIHRha2VGcm9tOiBzdHJpbmc7XHJcbiAgYmluZFRvOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVGb3JtU2VjdGlvbiB7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXksXHJcbiAgaWNvbkNsYXNzPzogRW51bUljb25DbGFzcyxcclxuICBhZGRNb2RlT25seT86IGJvb2xlYW47IC8vIFNvbWUgc2VjdGlvbiBmb3Igc3BlY2lmaWMgZWRpdCBjb21wb25lbnQgbmVlZCBub3QgdG8gY3JlYXRlIGFuZCByZW5kZXIgcGFydGljdWxhciBzZWN0aW9uLiBJZiBuZWVkZWQsIHNldCBhZGRNb2RlT25seSB0byB0cnVlXHJcbiAgdXBkYXRlTW9kZU9ubHk/OiBib29sZWFuOyAvLyBTb21lIHNlY3Rpb24gZm9yIHNwZWNpZmljIGVkaXQgY29tcG9uZW50IG5lZWQgbm90IHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHBhcnRpY3VsYXIgc2VjdGlvbi4gSWYgbmVlZGVkLCBzZXQgdXBkYXRlTW9kZU9ubHkgdG8gdHJ1ZVxyXG4gIGhpZGRlbj86IGJvb2xlYW47IC8vIFNvbWV0aW1lcyB3ZSBuZWVkIHNvbWUgc2VjdGlvbiBub3QgdG8gYmUgaW5pdGlhbGx5IHJlbmRlcmVkXHJcbiAgcm93czogSUZvcm1CYXNlQ29udHJvbFtdW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1CYXNlQ29udHJvbCB7XHJcbiAgZmxleFNpemU6IG51bWJlcjtcclxuICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZSxcclxuICBmaWVsZDogc3RyaW5nLFxyXG4gIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LFxyXG4gIHZhbHVlOiBhbnksXHJcbiAgb3B0aW9ucz86IElGb3JtQmFzZURyb3Bkb3duT3B0aW9uW10sXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuLFxyXG4gIGhpZGRlbj86IGJvb2xlYW4sXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuLFxyXG4gIHR5cGU/OiBzdHJpbmcsXHJcbiAgc3RlcD86IHN0cmluZywgLy8gd2hlbiB0eXBlOiAnbnVtYmVyJyBhbmQgeW91IGRlc2lyZSBkZWNpbWFsID0+IHN0ZXA6ICcuMDEnXHJcbiAgcGlwZT86IEVudW1Db3JlVGFibGVQaXBlVHlwZSwgLy8gc2hhcmVkIHBpcGUgZnJvbSBDb3JlVGFibGVcclxuICB0b29sdGlwPzogRW51bVRyYW5zbGF0ZUtleTtcclxuICBoaW50PzogRW51bVRyYW5zbGF0ZUtleTtcclxuXHJcbiAgdGV4dGFyZWFSb3dzPzogbnVtYmVyLCAvLyBXSEVOIFVTSU5HIHN0YW5kYXJkIFRleHRBcmVhXHJcblxyXG4gIHNlZWtlclNvdXJjZVR5cGU/OiBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSxcclxuICBzZWVrZXJWZXJpZnlJZ25vcmU/OiBib29sZWFuLFxyXG5cclxuICAvKiB3aGVuIHVzaW5nIFNFRUtFUiBmcm9tIGdyaWQqL1xyXG4gIHByZURlZmluZWRPdXRlclBhcmFtJD86IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG5cclxuICAvKiB3aGVuIHVzaW5nIGFsbW9zdCBhbGwgY29udHJvbHMgKi9cclxuICBnZXRCeUlkT2JqZWN0JD86IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIGdldEJ5SWRBcGk/OiBhcGk7XHJcblxyXG4gIC8qIHdoZW4gdXNpbmcgQ29yZUVtcGxveWVlU2Vla2VyICovXHJcbiAgYm91bmRGcm9tPzogc3RyaW5nO1xyXG4gIHNob3duRnJvbT86IHN0cmluZzsgLy8gV2hlbiB1c2luZyBNQ0MgdG9vXHJcbiAgYWxzb0JpbmRUbz86IElDb3JlRm9ybUNvbnRyb2xTZWVrZXJFeHRyYUJpbmRpbmdNb2RlbFtdO1xyXG5cclxuICBkcm9wZG93bk9wdGlvbnMkPzogQmVoYXZpb3JTdWJqZWN0PElDb3JlRHJvcGRvd25PcHRpb25bXT47IC8vIFdIRU4gVVNJTkcgQ29yZURyb3Bkb3duQ29tcG9uZW50XHJcblxyXG4gIGxpc3RPcHRpb25zPzogSUNvcmVMaXN0T3B0aW9uW107IC8vIFdIRU4gVVNJTkcgQ29yZUxpc3RDb21wb25lbnRcclxuXHJcbiAgbXVsdGlNb2RlPzogYm9vbGVhbjsgLy8gd2hlbiB1c2luZyBTRUVLRVIgd2l0aCBncmlkIChtdWx0aU1vZGUpXHJcbiAgb2JqZWN0TGlzdCQ/OiBCZWhhdmlvclN1YmplY3Q8YW55W10+OyAvLyB3aGVuIHVzaW5nIFNFRUtFUiB3aXRoIGdyaWQgKG11bHRpTW9kZSlcclxuICBnZXRPYmplY3RMaXN0RnJvbT86IHN0cmluZzsgLy8gd2hlbiB1c2luZyBTRUVLRVIgd2l0aCBncmlkIChtdWx0aU1vZGUpXHJcblxyXG4gIHJhZGlvR3JvdXBPcHRpb25zJD86IEJlaGF2aW9yU3ViamVjdDxJQ29yZVJhZGlvT3B0aW9uW10+OyAvLyBXSEVOIFVTSU5HIENvcmVSYWRpb0dyb3VwQ29tcG9uZW50XHJcblxyXG4gIGNoZWNrbGlzdE9wdGlvbnMkPzogQmVoYXZpb3JTdWJqZWN0PElDb3JlQ2hlY2tsaXN0T3B0aW9uW10+OyAvLyBXSEVOIFVTSU5HIENvcmVDaGVja2xpc3RDb21wb25lbnRcclxuXHJcbiAgdXBsb2FkRmlsZVR5cGU/OiBFbnVtQ29yZUZpbGVVcGxvYWRlclR5cGU7IC8vIFdIRU4gVVNJTkcgQ29yZUZpbGVVcGxvYWRlckNvbXBvbmVudFxyXG4gIGZpbGVEYXRhQ29udHJvbE5hbWU/OiBzdHJpbmc7IC8vIFdIRU4gVVNJTkcgQ29yZUZpbGVVcGxvYWRlckNvbXBvbmVudFxyXG4gIGZpbGVOYW1lQ29udHJvbE5hbWU/OiBzdHJpbmc7IC8vIFdIRU4gVVNJTkcgQ29yZUZpbGVVcGxvYWRlckNvbXBvbmVudFxyXG4gIGZpbGVUeXBlQ29udHJvbE5hbWU/OiBzdHJpbmc7IC8vIFdIRU4gVVNJTkcgQ29yZUZpbGVVcGxvYWRlckNvbXBvbmVudFxyXG4gIHZlcnRpY2FsTW9kZT86IGJvb2xlYW47IC8vIFdIRU4gVVNJTkcgQ29yZUZpbGVVcGxvYWRlckNvbXBvbmVudFxyXG5cclxuICBhc3NpZ25Ubz86IHN0cmluZzsgLy8gV0hFTiBVU0lORyBDb3JlQXR0Y2htZW50Q29tcG9uZW50IDw9PT09IE5FV1xyXG4gIHZhbHVlVG9TaG93Pzogc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVBdHRjaG1lbnRDb21wb25lbnQgPD09PT0gTkVXXHJcblxyXG4gIGdyaWRCdWZmZXJGb3JtU2VjdGlvbnM/OiBJQ29yZUZvcm1TZWN0aW9uW107IC8vIFdIRU4gVVNJTkcgQ29yZUdyaWRCdWZmZXJDb21wb25lbnRcclxuICBncmlkQnVmZmVyVGFibGVDb2x1bW5zPzogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXTsgLy8gV0hFTiBVU0lORyBDb3JlR3JpZEJ1ZmZlckNvbXBvbmVudFxyXG4gIG9uQnVmZmVyRm9ybUNyZWF0ZWQ/OiAoZm9ybTogRm9ybUdyb3VwKSA9PiB2b2lkOyAvLyBXSEVOIFVTSU5HIENvcmVHcmlkQnVmZmVyQ29tcG9uZW50LiBVU0UgQ0FTRTogdGhpcy5mb3JtQnVmZmVyID0gZm9ybTsgdGhpcy5mb3JtQnVmZmVyLmdldCg8U09NRV9GSUVMRD4pPy52YWx1ZUNoYW5nZXMuLi5cclxuXHJcbiAgY29sdW1ucz86IElDb3JlVGFibGVDb2x1bW5JdGVtW107IC8vIFdIRU4gVVNJTkcgTUNDXHJcbiAgYXBpRGVmaW5pdGlvbj86IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uOyAvLyBXSEVOIFVTSU5HIE1DQ1xyXG4gIHNlbGVjdGVkUm93JD86IEJlaGF2aW9yU3ViamVjdDxhbnk+OyAvLyBXSEVOIFVTSU5HIE1DQ1xyXG4gIG91dGVyUGFyYW0kPzogQmVoYXZpb3JTdWJqZWN0PGFueT47IC8vIFdIRU4gVVNJTkcgTUNDXHJcblxyXG4gIC8qIHdoZW4gdXNpbmcgQ29yZURhdGVQaWNrZXIgKi9cclxuICByYW5nZUxpbWl0PzogSUNvcmVEYXRlUGlja2VyUmFuZ2U7XHJcblxyXG4gIC8vbWNjRGF0YT86IElNY2NJbnB1dCxcclxuICB2YWxpZGF0b3JzPzogSVZhbGlkYXRvcltdLFxyXG4gIC8vb25NY2NDaGFuZ2VkPzogKGFyZ3M6IGFueSkgPT4gdm9pZFxyXG5cclxuICBmb2N1cyQ/OiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBibHVyJD86IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG5cclxuICBjbGljayQ/OiBCZWhhdmlvclN1YmplY3Q8YW55PjsgLy8gV0hFTiBVU0lORyBUWVBFIEJVVFRPTiwgQUREIENMSUNLIEVWRU5UUyBUTyBSRUNPR05JWkUgVVNFUiBBQ1RJT05TXHJcbn0iXX0=