@rangertechnologies/ngnxt 2.1.45 → 2.1.47

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.
@@ -162,7 +162,8 @@ export class QuestionbookComponent {
162
162
  }
163
163
  // VD 07Aug24 - isDependentField change
164
164
  this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
165
- if (changeValue != undefined) {
165
+ // VD 20Aug24 - isDependentField change
166
+ if (changeValue != undefined && dependencyObj.isDependentField) {
166
167
  // console.log('inside subscription for the change');
167
168
  if (changeValue.valueObj != undefined && changeValue.fromQuestionId == dependencyObj.sourceQuestionId) {
168
169
  //console.log('outside-->',element.Is_Hide__c);
@@ -275,6 +276,10 @@ export class QuestionbookComponent {
275
276
  ques.input = '';
276
277
  }
277
278
  }
279
+ else if (ques.Type__c == 'List') {
280
+ // VD 20Aug24 handling the list type handle multiple object values
281
+ ques.input = this.dataService.getValue(event.valueObj, event.field);
282
+ }
278
283
  else {
279
284
  ques.input = event;
280
285
  }
@@ -298,11 +303,11 @@ export class QuestionbookComponent {
298
303
  this.hadleDropDownDependent.emit(event);
299
304
  }
300
305
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, deps: [{ token: i1.SalesforceService }, { token: i2.DataService }, { token: i3.ChangeService }, { token: i4.StorageService }, { token: i5.I18nService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
301
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: QuestionbookComponent, selector: "lib-questionbook", inputs: { qbItem: "qbItem", questionItem: "questionItem", translatedQuestions: "translatedQuestions", questions: "questions", errorFieldId: "errorFieldId", labelValue: "labelValue", token: "token", dropDownData: "dropDownData" }, outputs: { handleDropDown: "handleDropDown", handleQuestion: "handleQuestion", hadleDropDownDependent: "hadleDropDownDependent" }, ngImport: i0, template: "<!-- HA 20DEC23 Book Style from salesforce -->\n<!-- HA 28DEC23 Removed IsShengel(removal of shengel values applies for this reason) and direct styling of books to avoid styling issues-->\n<!-- HA 18JAN24 Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\">\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <div\n [class]=\"'col-lg-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\" [dir]=\"ques.langDirection\" [style]=\"ques?.Style__c?.questionStyle\">\n <!-- Sub Question Label -->\n <!-- HA 20DEC23 Label Style from salesforce -->\n <!-- VD 09May24 is hide field change-->\n <div *ngIf=\"!ques.Is_Hide__c\">\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n\n </div>\n <!-- VD 20JUN24 - help text changes-->\n <!-- VD 01Aug24 - validation change-->\n <!-- // VD 02Aug24 - label value style-->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\" *ngIf=\"ques.Style__c.showLabel\" [style]=\"ques.Style__c.labelStyle\">\n <span [class]=\"'dis-flex shengel-myt-font3 myt-font7 '\" [style]=\"ques.Style__c.labelValueStyle\">{{ ques?.Question_Text__c }} \n <div *ngIf=\"ques.Is_Optional__c\" style=\"color: red;\">*</div>\n <div *ngIf=\"ques.Question_Text__c && ques?.Help_Text__c\" class=\"icon\" [matTooltip]=\"ques?.Help_Text__c\">i</div></span>\n </div>\n <!-- // VD 12Jun24 - readonly change-->\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n <!-- calendar -->\n <div *ngIf=\"ques.Type__c === 'Calendar'\">\n <app-custom-calendar [question]=\"ques\" (eventSelected)=\"childEventCapture($event, ques)\"></app-custom-calendar>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <!-- VD 21DEC23 - dependent field change -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <!-- HA10012024 Added Api key as input -->\n <app-pick-location [apiKey]=\"qbItem['Api_Key__c']\" [address]=\"ques.selectedValue\" [question]=\"ques\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" readOnly=\"ques.Read_Only__c\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [selectedValue]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown' && ques?.Question_Options__r?.records\" class=\"\">\n <!-- HA 20DEC23 For Translation --> <!-- VD 19JAN24 - getting token as input -->\n <app-custom-dropdown [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n <!-- // VD 02Aug24 custom-radio component -->\n <div *ngIf=\"ques.Type__c === 'Radio' && ques?.Question_Options__r?.records\" class=\"\">\n <app-custom-radio [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-radio>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [error]=\"ques.error\" [question]=\"ques\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelStyle]=\"ques.Title__c\" [labelValue]=\"ques.Question__c\">\n </app-custom-label>\n </div>\n <!-- // VD 02Aug24 image component -->\n <div *ngIf=\"ques.Type__c === 'Image'\" class=\"\">\n <app-custom-image [question]=\"ques\">\n </app-custom-image>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n <!-- HA 20DEC23 This is to load book type questions-->\n <div *ngIf=\"ques.Type__c === 'Book'\">\n <!-- HA 09FEB24 Added ternary operator -->\n <lib-questionbook [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\" [questions]=\"ques.qbItem?.Questions__r?.records\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n </div>", styles: [".col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start;align-items:center}.icon{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#08010177;color:#fff;text-align:center;line-height:16px;font-size:11px;font-family:Arial,sans-serif;font-weight:700;margin-left:5px}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i9.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i10.PickLocationComponent, selector: "app-pick-location", inputs: ["address", "question", "apiKey"], outputs: ["locationSelected"] }, { kind: "component", type: i11.CustomInputComponent, selector: "app-custom-input", inputs: ["value", "question", "disabled", "placeholder", "error", "fromShengel", "readOnly", "ngClassValue", "idValue", "focusEvent"], outputs: ["inputValue"] }, { kind: "component", type: i12.CustomTextAreaComponent, selector: "app-custom-text-area", inputs: ["value", "placeholder", "rows", "error", "question", "readOnly"], outputs: ["textareaValueChange"] }, { kind: "component", type: i13.CustomTableComponent, selector: "app-custom-table", inputs: ["question", "apiMeta"], outputs: ["valueChange"] }, { kind: "component", type: i14.CustomCalendarComponent, selector: "app-custom-calendar", inputs: ["allEvents", "question"], outputs: ["eventSelected"] }, { kind: "component", type: i15.CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: ["date", "minDate", "maxDate", "error", "errorMessage", "readOnly"], outputs: ["dateChange"] }, { kind: "component", type: i16.CustomDropdownComponent, selector: "app-custom-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "error", "fromShengel", "referenceField", "token"], outputs: ["valueChange"] }, { kind: "component", type: i17.SearchBoxComponent, selector: "lib-search-box", inputs: ["placeHolderText", "question", "apiMeta", "id", "readOnly"], outputs: ["searchValueChange"] }, { kind: "component", type: QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "translatedQuestions", "questions", "errorFieldId", "labelValue", "token", "dropDownData"], outputs: ["handleDropDown", "handleQuestion", "hadleDropDownDependent"] }, { kind: "component", type: i18.FileUploadComponent, selector: "app-file-upload", inputs: ["allFiles", "limitFileUploading", "isDeleteFileButtonVisible", "isShowNoFileIcon", "tableFile", "question", "error"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "component", type: i19.DependentTableComponent, selector: "app-dependent-table", inputs: ["alertMessage"] }, { kind: "component", type: i20.CustomLabelComponent, selector: "app-custom-label", inputs: ["labelValue", "labelStyle"] }, { kind: "component", type: i21.TableAppendixComponent, selector: "app-table-appendix", inputs: ["question"], outputs: ["valueChange"] }, { kind: "component", type: i22.CustomDateComponent, selector: "app-custom-date", inputs: ["date", "readOnly", "error", "errorMessage"], outputs: ["dateChange"] }, { kind: "component", type: i23.CustomTimeComponent, selector: "app-custom-time", inputs: ["time", "readOnly", "error", "errorMessage"], outputs: ["timeChange"] }, { kind: "component", type: i24.CustomButtonComponent, selector: "app-custom-button", inputs: ["height", "width", "textColor", "buttonText", "value", "backgroundColor"], outputs: ["buttonValue"] }, { kind: "component", type: i25.CustomImageComponent, selector: "app-custom-image", inputs: ["alt", "src", "imageStyle", "question"] }, { kind: "component", type: i26.CustomRadioComponent, selector: "app-custom-radio", inputs: ["options", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "error", "fromShengel", "referenceField", "token"], outputs: ["valueChange"] }, { kind: "pipe", type: i27.I18nPipe, name: "i18n" }] });
306
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: QuestionbookComponent, selector: "lib-questionbook", inputs: { qbItem: "qbItem", questionItem: "questionItem", translatedQuestions: "translatedQuestions", questions: "questions", errorFieldId: "errorFieldId", labelValue: "labelValue", token: "token", dropDownData: "dropDownData" }, outputs: { handleDropDown: "handleDropDown", handleQuestion: "handleQuestion", hadleDropDownDependent: "hadleDropDownDependent" }, ngImport: i0, template: "<!-- HA 20DEC23 Book Style from salesforce -->\n<!-- HA 28DEC23 Removed IsShengel(removal of shengel values applies for this reason) and direct styling of books to avoid styling issues-->\n<!-- HA 18JAN24 Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\">\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <div\n [class]=\"'col-lg-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\" [dir]=\"ques.langDirection\" [style]=\"ques?.Style__c?.questionStyle\">\n <!-- Sub Question Label -->\n <!-- HA 20DEC23 Label Style from salesforce -->\n <!-- VD 09May24 is hide field change-->\n <div *ngIf=\"!ques.Is_Hide__c\">\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n\n </div>\n <!-- VD 20JUN24 - help text changes-->\n <!-- VD 01Aug24 - validation change-->\n <!-- // VD 02Aug24 - label value style-->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\" *ngIf=\"ques.Style__c.showLabel\" [style]=\"ques.Style__c.labelStyle\">\n <span [class]=\"'dis-flex shengel-myt-font3 myt-font7 '\" [style]=\"ques.Style__c.labelValueStyle\">{{ ques?.Question_Text__c }} \n <div *ngIf=\"ques.Is_Optional__c\" style=\"color: red;\">*</div>\n <div *ngIf=\"ques.Question_Text__c && ques?.Help_Text__c\" class=\"icon\" [matTooltip]=\"ques?.Help_Text__c\">i</div></span>\n </div>\n <!-- // VD 12Jun24 - readonly change-->\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n <!-- calendar -->\n <div *ngIf=\"ques.Type__c === 'Calendar'\">\n <app-custom-calendar [question]=\"ques\" (eventSelected)=\"childEventCapture($event, ques)\"></app-custom-calendar>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <!-- VD 21DEC23 - dependent field change -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <!-- HA10012024 Added Api key as input -->\n <app-pick-location [apiKey]=\"qbItem['Api_Key__c']\" [address]=\"ques.selectedValue\" [question]=\"ques\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" readOnly=\"ques.Read_Only__c\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <!-- VD 20Aug24 used correct attribute -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [filterName]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown' && ques?.Question_Options__r?.records\" class=\"\">\n <!-- HA 20DEC23 For Translation --> <!-- VD 19JAN24 - getting token as input -->\n <app-custom-dropdown [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n <!-- // VD 02Aug24 custom-radio component -->\n <div *ngIf=\"ques.Type__c === 'Radio' && ques?.Question_Options__r?.records\" class=\"\">\n <app-custom-radio [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-radio>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [error]=\"ques.error\" [question]=\"ques\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelStyle]=\"ques.Title__c\" [labelValue]=\"ques.Question__c\">\n </app-custom-label>\n </div>\n <!-- // VD 02Aug24 image component -->\n <div *ngIf=\"ques.Type__c === 'Image'\" class=\"\">\n <app-custom-image [question]=\"ques\">\n </app-custom-image>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n <!-- HA 20DEC23 This is to load book type questions-->\n <div *ngIf=\"ques.Type__c === 'Book'\">\n <!-- HA 09FEB24 Added ternary operator -->\n <lib-questionbook [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\" [questions]=\"ques.qbItem?.Questions__r?.records\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n </div>", styles: [".col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start;align-items:center}.icon{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#08010177;color:#fff;text-align:center;line-height:16px;font-size:11px;font-family:Arial,sans-serif;font-weight:700;margin-left:5px}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i9.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i10.PickLocationComponent, selector: "app-pick-location", inputs: ["address", "question", "apiKey"], outputs: ["locationSelected"] }, { kind: "component", type: i11.CustomInputComponent, selector: "app-custom-input", inputs: ["value", "question", "disabled", "placeholder", "error", "fromShengel", "readOnly", "ngClassValue", "idValue", "focusEvent"], outputs: ["inputValue"] }, { kind: "component", type: i12.CustomTextAreaComponent, selector: "app-custom-text-area", inputs: ["value", "placeholder", "rows", "error", "question", "readOnly"], outputs: ["textareaValueChange"] }, { kind: "component", type: i13.CustomTableComponent, selector: "app-custom-table", inputs: ["question", "apiMeta"], outputs: ["valueChange"] }, { kind: "component", type: i14.CustomCalendarComponent, selector: "app-custom-calendar", inputs: ["allEvents", "question"], outputs: ["eventSelected"] }, { kind: "component", type: i15.CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: ["date", "minDate", "maxDate", "error", "errorMessage", "readOnly"], outputs: ["dateChange"] }, { kind: "component", type: i16.CustomDropdownComponent, selector: "app-custom-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "error", "fromShengel", "referenceField", "token"], outputs: ["valueChange"] }, { kind: "component", type: i17.SearchBoxComponent, selector: "lib-search-box", inputs: ["placeHolderText", "question", "apiMeta", "id", "readOnly", "filterName"], outputs: ["searchValueChange"] }, { kind: "component", type: QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "translatedQuestions", "questions", "errorFieldId", "labelValue", "token", "dropDownData"], outputs: ["handleDropDown", "handleQuestion", "hadleDropDownDependent"] }, { kind: "component", type: i18.FileUploadComponent, selector: "app-file-upload", inputs: ["allFiles", "limitFileUploading", "isDeleteFileButtonVisible", "isShowNoFileIcon", "tableFile", "question", "error"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "component", type: i19.DependentTableComponent, selector: "app-dependent-table", inputs: ["alertMessage"] }, { kind: "component", type: i20.CustomLabelComponent, selector: "app-custom-label", inputs: ["labelValue", "labelStyle"] }, { kind: "component", type: i21.TableAppendixComponent, selector: "app-table-appendix", inputs: ["question"], outputs: ["valueChange"] }, { kind: "component", type: i22.CustomDateComponent, selector: "app-custom-date", inputs: ["date", "readOnly", "error", "errorMessage"], outputs: ["dateChange"] }, { kind: "component", type: i23.CustomTimeComponent, selector: "app-custom-time", inputs: ["time", "readOnly", "error", "errorMessage"], outputs: ["timeChange"] }, { kind: "component", type: i24.CustomButtonComponent, selector: "app-custom-button", inputs: ["height", "width", "textColor", "buttonText", "value", "backgroundColor"], outputs: ["buttonValue"] }, { kind: "component", type: i25.CustomImageComponent, selector: "app-custom-image", inputs: ["alt", "src", "imageStyle", "question"] }, { kind: "component", type: i26.CustomRadioComponent, selector: "app-custom-radio", inputs: ["options", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "error", "fromShengel", "referenceField", "token"], outputs: ["valueChange"] }, { kind: "pipe", type: i27.I18nPipe, name: "i18n" }] });
302
307
  }
303
308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, decorators: [{
304
309
  type: Component,
305
- args: [{ selector: 'lib-questionbook', template: "<!-- HA 20DEC23 Book Style from salesforce -->\n<!-- HA 28DEC23 Removed IsShengel(removal of shengel values applies for this reason) and direct styling of books to avoid styling issues-->\n<!-- HA 18JAN24 Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\">\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <div\n [class]=\"'col-lg-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\" [dir]=\"ques.langDirection\" [style]=\"ques?.Style__c?.questionStyle\">\n <!-- Sub Question Label -->\n <!-- HA 20DEC23 Label Style from salesforce -->\n <!-- VD 09May24 is hide field change-->\n <div *ngIf=\"!ques.Is_Hide__c\">\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n\n </div>\n <!-- VD 20JUN24 - help text changes-->\n <!-- VD 01Aug24 - validation change-->\n <!-- // VD 02Aug24 - label value style-->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\" *ngIf=\"ques.Style__c.showLabel\" [style]=\"ques.Style__c.labelStyle\">\n <span [class]=\"'dis-flex shengel-myt-font3 myt-font7 '\" [style]=\"ques.Style__c.labelValueStyle\">{{ ques?.Question_Text__c }} \n <div *ngIf=\"ques.Is_Optional__c\" style=\"color: red;\">*</div>\n <div *ngIf=\"ques.Question_Text__c && ques?.Help_Text__c\" class=\"icon\" [matTooltip]=\"ques?.Help_Text__c\">i</div></span>\n </div>\n <!-- // VD 12Jun24 - readonly change-->\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n <!-- calendar -->\n <div *ngIf=\"ques.Type__c === 'Calendar'\">\n <app-custom-calendar [question]=\"ques\" (eventSelected)=\"childEventCapture($event, ques)\"></app-custom-calendar>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <!-- VD 21DEC23 - dependent field change -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <!-- HA10012024 Added Api key as input -->\n <app-pick-location [apiKey]=\"qbItem['Api_Key__c']\" [address]=\"ques.selectedValue\" [question]=\"ques\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" readOnly=\"ques.Read_Only__c\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [selectedValue]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown' && ques?.Question_Options__r?.records\" class=\"\">\n <!-- HA 20DEC23 For Translation --> <!-- VD 19JAN24 - getting token as input -->\n <app-custom-dropdown [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n <!-- // VD 02Aug24 custom-radio component -->\n <div *ngIf=\"ques.Type__c === 'Radio' && ques?.Question_Options__r?.records\" class=\"\">\n <app-custom-radio [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-radio>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [error]=\"ques.error\" [question]=\"ques\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelStyle]=\"ques.Title__c\" [labelValue]=\"ques.Question__c\">\n </app-custom-label>\n </div>\n <!-- // VD 02Aug24 image component -->\n <div *ngIf=\"ques.Type__c === 'Image'\" class=\"\">\n <app-custom-image [question]=\"ques\">\n </app-custom-image>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n <!-- HA 20DEC23 This is to load book type questions-->\n <div *ngIf=\"ques.Type__c === 'Book'\">\n <!-- HA 09FEB24 Added ternary operator -->\n <lib-questionbook [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\" [questions]=\"ques.qbItem?.Questions__r?.records\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n </div>", styles: [".col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start;align-items:center}.icon{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#08010177;color:#fff;text-align:center;line-height:16px;font-size:11px;font-family:Arial,sans-serif;font-weight:700;margin-left:5px}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"] }]
310
+ args: [{ selector: 'lib-questionbook', template: "<!-- HA 20DEC23 Book Style from salesforce -->\n<!-- HA 28DEC23 Removed IsShengel(removal of shengel values applies for this reason) and direct styling of books to avoid styling issues-->\n<!-- HA 18JAN24 Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\">\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <div\n [class]=\"'col-lg-' + ques.Size__c + ' paddingnone'\"\n *ngFor=\"let ques of questions;let i = index\" [id]=\"ques.Id\" [dir]=\"ques.langDirection\" [style]=\"ques?.Style__c?.questionStyle\">\n <!-- Sub Question Label -->\n <!-- HA 20DEC23 Label Style from salesforce -->\n <!-- VD 09May24 is hide field change-->\n <div *ngIf=\"!ques.Is_Hide__c\">\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n\n </div>\n <!-- VD 20JUN24 - help text changes-->\n <!-- VD 01Aug24 - validation change-->\n <!-- // VD 02Aug24 - label value style-->\n <div [ngClass]=\"{ down2: qbItem?.Progress_Bar__c }\" *ngIf=\"ques.Style__c.showLabel\" [style]=\"ques.Style__c.labelStyle\">\n <span [class]=\"'dis-flex shengel-myt-font3 myt-font7 '\" [style]=\"ques.Style__c.labelValueStyle\">{{ ques?.Question_Text__c }} \n <div *ngIf=\"ques.Is_Optional__c\" style=\"color: red;\">*</div>\n <div *ngIf=\"ques.Question_Text__c && ques?.Help_Text__c\" class=\"icon\" [matTooltip]=\"ques?.Help_Text__c\">i</div></span>\n </div>\n <!-- // VD 12Jun24 - readonly change-->\n <!-- DateTime -->\n <div *ngIf=\"ques.Type__c === 'DateTime'\">\n <app-custom-date-picker [minDate]=\"ques.minDate\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" [date]=\"ques.input\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date-picker>\n </div>\n\n <!-- Date-->\n <div *ngIf=\"ques.Type__c === 'Date'\">\n <app-custom-date [date]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (dateChange)=\"childEventCapture($event, ques)\">\n </app-custom-date>\n </div>\n\n <!-- Time-->\n <div *ngIf=\"ques.Type__c === 'Time'\">\n <app-custom-time [time]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.Error_Message__c\" [readOnly]=\"ques.Read_Only__c\" (timeChange)=\"childEventCapture($event, ques)\">\n </app-custom-time>\n </div>\n <!-- calendar -->\n <div *ngIf=\"ques.Type__c === 'Calendar'\">\n <app-custom-calendar [question]=\"ques\" (eventSelected)=\"childEventCapture($event, ques)\"></app-custom-calendar>\n </div>\n\n <!-- Text -->\n <div *ngIf=\"ques.Type__c === 'Text'\">\n <app-custom-input [value]=\"ques.input\" [ngClassValue]=\"{\n 'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.Progress_Bar__c,\n textBox: !qbItem.Progress_Bar__c\n }\" [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [idValue]=\"ques.Tracking_ID__c\" [focusEvent]=\"clearSQError(ques.Id)\"\n [error]=\"ques.error\" [placeholder]=\"ques.Question__c\" (inputValue)=\"childEventCapture($event, ques)\">\n </app-custom-input>\n </div>\n \n <!-- for pick location -->\n <!-- VD 21DEC23 - dependent field change -->\n <div *ngIf=\"ques.Type__c === 'Location'\">\n <!-- HA10012024 Added Api key as input -->\n <app-pick-location [apiKey]=\"qbItem['Api_Key__c']\" [address]=\"ques.selectedValue\" [question]=\"ques\" (locationSelected)=\"childEventCapture($event, ques)\">\n </app-pick-location>\n </div>\n\n <!-- for text area -->\n <div *ngIf=\"ques.Type__c === 'TextArea'\">\n <app-custom-text-area [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.Question__c \"\n (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n </div>\n\n <!-- Email -->\n <div *ngIf=\"ques.Type__c === 'Email'\">\n <input type=\"email\" readOnly=\"ques.Read_Only__c\" [(ngModel)]=\"ques.input\" [id]=\"ques.Id\" required=\"\" (focus)=\"clearSQError(ques.Id)\"\n style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.Question__c }}\" />\n </div>\n\n <!-- Table -->\n <div *ngIf=\"ques.Type__c === 'Table'\" class=\"\">\n <app-custom-table [question]=\"ques\" [apiMeta]=\"ques.Sub_Text__c\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-table>\n </div>\n\n <!-- Table Appendix -->\n <div *ngIf=\"ques.Type__c === 'TableAppendix'\" class=\"\">\n <app-table-appendix [question]=\"ques\" (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-table-appendix>\n </div>\n <!-- list -->\n <!-- VD 20Aug24 used correct attribute -->\n <div *ngIf=\"ques.Type__c === 'List'\" class=\"\">\n <lib-search-box [question]=\"ques\" [readOnly]=\"ques.Read_Only__c\" [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [placeHolderText]=\"ques.Question__c\" [filterName]=\"ques.input\" (searchValueChange)=\"childEventCapture($event, ques)\">\n </lib-search-box>\n </div>\n\n <!-- Dropdown -->\n <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n <div *ngIf=\"ques.Type__c === 'Dropdown' && ques?.Question_Options__r?.records\" class=\"\">\n <!-- HA 20DEC23 For Translation --> <!-- VD 19JAN24 - getting token as input -->\n <app-custom-dropdown [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-dropdown>\n <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n </div>\n <!-- // VD 02Aug24 custom-radio component -->\n <div *ngIf=\"ques.Type__c === 'Radio' && ques?.Question_Options__r?.records\" class=\"\">\n <app-custom-radio [options]=\"ques.Question_Options__r.records\" [token]=\"token\"\n [apiMeta]=\"ques.Sub_Text__c\" [id]=\"ques.Id\" [selectedValue]=\"ques.selectedValue\"\n [errorMessage]=\"ques.Error_Message__c\" [error]=\"ques.error\"\n [referenceField]=\"ques.Reference_Field__c\"\n [readOnly]=\"ques.Read_Only__c\"\n (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.Id)\">\n </app-custom-radio>\n </div>\n\n <!-- Attachment / Files -->\n <div *ngIf=\"ques.Type__c === 'File'\" class=\"\">\n <app-file-upload [limitFileUploading]=\"5\" [error]=\"ques.error\" [question]=\"ques\" [allFiles]=\"ques.input\" [tableFile]=\"false\"\n (selectedFileData)=\"childEventCapture($event, ques)\" (deletedFileData)=\"deleteFile($event)\"\n [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n </div>\n <div *ngIf=\"ques.Type__c === 'PopUpMessage'\" class=\"\">\n <app-dependent-table [alertMessage]=\"ques.Error_Message__c\">\n </app-dependent-table>\n </div>\n <div *ngIf=\"ques.Type__c === 'Label'\" class=\"\">\n <app-custom-label [labelStyle]=\"ques.Title__c\" [labelValue]=\"ques.Question__c\">\n </app-custom-label>\n </div>\n <!-- // VD 02Aug24 image component -->\n <div *ngIf=\"ques.Type__c === 'Image'\" class=\"\">\n <app-custom-image [question]=\"ques\">\n </app-custom-image>\n </div>\n <!-- 08NOV23 - button type question added -->\n <!-- Button -->\n <div *ngIf=\"ques.Type__c === 'Button'\" class=\"\">\n <app-custom-button [height]=\"'50px'\" \n [width]=\"'150px'\" \n [buttonText]=\"ques?.Question__c\"\n [value]=\"ques?.Question__c\"\n (buttonValue)=\"childEventCapture($event, ques)\"\n >\n </app-custom-button>\n </div>\n <!-- HA 20DEC23 This is to load book type questions-->\n <div *ngIf=\"ques.Type__c === 'Book'\">\n <!-- HA 09FEB24 Added ternary operator -->\n <lib-questionbook [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\" [questions]=\"ques.qbItem?.Questions__r?.records\" (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n </div>\n </div>\n </div>\n </div>", styles: [".col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start;align-items:center}.icon{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#08010177;color:#fff;text-align:center;line-height:16px;font-size:11px;font-family:Arial,sans-serif;font-weight:700;margin-left:5px}@media (min-width: 1200px){.col-lg-6{width:50%!important}.form-row{display:flex;flex-wrap:wrap}}\n"] }]
306
311
  }], ctorParameters: function () { return [{ type: i1.SalesforceService }, { type: i2.DataService }, { type: i3.ChangeService }, { type: i4.StorageService }, { type: i5.I18nService }, { type: Document, decorators: [{
307
312
  type: Inject,
308
313
  args: [DOCUMENT]
@@ -329,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
329
334
  }], hadleDropDownDependent: [{
330
335
  type: Output
331
336
  }] } });
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzNDLE1BQU0sT0FBTyxxQkFBcUI7SUF1Qlo7SUFDVjtJQUNBO0lBQ0E7SUFDRDtJQUNtQjtJQTNCbkIsTUFBTSxDQUFlO0lBQ3JCLFlBQVksQ0FBVztJQUN2QixtQkFBbUIsR0FBVyxFQUFFLENBQUEsQ0FBRSxtQ0FBbUM7SUFDckUsU0FBUyxDQUFhO0lBQ3RCLFlBQVksQ0FBSztJQUNqQixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFRLENBQUMsc0NBQXNDO0lBQ25ELGNBQWMsR0FBcUIsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzRCxjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUMsQ0FBQyxvQ0FBb0M7SUFDakcsWUFBWSxDQUFLO0lBQzFCLFlBQVksQ0FBYTtJQUN6QixnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDN0IsdUVBQXVFO0lBQ3ZFLEtBQUssQ0FBZTtJQUNwQixpREFBaUQ7SUFDakQsS0FBSyxDQUFNO0lBQ1gsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixTQUFTLENBQU07SUFDZixZQUFZLENBQWU7SUFDakIsc0JBQXNCLEdBQXFCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsZ0JBQWdCLEdBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV6QyxZQUFvQixTQUE0QixFQUN0QyxXQUF3QixFQUN4QixhQUE0QixFQUM1QixjQUE4QixFQUMvQixXQUF3QixFQUNMLFFBQWtCO1FBTDFCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNMLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFOUMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDbkQsc0NBQXNDO1FBQ3RDLCtCQUErQjtRQUMvQiwwREFBMEQ7UUFDMUQsMkJBQTJCO1FBQzNCLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUM7WUFDdkIsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUM5SCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFD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QUNGO1lBQ0QsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1lBRTFKLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8s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LCt5R0R4SUcscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBZ0N6QixNQUFNOzJCQUFDLFFBQVE7NENBM0JULE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBVUksc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiwgUXVlc3Rpb25Cb29rIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEVycm9yV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2Vycm9yV3JhcHBlcic7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVwZW5kZW5jeU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RlcGVuZGVuY3lNZXRhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uYm9vaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbmJvb2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbmJvb2suY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uYm9va0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHFiSXRlbTogUXVlc3Rpb25Cb29rO1xuICBASW5wdXQoKSBxdWVzdGlvbkl0ZW06IFF1ZXN0aW9uO1xuICBASW5wdXQoKSB0cmFuc2xhdGVkUXVlc3Rpb25zIDogYW55W10gPSBbXSAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgQElucHV0KCkgcXVlc3Rpb25zOiBRdWVzdGlvbltdO1xuICBASW5wdXQoKSBlcnJvckZpZWxkSWQ6YW55O1xuICBASW5wdXQoKSBsYWJlbFZhbHVlOnN0cmluZzsgXG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZzsgLy8gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXRcbiAgQE91dHB1dCgpIGhhbmRsZURyb3BEb3duOkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVRdWVzdGlvbjpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAvLyBWRCAxOUp1bDAxIC0gZ2V0IHVwZGF0ZWQgcXVlc3Rpb25cbiAgQElucHV0KCkgZHJvcERvd25EYXRhOmFueTtcbiAgc3ViUXVlc3Rpb25zOiBRdWVzdGlvbltdO1xuICBzZWxlY3RlZEZpbGVEYXRhOiBhbnlbXSA9IFtdO1xuICAvLyBIQSAyOERFQzIzIEFkZGVkIHN0eWxpbmcgYW5kIGxvZ2ljcyB0byBsb2FkIHRoZSBib29rIHR5cGUgcXVlc3Rpb25zIFxuICBxYlJlZjogUXVlc3Rpb25Cb29rO1xuICAvLyAgSEEgMTlERUMyMyBEZWNsYXJhdGlvbiBmb3IgU2FsZXNmb3JjZSBTdHlsaW5nXG4gIHN0eWxlOiBhbnk7XG4gIGxhbmdEaXJlY3Rpb24gPSAnbHRyJztcbiAgYm9va1N0eWxlOiBhbnk7XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAT3V0cHV0KCkgaGFkbGVEcm9wRG93bkRlcGVuZGVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGJvb2tRdWVzdGlvbnNNYXA6IGFueSA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbkJvb2tDb21wb25lbnQgT25Jbml0Jyk7XG4gICAgLy8gY29uc29sZS5sb2coJ3FiSXRlbScsIHRoaXMucWJJdGVtKTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnF1ZXN0aW9ucyk7XG4gICAgLy8gIEhBIDE5REVDMjMgTG9naWMgZm9yIFF1ZXN0aW9uIEJvb2sgU3R5bGluZyhTbGFlc2ZvcmNlKVxuICAgIC8vIEhBIDA5RkVCMjQgQWRkZWQgdGVybmFyeVxuICAgIGlmKHRoaXMucWJJdGVtPy5TdHlsZV9fYyl7XG4gICAgICAvLyBIQSAyOERFQzIzIEFkZGVkIHN0eWxpbmcgYW5kIGxvZ2ljcyB0byBsb2FkIHRoZSBib29rIHR5cGUgcXVlc3Rpb25zIFxuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MgPSB0eXBlb2YgdGhpcy5xYkl0ZW0uU3R5bGVfX2MgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSgnJyt0aGlzLnFiSXRlbT8uU3R5bGVfX2MpIDogdGhpcy5xYkl0ZW0uU3R5bGVfX2M7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5sYWJlbENsYXNzID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5sYWJlbFN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsU3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5pbnB1dENsYXNzID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmlucHV0Q2xhc3MgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5pbnB1dFN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmJvb2tTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5ib29rU3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uYm9va1N0eWxlIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLnNob3dMYWJlbCA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5zaG93TGFiZWwgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uc2hvd0xhYmVsIDogdHJ1ZTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGlmKCB0aGlzLnFiSXRlbSl7XG4gICAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0ge1xuICAgICAgICAgIFwibGFiZWxDbGFzc1wiIDogXCJcIixcbiAgICAgICAgICBcImxhYmVsU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJsYWJlbFZhbHVlU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJpbnB1dENsYXNzXCIgOiBcIlwiLFxuICAgICAgICAgIFwiaW5wdXRTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcImJvb2tTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcInNob3dMYWJlbFwiOiB0cnVlLFxuICAgICAgICAgIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLFxuICAgICAgICAgIFwicXVlc3Rpb25TdHlsZVwiOiBcIlwiXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyB0aGlzLnFiSXRlbT8uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2MuZGlyZWN0aW9uID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5kaXJlY3Rpb24gPyB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LmRpcmVjdGlvbiA6ICdsdHInO1xuICAgIHRoaXMuYm9va1N0eWxlID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5ib29rU3R5bGU7XG4gICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHZhciBodG1sRWxlbWVudCA9IGVsZW1lbnQ/LlF1ZXN0aW9uX1RleHRfX2MgO1xuICAgICAgdmFyIHRleHRPbmx5ID0gaHRtbEVsZW1lbnQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpXG4gICAgICBlbGVtZW50LlF1ZXN0aW9uX1RleHRfX2MgPSB0ZXh0T25seTtcbiAgICAgIC8vICBIQSAxOURFQzIzIExvZ2ljIGZvciBRdWVzdGlvbiBTdHlsaW5nKFNsYWVzZm9yY2UpXG4gICAgICAvLyBIQSAyOERFQzIzIEFkZGVkIHN0eWxpbmcgYW5kIGxvZ2ljcyB0byBsb2FkIHRoZSBib29rIHR5cGUgcXVlc3Rpb25zIFxuICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICBpZihlbGVtZW50WydRQl9SZWZlcmVuY2VfUXVlc3Rpb25zX19jJ10pe1xuICAgICAgICAgIHZhciBxYiA9IEpTT04ucGFyc2UoZWxlbWVudFsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKTtcbiAgICAgICAgICBpZihxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Mpe1xuICAgICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jID0gdHlwZW9mIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKCcnK3FiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYykgOiBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBCb29rIHR5cGUgcXVlc3Rpb24gc3R5bGluZ1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbENsYXNzID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsQ2xhc3MgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5pbnB1dENsYXNzID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0Q2xhc3MgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0U3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuYm9va1N0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmJvb2tTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5zaG93TGFiZWwgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Muc2hvd0xhYmVsID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnNob3dMYWJlbCA6IHRydWU7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5xdWVzdGlvblN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsnbGFuZ0RpcmVjdGlvbiddID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmRpcmVjdGlvbiA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5kaXJlY3Rpb24gOiB0aGlzLmxhbmdEaXJlY3Rpb247XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gTG9vcCBmb3IgZWFjaCBxdWVzdGlvbiBpbiB0aGUgYm9va1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKHF1ZXN0aW9uRnJvbUJvb2sgPT4ge1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jIDogcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbENsYXNzID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbENsYXNzID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dENsYXNzID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dENsYXNzID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dENsYXNzIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmJvb2tTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuYm9va1N0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5zaG93TGFiZWwgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnNob3dMYWJlbCA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2Muc2hvd0xhYmVsIDogdHJ1ZTtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rWydsYW5nRGlyZWN0aW9uJ10gPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmRpcmVjdGlvbiA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGVsZW1lbnRbJ3FiSXRlbSddID0gcWJbJ3F1ZXN0aW9uYm9vayddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbGVtZW50LlN0eWxlX19jID0gZWxlbWVudC5TdHlsZV9fYyA/IHR5cGVvZiBlbGVtZW50LlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrZWxlbWVudD8uU3R5bGVfX2MpIDogZWxlbWVudD8uU3R5bGVfX2MgOiB0aGlzLnFiSXRlbT8uU3R5bGVfX2M7XG5cbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxDbGFzcyA9IGVsZW1lbnQuU3R5bGVfX2MubGFiZWxDbGFzcyA/IGVsZW1lbnQuU3R5bGVfX2MubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmxhYmVsU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jLmxhYmVsU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jLmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MuaW5wdXRDbGFzcyA9IGVsZW1lbnQuU3R5bGVfX2MuaW5wdXRDbGFzcyA/IGVsZW1lbnQuU3R5bGVfX2MuaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmlucHV0U3R5bGUgPSBlbGVtZW50LlN0eWxlX19jLmlucHV0U3R5bGUgPyBlbGVtZW50LlN0eWxlX19jLmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5ib29rU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jLmJvb2tTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2MuYm9va1N0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2Muc2hvd0xhYmVsID0gZWxlbWVudC5TdHlsZV9fYy5zaG93TGFiZWwgPyB0cnVlIDogZmFsc2U7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuXG4gICAgICBlbGVtZW50WydsYW5nRGlyZWN0aW9uJ10gPSBlbGVtZW50LlN0eWxlX19jLmRpcmVjdGlvbiA/IGVsZW1lbnQuU3R5bGVfX2MuZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuXG5cbiAgICAgIC8vVkQgMDJBdWcyNCBkZXBlbmRlbnQgZmllbGQgc2hvdy9oaWRlIGNoYW5nZXNcbiAgICAgIGlmKGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jKXtcbiAgICAgICAgZWxlbWVudC5kZXBlbmRlbnRSZWYgPSBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYztcbiAgICAgIH1cbiAgICAgIGlmKGVsZW1lbnQuU3ViX1RleHRfX2Mpe1xuICAgICAgICAgbGV0IGRlcGVuZGVuY3lPYmo6IERlcGVuZGVuY3lNZXRhID0gSlNPTi5wYXJzZShlbGVtZW50LlN1Yl9UZXh0X19jKTtcbiAgICAgICAgIGlmKGRlcGVuZGVuY3lPYmouaXNEZXBlbmRlbnRGaWVsZCl7XG4gICAgICAgICAgICBlbGVtZW50LklzX0hpZGVfX2MgPSB0cnVlO1xuICAgICAgICAgfVxuICAgICAgICAvLyBWRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGNoYW5nZScpO1xuICAgICAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBkZXBlbmRlbmN5T2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnb3V0c2lkZS0tPicsZWxlbWVudC5Jc19IaWRlX19jKTtcbiAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50LmlzSGlkZGVuRmllbGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaWYoZGVwZW5kZW5jeU9iai5kZXBlbmRlbnRWYWx1ZSA9PSBjaGFuZ2VWYWx1ZS52YWx1ZU9iail7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LklzX0hpZGVfX2MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5kZXBlbmRlbnRSZWYgPT0gY2hhbmdlVmFsdWUucmVmZXJlbmNlRmllbGQpe1xuICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jID0gY2hhbmdlVmFsdWUucmVmZXJlbmNlRmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsZW1lbnQuSWQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBkZXBlbmRlbnQgc2VsZWN0aW9uIHJlbW92ZSB0aGUgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnQuZGVwZW5kZW50UmVmID09IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZShlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1YlF1ZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2V0U3ViUXVlc3Rpb25zKHRoaXMucXVlc3Rpb25zKTtcbiAgICB0aGlzLnByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCk7IFxuICB9XG4vLyBWRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsZW1lbnRJZCkge1xuICAgIGxldCBlbGVtZW50c1RvSGlkZSA9IHRoaXMucXVlc3Rpb25zLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIGlmIChlbC5TdWJfVGV4dF9fYykge1xuICAgICAgICAgICAgbGV0IGRlcE9iaiA9IEpTT04ucGFyc2UoZWwuU3ViX1RleHRfX2MpO1xuICAgICAgICAgICAgcmV0dXJuIGRlcE9iai5zb3VyY2VRdWVzdGlvbklkID09IGVsZW1lbnRJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICBlbGVtZW50c1RvSGlkZS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgIGVsLmlucHV0ID0gJyc7XG4gICAgICAgIGVsLnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKGVsKTtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGlkZSBlbGVtZW50cyBkZXBlbmRlbnQgb24gdGhpcyBvbmVcbiAgICAgICAgdGhpcy5oaWRlRGVwZW5kZW50RWxlbWVudHMoZWwuSWQpO1xuICAgIH0pO1xufVxuXG4gIGNsZWFyU1FFcnJvcihxdWVzSWQpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uQm9va0NvbXBvbmVudCBjbGVhclNRRXJyb3InKTtcbiAgICB2YXIgc3FMaXN0ID0gdGhpcy5zdWJRdWVzdGlvbnM/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5JZCA9PSBxdWVzSWQpO1xuICAgIGZvciAodmFyIHNxIG9mIHNxTGlzdCkge1xuICAgICAgc3EuZXJyb3IgPSBudWxsO1xuICAgIH1cbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCl7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlZFF1ZXN0aW9ucyAmJiB0aGlzLnRyYW5zbGF0ZWRRdWVzdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaCgob3JnUXVlc3Rpb246IGFueSk9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVkUXVlc3Rpb25zLmZvckVhY2goKHRyYW5zUXVlc3Rpb246YW55KSA9PiB7XG4gICAgICAgICAgICAgaWYob3JnUXVlc3Rpb24uVW5pcXVlX0lkZW50aWZpZXJfX2MgPT0gdHJhbnNRdWVzdGlvbi5pZGVudGlmaWVyKXtcbiAgICAgICAgICAgICAgIG9yZ1F1ZXN0aW9uLlF1ZXN0aW9uX1RleHRfX2MgPSB0cmFuc1F1ZXN0aW9uLmxhYmVsO1xuICAgICAgICAgICAgICAgb3JnUXVlc3Rpb24uUXVlc3Rpb25fX2MgPSB0cmFuc1F1ZXN0aW9uLnBsYWNlSG9sZGVyO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICBjb25zb2xlLmxvZygnb3JpZ2luYWxRdWVzdGlvbicgKyB0aGlzLnF1ZXN0aW9ucyk7XG4gICAgIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBzZXRTdWJRdWVzdGlvbnMocmVjb3Jkcykge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IHNldFN1YlF1ZXN0aW9ucycpO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zLnB1c2gocmVjb3Jkcyk7XG4gIH1cblxuICAvLyBDYXB0dXJlIGFuZCBQcm9jZXNzIENoaWxkIEV2ZW50XG4gIGNoaWxkRXZlbnRDYXB0dXJlKGV2ZW50LCBxdWVzPzphbnkpIHtcbiAgICBsZXQgZHJvcGRvd25EYXRhID0gIHt9O1xuICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbmJvb2tDb21wb25lbnQgY2hpbGRFdmVudENhcHR1cmUnKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmFubm91bmNlQ2hhbmdlKGV2ZW50KTtcbiAgICAvLyBQcm9jZXNzIHRoZSBjaGFuZ2VzIGluIFRhYmxlIGFuZCBEcm9wZG93biBhbmQgc3RvcmUgcmlnaHQgdmFsdWUgaW4gcXVlcy5pbnB1dFxuICAgIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRHJvcGRvd24nIHx8cXVlcy5UeXBlX19jID09ICdSYWRpbycgKSB7XG4gICAgICAvLyBIQSAxOUpBTjI0IENvcnJlY3Rpb24gb2YgZHJvcGRvd24gdmFsdWVzXG4gICAgICBxdWVzLnNlbGVjdGVkT2JqID0gZXZlbnQudmFsdWVPYmogPyBldmVudC52YWx1ZU9iaiA6IG51bGw7XG4gICAgICBxdWVzLmlucHV0ID0gZXZlbnQuc2VsZWN0ZWRPYmogPyBldmVudC5zZWxlY3RlZE9iaiA6IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gZXZlbnQudmFsdWVPYmogPyBldmVudC52YWx1ZU9iaiA6IG51bGw7XG4gICAgICAvLyBlbWl0IHRoZSBkcm9wZG93biBkYXRhIHRvIHBhcmVudFxuICAgICAgZHJvcGRvd25EYXRhWydldmVudCddID0gZXZlbnQudmFsdWVPYmo7XG4gICAgICBkcm9wZG93bkRhdGFbJ3F1ZXMnXSA9IHF1ZXM7XG4gICAgICBpZihkcm9wZG93bkRhdGFbJ2V2ZW50J10pe1xuICAgICAgICB0aGlzLmhhbmRsZURyb3BEb3duLmVtaXQoZHJvcGRvd25EYXRhKTtcbiAgICAgIH0gIC8vIFZEIDIxREVDMjMgLSBkZXBlbmRlbnQgZmllbGQgY2hhbmdlXG4gICAgfSBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnTG9jYXRpb24nKXtcbiAgICAgIHF1ZXMuaW5wdXQgPSBldmVudC52YWx1ZU9iajtcbiAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LnZhbHVlT2JqLmFkZHJlc3M7XG4gICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdGaWxlJyl7IFxuICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuc2VsZWN0ZWRGaWxlRGF0YSA9IGV2ZW50O1xuICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZScgfHwgcXVlcy5UeXBlX19jID09ICdEYXRlVGltZScpeyAvLyBIQSAyNEpBTjI0IENvbnZlcnRpbmcgRGF0ZSBhbmQgRGF0ZVRpbWUgdG8gVVRDXG4gICAgICAgaWYoZXZlbnQudmFsdWUpe1xuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgbGV0IHV0Y1N0cmluZyA9IGQudG9JU09TdHJpbmcoKTtcbiAgICAgICAgcXVlcy5pbnB1dCA9IHV0Y1N0cmluZztcbiAgICAgICB9ZWxzZSB7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSAnJztcbiAgICAgICB9XG4gICAgfWVsc2V7XG4gICAgICBxdWVzLmlucHV0ID0gZXZlbnQ7XG4gICAgfVxuICAgIC8vIHZhbGlkYXRpbmcgICBlcnJvciBtZXNzYWdlXG4gICAgY29uc3QgaGFzRXJyb3IgPSBxdWVzLkVycm9yX01lc3NhZ2VfX2MgJiYgKChxdWVzLlR5cGVfX2MgPT09ICdGaWxlJyAmJiBxdWVzLmlucHV0Lmxlbmd0aCA9PSAwKSB8fCAocXVlcy5UeXBlX19jICE9ICdGaWxlJyAmJiAhcXVlcy5pbnB1dCkpO1xuICAgIHF1ZXMuZXJyb3IgPSBoYXNFcnJvciA/IG5ldyBFcnJvcldyYXBwZXIoKSA6IG51bGw7XG4gICAgICAvLyBpZihxdWVzLklzX09wdGlvbmFsX19jICYmICFxdWVzLmlucHV0KXtcbiAgICAgIC8vICAgcXVlcy5lcnJvciA9IG5ldyBFcnJvcldyYXBwZXJcbiAgICAgIC8vIH1lbHNle1xuICAgICAgLy8gICBxdWVzLmVycm9yID0gbnVsbDsgIFxuICAgICAgLy8gfVxuICBcbiAgICAvLyBPbmNlIHRoZSByaWdodCB2YWx1ZSBpcyBzdG9yZWQgaW4gcXVlcy5pbnB1dCBzdG9yZSB0aGUgcXVlcyAod2l0aCBpbnB1dCkgaW4gc3RvcmFnZVNlcnZpY2VcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZShxdWVzKTtcbiAgICAvLyBWRCAxOUp1bDAxIC0gZ2V0IHVwZGF0ZWQgcXVlc3Rpb25cbiAgICB0aGlzLmhhbmRsZVF1ZXN0aW9uLmVtaXQocXVlcyk7XG4gIH1cbiAgZGVsZXRlRmlsZShmaWxlRGF0YTphbnkpe1xuICAgIGNvbnNvbGUubG9nKCdmaWxlREFUQScsZmlsZURhdGEpXG4gIH1cbiAgZ2V0RHJvcERvd24oZXZlbnQ6YW55KXtcbiAgICB0aGlzLmhhZGxlRHJvcERvd25EZXBlbmRlbnQuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjwhLS0gSEEgMjBERUMyMyBCb29rIFN0eWxlIGZyb20gc2FsZXNmb3JjZSAtLT5cbjwhLS0gSEEgMjhERUMyMyAgUmVtb3ZlZCBJc1NoZW5nZWwocmVtb3ZhbCBvZiBzaGVuZ2VsIHZhbHVlcyBhcHBsaWVzIGZvciB0aGlzIHJlYXNvbikgYW5kIGRpcmVjdCBzdHlsaW5nIG9mIGJvb2tzIHRvIGF2b2lkIHN0eWxpbmcgaXNzdWVzLS0+XG48IS0tIEhBIDE4SkFOMjQgIEFkZGVkIGNsYXNzIGZvciBzdHlsaW5nIC0tPlxuPGRpdiBbc3R5bGVdPVwiYm9va1N0eWxlXCIgY2xhc3M9XCJjb250ZW50LWJveCBmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgIDwhLS0gSEEgMjBERUMyMyBEaXJlY3RpdmUgYW5kIFF1ZXN0aW9uIFN0eWxlIGZyb20gc2FsZXNmb3JjZSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzXT1cIidjb2wtbGctJyArIHF1ZXMuU2l6ZV9fYyArICcgcGFkZGluZ25vbmUnXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzIG9mIHF1ZXN0aW9ucztsZXQgaSA9IGluZGV4XCIgW2lkXT1cInF1ZXMuSWRcIiBbZGlyXT1cInF1ZXMubGFuZ0RpcmVjdGlvblwiIFtzdHlsZV09XCJxdWVzPy5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZVwiPlxuICAgICAgICAgICAgPCEtLSBTdWIgUXVlc3Rpb24gTGFiZWwgLS0+XG4gICAgICAgICAgICA8IS0tIEhBIDIwREVDMjMgTGFiZWwgU3R5bGUgZnJvbSBzYWxlc2ZvcmNlIC0tPlxuICAgICAgICAgICAgPCEtLSBWRCAwOU1heTI0IGlzIGhpZGUgZmllbGQgY2hhbmdlLS0+XG4gICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXMuSXNfSGlkZV9fY1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGVUaW1lJ1wiPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVkQgMjBKVU4yNCAtIGhlbHAgdGV4dCBjaGFuZ2VzLS0+XG4gICAgICAgICAgICA8IS0tIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZS0tPlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAwMkF1ZzI0IC0gbGFiZWwgdmFsdWUgc3R5bGUtLT5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBkb3duMjogcWJJdGVtPy5Qcm9ncmVzc19CYXJfX2MgfVwiICpuZ0lmPVwicXVlcy5TdHlsZV9fYy5zaG93TGFiZWxcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYy5sYWJlbFN0eWxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidkaXMtZmxleCBzaGVuZ2VsLW15dC1mb250MyBteXQtZm9udDcgJ1wiIFtzdHlsZV09XCJxdWVzLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZVwiPnt7IHF1ZXM/LlF1ZXN0aW9uX1RleHRfX2MgfX0gXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwicXVlcy5Jc19PcHRpb25hbF9fY1wiIHN0eWxlPVwiY29sb3I6IHJlZDtcIj4qPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlF1ZXN0aW9uX1RleHRfX2MgJiYgcXVlcz8uSGVscF9UZXh0X19jXCIgY2xhc3M9XCJpY29uXCIgW21hdFRvb2x0aXBdPVwicXVlcz8uSGVscF9UZXh0X19jXCI+aTwvZGl2Pjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAxMkp1bjI0IC0gcmVhZG9ubHkgY2hhbmdlLS0+XG4gICAgICAgICAgICA8IS0tIERhdGVUaW1lIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWRhdGUtcGlja2VyIFttaW5EYXRlXT1cInF1ZXMubWluRGF0ZVwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbZGF0ZV09XCJxdWVzLmlucHV0XCIgKGRhdGVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBEYXRlLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZGF0ZSAgW2RhdGVdPVwicXVlcy5pbnB1dFwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiAoZGF0ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgIDwhLS0gVGltZS0tPlxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXRpbWUgIFt0aW1lXT1cInF1ZXMuaW5wdXRcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtlcnJvck1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgKHRpbWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10aW1lPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIDwhLS0gY2FsZW5kYXIgIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0NhbGVuZGFyJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWNhbGVuZGFyIFtxdWVzdGlvbl09XCJxdWVzXCIgIChldmVudFNlbGVjdGVkKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj48L2FwcC1jdXN0b20tY2FsZW5kYXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUZXh0IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RleHQnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20taW5wdXQgW3ZhbHVlXT1cInF1ZXMuaW5wdXRcIiBbbmdDbGFzc1ZhbHVlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXMtZmxleCBkdC1saW5lIGRhdGUtbGluZSBib29rVGV4dCBib3hvdXRsaW5lIG15dC1mb250MSc6IHFiSXRlbS5Qcm9ncmVzc19CYXJfX2MsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Qm94OiAhcWJJdGVtLlByb2dyZXNzX0Jhcl9fY1xuICAgICAgICAgICAgICAgICAgICB9XCIgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbaWRWYWx1ZV09XCJxdWVzLlRyYWNraW5nX0lEX19jXCIgW2ZvY3VzRXZlbnRdPVwiY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcGxhY2Vob2xkZXJdPVwicXVlcy5RdWVzdGlvbl9fY1wiIChpbnB1dFZhbHVlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSBmb3IgcGljayBsb2NhdGlvbiAtLT5cbiAgICAgICAgICAgIDwhLS0gICBWRCAyMURFQzIzIC0gZGVwZW5kZW50IGZpZWxkIGNoYW5nZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbidcIj5cbiAgICAgICAgICAgIDwhLS0gSEExMDAxMjAyNCBBZGRlZCBBcGkga2V5IGFzIGlucHV0IC0tPlxuICAgICAgICAgICAgICAgIDxhcHAtcGljay1sb2NhdGlvbiBbYXBpS2V5XT1cInFiSXRlbVsnQXBpX0tleV9fYyddXCIgW2FkZHJlc3NdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgW3F1ZXN0aW9uXT1cInF1ZXNcIiAobG9jYXRpb25TZWxlY3RlZCk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtcGljay1sb2NhdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIGZvciAgdGV4dCBhcmVhICAgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGV4dEFyZWEnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGV4dC1hcmVhIFtxdWVzdGlvbl09XCJxdWVzXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgW3ZhbHVlXT1cInF1ZXMuaW5wdXRcIiBbcm93c109XCIzXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcGxhY2Vob2xkZXJdPVwicXVlcy5RdWVzdGlvbl9fYyBcIlxuICAgICAgICAgICAgICAgICAgICAodGV4dGFyZWFWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+PC9hcHAtY3VzdG9tLXRleHQtYXJlYT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEVtYWlsIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0VtYWlsJ1wiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiByZWFkT25seT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgWyhuZ01vZGVsKV09XCJxdWVzLmlucHV0XCIgW2lkXT1cInF1ZXMuSWRcIiByZXF1aXJlZD1cIlwiIChmb2N1cyk9XCJjbGVhclNRRXJyb3IocXVlcy5JZClcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXItY29sb3I9XCJ7eyBxdWVzLmVycm9yID8gJ3JlZCcgOiAnJyB9fVwiIHBsYWNlaG9sZGVyPVwie3sgcXVlcy5RdWVzdGlvbl9fYyB9fVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUYWJsZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXRhYmxlIFtxdWVzdGlvbl09XCJxdWVzXCIgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tdGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIFRhYmxlIEFwcGVuZGl4IC0tPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGFibGVBcHBlbmRpeCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtdGFibGUtYXBwZW5kaXggW3F1ZXN0aW9uXT1cInF1ZXNcIiAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtdGFibGUtYXBwZW5kaXg+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8IS0tIGxpc3QgLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xpc3QnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8bGliLXNlYXJjaC1ib3ggW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBbcGxhY2VIb2xkZXJUZXh0XT1cInF1ZXMuUXVlc3Rpb25fX2NcIiAgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5pbnB1dFwiIChzZWFyY2hWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9saWItc2VhcmNoLWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIERyb3Bkb3duIC0tPlxuICAgICAgICAgICAgPCEtLSBIQSAwOUZFQjI0IEFkZGVkIGNvbmRpdGlvbiBvZiBzcU9wdGlvbiB0byB0aGUgZHJvcGRvd24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRHJvcGRvd24nICYmIHF1ZXM/LlF1ZXN0aW9uX09wdGlvbnNfX3I/LnJlY29yZHNcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMjBERUMyMyBGb3IgVHJhbnNsYXRpb24gLS0+IDwhLS0gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXQgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZHJvcGRvd24gW29wdGlvbnNdPVwicXVlcy5RdWVzdGlvbl9PcHRpb25zX19yLnJlY29yZHNcIiBbdG9rZW5dPVwidG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBbc2VsZWN0ZWRWYWx1ZV09XCJxdWVzLnNlbGVjdGVkVmFsdWVcIiBwbGFjZWhvbGRlcj1cIi0tLXt7J3NlbGVjdCcgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZX19LS0tXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cInF1ZXM/LmlucHV0Py5sZW5ndGggPiAwXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIC8vIFZEIDAyQXVnMjQgY3VzdG9tLXJhZGlvIGNvbXBvbmVudCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdSYWRpbycgJiYgcXVlcz8uUXVlc3Rpb25fT3B0aW9uc19fcj8ucmVjb3Jkc1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tcmFkaW8gW29wdGlvbnNdPVwicXVlcy5RdWVzdGlvbl9PcHRpb25zX19yLnJlY29yZHNcIiBbdG9rZW5dPVwidG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBbc2VsZWN0ZWRWYWx1ZV09XCJxdWVzLnNlbGVjdGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZUZpZWxkXT1cInF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1yYWRpbz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEF0dGFjaG1lbnQgLyBGaWxlcyAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdGaWxlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1maWxlLXVwbG9hZCBbbGltaXRGaWxlVXBsb2FkaW5nXT1cIjVcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtxdWVzdGlvbl09XCJxdWVzXCIgW2FsbEZpbGVzXT1cInF1ZXMuaW5wdXRcIiBbdGFibGVGaWxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRGaWxlRGF0YSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCIgKGRlbGV0ZWRGaWxlRGF0YSk9XCJkZWxldGVGaWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXT1cInRydWVcIj48L2FwcC1maWxlLXVwbG9hZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1BvcFVwTWVzc2FnZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZGVwZW5kZW50LXRhYmxlIFthbGVydE1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtZGVwZW5kZW50LXRhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTGFiZWwnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1sYWJlbCBbbGFiZWxTdHlsZV09XCJxdWVzLlRpdGxlX19jXCIgW2xhYmVsVmFsdWVdPVwicXVlcy5RdWVzdGlvbl9fY1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDwhLS0gLy8gVkQgMDJBdWcyNCBpbWFnZSBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnSW1hZ2UnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1pbWFnZSBbcXVlc3Rpb25dPVwicXVlc1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1pbWFnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAwOE5PVjIzIC0gYnV0dG9uIHR5cGUgcXVlc3Rpb24gYWRkZWQgLS0+XG4gICAgICAgICAgICAgPCEtLSBCdXR0b24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnQnV0dG9uJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tYnV0dG9uIFtoZWlnaHRdPVwiJzUwcHgnXCIgIFxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCInMTUwcHgnXCIgXG4gICAgICAgICAgICAgICAgW2J1dHRvblRleHRdPVwicXVlcz8uUXVlc3Rpb25fX2NcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJxdWVzPy5RdWVzdGlvbl9fY1wiXG4gICAgICAgICAgICAgICAgKGJ1dHRvblZhbHVlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIEhBIDIwREVDMjMgIFRoaXMgaXMgdG8gbG9hZCBib29rIHR5cGUgcXVlc3Rpb25zLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnQm9vaydcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEhBIDA5RkVCMjQgQWRkZWQgdGVybmFyeSBvcGVyYXRvciAtLT5cbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInF1ZXMucWJJdGVtXCIgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiIFtxdWVzdGlvbnNdPVwicXVlcy5xYkl0ZW0/LlF1ZXN0aW9uc19fcj8ucmVjb3Jkc1wiICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiJdfQ==
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUzNDLE1BQU0sT0FBTyxxQkFBcUI7SUF1Qlo7SUFDVjtJQUNBO0lBQ0E7SUFDRDtJQUNtQjtJQTNCbkIsTUFBTSxDQUFlO0lBQ3JCLFlBQVksQ0FBVztJQUN2QixtQkFBbUIsR0FBVyxFQUFFLENBQUEsQ0FBRSxtQ0FBbUM7SUFDckUsU0FBUyxDQUFhO0lBQ3RCLFlBQVksQ0FBSztJQUNqQixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFRLENBQUMsc0NBQXNDO0lBQ25ELGNBQWMsR0FBcUIsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzRCxjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUMsQ0FBQyxvQ0FBb0M7SUFDakcsWUFBWSxDQUFLO0lBQzFCLFlBQVksQ0FBYTtJQUN6QixnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDN0IsdUVBQXVFO0lBQ3ZFLEtBQUssQ0FBZTtJQUNwQixpREFBaUQ7SUFDakQsS0FBSyxDQUFNO0lBQ1gsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixTQUFTLENBQU07SUFDZixZQUFZLENBQWU7SUFDakIsc0JBQXNCLEdBQXFCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsZ0JBQWdCLEdBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV6QyxZQUFvQixTQUE0QixFQUN0QyxXQUF3QixFQUN4QixhQUE0QixFQUM1QixjQUE4QixFQUMvQixXQUF3QixFQUNMLFFBQWtCO1FBTDFCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNMLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFOUMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDbkQsc0NBQXNDO1FBQ3RDLCtCQUErQjtRQUMvQiwwREFBMEQ7UUFDMUQsMkJBQTJCO1FBQzNCLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUM7WUFDdkIsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUM5SCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFD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QUNGO1lBQ0QsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1lBRTFKLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN2RSxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUV0RyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBR3hHLDhDQUE4QztZQUM5QyxJQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBQztnQkFDNUIsT0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7YUFDbkQ7WUFDRCxJQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUM7Z0JBQ3BCLElBQUksYUFBYSxHQUFtQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDcEUsSUFBRyxhQUFhLENBQUMsZ0JBQWdCLEVBQUM7b0JBQy9CLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUM1QjtnQkFDRix1Q0FBdUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQy9ELENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ2IsdUNBQXVDO29CQUN4QyxJQUFHLFdBQVcsSUFBSSxTQUFTLElBQUksYUFBYSxDQUFDLGdCQUFnQixFQUFFO3dCQUM3RCxxREFBcUQ7d0JBQ3JELElBQUcsV0FBVyxDQUFDLFFBQVEsSUFBSSxTQUFTLElBQUksV0FBVyxDQUFDLGNBQWMsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ2xHLCtDQUErQzs0QkFDaEQsZ0NBQWdDOzRCQUNqQyxJQUFHLGFBQWEsQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBQztnQ0FDckQsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0NBQzNCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dDQUNuQixPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztnQ0FDbkMsSUFBRyxPQUFPLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUM7b0NBQ3BELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO2lDQUN6RDs2QkFDRjtpQ0FBSztnQ0FDSixPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQ0FDMUIsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0NBQ25CLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dDQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUN2QywwREFBMEQ7Z0NBQzFELElBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFDO29DQUNsRCxPQUFPLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO2lDQUNuQzs2QkFDRjt5QkFDRjtxQkFDRjtnQkFDSCxDQUFDLENBQ0YsQ0FBQztnQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNILHVDQUF1QztJQUNyQyxxQkFBcUIsQ0FBQyxTQUFTO1FBQzdCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzVDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDaEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixJQUFJLFNBQVMsQ0FBQzthQUMvQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN4QixFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNyQixFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNkLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVDLFlBQVksQ0FBQyxNQUFNO1FBQ2pCLDREQUE0RDtRQUM1RCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUNwRSxLQUFLLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRTtZQUNyQixFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNqQjtJQUNILENBQUM7SUFDRixtQ0FBbUM7SUFDbEMsMEJBQTBCO1FBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBZ0IsRUFBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBaUIsRUFBRSxFQUFFO29CQUNwRCxJQUFHLFdBQVcsQ0FBQyxvQkFBb0IsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFDO3dCQUM5RCxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQzt3QkFDbkQsV0FBVyxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO3FCQUNyRDtnQkFDSixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQU87UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQVM7UUFDaEMsSUFBSSxZQUFZLEdBQUksRUFBRSxDQUFDO1FBQ3hCLGlFQUFpRTtRQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLGdGQUFnRjtRQUNoRixJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksVUFBVSxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFHO1lBQ3hELDJDQUEyQztZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDNUQsbUNBQW1DO1lBQ25DLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3hDLENBQUUsc0NBQXNDO1NBQzFDO2FBQU0sSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVUsRUFBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUM3QzthQUFLLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLEVBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1NBQzVDO2FBQUssSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVUsRUFBQyxFQUFFLGlEQUFpRDtZQUM5RyxJQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUM7Z0JBQ2QsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO2FBQ3ZCO2lCQUFLO2dCQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO1NBQ0g7YUFBSyxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxFQUFDO1lBQzlCLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BFO2FBQUk7WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjtRQUNELDZCQUE2QjtRQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzSSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hELDBDQUEwQztRQUMxQyxrQ0FBa0M7UUFDbEMsU0FBUztRQUNULHlCQUF5QjtRQUN6QixJQUFJO1FBRU4sNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQVk7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsUUFBUSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0FsUlUscUJBQXFCLG9LQTRCdEIsUUFBUTs0RkE1QlAscUJBQXFCLGlhQ25CbEMseW1UQTRKVSw2ekdEeklHLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQWdDekIsTUFBTTsyQkFBQyxRQUFROzRDQTNCVCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQVVJLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVlc3Rpb24sIFF1ZXN0aW9uQm9vayB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2FsZXNmb3JjZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBFcnJvcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9lcnJvcldyYXBwZXInO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlcGVuZGVuY3lNZXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kZXBlbmRlbmN5TWV0YSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbmJvb2snLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb25ib29rLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbmJvb2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBxYkl0ZW06IFF1ZXN0aW9uQm9vaztcbiAgQElucHV0KCkgcXVlc3Rpb25JdGVtOiBRdWVzdGlvbjtcbiAgQElucHV0KCkgdHJhbnNsYXRlZFF1ZXN0aW9ucyA6IGFueVtdID0gW10gIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIEBJbnB1dCgpIHF1ZXN0aW9uczogUXVlc3Rpb25bXTtcbiAgQElucHV0KCkgZXJyb3JGaWVsZElkOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7IFxuICBASW5wdXQoKSB0b2tlbjpzdHJpbmc7IC8vIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0XG4gIEBPdXRwdXQoKSBoYW5kbGVEcm9wRG93bjpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaGFuZGxlUXVlc3Rpb246RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgLy8gVkQgMTlKdWwwMSAtIGdldCB1cGRhdGVkIHF1ZXN0aW9uXG4gIEBJbnB1dCgpIGRyb3BEb3duRGF0YTphbnk7XG4gIHN1YlF1ZXN0aW9uczogUXVlc3Rpb25bXTtcbiAgc2VsZWN0ZWRGaWxlRGF0YTogYW55W10gPSBbXTtcbiAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgcWJSZWY6IFF1ZXN0aW9uQm9vaztcbiAgLy8gIEhBIDE5REVDMjMgRGVjbGFyYXRpb24gZm9yIFNhbGVzZm9yY2UgU3R5bGluZ1xuICBzdHlsZTogYW55O1xuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7XG4gIGJvb2tTdHlsZTogYW55O1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgQE91dHB1dCgpIGhhZGxlRHJvcERvd25EZXBlbmRlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSwgXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkgeyBcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25Cb29rQ29tcG9uZW50IE9uSW5pdCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdxYkl0ZW0nLCB0aGlzLnFiSXRlbSk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5xdWVzdGlvbnMpO1xuICAgIC8vICBIQSAxOURFQzIzIExvZ2ljIGZvciBRdWVzdGlvbiBCb29rIFN0eWxpbmcoU2xhZXNmb3JjZSlcbiAgICAvLyBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnlcbiAgICBpZih0aGlzLnFiSXRlbT8uU3R5bGVfX2Mpe1xuICAgICAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0gdHlwZW9mIHRoaXMucWJJdGVtLlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrdGhpcy5xYkl0ZW0/LlN0eWxlX19jKSA6IHRoaXMucWJJdGVtLlN0eWxlX19jO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxDbGFzcyA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbENsYXNzID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFN0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5pbnB1dENsYXNzID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jLmlucHV0U3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5ib29rU3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uYm9va1N0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5zaG93TGFiZWwgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uc2hvd0xhYmVsID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBpZiggdGhpcy5xYkl0ZW0pe1xuICAgICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYyA9IHtcbiAgICAgICAgICBcImxhYmVsQ2xhc3NcIiA6IFwiXCIsXG4gICAgICAgICAgXCJsYWJlbFN0eWxlXCIgOiBcIlwiLFxuICAgICAgICAgIFwibGFiZWxWYWx1ZVN0eWxlXCIgOiBcIlwiLFxuICAgICAgICAgIFwiaW5wdXRDbGFzc1wiIDogXCJcIixcbiAgICAgICAgICBcImlucHV0U3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJib29rU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJzaG93TGFiZWxcIjogdHJ1ZSxcbiAgICAgICAgICBcImRpcmVjdGlvblwiIDogXCJsdHJcIixcbiAgICAgICAgICBcInF1ZXN0aW9uU3R5bGVcIjogXCJcIlxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlID8gdGhpcy5xYkl0ZW0/LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHRoaXMucWJJdGVtLlN0eWxlX19jLmRpcmVjdGlvbiA9IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8uZGlyZWN0aW9uID8gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5kaXJlY3Rpb24gOiAnbHRyJztcbiAgICB0aGlzLmJvb2tTdHlsZSA9IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8uYm9va1N0eWxlO1xuICAgIHRoaXMucXVlc3Rpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICB2YXIgaHRtbEVsZW1lbnQgPSBlbGVtZW50Py5RdWVzdGlvbl9UZXh0X19jIDtcbiAgICAgIHZhciB0ZXh0T25seSA9IGh0bWxFbGVtZW50Py5yZXBsYWNlKC88W14+XSo+L2csICcnKVxuICAgICAgZWxlbWVudC5RdWVzdGlvbl9UZXh0X19jID0gdGV4dE9ubHk7XG4gICAgICAvLyAgSEEgMTlERUMyMyBMb2dpYyBmb3IgUXVlc3Rpb24gU3R5bGluZyhTbGFlc2ZvcmNlKVxuICAgICAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgICAgIGlmKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0Jvb2snKXtcbiAgICAgICAgaWYoZWxlbWVudFsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKXtcbiAgICAgICAgICB2YXIgcWIgPSBKU09OLnBhcnNlKGVsZW1lbnRbJ1FCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MnXSk7XG4gICAgICAgICAgaWYocWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jKXtcbiAgICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyA9IHR5cGVvZiBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSgnJytxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MpIDogcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQm9vayB0eXBlIHF1ZXN0aW9uIHN0eWxpbmdcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxDbGFzcyA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbENsYXNzID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5pbnB1dENsYXNzID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5pbnB1dFN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0U3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmJvb2tTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5ib29rU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuYm9va1N0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Muc2hvd0xhYmVsID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnNob3dMYWJlbCA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5zaG93TGFiZWwgOiB0cnVlO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ2xhbmdEaXJlY3Rpb24nXSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5kaXJlY3Rpb24gPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIExvb3AgZm9yIGVhY2ggcXVlc3Rpb24gaW4gdGhlIGJvb2tcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uUXVlc3Rpb25zX19yLnJlY29yZHMuZm9yRWFjaChxdWVzdGlvbkZyb21Cb29rID0+IHtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYyA6IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYztcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxDbGFzcyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxDbGFzcyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRDbGFzcyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmlucHV0U3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmlucHV0U3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5ib29rU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmJvb2tTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuYm9va1N0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2Muc2hvd0xhYmVsID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5zaG93TGFiZWwgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnNob3dMYWJlbCA6IHRydWU7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9va1snbGFuZ0RpcmVjdGlvbiddID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5kaXJlY3Rpb24gPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmRpcmVjdGlvbiA6IHRoaXMubGFuZ0RpcmVjdGlvbjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBlbGVtZW50WydxYkl0ZW0nXSA9IHFiWydxdWVzdGlvbmJvb2snXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxlbWVudC5TdHlsZV9fYyA9IGVsZW1lbnQuU3R5bGVfX2MgPyB0eXBlb2YgZWxlbWVudC5TdHlsZV9fYyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKCcnK2VsZW1lbnQ/LlN0eWxlX19jKSA6IGVsZW1lbnQ/LlN0eWxlX19jIDogdGhpcy5xYkl0ZW0/LlN0eWxlX19jO1xuXG4gICAgICBlbGVtZW50LlN0eWxlX19jLmxhYmVsQ2xhc3MgPSBlbGVtZW50LlN0eWxlX19jLmxhYmVsQ2xhc3MgPyBlbGVtZW50LlN0eWxlX19jLmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5sYWJlbFN0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5sYWJlbFN0eWxlID8gZWxlbWVudC5TdHlsZV9fYy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmlucHV0Q2xhc3MgPSBlbGVtZW50LlN0eWxlX19jLmlucHV0Q2xhc3MgPyBlbGVtZW50LlN0eWxlX19jLmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlID8gZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MuYm9va1N0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5ib29rU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jLmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLnNob3dMYWJlbCA9IGVsZW1lbnQuU3R5bGVfX2Muc2hvd0xhYmVsID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID8gZWxlbWVudC5TdHlsZV9fYy5xdWVzdGlvblN0eWxlIDogXCJcIjtcblxuICAgICAgZWxlbWVudFsnbGFuZ0RpcmVjdGlvbiddID0gZWxlbWVudC5TdHlsZV9fYy5kaXJlY3Rpb24gPyBlbGVtZW50LlN0eWxlX19jLmRpcmVjdGlvbiA6IHRoaXMubGFuZ0RpcmVjdGlvbjtcblxuXG4gICAgICAvL1ZEIDAyQXVnMjQgZGVwZW5kZW50IGZpZWxkIHNob3cvaGlkZSBjaGFuZ2VzXG4gICAgICBpZihlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyl7XG4gICAgICAgIGVsZW1lbnQuZGVwZW5kZW50UmVmID0gZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2M7XG4gICAgICB9XG4gICAgICBpZihlbGVtZW50LlN1Yl9UZXh0X19jKXtcbiAgICAgICAgIGxldCBkZXBlbmRlbmN5T2JqOiBEZXBlbmRlbmN5TWV0YSA9IEpTT04ucGFyc2UoZWxlbWVudC5TdWJfVGV4dF9fYyk7XG4gICAgICAgICBpZihkZXBlbmRlbmN5T2JqLmlzRGVwZW5kZW50RmllbGQpe1xuICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gdHJ1ZTtcbiAgICAgICAgIH1cbiAgICAgICAgLy8gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgIC8vIFZEIDIwQXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQgJiYgZGVwZW5kZW5jeU9iai5pc0RlcGVuZGVudEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBzdWJzY3JpcHRpb24gZm9yIHRoZSBjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gZGVwZW5kZW5jeU9iai5zb3VyY2VRdWVzdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ291dHNpZGUtLT4nLGVsZW1lbnQuSXNfSGlkZV9fYyk7XG4gICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudC5pc0hpZGRlbkZpZWxkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGlmKGRlcGVuZGVuY3lPYmouZGVwZW5kZW50VmFsdWUgPT0gY2hhbmdlVmFsdWUudmFsdWVPYmope1xuICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnQuZGVwZW5kZW50UmVmID09IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkKXtcbiAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyA9IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVEZXBlbmRlbnRFbGVtZW50cyhlbGVtZW50LklkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW50IHNlbGVjdGlvbiByZW1vdmUgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LmRlcGVuZGVudFJlZiA9PSBjaGFuZ2VWYWx1ZS5yZWZlcmVuY2VGaWVsZCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdWJRdWVzdGlvbnMgPSBbXTtcbiAgICB0aGlzLnNldFN1YlF1ZXN0aW9ucyh0aGlzLnF1ZXN0aW9ucyk7XG4gICAgdGhpcy5wcm9jZXNzVHJhbnNsYXRlZFF1ZXN0aW9ucygpOyBcbiAgfVxuLy8gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlXG4gIGhpZGVEZXBlbmRlbnRFbGVtZW50cyhlbGVtZW50SWQpIHtcbiAgICBsZXQgZWxlbWVudHNUb0hpZGUgPSB0aGlzLnF1ZXN0aW9ucy5maWx0ZXIoZWwgPT4ge1xuICAgICAgICBpZiAoZWwuU3ViX1RleHRfX2MpIHtcbiAgICAgICAgICAgIGxldCBkZXBPYmogPSBKU09OLnBhcnNlKGVsLlN1Yl9UZXh0X19jKTtcbiAgICAgICAgICAgIHJldHVybiBkZXBPYmouc291cmNlUXVlc3Rpb25JZCA9PSBlbGVtZW50SWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgZWxlbWVudHNUb0hpZGUuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIGVsLklzX0hpZGVfX2MgPSB0cnVlO1xuICAgICAgICBlbC5pbnB1dCA9ICcnO1xuICAgICAgICBlbC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZShlbCk7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhpZGUgZWxlbWVudHMgZGVwZW5kZW50IG9uIHRoaXMgb25lXG4gICAgICAgIHRoaXMuaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsLklkKTtcbiAgICB9KTtcbn1cblxuICBjbGVhclNRRXJyb3IocXVlc0lkKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbkJvb2tDb21wb25lbnQgY2xlYXJTUUVycm9yJyk7XG4gICAgdmFyIHNxTGlzdCA9IHRoaXMuc3ViUXVlc3Rpb25zPy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uSWQgPT0gcXVlc0lkKTtcbiAgICBmb3IgKHZhciBzcSBvZiBzcUxpc3QpIHtcbiAgICAgIHNxLmVycm9yID0gbnVsbDtcbiAgICB9XG4gIH1cbiAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBwcm9jZXNzVHJhbnNsYXRlZFF1ZXN0aW9ucygpe1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZWRRdWVzdGlvbnMgJiYgdGhpcy50cmFuc2xhdGVkUXVlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucXVlc3Rpb25zLmZvckVhY2goKG9yZ1F1ZXN0aW9uOiBhbnkpPT4ge1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlZFF1ZXN0aW9ucy5mb3JFYWNoKCh0cmFuc1F1ZXN0aW9uOmFueSkgPT4ge1xuICAgICAgICAgICAgIGlmKG9yZ1F1ZXN0aW9uLlVuaXF1ZV9JZGVudGlmaWVyX19jID09IHRyYW5zUXVlc3Rpb24uaWRlbnRpZmllcil7XG4gICAgICAgICAgICAgICBvcmdRdWVzdGlvbi5RdWVzdGlvbl9UZXh0X19jID0gdHJhbnNRdWVzdGlvbi5sYWJlbDtcbiAgICAgICAgICAgICAgIG9yZ1F1ZXN0aW9uLlF1ZXN0aW9uX19jID0gdHJhbnNRdWVzdGlvbi5wbGFjZUhvbGRlcjtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgY29uc29sZS5sb2coJ29yaWdpbmFsUXVlc3Rpb24nICsgdGhpcy5xdWVzdGlvbnMpO1xuICAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgc2V0U3ViUXVlc3Rpb25zKHJlY29yZHMpIHtcbiAgICBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uYm9va0NvbXBvbmVudCBzZXRTdWJRdWVzdGlvbnMnKTtcbiAgICB0aGlzLnN1YlF1ZXN0aW9ucy5wdXNoKHJlY29yZHMpO1xuICB9XG5cbiAgLy8gQ2FwdHVyZSBhbmQgUHJvY2VzcyBDaGlsZCBFdmVudFxuICBjaGlsZEV2ZW50Q2FwdHVyZShldmVudCwgcXVlcz86YW55KSB7XG4gICAgbGV0IGRyb3Bkb3duRGF0YSA9ICB7fTtcbiAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IGNoaWxkRXZlbnRDYXB0dXJlJyk7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgIHRoaXMuY2hhbmdlU2VydmljZS5hbm5vdW5jZUNoYW5nZShldmVudCk7XG4gICAgLy8gUHJvY2VzcyB0aGUgY2hhbmdlcyBpbiBUYWJsZSBhbmQgRHJvcGRvd24gYW5kIHN0b3JlIHJpZ2h0IHZhbHVlIGluIHF1ZXMuaW5wdXRcbiAgICBpZihxdWVzLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fHF1ZXMuVHlwZV9fYyA9PSAnUmFkaW8nICkge1xuICAgICAgLy8gSEEgMTlKQU4yNCBDb3JyZWN0aW9uIG9mIGRyb3Bkb3duIHZhbHVlc1xuICAgICAgcXVlcy5zZWxlY3RlZE9iaiA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmogOiBudWxsO1xuICAgICAgcXVlcy5pbnB1dCA9IGV2ZW50LnNlbGVjdGVkT2JqID8gZXZlbnQuc2VsZWN0ZWRPYmogOiBldmVudC52YWx1ZU9iajtcbiAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmogOiBudWxsO1xuICAgICAgLy8gZW1pdCB0aGUgZHJvcGRvd24gZGF0YSB0byBwYXJlbnRcbiAgICAgIGRyb3Bkb3duRGF0YVsnZXZlbnQnXSA9IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgZHJvcGRvd25EYXRhWydxdWVzJ10gPSBxdWVzO1xuICAgICAgaWYoZHJvcGRvd25EYXRhWydldmVudCddKXtcbiAgICAgICAgdGhpcy5oYW5kbGVEcm9wRG93bi5lbWl0KGRyb3Bkb3duRGF0YSk7XG4gICAgICB9ICAvLyBWRCAyMURFQzIzIC0gZGVwZW5kZW50IGZpZWxkIGNoYW5nZVxuICAgIH0gZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyl7XG4gICAgICBxdWVzLmlucHV0ID0gZXZlbnQudmFsdWVPYmo7XG4gICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSBldmVudC52YWx1ZU9iai5hZGRyZXNzO1xuICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRmlsZScpeyBcbiAgICAgIHF1ZXMuaW5wdXQgPSB0aGlzLnNlbGVjdGVkRmlsZURhdGEgPSBldmVudDtcbiAgICB9ZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0RhdGUnIHx8IHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnKXsgLy8gSEEgMjRKQU4yNCBDb252ZXJ0aW5nIERhdGUgYW5kIERhdGVUaW1lIHRvIFVUQ1xuICAgICAgIGlmKGV2ZW50LnZhbHVlKXtcbiAgICAgICAgbGV0IGQgPSBuZXcgRGF0ZShldmVudC52YWx1ZSk7XG4gICAgICAgIGxldCB1dGNTdHJpbmcgPSBkLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSB1dGNTdHJpbmc7XG4gICAgICAgfWVsc2Uge1xuICAgICAgICBxdWVzLmlucHV0ID0gJyc7XG4gICAgICAgfVxuICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnTGlzdCcpe1xuICAgICAgLy8gVkQgMjBBdWcyNCBoYW5kbGluZyB0aGUgbGlzdCB0eXBlICBoYW5kbGUgbXVsdGlwbGUgb2JqZWN0IHZhbHVlc1xuICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoZXZlbnQudmFsdWVPYmosZXZlbnQuZmllbGQpO1xuICAgIH1lbHNle1xuICAgICAgcXVlcy5pbnB1dCA9IGV2ZW50O1xuICAgIH1cbiAgICAvLyB2YWxpZGF0aW5nICAgZXJyb3IgbWVzc2FnZVxuICAgIGNvbnN0IGhhc0Vycm9yID0gcXVlcy5FcnJvcl9NZXNzYWdlX19jICYmICgocXVlcy5UeXBlX19jID09PSAnRmlsZScgJiYgcXVlcy5pbnB1dC5sZW5ndGggPT0gMCkgfHwgKHF1ZXMuVHlwZV9fYyAhPSAnRmlsZScgJiYgIXF1ZXMuaW5wdXQpKTtcbiAgICBxdWVzLmVycm9yID0gaGFzRXJyb3IgPyBuZXcgRXJyb3JXcmFwcGVyKCkgOiBudWxsO1xuICAgICAgLy8gaWYocXVlcy5Jc19PcHRpb25hbF9fYyAmJiAhcXVlcy5pbnB1dCl7XG4gICAgICAvLyAgIHF1ZXMuZXJyb3IgPSBuZXcgRXJyb3JXcmFwcGVyXG4gICAgICAvLyB9ZWxzZXtcbiAgICAgIC8vICAgcXVlcy5lcnJvciA9IG51bGw7ICBcbiAgICAgIC8vIH1cbiAgXG4gICAgLy8gT25jZSB0aGUgcmlnaHQgdmFsdWUgaXMgc3RvcmVkIGluIHF1ZXMuaW5wdXQgc3RvcmUgdGhlIHF1ZXMgKHdpdGggaW5wdXQpIGluIHN0b3JhZ2VTZXJ2aWNlXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUocXVlcyk7XG4gICAgLy8gVkQgMTlKdWwwMSAtIGdldCB1cGRhdGVkIHF1ZXN0aW9uXG4gICAgdGhpcy5oYW5kbGVRdWVzdGlvbi5lbWl0KHF1ZXMpO1xuICB9XG4gIGRlbGV0ZUZpbGUoZmlsZURhdGE6YW55KXtcbiAgICBjb25zb2xlLmxvZygnZmlsZURBVEEnLGZpbGVEYXRhKVxuICB9XG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYWRsZURyb3BEb3duRGVwZW5kZW50LmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8IS0tIEhBIDIwREVDMjMgQm9vayBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG48IS0tIEhBIDI4REVDMjMgIFJlbW92ZWQgSXNTaGVuZ2VsKHJlbW92YWwgb2Ygc2hlbmdlbCB2YWx1ZXMgYXBwbGllcyBmb3IgdGhpcyByZWFzb24pIGFuZCBkaXJlY3Qgc3R5bGluZyBvZiBib29rcyB0byBhdm9pZCBzdHlsaW5nIGlzc3Vlcy0tPlxuPCEtLSBIQSAxOEpBTjI0ICBBZGRlZCBjbGFzcyBmb3Igc3R5bGluZyAtLT5cbjxkaXYgW3N0eWxlXT1cImJvb2tTdHlsZVwiIGNsYXNzPVwiY29udGVudC1ib3ggZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICA8IS0tIEhBIDIwREVDMjMgRGlyZWN0aXZlIGFuZCBRdWVzdGlvbiBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCInY29sLWxnLScgKyBxdWVzLlNpemVfX2MgKyAnIHBhZGRpbmdub25lJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxdWVzdGlvbnM7bGV0IGkgPSBpbmRleFwiIFtpZF09XCJxdWVzLklkXCIgW2Rpcl09XCJxdWVzLmxhbmdEaXJlY3Rpb25cIiBbc3R5bGVdPVwicXVlcz8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGVcIj5cbiAgICAgICAgICAgIDwhLS0gU3ViIFF1ZXN0aW9uIExhYmVsIC0tPlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIExhYmVsIFN0eWxlIGZyb20gc2FsZXNmb3JjZSAtLT5cbiAgICAgICAgICAgIDwhLS0gVkQgMDlNYXkyNCBpcyBoaWRlIGZpZWxkIGNoYW5nZS0tPlxuICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzLklzX0hpZGVfX2NcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlVGltZSdcIj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFZEIDIwSlVOMjQgLSBoZWxwIHRleHQgY2hhbmdlcy0tPlxuICAgICAgICAgICAgPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gLy8gVkQgMDJBdWcyNCAtIGxhYmVsIHZhbHVlIHN0eWxlLS0+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgZG93bjI6IHFiSXRlbT8uUHJvZ3Jlc3NfQmFyX19jIH1cIiAqbmdJZj1cInF1ZXMuU3R5bGVfX2Muc2hvd0xhYmVsXCIgW3N0eWxlXT1cInF1ZXMuU3R5bGVfX2MubGFiZWxTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInZGlzLWZsZXggc2hlbmdlbC1teXQtZm9udDMgbXl0LWZvbnQ3ICdcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGVcIj57eyBxdWVzPy5RdWVzdGlvbl9UZXh0X19jIH19IFxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICAqbmdJZj1cInF1ZXMuSXNfT3B0aW9uYWxfX2NcIiBzdHlsZT1cImNvbG9yOiByZWQ7XCI+KjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5RdWVzdGlvbl9UZXh0X19jICYmIHF1ZXM/LkhlbHBfVGV4dF9fY1wiIGNsYXNzPVwiaWNvblwiIFttYXRUb29sdGlwXT1cInF1ZXM/LkhlbHBfVGV4dF9fY1wiPmk8L2Rpdj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gLy8gVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZS0tPlxuICAgICAgICAgICAgPCEtLSBEYXRlVGltZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kYXRlLXBpY2tlciBbbWluRGF0ZV09XCJxdWVzLm1pbkRhdGVcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtlcnJvck1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgW2RhdGVdPVwicXVlcy5pbnB1dFwiIChkYXRlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgIDwhLS0gRGF0ZS0tPlxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWRhdGUgIFtkYXRlXT1cInF1ZXMuaW5wdXRcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtlcnJvck1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgKGRhdGVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8IS0tIFRpbWUtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10aW1lICBbdGltZV09XCJxdWVzLmlucHV0XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiICh0aW1lQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tdGltZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICA8IS0tIGNhbGVuZGFyICAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdDYWxlbmRhcidcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1jYWxlbmRhciBbcXVlc3Rpb25dPVwicXVlc1wiICAoZXZlbnRTZWxlY3RlZCk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+PC9hcHAtY3VzdG9tLWNhbGVuZGFyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0J1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWlucHV0IFt2YWx1ZV09XCJxdWVzLmlucHV0XCIgW25nQ2xhc3NWYWx1ZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZGlzLWZsZXggZHQtbGluZSBkYXRlLWxpbmUgYm9va1RleHQgYm94b3V0bGluZSBteXQtZm9udDEnOiBxYkl0ZW0uUHJvZ3Jlc3NfQmFyX19jLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEJveDogIXFiSXRlbS5Qcm9ncmVzc19CYXJfX2NcbiAgICAgICAgICAgICAgICAgICAgfVwiIFtxdWVzdGlvbl09XCJxdWVzXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgW2lkVmFsdWVdPVwicXVlcy5UcmFja2luZ19JRF9fY1wiIFtmb2N1c0V2ZW50XT1cImNsZWFyU1FFcnJvcihxdWVzLklkKVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXMuUXVlc3Rpb25fX2NcIiAoaW5wdXRWYWx1ZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gZm9yIHBpY2sgbG9jYXRpb24gLS0+XG4gICAgICAgICAgICA8IS0tICAgVkQgMjFERUMyMyAtIGRlcGVuZGVudCBmaWVsZCBjaGFuZ2UgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTG9jYXRpb24nXCI+XG4gICAgICAgICAgICA8IS0tIEhBMTAwMTIwMjQgQWRkZWQgQXBpIGtleSBhcyBpbnB1dCAtLT5cbiAgICAgICAgICAgICAgICA8YXBwLXBpY2stbG9jYXRpb24gW2FwaUtleV09XCJxYkl0ZW1bJ0FwaV9LZXlfX2MnXVwiIFthZGRyZXNzXT1cInF1ZXMuc2VsZWN0ZWRWYWx1ZVwiIFtxdWVzdGlvbl09XCJxdWVzXCIgKGxvY2F0aW9uU2VsZWN0ZWQpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXBpY2stbG9jYXRpb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBmb3IgIHRleHQgYXJlYSAgIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RleHRBcmVhJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXRleHQtYXJlYSBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFt2YWx1ZV09XCJxdWVzLmlucHV0XCIgW3Jvd3NdPVwiM1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXMuUXVlc3Rpb25fX2MgXCJcbiAgICAgICAgICAgICAgICAgICAgKHRleHRhcmVhVmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPjwvYXBwLWN1c3RvbS10ZXh0LWFyZWE+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBFbWFpbCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdFbWFpbCdcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgcmVhZE9ubHk9XCJxdWVzLlJlYWRfT25seV9fY1wiIFsobmdNb2RlbCldPVwicXVlcy5pbnB1dFwiIFtpZF09XCJxdWVzLklkXCIgcmVxdWlyZWQ9XCJcIiAoZm9jdXMpPVwiY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUuYm9yZGVyLWNvbG9yPVwie3sgcXVlcy5lcnJvciA/ICdyZWQnIDogJycgfX1cIiBwbGFjZWhvbGRlcj1cInt7IHF1ZXMuUXVlc3Rpb25fX2MgfX1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGFibGUgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGFibGUnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10YWJsZSBbcXVlc3Rpb25dPVwicXVlc1wiIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLXRhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBUYWJsZSBBcHBlbmRpeCAtLT5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RhYmxlQXBwZW5kaXgnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLXRhYmxlLWFwcGVuZGl4IFtxdWVzdGlvbl09XCJxdWVzXCIgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXRhYmxlLWFwcGVuZGl4PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPCEtLSBsaXN0IC0tPlxuICAgICAgICAgICAgIDwhLS0gVkQgMjBBdWcyNCB1c2VkIGNvcnJlY3QgYXR0cmlidXRlIC0tPlxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdMaXN0J1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1zZWFyY2gtYm94IFtxdWVzdGlvbl09XCJxdWVzXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3BsYWNlSG9sZGVyVGV4dF09XCJxdWVzLlF1ZXN0aW9uX19jXCIgIFtmaWx0ZXJOYW1lXT1cInF1ZXMuaW5wdXRcIiAoc2VhcmNoVmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvbGliLXNlYXJjaC1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgICAgICAgIDwhLS0gSEEgMDlGRUIyNCBBZGRlZCBjb25kaXRpb24gb2Ygc3FPcHRpb24gdG8gdGhlIGRyb3Bkb3duIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0Ryb3Bkb3duJyAmJiBxdWVzPy5RdWVzdGlvbl9PcHRpb25zX19yPy5yZWNvcmRzXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEhBIDIwREVDMjMgRm9yIFRyYW5zbGF0aW9uIC0tPiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWRyb3Bkb3duIFtvcHRpb25zXT1cInF1ZXMuUXVlc3Rpb25fT3B0aW9uc19fci5yZWNvcmRzXCIgW3Rva2VuXT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgcGxhY2Vob2xkZXI9XCItLS17eydzZWxlY3QnIHwgaTE4bjppMThuU2VydmljZS5jdXJyZW50TGFuZ3VhZ2V9fS0tLVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvck1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICBbcmVmZXJlbmNlRmllbGRdPVwicXVlcy5SZWZlcmVuY2VfRmllbGRfX2NcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJxdWVzPy5pbnB1dD8ubGVuZ3RoID4gMFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAwMkF1ZzI0IGN1c3RvbS1yYWRpbyBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnUmFkaW8nICYmIHF1ZXM/LlF1ZXN0aW9uX09wdGlvbnNfX3I/LnJlY29yZHNcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXJhZGlvIFtvcHRpb25zXT1cInF1ZXMuUXVlc3Rpb25fT3B0aW9uc19fci5yZWNvcmRzXCIgW3Rva2VuXT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tcmFkaW8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBdHRhY2htZW50IC8gRmlsZXMgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRmlsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWQgW2xpbWl0RmlsZVVwbG9hZGluZ109XCI1XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcXVlc3Rpb25dPVwicXVlc1wiIFthbGxGaWxlc109XCJxdWVzLmlucHV0XCIgW3RhYmxlRmlsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZURhdGEpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiIChkZWxldGVkRmlsZURhdGEpPVwiZGVsZXRlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZV09XCJ0cnVlXCI+PC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdQb3BVcE1lc3NhZ2UnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWRlcGVuZGVudC10YWJsZSBbYWxlcnRNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWRlcGVuZGVudC10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xhYmVsJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tbGFiZWwgW2xhYmVsU3R5bGVdPVwicXVlcy5UaXRsZV9fY1wiIFtsYWJlbFZhbHVlXT1cInF1ZXMuUXVlc3Rpb25fX2NcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8IS0tIC8vIFZEIDAyQXVnMjQgaW1hZ2UgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0ltYWdlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20taW1hZ2UgW3F1ZXN0aW9uXT1cInF1ZXNcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW1hZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gMDhOT1YyMyAtIGJ1dHRvbiB0eXBlIHF1ZXN0aW9uIGFkZGVkIC0tPlxuICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0J1dHRvbidcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWJ1dHRvbiBbaGVpZ2h0XT1cIic1MHB4J1wiICBcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiJzE1MHB4J1wiIFxuICAgICAgICAgICAgICAgIFtidXR0b25UZXh0XT1cInF1ZXM/LlF1ZXN0aW9uX19jXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicXVlcz8uUXVlc3Rpb25fX2NcIlxuICAgICAgICAgICAgICAgIChidXR0b25WYWx1ZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzICBUaGlzIGlzIHRvIGxvYWQgYm9vayB0eXBlIHF1ZXN0aW9ucy0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0Jvb2snXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgLS0+XG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxdWVzLnFiSXRlbVwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25zXT1cInF1ZXMucWJJdGVtPy5RdWVzdGlvbnNfX3I/LnJlY29yZHNcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4iXX0=