@reusa/ngx-reusa-app-lib 0.0.1332 → 0.0.1334

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.
@@ -760,6 +760,12 @@ export class ProfileComponent extends BasePage {
760
760
  a.download = filename;
761
761
  a.click();
762
762
  URL.revokeObjectURL(url);
763
+ if (filename === 'UnemploymentVerificationReport.pdf') {
764
+ this.downloadStatusForVerification = "completed";
765
+ }
766
+ if (filename === 'ExternalAgencyReport.pdf') {
767
+ this.downloadStatusForHistory = "completed";
768
+ }
763
769
  }
764
770
  handleError(error) {
765
771
  if (error?.errorCode == '422') {
@@ -845,7 +851,7 @@ export class ProfileComponent extends BasePage {
845
851
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fb = _t.first);
846
852
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.otpFormDirective = _t.first);
847
853
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.securityQuestionFormDirective = _t.first);
848
- } }, inputs: { form: "form", question: "question" }, outputs: { onCancel: "onCancel", accepted: "accepted" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 13, consts: [["visible", "true", "modal", "true", "appendTo", "body", "position", "top", 3, "breakpoints"], ["pTemplate", "header"], ["style", "margin-left: -8px;", 4, "ngIf"], ["class", "proof-of-unemployment", 4, "ngIf"], ["style", "margin-top: -90px;", 4, "ngIf"], [4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["pTemplate", "footer"], [1, "ion-text-left", "heading", 2, "padding-left", "24px"], [2, "font-size", "16px"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick", 4, "ngIf"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick"], [2, "margin-left", "-8px"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete", 4, "ngIf"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete"], ["fb", ""], ["class", "error-banner", 4, "ngIf"], [1, "error-banner"], ["name", "alert-circle-outline", 2, "color", "var(--ion-color-danger)", "font-size", "18px", "margin-right", "8px"], [1, "proof-of-unemployment"], ["style", "padding: 0px 1rem", 4, "ngIf", "ngIfElse"], ["nonPhraseTwoView", ""], [2, "padding", "0px 1rem"], [2, "margin-top", "15px"], ["class", "flex align-items-center flex-column", "layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 1, "flex", "align-items-center", "flex-column", 2, "margin", "3px"], [1, "p-4", 2, "height", "100%", "width", "100%"], [2, "box-shadow", "0 0 0 0"], [1, "pi", "pi-check-circle", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], [1, "pl-0", "pr-0", "flex", "align-items-center", "flex-column", 2, "height", "100%", "justify-content", "space-between"], [1, "flex", "flex-column", "align-items-center", 2, "padding-bottom", "30px"], ["shape", "round", 1, "Claimant-summary-ver-btn", 2, "width", "10rem", 3, "click"], ["name", "download-outline", 1, "pr-1", "pb-1"], [1, "pi", "pi-file", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], ["shape", "round", 1, "Claimant-report-btn", 2, "width", "'10rem'", 3, "click"], ["layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 2, "margin", "3px"], ["shape", "round", "fill", "outline", 1, "Claimant-summary-ver-btn", 3, "click"], ["shape", "round", "fill", "outline", 1, "Claimant-report-btn", 3, "click"], ["name", "download-outline"], [2, "margin-top", "-90px"], [3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid"], ["for", "otp", 3, "innerHTML"], ["formControlName", "otp", "mask", "999999", "size", "6", "maxlength", "6", "minlength", "6", "title", "Enter Authcode", 3, "autoFocus"], [3, "field", "form", "errDef"], ["shape", "round", "type", "submit", 3, "click"], ["securityQuestionFormDirective", "ngForm"], ["for", "securityQuestionAnswer", 3, "innerHTML"], ["pInputText", "", "formControlName", "securityQuestionAnswer", "size", "30", "maxlength", "30", "title", "Security Answer"], [2, "color", "var(--ion-color-green)"], [1, "ion-text-center", "ion-padding-top"], ["name", "checkmark-circle", 2, "font-size", "80px", "color", "var(--ion-color-green)"], ["name", "close-circle-outline", 2, "font-size", "80px", "color", "var(--ion-color-danger)"], ["size", "12", "sizeXl", "4", "sizeLg", "4", "sizeMd", "5", 1, "ion-text-left"], ["shape", "round", "fill", "outline", "type", "button", 3, "click"], ["size", "12", "sizeXl", "8", "sizeLg", "8", "sizeMd", "7", 1, "ion-text-right"], ["shape", "round", "fill", "outline", "type", "reset", 3, "click"], ["shape", "round", "type", "submit", 3, "disabled", "click", 4, "ngIf"], ["shape", "round", "type", "submit", 3, "disabled", "click"]], template: function ProfileComponent_Template(rf, ctx) { if (rf & 1) {
854
+ } }, inputs: { form: "form", question: "question" }, outputs: { onCancel: "onCancel", accepted: "accepted" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 13, consts: [["visible", "true", "modal", "true", "appendTo", "body", "position", "top", 3, "breakpoints"], ["pTemplate", "header"], ["style", "margin-left: -8px;", 4, "ngIf"], ["class", "proof-of-unemployment", 4, "ngIf"], ["style", "margin-top: -90px;", 4, "ngIf"], [4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["pTemplate", "footer"], [1, "ion-text-left", "heading", 2, "padding-left", "24px"], [2, "font-size", "16px"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick", 4, "ngIf"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick"], [2, "margin-left", "-8px"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete", 4, "ngIf"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete"], ["fb", ""], ["class", "error-banner", 4, "ngIf"], [1, "error-banner"], ["name", "alert-circle-outline", 2, "color", "var(--ion-color-danger)", "font-size", "18px", "margin-right", "8px"], [1, "proof-of-unemployment"], ["style", "padding: 0px 1rem", 4, "ngIf", "ngIfElse"], ["nonPhraseTwoView", ""], [2, "padding", "0px 1rem"], [2, "margin-top", "15px"], ["class", "flex align-items-center flex-column", "layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 1, "flex", "align-items-center", "flex-column", 2, "margin", "3px"], [1, "p-4", 2, "height", "100%", "width", "100%"], [2, "box-shadow", "0 0 0 0"], [1, "pi", "pi-check-circle", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], [1, "pl-0", "pr-0", "flex", "align-items-center", "flex-column", 2, "height", "100%", "justify-content", "space-between"], [1, "flex", "flex-column", "align-items-center", "mobile-view", 2, "padding-bottom", "30px"], ["shape", "round", 1, "Claimant-summary-ver-btn", 2, "width", "10rem", 3, "click"], ["name", "download-outline", 1, "pr-1", "pb-1"], [1, "pi", "pi-file", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], ["shape", "round", 1, "Claimant-report-btn", 2, "width", "'10rem'", 3, "click"], ["layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 2, "margin", "3px"], ["shape", "round", "fill", "outline", 1, "Claimant-summary-ver-btn", 3, "click"], ["shape", "round", "fill", "outline", 1, "Claimant-report-btn", 3, "click"], ["name", "download-outline"], [2, "margin-top", "-90px"], [3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid"], ["for", "otp", 3, "innerHTML"], ["formControlName", "otp", "mask", "999999", "size", "6", "maxlength", "6", "minlength", "6", "title", "Enter Authcode", 3, "autoFocus"], [3, "field", "form", "errDef"], ["shape", "round", "type", "submit", 3, "click"], ["securityQuestionFormDirective", "ngForm"], ["for", "securityQuestionAnswer", 3, "innerHTML"], ["pInputText", "", "formControlName", "securityQuestionAnswer", "size", "30", "maxlength", "30", "title", "Security Answer"], [2, "color", "var(--ion-color-green)"], [1, "ion-text-center", "ion-padding-top"], ["name", "checkmark-circle", 2, "font-size", "80px", "color", "var(--ion-color-green)"], ["name", "close-circle-outline", 2, "font-size", "80px", "color", "var(--ion-color-danger)"], ["size", "12", "sizeXl", "4", "sizeLg", "4", "sizeMd", "5", 1, "ion-text-left"], ["shape", "round", "fill", "outline", "type", "button", 3, "click"], ["size", "12", "sizeXl", "8", "sizeLg", "8", "sizeMd", "7", 1, "ion-text-right"], ["shape", "round", "fill", "outline", "type", "reset", 3, "click"], ["shape", "round", "type", "submit", 3, "disabled", "click", 4, "ngIf"], ["shape", "round", "type", "submit", 3, "disabled", "click"]], template: function ProfileComponent_Template(rf, ctx) { if (rf & 1) {
849
855
  i0.ɵɵelementStart(0, "p-dialog", 0);
850
856
  i0.ɵɵtemplate(1, ProfileComponent_ng_template_1_Template, 11, 6, "ng-template", 1)(2, ProfileComponent_div_2_Template, 5, 4, "div", 2)(3, ProfileComponent_div_3_Template, 4, 2, "div", 3)(4, ProfileComponent_div_4_Template, 16, 15, "div", 4)(5, ProfileComponent_div_5_Template, 16, 14, "div", 4)(6, ProfileComponent_mat_error_6_Template, 2, 1, "mat-error", 5)(7, ProfileComponent_ion_label_7_Template, 3, 1, "ion-label", 6)(8, ProfileComponent_div_8_Template, 6, 3, "div", 5)(9, ProfileComponent_div_9_Template, 5, 2, "div", 5)(10, ProfileComponent_ng_template_10_Template, 11, 7, "ng-template", 7);
851
857
  i0.ɵɵelementEnd();
@@ -868,11 +874,11 @@ export class ProfileComponent extends BasePage {
868
874
  i0.ɵɵproperty("ngIf", ctx.showSuccess);
869
875
  i0.ɵɵadvance(1);
870
876
  i0.ɵɵproperty("ngIf", ctx.showError);
871
- } }, dependencies: [i6.IonButton, i6.IonCard, i6.IonCardContent, i6.IonCardTitle, i6.IonCol, i6.IonGrid, i6.IonHeader, i6.IonIcon, i6.IonLabel, i6.IonRow, i11.NgIf, i12.PrimeTemplate, i13.MatError, i9.ɵNgNoValidate, i9.DefaultValueAccessor, i9.NgControlStatus, i9.NgControlStatusGroup, i9.MinLengthValidator, i9.MaxLengthValidator, i9.FormGroupDirective, i9.FormControlName, i9.NgModel, i14.Dialog, i15.InputText, i16.InputMask, i17.SelectButton, i18.ErrorComponent, i19.FormBuilderPage, i20.TranslatePipe], styles: ["ion-col[_ngcontent-%COMP%]{margin-left:0!important}.Claimant-report-btn[_ngcontent-%COMP%]{margin-inline-end:3%}.proof-unemployment-btn-label[_ngcontent-%COMP%]{margin-bottom:3px}.error-banner[_ngcontent-%COMP%]{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-right:none}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}"] }); }
877
+ } }, dependencies: [i6.IonButton, i6.IonCard, i6.IonCardContent, i6.IonCardTitle, i6.IonCol, i6.IonGrid, i6.IonHeader, i6.IonIcon, i6.IonLabel, i6.IonRow, i11.NgIf, i12.PrimeTemplate, i13.MatError, i9.ɵNgNoValidate, i9.DefaultValueAccessor, i9.NgControlStatus, i9.NgControlStatusGroup, i9.MinLengthValidator, i9.MaxLengthValidator, i9.FormGroupDirective, i9.FormControlName, i9.NgModel, i14.Dialog, i15.InputText, i16.InputMask, i17.SelectButton, i18.ErrorComponent, i19.FormBuilderPage, i20.TranslatePipe], styles: ["ion-col[_ngcontent-%COMP%]{margin-left:0!important}.Claimant-report-btn[_ngcontent-%COMP%]{margin-inline-end:3%}.proof-unemployment-btn-label[_ngcontent-%COMP%]{margin-bottom:3px}.error-banner[_ngcontent-%COMP%]{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-right:none}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}@media (min-width: 261px) and (max-width: 350px){.mobile-view[_ngcontent-%COMP%]{padding-bottom:3rem!important}}@media (max-width: 260px){.mobile-view[_ngcontent-%COMP%]{padding-bottom:5rem!important}}"] }); }
872
878
  }
873
879
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfileComponent, [{
874
880
  type: Component,
875
- args: [{ selector: 'app-profile', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\"\r\n [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" [style]=\"{width: '60vw'}\" position=\"top\">\r\n <ng-template pTemplate=\"header\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left heading\" style=\"padding-left: 24px;\">\r\n {{\"Your Account\" | translate}} <span style=\"font-size: 16px;\">(CLAIMANT ID\r\n {{ls.getUser().claimantId}})</span>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-selectButton *ngIf=\"!isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOpts\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n <p-selectButton *ngIf=\"isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOptsIVR\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n <div *ngIf=\"!(showSuccess || showError)\" style=\"margin-left: -8px;\">\r\n <app-form-builder #fb *ngIf=\"selected == 'personal-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <div *ngIf=\"selected == 'contact-details'\">\r\n <div *ngIf=\"showInlineError && selected === 'contact-details'\" class=\"error-banner\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"color: var(--ion-color-danger); font-size: 18px; margin-right: 8px;\"></ion-icon>\r\n <span>{{ errorText }}</span>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'contact-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'payment-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <app-form-builder #fb *ngIf=\"selected == 'update-ivr'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <div class=\"proof-of-unemployment\" *ngIf=\"selected == 'proof-of-unemployment'\">\r\n <div *ngIf=\"phaseTwoProofOfUIView==='true';else nonPhraseTwoView\" style=\"padding: 0px 1rem\">\r\n <!-- <h2 style=\"font-family: 'Open Sans, Light';\">\r\n {{ \"profile.proof.of.unemployment.label.proof.of.unemployment.pay\"| translate}}\r\n </h2>\r\n <div *ngIf=\"!listOfActiveClaim || listOfActiveClaim.length === 0; else activeClaimTable\">\r\n <h3 style=\"font-family: 'Open Sans, Light';\">\r\n {{\"profile.proof.of.unemployment.label.no.active.claim\"| translate}}\r\n </h3>\r\n </div>\r\n <ng-template #activeClaimTable>\r\n <p-table [value]=\"listOfActiveClaim\" dataKey=\"claimId\" [rowExpandMode]=\"'single'\" styleClass=\"seperate-row\" class=\"seperate-row\"\r\n [tableStyle]=\"{'border-collapse': 'separate','border-spacing': '0 8px'}\"\r\n >\r\n <ng-template pTemplate=\"body\" let-data let-expanded=\"expanded\">\r\n <tr>\r\n <td>\r\n <a href=\"#\" [pRowToggler]=\"data\">\r\n <i [ngClass]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\" style=\"font-size: 1.5rem;\"></i>\r\n </a> \r\n <td >\r\n {{data.effectiveDate}} - {{data.byeDate}}\r\n </td>\r\n <td>\r\n {{data.entitlementType}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-data>\r\n <tr>\r\n <td colspan=\"7\" style=\" border-left: 1px solid #e4e4e4;border-right: 1px solid #e4e4e4;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col style=\"display: flex;justify-content: center;\">\r\n <img [src]=\"docFileLink\" height='500px' width='420px'/>\r\n </ion-col>\r\n <ion-col style=\"display: flex;flex-direction: column;justify-content: space-between;\">\r\n <ion-row >\r\n <span [innerHTML]=\"data.description\" style=\"font-size: 19px;\"></span>\r\n </ion-row>\r\n <ion-row>\r\n \r\n <ion-button fill=\"outline\" shape=\"round\" style=\"padding-inline-end: 2rem;\" (click)=\"getVerificationReport()\">\r\n {{ \"profile.proof.of.unemployment.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n \r\n </ion-grid>\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template> -->\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" class=\"flex align-items-center flex-column\" layout=\"row\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-file\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i>{{ \"profile.proof.of.unemployment.phase.two.label.download.unemployment.claim.report\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.unemployment.claim.report'| translate}}\r\n </label>\r\n <div class=\"flex flex-column align-items-center\" style=\"padding-bottom:30px\">\r\n <ion-button shape=\"round\" (click)=\"getExternalClaimantReport()\" style=\"width:'10rem'\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon>{{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n <div *ngIf=\"downloadStatusForHistory=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForHistory=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </div>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n \r\n </ion-col>\r\n <ion-col layout=\"row\" class=\"flex align-items-center flex-column\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-check-circle\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i> {{ \"profile.proof.of.unemployment.phase.two.label.summary.unemployment.claim\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.summary.unemployment.claim'| translate}}\r\n </label>\r\n <div class=\"flex flex-column align-items-center\" style=\"padding-bottom:30px\">\r\n <ion-button shape=\"round\" (click)=\"getVerificationReport()\" style=\"width:10rem\"\r\n class=\"Claimant-summary-ver-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon> {{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n <div *ngIf=\"downloadStatusForVerification=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForVerification=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </div>\r\n \r\n </ion-card-content>\r\n \r\n </ion-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n </div>\r\n <ng-template #nonPhraseTwoView>\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.download.unemployment.claim.report\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"getExternalClaimantReport()\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\"></ion-icon>{{ \"profile.proof.of.unemployment.button.external.claimant.report\"| translate}}\r\n </ion-button>\r\n <br>\r\n <div *ngIf=\"downloadStatusForHistory=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForHistory=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.summary.unemployment.claim\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"redirectLink('.claimantsummaryverification')\"\r\n class=\"Claimant-summary-ver-btn\">{{ \"profile.proof.of.unemployment.button.unemployment.verification\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"isMS() && selected == 'contact-details' && isOtpSent == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"otp\" [innerHTML]=\"'profile.contact.details.label.otp' | translate:{ type: type }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-inputMask formControlName=\"otp\" mask=\"999999\" size=\"6\" maxlength=\"6\" minlength=\"6\"\r\n [autoFocus]='true' title='Enter Authcode'></p-inputMask>\r\n <app-error [field]='otp' [form]=\"otpFormDirective\" [errDef]=\"{ \r\n required: 'Authcode is required.',\r\n minlength: 'Authcode should have 6 numbers.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verify()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <div *ngIf=\"isME() && selected == 'contact-details' && displaySecurityQuestion == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"securityQuestionForm\" #securityQuestionFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"securityQuestionAnswer\" [innerHTML]=\"'profile.contact.details.label.securityQuestion' | translate:{ securityQuestionToAsk: securityQuestionToAsk }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n \t<input pInputText formControlName=\"securityQuestionAnswer\" size=\"30\" maxlength=\"30\" title=\"Security Answer\" />\r\n <app-error [field]='securityQuestionAnswer' [form]=\"securityQuestionFormDirective\" [errDef]=\"{ \r\n required: 'Security Answer is required.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verifySecurityQuestion()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}</mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br /></ion-label>\r\n\r\n <div *ngIf=\"showSuccess\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"checkmark-circle\" style=\"font-size: 80px; color: var(--ion-color-green);\"></ion-icon>\r\n <h1>{{ \"profile.banner.success\"| translate}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showError\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"close-circle-outline\" style=\"font-size: 80px; color: var(--ion-color-danger);\"></ion-icon>\r\n <section *ngIf=\"isMS()\">\r\n <h1>{{ errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n <section *ngIf=\"!isMS()\">\r\n <h1>{{errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n </div>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left\" size=\"12\" sizeXl=\"4\" sizeLg=\"4\" sizeMd=\"5\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"button\" (click)=\"logout()\">{{ \"profile.button.logout\"| translate}}</ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\" size=\"12\" sizeXl=\"8\" sizeLg=\"8\" sizeMd=\"7\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"reset\" (click)=\"cancel()\">{{ \"profile.button.close\"| translate}}</ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"save()\" *ngIf=\"!(showSuccess || showError) && selected!='proof-of-unemployment'\"\r\n [disabled]=\"isOtpSent== true || displaySecurityQuestion== true\">{{ \"profile.button.save\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n</p-dialog>", styles: ["ion-col{margin-left:0!important}.Claimant-report-btn{margin-inline-end:3%}.proof-unemployment-btn-label{margin-bottom:3px}.error-banner{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}\n"] }]
881
+ args: [{ selector: 'app-profile', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\"\r\n [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" [style]=\"{width: '60vw'}\" position=\"top\">\r\n <ng-template pTemplate=\"header\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left heading\" style=\"padding-left: 24px;\">\r\n {{\"Your Account\" | translate}} <span style=\"font-size: 16px;\">(CLAIMANT ID\r\n {{ls.getUser().claimantId}})</span>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-selectButton *ngIf=\"!isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOpts\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n <p-selectButton *ngIf=\"isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOptsIVR\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n <div *ngIf=\"!(showSuccess || showError)\" style=\"margin-left: -8px;\">\r\n <app-form-builder #fb *ngIf=\"selected == 'personal-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <div *ngIf=\"selected == 'contact-details'\">\r\n <div *ngIf=\"showInlineError && selected === 'contact-details'\" class=\"error-banner\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"color: var(--ion-color-danger); font-size: 18px; margin-right: 8px;\"></ion-icon>\r\n <span>{{ errorText }}</span>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'contact-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'payment-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <app-form-builder #fb *ngIf=\"selected == 'update-ivr'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <div class=\"proof-of-unemployment\" *ngIf=\"selected == 'proof-of-unemployment'\">\r\n <div *ngIf=\"phaseTwoProofOfUIView==='true';else nonPhraseTwoView\" style=\"padding: 0px 1rem\">\r\n <!-- <h2 style=\"font-family: 'Open Sans, Light';\">\r\n {{ \"profile.proof.of.unemployment.label.proof.of.unemployment.pay\"| translate}}\r\n </h2>\r\n <div *ngIf=\"!listOfActiveClaim || listOfActiveClaim.length === 0; else activeClaimTable\">\r\n <h3 style=\"font-family: 'Open Sans, Light';\">\r\n {{\"profile.proof.of.unemployment.label.no.active.claim\"| translate}}\r\n </h3>\r\n </div>\r\n <ng-template #activeClaimTable>\r\n <p-table [value]=\"listOfActiveClaim\" dataKey=\"claimId\" [rowExpandMode]=\"'single'\" styleClass=\"seperate-row\" class=\"seperate-row\"\r\n [tableStyle]=\"{'border-collapse': 'separate','border-spacing': '0 8px'}\"\r\n >\r\n <ng-template pTemplate=\"body\" let-data let-expanded=\"expanded\">\r\n <tr>\r\n <td>\r\n <a href=\"#\" [pRowToggler]=\"data\">\r\n <i [ngClass]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\" style=\"font-size: 1.5rem;\"></i>\r\n </a> \r\n <td >\r\n {{data.effectiveDate}} - {{data.byeDate}}\r\n </td>\r\n <td>\r\n {{data.entitlementType}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-data>\r\n <tr>\r\n <td colspan=\"7\" style=\" border-left: 1px solid #e4e4e4;border-right: 1px solid #e4e4e4;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col style=\"display: flex;justify-content: center;\">\r\n <img [src]=\"docFileLink\" height='500px' width='420px'/>\r\n </ion-col>\r\n <ion-col style=\"display: flex;flex-direction: column;justify-content: space-between;\">\r\n <ion-row >\r\n <span [innerHTML]=\"data.description\" style=\"font-size: 19px;\"></span>\r\n </ion-row>\r\n <ion-row>\r\n \r\n <ion-button fill=\"outline\" shape=\"round\" style=\"padding-inline-end: 2rem;\" (click)=\"getVerificationReport()\">\r\n {{ \"profile.proof.of.unemployment.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n \r\n </ion-grid>\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template> -->\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" class=\"flex align-items-center flex-column\" layout=\"row\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-file\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i>{{ \"profile.proof.of.unemployment.phase.two.label.download.unemployment.claim.report\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.unemployment.claim.report'| translate}}\r\n </label>\r\n <div class=\"flex flex-column align-items-center mobile-view\" style=\"padding-bottom:30px\">\r\n <ion-button shape=\"round\" (click)=\"getExternalClaimantReport()\" style=\"width:'10rem'\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon>{{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n <div *ngIf=\"downloadStatusForHistory =='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForHistory=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </div>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n \r\n </ion-col>\r\n <ion-col layout=\"row\" class=\"flex align-items-center flex-column\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-check-circle\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i> {{ \"profile.proof.of.unemployment.phase.two.label.summary.unemployment.claim\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.summary.unemployment.claim'| translate}}\r\n </label>\r\n <div class=\"flex flex-column align-items-center mobile-view\" style=\"padding-bottom:30px\">\r\n <ion-button shape=\"round\" (click)=\"getVerificationReport()\" style=\"width:10rem\"\r\n class=\"Claimant-summary-ver-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon> {{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n <div *ngIf=\"downloadStatusForVerification =='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForVerification=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </div>\r\n \r\n </ion-card-content>\r\n \r\n </ion-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n </div>\r\n <ng-template #nonPhraseTwoView>\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.download.unemployment.claim.report\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"getExternalClaimantReport()\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\"></ion-icon>{{ \"profile.proof.of.unemployment.button.external.claimant.report\"| translate}}\r\n </ion-button>\r\n <br>\r\n <div *ngIf=\"downloadStatusForHistory=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForHistory=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.summary.unemployment.claim\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"redirectLink('.claimantsummaryverification')\"\r\n class=\"Claimant-summary-ver-btn\">{{ \"profile.proof.of.unemployment.button.unemployment.verification\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"isMS() && selected == 'contact-details' && isOtpSent == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"otp\" [innerHTML]=\"'profile.contact.details.label.otp' | translate:{ type: type }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-inputMask formControlName=\"otp\" mask=\"999999\" size=\"6\" maxlength=\"6\" minlength=\"6\"\r\n [autoFocus]='true' title='Enter Authcode'></p-inputMask>\r\n <app-error [field]='otp' [form]=\"otpFormDirective\" [errDef]=\"{ \r\n required: 'Authcode is required.',\r\n minlength: 'Authcode should have 6 numbers.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verify()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <div *ngIf=\"isME() && selected == 'contact-details' && displaySecurityQuestion == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"securityQuestionForm\" #securityQuestionFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"securityQuestionAnswer\" [innerHTML]=\"'profile.contact.details.label.securityQuestion' | translate:{ securityQuestionToAsk: securityQuestionToAsk }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n \t<input pInputText formControlName=\"securityQuestionAnswer\" size=\"30\" maxlength=\"30\" title=\"Security Answer\" />\r\n <app-error [field]='securityQuestionAnswer' [form]=\"securityQuestionFormDirective\" [errDef]=\"{ \r\n required: 'Security Answer is required.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verifySecurityQuestion()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}</mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br /></ion-label>\r\n\r\n <div *ngIf=\"showSuccess\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"checkmark-circle\" style=\"font-size: 80px; color: var(--ion-color-green);\"></ion-icon>\r\n <h1>{{ \"profile.banner.success\"| translate}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showError\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"close-circle-outline\" style=\"font-size: 80px; color: var(--ion-color-danger);\"></ion-icon>\r\n <section *ngIf=\"isMS()\">\r\n <h1>{{ errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n <section *ngIf=\"!isMS()\">\r\n <h1>{{errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n </div>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left\" size=\"12\" sizeXl=\"4\" sizeLg=\"4\" sizeMd=\"5\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"button\" (click)=\"logout()\">{{ \"profile.button.logout\"| translate}}</ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\" size=\"12\" sizeXl=\"8\" sizeLg=\"8\" sizeMd=\"7\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"reset\" (click)=\"cancel()\">{{ \"profile.button.close\"| translate}}</ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"save()\" *ngIf=\"!(showSuccess || showError) && selected!='proof-of-unemployment'\"\r\n [disabled]=\"isOtpSent== true || displaySecurityQuestion== true\">{{ \"profile.button.save\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n</p-dialog>", styles: ["ion-col{margin-left:0!important}.Claimant-report-btn{margin-inline-end:3%}.proof-unemployment-btn-label{margin-bottom:3px}.error-banner{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}@media (min-width: 261px) and (max-width: 350px){.mobile-view{padding-bottom:3rem!important}}@media (max-width: 260px){.mobile-view{padding-bottom:5rem!important}}\n"] }]
876
882
  }], () => [{ type: i1.LoggerService }, { type: i2.LoginService }, { type: i3.ClaimantService }, { type: i4.BirtService }, { type: i5.ClaimService }, { type: i6.NavController }, { type: i7.SecurityService }, { type: i8.UtilService }, { type: i9.UntypedFormBuilder }, { type: i10.Title }, { type: i6.ModalController }], { fb: [{
877
883
  type: ViewChild,
878
884
  args: ['fb']
@@ -892,4 +898,4 @@ export class ProfileComponent extends BasePage {
892
898
  type: Output
893
899
  }] }); })();
894
900
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProfileComponent, { className: "ProfileComponent", filePath: "lib\\components\\profile\\profile.component.ts", lineNumber: 32 }); })();
895
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTXBFLE9BQU8sRUFBZ0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUDdELDBDQUN1RjtJQUEvRCxvUUFBc0IsME1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGOEMsNkNBQXVCLDZCQUFBOzs7O0lBR3RGLDBDQUN1RjtJQUEvRCxxUUFBc0IsMk1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGNkMsZ0RBQTBCLDZCQUFBOzs7SUFacEcsZ0NBQVUsY0FBQSxpQkFBQTtJQUdFLFlBQStCOztJQUFBLCtCQUErQjtJQUFBLFlBQzlCO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRy9DLCtCQUFTLGNBQUE7SUFFRCxzR0FFaUIsMkZBQUE7SUFJckIsaUJBQVUsRUFBQSxFQUFBOzs7SUFaTixlQUErQjtJQUEvQixxRUFBK0I7SUFBK0IsZUFDOUI7SUFEOEIsMkVBQzlCO0lBS2YsZUFBYTtJQUFiLHFDQUFhO0lBR2IsZUFBWTtJQUFaLG9DQUFZOzs7O0lBUXpDLGdEQUUrRztJQUEvRCx1TUFBVyxlQUFBLDJCQUFtQixDQUFBLElBQUMsZ01BQWUsZUFBQSx1QkFBZSxDQUFBLElBQTlCO0lBQy9FLGlCQUFtQjs7O0lBSDBDLDBDQUFvQiwwQkFBQSxvQkFBQSxvQkFBQSxjQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsZUFBQSxlQUFBOzs7SUFLakYsK0JBQW9GO0lBQ3BGLCtCQUE2SDtJQUM3SCw0QkFBTTtJQUFBLFlBQWU7SUFBQSxpQkFBTyxFQUFBOzs7SUFBdEIsZUFBZTtJQUFmLHVDQUFlOzs7O0lBRXJCLGdEQUUrRztJQUEvRCw2TUFBVyxlQUFBLDJCQUFtQixDQUFBLElBQUMsc01BQWUsZUFBQSx1QkFBZSxDQUFBLElBQTlCO0lBQy9FLGlCQUFtQjs7O0lBSHlDLDBDQUFvQiwwQkFBQSxvQkFBQSxvQkFBQSxjQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsZUFBQSxlQUFBOzs7SUFMaEYsMkJBQTJDO0lBQzNDLDhFQUdNLDRGQUFBO0lBS04saUJBQU07OztJQVJBLGVBQXVEO0lBQXZELHdGQUF1RDtJQUl0QyxlQUFtQztJQUFuQyw0REFBbUM7Ozs7SUFLMUQsZ0RBRStHO0lBQS9ELHVNQUFXLGVBQUEsMkJBQW1CLENBQUEsSUFBQyxnTUFBZSxlQUFBLHVCQUFlLENBQUEsSUFBOUI7SUFDL0UsaUJBQW1COzs7SUFIeUMsMENBQW9CLDBCQUFBLG9CQUFBLG9CQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsY0FBQSxlQUFBLGVBQUE7Ozs7SUFJaEYsZ0RBRStHO0lBQS9ELHVNQUFXLGVBQUEsMkJBQW1CLENBQUEsSUFBQyxnTUFBZSxlQUFBLHVCQUFlLENBQUEsSUFBOUI7SUFDL0UsaUJBQW1COzs7SUFIb0MsMENBQW9CLDBCQUFBLG9CQUFBLG9CQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsY0FBQSxlQUFBLGVBQUE7OztJQW5CL0UsK0JBQW9FO0lBQ2hFLG1HQUdtQiwwREFBQSxzRkFBQSxzRkFBQTtJQW1CdkIsaUJBQU07OztJQXRCcUIsZUFBb0M7SUFBcEMsNERBQW9DO0lBSXJELGVBQW1DO0lBQW5DLDJEQUFtQztJQVVsQixlQUFtQztJQUFuQywyREFBbUM7SUFJbkMsZUFBOEI7SUFBOUIsc0RBQThCOzs7SUE2RTdCLDJCQUFpRDtJQUFBLFlBQXFFOztJQUFBLGlCQUFNOztJQUEzRSxlQUFxRTtJQUFyRSxpR0FBcUU7OztJQUN0SCxpQ0FBcUQ7SUFBQSxZQUFxRTs7SUFBQSxpQkFBWTs7SUFBakYsZUFBcUU7SUFBckUsaUdBQXFFOzs7O0lBZnRJLG1DQUF3RyxtQkFBQSxxQkFBQSxxQkFBQTtJQUc1RSx3QkFBbUY7SUFBQSxZQUFrRzs7SUFBQSxpQkFBaUIsRUFBQTtJQUUxTiw0Q0FBOEgsWUFBQTtJQUV0SCxZQUNKOztJQUFBLGlCQUFRO0lBQ1IsZ0NBQTZFLHNCQUFBO0lBQy9DLHFMQUFTLGVBQUEsbUNBQTJCLENBQUEsSUFBQztJQUUvRCxnQ0FBK0Q7SUFBQSxhQUNuRTs7SUFBQSxpQkFBYTtJQUNiLHlGQUE0SCx3RkFBQTtJQUU1SCxpQkFBTSxFQUFBLEVBQUEsRUFBQTs7O0lBYjZGLGVBQWtHO0lBQWxHLDhIQUFrRztJQUlqTSxlQUNKO0lBREksbUlBQ0o7SUFJbUUsZUFDbkU7SUFEbUUsdUhBQ25FO0lBQ00sZUFBeUM7SUFBekMsb0VBQXlDO0lBQ25DLGVBQXVDO0lBQXZDLGtFQUF1Qzs7O0lBcUIvQywyQkFBc0Q7SUFBQSxZQUFxRTs7SUFBQSxpQkFBTTs7SUFBM0UsZUFBcUU7SUFBckUsaUdBQXFFOzs7SUFDM0gsaUNBQTBEO0lBQUEsWUFBcUU7O0lBQUEsaUJBQVk7O0lBQWpGLGVBQXFFO0lBQXJFLGlHQUFxRTs7OztJQTlGM0osK0JBQTZGLG1CQUFBLGNBQUE7SUF5RGpGLHdGQXFCVTtJQUNWLG1DQUF3RixtQkFBQSxxQkFBQSxxQkFBQTtJQUc1RCx3QkFBMkY7SUFBRSxZQUEwRjs7SUFBQSxpQkFBaUIsRUFBQTtJQUU1Tiw2Q0FBOEgsYUFBQTtJQUV0SCxhQUNKOztJQUFBLGlCQUFRO0lBQ1AsZ0NBQTZFLHNCQUFBO0lBQ2hELDJLQUFTLGVBQUEsK0JBQXVCLENBQUEsSUFBQztJQUUzRCxnQ0FBK0Q7SUFBQyxhQUNoRTs7SUFBQSxpQkFBYTtJQUNiLCtFQUFpSSw4RUFBQTtJQUVwSSxpQkFBTSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQTs7O0lBdENULGVBQWE7SUFBYixzQ0FBYTtJQXlCa0csZUFBMEY7SUFBMUYsaUlBQTBGO0lBSW5NLGVBQ0o7SUFESSxvSUFDSjtJQUlvRSxlQUNoRTtJQURnRSx5SEFDaEU7SUFDTSxlQUE4QztJQUE5Qyx5RUFBOEM7SUFDeEMsZUFBNEM7SUFBNUMsdUVBQTRDOzs7SUF3QnhFLDJCQUFpRDtJQUFBLFlBQXFFOztJQUFBLGlCQUFNOztJQUEzRSxlQUFxRTtJQUFyRSxpR0FBcUU7OztJQUN0SCxpQ0FBcUQ7SUFBQSxZQUFxRTs7SUFBQSxpQkFBWTs7SUFBakYsZUFBcUU7SUFBckUsaUdBQXFFOzs7O0lBWDlILG1DQUE0RCxZQUFBO0lBRXBELFlBQ0o7O0lBQUEsaUJBQVE7SUFDUixxQkFBSTtJQUNKLHNDQUNnQztJQURTLDRMQUFTLGVBQUEsbUNBQTJCLENBQUEsSUFBQztJQUUxRSwrQkFBNkM7SUFBQSxZQUNqRDs7SUFBQSxpQkFBYTtJQUNiLHFCQUFJO0lBQ0osaUdBQTRILGdHQUFBO0lBRWhJLGlCQUFVOzs7SUFWRixlQUNKO0lBREksK0hBQ0o7SUFJaUQsZUFDakQ7SUFEaUQscUhBQ2pEO0lBRU0sZUFBeUM7SUFBekMsb0VBQXlDO0lBQ25DLGVBQXVDO0lBQXZDLGtFQUF1Qzs7OztJQWIzRCxvQ0FBb0MsY0FBQTtJQUVoQywrRkFZVTtJQUNWLG1DQUE0QyxZQUFBO0lBRXBDLFlBQ0o7O0lBQUEsaUJBQVE7SUFDUixxQkFBSTtJQUNKLHNDQUNxQztJQURJLGtMQUFTLGVBQUEscUJBQWEsOEJBQThCLENBQUMsQ0FBQSxJQUFDO0lBQzFELFlBQWdGOztJQUFBLGlCQUFhLEVBQUEsRUFBQSxFQUFBOzs7SUFuQjVILGVBQWE7SUFBYixzQ0FBYTtJQWVmLGVBQ0o7SUFESSx1SEFDSjtJQUdxQyxlQUFnRjtJQUFoRiw2R0FBZ0Y7OztJQWhJckksK0JBQStFO0lBQzNFLDBFQXdHTSw2R0FBQTtJQTRCVixpQkFBTTs7OztJQXBJSSxlQUFxQztJQUFyQyw4REFBcUMsa0JBQUE7Ozs7OztJQXFJL0MsK0JBQXFHLG1CQUFBLGNBQUEsY0FBQSxjQUFBO0lBSzdFLDRCQUFzRzs7SUFDOUcsaUJBQVU7SUFDViwrQkFBUyxjQUFBO0lBRUQsbUNBQzRELHFCQUFBO0lBS2hFLGlCQUFVO0lBQ1YsZ0NBQVMsc0JBQUE7SUFDbUMsb0tBQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFBQyxhQUF1RDs7SUFBQSxpQkFBYSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQTs7OztJQWhCN0ksZUFBcUI7SUFBckIsMENBQXFCO0lBSVUsZUFBNEU7SUFBNUUsa0pBQTRFO0lBS3pGLGVBQWtCO0lBQWxCLGdDQUFrQjtJQUNYLGVBQWE7SUFBYixrQ0FBYSxjQUFBLHVDQUFBO0lBTW1DLGVBQXVEO0lBQXZELHFGQUF1RDs7Ozs7O0lBTzFJLCtCQUFtSCxtQkFBQSxjQUFBLGNBQUEsY0FBQTtJQUsvRiw0QkFBd0s7O0lBQzVLLGlCQUFVO0lBQ1YsK0JBQVMsY0FBQTtJQUVKLDZCQUE4RyxxQkFBQTtJQUkvRyxpQkFBVTtJQUNWLGdDQUFTLHNCQUFBO0lBQ21DLG9LQUFTLGVBQUEsZ0NBQXdCLENBQUEsSUFBQztJQUFDLGFBQXVEOztJQUFBLGlCQUFhLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBOzs7O0lBZDdKLGVBQWtDO0lBQWxDLHVEQUFrQztJQUlZLGVBQTJIO0lBQTNILGdMQUEySDtJQUtoSixlQUFnQztJQUFoQyxxREFBZ0MsY0FBQSx1Q0FBQTtJQUtnQyxlQUF1RDtJQUF2RCxvRkFBdUQ7OztJQU8xSixpQ0FBNkI7SUFBQSxZQUFhO0lBQUEsaUJBQVk7OztJQUF6QixlQUFhO0lBQWIsc0NBQWE7OztJQUMxQyxxQ0FBcUU7SUFBQSxZQUFlO0lBQUEscUJBQU07SUFBQSxpQkFBWTs7O0lBQWpDLGVBQWU7SUFBZix3Q0FBZTs7O0lBRXBGLDJCQUF5QixjQUFBO0lBRWpCLCtCQUFxRztJQUNyRywwQkFBSTtJQUFBLFlBQXdDOztJQUFBLGlCQUFLLEVBQUEsRUFBQTs7SUFBN0MsZUFBd0M7SUFBeEMsb0VBQXdDOzs7SUFPNUMsK0JBQXdCLFNBQUE7SUFDaEIsWUFBb0Y7O0lBQUEsaUJBQUssRUFBQTs7O0lBQXpGLGVBQW9GO0lBQXBGLDRIQUFvRjs7O0lBRTVGLCtCQUF5QixTQUFBO0lBQ2pCLFlBQW1GOztJQUFBLGlCQUFLLEVBQUE7OztJQUF4RixlQUFtRjtJQUFuRiw0SEFBbUY7OztJQVBuRywyQkFBdUIsY0FBQTtJQUVmLCtCQUEwRztJQUMxRywrRUFFVSxrRUFBQTtJQUlkLGlCQUFNLEVBQUE7OztJQU5RLGVBQVk7SUFBWixvQ0FBWTtJQUdaLGVBQWE7SUFBYixxQ0FBYTs7OztJQWFmLHNDQUNvRTtJQUQ1QiwyTEFBUyxlQUFBLGNBQU0sQ0FBQSxJQUFDO0lBQ1ksWUFBcUM7O0lBQUEsaUJBQWE7OztJQUFsSCwrRkFBK0Q7SUFBQyxlQUFxQztJQUFyQyxpRUFBcUM7Ozs7SUFSckgsZ0NBQVUsY0FBQSxrQkFBQSxxQkFBQTtJQUd5RCw0S0FBUyxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUFDLFlBQXVDOztJQUFBLGlCQUFhLEVBQUE7SUFFbEksbUNBQTJFLHFCQUFBO0lBQ2pCLDRLQUFTLGVBQUEsZ0JBQVEsQ0FBQSxJQUFDO0lBQUMsWUFBc0M7O0lBQUEsaUJBQWE7SUFDNUgsaUdBQ3NIO0lBQzFILGlCQUFVLEVBQUEsRUFBQTs7O0lBTm9FLGVBQXVDO0lBQXZDLG1FQUF1QztJQUd4QyxlQUFzQztJQUF0QyxrRUFBc0M7SUFDckQsZUFBc0U7SUFBdEUsOEdBQXNFOzs7O0FEaE9wSixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsUUFBUTtJQW9FNUMsWUFBbUIsTUFBcUIsRUFBUyxFQUFnQixFQUFTLEVBQW1CLEVBQVMsRUFBZSxFQUFTLFlBQTBCLEVBQy9JLEdBQWtCLEVBQVMsRUFBbUIsRUFBUyxJQUFpQixFQUFTLFdBQStCLEVBQVEsWUFBbUIsRUFDMUksU0FBMEI7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFITyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFTLE9BQUUsR0FBRixFQUFFLENBQWlCO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQy9JLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQWE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBUSxpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUMxSSxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQXJFcEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQiwwQkFBcUIsR0FBRyxZQUFZLENBQUMscUJBQXFCLENBQUM7UUFDM0QsNkJBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQzlCLGtDQUE2QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFVLDZCQUE2QixDQUFDO1FBRW5ELHNCQUFpQixHQUFVLENBQUMsQ0FBQztRQUM3Qix5QkFBb0IsR0FBUSxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVUsRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFXLEdBQUcsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUl4QixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsZ0JBQVcsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUM7UUFFaEQsbUJBQWMsR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQUM7UUFFdkQsYUFBUSxHQUFHLGtCQUFrQixDQUFDO1FBZ0M5QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQVNyQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVFqRCxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBRyxJQUFJLENBQUMsUUFBUSxLQUFHLHVCQUF1QixFQUFDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUE7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw4QkFBOEI7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2hELHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQy9CO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxpQkFBaUIsRUFBRTtnQkFDN0MsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztnQkFDM0UsdUNBQXVDO2dCQUN2QyxFQUFFO2dCQUNGLHNFQUFzRTtnQkFDdEUsd0JBQXdCO2dCQUV4Qix1RkFBdUY7Z0JBQ3ZGLGlFQUFpRTtnQkFDakUsOEVBQThFO2dCQUM5RSwrQkFBK0I7Z0JBQy9CLGtHQUFrRztnQkFDbEcsMkNBQTJDO2dCQUMzQywrRkFBK0Y7Z0JBRS9GLHVDQUF1QztnQkFDdkMsOEVBQThFO2dCQUM5RSxxQ0FBcUM7Z0JBQ3JDLHNFQUFzRTtnQkFDdEUsTUFBTTtnQkFDTixJQUFJO2dCQUNKLGlEQUFpRDtnQkFDakQsd0dBQXdHO2dCQUN4RyxtRUFBbUU7Z0JBRW5FLGlEQUFpRDtnQkFDakQsZ0RBQWdEO2dCQUNoRCw0REFBNEQ7Z0JBQzVELElBQUk7Z0JBQ0osMkNBQTJDO2dCQUMzQyw4SEFBOEg7Z0JBQzlILElBQUk7Z0JBQ0osd0ZBQXdGO2dCQUN4Rix3RUFBd0U7Z0JBQ3hFLElBQUk7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7b0JBQzlHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7aUJBQy9CO3FCQUFNLElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTtvQkFDekYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxvRUFBb0UsQ0FBQztvQkFDdEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO3FCQUFNLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssTUFBTSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTtvQkFDM0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztvQkFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRywwRkFBMEYsQ0FBQztvQkFDNUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO3FCQUNJO29CQUNILElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxFQUFFO3dCQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7cUJBQ3BCO3lCQUFNLElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxFQUFFO3dCQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7cUJBQ3JCO29CQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztvQkFDdEQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO3dCQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUMzQixDQUFDLENBQUMsQ0FBQTtpQkFDSDthQUNGO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3hGLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUMvQjtTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUMvQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksaUJBQWlCLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ2hELElBQUksRUFBQyxDQUFDLEdBQWdDLEVBQUUsRUFBRTt3QkFDeEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEdBQUcsQ0FBQzt3QkFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQywyQkFBMkIsQ0FBQzt3QkFDMUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQzFCLENBQUMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQzt3QkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztvQkFDL0IsQ0FBQztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQy9CO1NBQ0g7YUFBTTtZQUNKLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxrQ0FBa0M7SUFDM0IsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQVksRUFBRSxHQUFZLEVBQUUsQ0FBTTtRQUNwRSxNQUFNLFdBQVcsR0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDeEMsU0FBUyxFQUFFLHFCQUFxQjtZQUNoQyxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7WUFDdkQsZUFBZSxFQUFFLEtBQUs7WUFDdEIsUUFBUSxFQUFFLElBQUk7WUFDZCxZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25ELElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRO1lBQUUsT0FBTztRQUNsRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsZUFBZSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFQyx1Q0FBdUM7SUFDcEMsNEJBQTRCLENBQUMsR0FBUSxFQUFFLE1BQWU7UUFDN0QsTUFBTSxRQUFRLEdBQUcsTUFBTTtZQUN2QixDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzthQUNqQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFRO1FBQzNCLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRTtZQUNwQixtQkFBbUI7WUFDbkIsT0FBTztnQkFDUCxhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUs7Z0JBQ3hCLGVBQWUsRUFBRSxHQUFHLENBQUMsS0FBSztnQkFDMUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUM3QyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFO2FBQ2xELENBQUM7U0FDRDthQUFNO1lBQ1AsMkJBQTJCO1lBQzNCLE9BQU87Z0JBQ1AsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO2dCQUNoQyxlQUFlLEVBQUUsR0FBRyxDQUFDLGFBQWE7Z0JBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUTtnQkFDbEIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFO2dCQUNuRSxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFO2FBQ2xELENBQUM7U0FDRDtJQUNELENBQUM7SUFFQyxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3JGLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN4RixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUE7U0FDSDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSTtRQUNmLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsbUJBQW1CLHdDQUF3QyxTQUFTLENBQUMsWUFBWSxNQUFNLFNBQVMsQ0FBQyxhQUFhLHFDQUFxQyxJQUFJLEVBQUUsRUFBRyxPQUFPLENBQUMsQ0FBQztRQUNuTSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUN0RCxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUFPLEVBQUUsUUFBZ0I7UUFDdkMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN0QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDQyxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRixvQkFBb0I7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxTQUFTLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFDaEUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLDZCQUE2QixHQUFHLE9BQU8sQ0FBQztZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxhQUFhLENBQUMsUUFBYSxFQUFFLGtCQUEwQjtRQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFFLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTVILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO1lBQzNHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDL0I7YUFBTSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDekYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLG9FQUFvRSxDQUFDO1lBQ3RGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxFQUFFO1lBQzNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRywwRkFBMEYsQ0FBQztZQUM1RyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUN2QjthQUNJO1lBQ0gsSUFBSSxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQzthQUNwQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO2FBQ3JCO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztZQUN0RCxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUE7U0FDSDtJQUNQLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxPQUFXLEVBQUUsSUFBUTtRQUN0QyxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLGFBQWE7WUFDNUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsZUFBZTtZQUNoRCxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQzFCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSztZQUMxQyxPQUFPLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHO1lBQ3hCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO0lBQ3RELENBQUM7aUZBbFpVLGdCQUFnQjtvRUFBaEIsZ0JBQWdCOzs7Ozs7Ozs7O1lDL0I3QixtQ0FDbUg7WUFDL0csa0ZBbUJjLG9EQUFBLG9EQUFBLHNEQUFBLHNEQUFBLGdFQUFBLGdFQUFBLG9EQUFBLG9EQUFBLHVFQUFBO1lBZ1BsQixpQkFBVzs7WUFwUStELDBDQUF5QjtZQUEvRix5REFBcUU7WUFxQi9ELGVBQWlDO1lBQWpDLDBEQUFpQztZQXdCSCxlQUF5QztZQUF6Qyw4REFBeUM7WUFzSXZFLGVBQWtFO1lBQWxFLCtGQUFrRTtZQXdCbEUsZUFBZ0Y7WUFBaEYsNkdBQWdGO1lBc0IxRSxlQUFlO1lBQWYsb0NBQWU7WUFDZixlQUFpQjtZQUFqQixzQ0FBaUI7WUFFdkIsZUFBaUI7WUFBakIsc0NBQWlCO1lBT2pCLGVBQWU7WUFBZixvQ0FBZTs7O2lGRDdNWixnQkFBZ0I7Y0FMNUIsU0FBUzsyQkFDRSxhQUFhO29VQWtCTixFQUFFO2tCQUFsQixTQUFTO21CQUFDLElBQUk7WUFHZixRQUFRO2tCQURQLE1BQU07WUFtQkEsZ0JBQWdCO2tCQUZ0QixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQTBCekMsNkJBQTZCO2tCQUZuQyxTQUFTO21CQUFDLCtCQUErQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUtwRCxJQUFJO2tCQUFaLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0ksUUFBUTtrQkFBakIsTUFBTTs7a0ZBaEVJLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9Db21ib01vZGVsJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXJQYWdlIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLnBhZ2UnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWN1cml0eS1zZXJ2aWNlL3NlY3VyaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmdGb3JtLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbGVtZW50c01vZGVsJztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IEJpcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmlydC1zZXJ2aWNlL2JpcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDbGFpbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbXMvY2xhaW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZlQ2xhaW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BY3RpdmVDbGFpbU1vZGVsJzsgXG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hZGRyZXNzLXZhbGlkYXRpb24tc2VydmljZS9hZGRyZXNzLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCBhcyBBZGRyUmVjfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzc1ZhbGlkYXRpb24vQWRkcmVzc1JlY29tbWVuZGF0aW9uTW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkcmVzcy1wb3B1cC9hZGRyZXNzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblJlcXVlc3RDb21wb25lbnRNb2RlbCBhcyBBZGRyUmVxfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzc1ZhbGlkYXRpb24vQWRkcmVzc1ZhbGlkYXRpb25SZXF1ZXN0Q29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1ZhbGlkYXRpb25SZXNwb25zZUNvbXBvbmVudE1vZGVsIGFzIEFkZHJSZXN9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlQ29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlY3VyaXR5UXVlc3Rpb25BbnN3ZXJNb2RlbCc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNob3dTdWNjZXNzID0gZmFsc2U7XG4gIHNob3dFcnJvciA9IGZhbHNlO1xuICBwaGFzZVR3b1Byb29mT2ZVSVZpZXcgPSBMaWJDb25zdGFudHMuUGhhc2VUd29Qcm9vZk9mVUlWaWV3O1xuICBkb3dubG9hZFN0YXR1c0Zvckhpc3RvcnkgPSBcIlwiO1xuICBkb3dubG9hZFN0YXR1c0ZvclZlcmlmaWNhdGlvbiA9IFwiXCI7XG4gIGRvY0ZpbGVMaW5rOnN0cmluZyA9IFwiYXNzZXRzL2ltYWdlcy9zYW1wbGVEb2MucG5nXCI7XG4gIGVycm9yVGV4dDogc3RyaW5nO1xuICBjbGFpbWFudEFkZHJlc3NJZDogbnVtYmVyPSAwO1xuICBsYXN0VmFsaWRhdGVkQWRkcmVzczogYW55ID0gbnVsbDtcbiAgbGFzdFZhbGlkYXRlUmVzdWx0OiBzdHJpbmcgPScnO1xuICBhdHRlbXB0Q291bnQ6IG51bWJlciA9IDA7XG4gIGlzQWRkcmVzc1ZhbGlkYXRlZDogc3RyaW5nID0gJzAnO1xuICBzaG93SW5saW5lRXJyb3IgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZmInKSBmYjogRm9ybUJ1aWxkZXJQYWdlXG5cbiAgQE91dHB1dCgpXG4gIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcHJvZmlsZU9wdHMgPSBDb21ib09wdGlvbi5DTEFJTUFOVF9QUk9GSUxFX09QVFM7XG5cbiAgcHVibGljIHByb2ZpbGVPcHRzSVZSID0gQ29tYm9PcHRpb24uQ0xBSU1BTlRfUFJPRklMRV9PUFRTX0lWUjtcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAncGVyc29uYWwtZGV0YWlscyc7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgaXNPdHBTZW50OiBib29sZWFuO1xuXG4gIHB1YmxpYyBzdWNjZXNzRHRscztcblxuICBwdWJsaWMgZXJyb3JEdGxzO1xuXG4gIEBWaWV3Q2hpbGQoJ290cEZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcblxuICBwdWJsaWMgb3RwRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBvdHBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBvdHBDb2RlO1xuXG4gIHB1YmxpYyBvdHBWZXJpZmllZDogYm9vbGVhbjtcblxuICBwdWJsaWMgZGlzcGxheVNlY3VyaXR5UXVlc3Rpb246IGJvb2xlYW47XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Gb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uVG9Bc2s7XG5cbiAgcHVibGljIHNlY3VyaXR5QW5zd2VyO1xuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbDogU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsO1xuXG4gIHB1YmxpYyBmYWlsQ291bnRlcjogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBwcm9vZk9mVW5lbXBsb3ltZW50RGF0YTphbnk7XG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBFbGVtZW50c01vZGVsO1xuICBAT3V0cHV0KCkgYWNjZXB0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIGxpc3RPZkFjdGl2ZUNsYWltOkFjdGl2ZUNsYWltTW9kZWxbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwdWJsaWMgbHM6IExvZ2luU2VydmljZSwgcHVibGljIGNzOiBDbGFpbWFudFNlcnZpY2UsIHB1YmxpYyBiczogQmlydFNlcnZpY2UsIHB1YmxpYyBjbGFpbVNlcnZpY2U6IENsYWltU2VydmljZSxcbiAgICBwdWJsaWMgbmF2OiBOYXZDb250cm9sbGVyLCBwdWJsaWMgc3M6IFNlY3VyaXR5U2VydmljZSwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgZm9ybWJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixwdWJsaWMgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyKSB7XG4gICAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTdWNjZXNzID0gZmFsc2U7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1c0Zvckhpc3RvcnkgPSBcIlwiO1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JWZXJpZmljYXRpb24gPSBcIlwiO1xuICAgIGlmKHRoaXMuc2VsZWN0ZWQ9PT0ncHJvb2Ytb2YtdW5lbXBsb3ltZW50Jyl7XG4gICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZShcIlByb29mIG9mIFVuZW1wbG95bWVudFwiKVxuICAgICAgdGhpcy5nZXRMaXN0T2ZBY3RpdmVDbGFpbSgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIGluaXRpbGl6ZUZvcm0oKSB7XG4gICAgdGhpcy5vdHBGb3JtID0gdGhpcy5mb3JtYnVpbGRlci5ncm91cCh7XG4gICAgICAnb3RwJzogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV1dLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVNlY3VyaXR5UXVlc3Rpb25Gb3JtKCkge1xuXHQgIHRoaXMuc2VjdXJpdHlRdWVzdGlvbkZvcm0gPSB0aGlzLmZvcm1idWlsZGVyLmdyb3VwKHtcbiAgICAgICdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJzogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgb3RwKCkge1xuICAgIHJldHVybiB0aGlzLm90cEZvcm0uZ2V0KCdvdHAnKTtcbiAgfVxuXG4gIGdldCBzZWN1cml0eVF1ZXN0aW9uQW5zd2VyKCkge1xuICAgIHJldHVybiB0aGlzLnNlY3VyaXR5UXVlc3Rpb25Gb3JtLmdldCgnc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy5pc01TKCkpIHtcbiAgICAgIGlmICh0aGlzLm90cFZlcmlmaWVkKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiT1RQIFZFUklGSUVEIEFORCBTQVZJTkdcIik7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnKSB7XG4gICAgICAgIGxldCBmb3JtRGF0YSA9IHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLnZhbHVlO1xuICAgICAgICAvL0NvZGUgZm9yIHRoZSBhZGRyZXNzIHZhbGlkYXRpb24gcG9wdXBcbiAgICAgICAgLy9cbiAgICAgICAgLy8gY29uc3QgZm9ybSA9IHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtO1xuICAgICAgICAvLyBjb25zdCB2ID0gZm9ybS52YWx1ZTtcblxuICAgICAgICAvLyAvL0RldGVybWluZSBDdXJyZW50IGFkZHJlc3MgYW5kIHR5cGUgYmFzZWQgb24gdGhlIGFuc3dlciB0byBtYWlsaW5nIGFkZHJlc3MgcXVlc3Rpb25cbiAgICAgICAgLy8gY29uc3QgY3VycmVudFR5cGUgPSB2LmRpZmZtYWlsYWRkcmVzcyA9PSAnWScgPyAnbWFpbCcgOiAncmVzJztcbiAgICAgICAgLy8gY29uc3QgY3VycmVudEFkZHJlc3MgPSBjdXJyZW50VHlwZSA9PSAnbWFpbCcgPyB2Lm1haWxBZGRyZXNzIDogdi5yZXNBZHJlc3M7XG4gICAgICAgIC8vIHRoaXMuc2hvd0lubGluZUVycm9yID0gZmFsc2VcbiAgICAgICAgLy8gLy9jaGVjayBpZiBhZGRyZXNzIGNoYW5nZWQgc2luY2UgbGFzdCB2YWxpZGF0aW9uIGFuZCBpZiBubyBjaGFuZ2UgY29udGludWUgd2l0aG91dCBpbnRlcnJ1cHRpb25cbiAgICAgICAgLy8gaWYgKHRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3MgIT0gbnVsbCkge1xuICAgICAgICAvLyAgIGNvbnN0IGxhc3RBZGRyZXNzVHlwZSA9IHRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3MuZGlmZm1haWxhZGRyZXNzID09ICdZJyA/ICdtYWlsJyA6ICdyZXMnO1xuXG4gICAgICAgIC8vICAgaWYgKGxhc3RBZGRyZXNzVHlwZSA9PSBjdXJyZW50VHlwZVxuICAgICAgICAvLyAgICAgJiYgIXRoaXMuaXNBZGRyZXNzQ2hhbmdlZChjdXJyZW50QWRkcmVzcywgdGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcykpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuaXNBZGRyZXNzVmFsaWRhdGVkID0gJzEnO1xuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuZmluaXNoQW5kU2F2ZShmb3JtLnZhbHVlLCB0aGlzLmlzQWRkcmVzc1ZhbGlkYXRlZCk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgIC8vIC8vU3RhcnRpbmcgdGhlIHByb2Nlc3MgdG8gdmFsaWRhdGUgdGhlIGFkZHJlc3NcbiAgICAgICAgLy8gY29uc3QgcmV0dXJuQ29tcG9uZW50ID0gYXdhaXQgdGhpcy5hZGRyU3ZjLnZhbGlkYXRlQWRkcmVzc1Byb2Nlc3MoY3VycmVudFR5cGUsIGN1cnJlbnRBZGRyZXNzLCBmb3JtKTtcbiAgICAgICAgLy8gdGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcyA9IHJldHVybkNvbXBvbmVudC5sYXN0VmFsaWRhdGVkQWRkcmVzc1xuXG4gICAgICAgIC8vIGlmIChyZXR1cm5Db21wb25lbnQuc2hvd0lubGluZUVycm9yID09IHRydWUpIHtcbiAgICAgICAgLy8gICB0aGlzLmVycm9yVGV4dCA9IHJldHVybkNvbXBvbmVudC5lcnJvclRleHQ7XG4gICAgICAgIC8vICAgdGhpcy5zaG93SW5saW5lRXJyb3IgPSByZXR1cm5Db21wb25lbnQuc2hvd0lubGluZUVycm9yO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmIChyZXR1cm5Db21wb25lbnQuc2hvd1BvcHVwID09IHRydWUpIHtcbiAgICAgICAgLy8gICBhd2FpdCB0aGlzLmhhbmRsZVJlY29tbWVuZGF0aW9ucyhyZXR1cm5Db21wb25lbnQuYWRkcmVzc1ZhbGlkYXRpb25SZXNwb25zZSwgcmV0dXJuQ29tcG9uZW50LmFkZHJlc3NWYWxpZGF0aW9uUmVxdWVzdCwgdik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHJldHVybkNvbXBvbmVudC5zaG93SW5saW5lRXJyb3IgPT0gZmFsc2UgJiYgcmV0dXJuQ29tcG9uZW50LnNob3dQb3B1cCA9PSBmYWxzZSkge1xuICAgICAgICAvLyAgIHRoaXMuZmluaXNoQW5kU2F2ZShmb3JtLnZhbHVlLCByZXR1cm5Db21wb25lbnQuaXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoKGZvcm1EYXRhWydwaG9uZSddID09IGZvcm1EYXRhWydoaWRPcmlnaW5hbFBob25lJ10pICYmIChmb3JtRGF0YVsnZW1haWwnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxFbWFpbCddKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGhvbmUgb3IgRW1haWwgTm90IENoYW5nZWRcIik7XG4gICAgICAgICAgdGhpcy5pc090cFNlbnQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIiAmJiBmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiQm90aCBFbWFpbCBhbmQgUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkT3JpZ2luYWxQaG9uZVwiXSA9PT0gXCJudWxsXCIgJiYgZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlRyeWluZyB0byBjaGFuZ2UgZW1haWwgYnV0IHBob25lIG51bWJlciBpcyBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MgYW5kIENlbGwgUGhvbmUgTnVtYmVyLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRW1haWwgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pbml0aWxpemVGb3JtKCk7XG4gICAgICAgICAgdGhpcy5zcy5zZW5kT3RwV2l0aG91dENhcHRjaGEodGhpcy50eXBlKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgodGhpcy5zZWxlY3RlZCA9PSAncGVyc29uYWwtZGV0YWlscycpIHx8ICh0aGlzLnNlbGVjdGVkID09ICdwYXltZW50LWRldGFpbHMnKSkge1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNNRSgpKSB7XG5cdCAgICBpZiAodGhpcy5zZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJTRUNVUklUWSBRVUVTVElPTiBWRVJJRklFRCBBTkQgU0FWSU5HXCIpO1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJykgeyAgXG4gICAgICAgIHRoaXMuc3MuZ2V0UmFuZG9tU2VjdXJpdHlRdWVzdGlvblNlbGYoKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6KHJlczogU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbCA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuc2VjdXJpdHlRdWVzdGlvblRvQXNrID0gdGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwuc2VjdXJpdHlRdWVzdGlvbkRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgfSwgZXJyb3I6KGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVNlY3VyaXR5UXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1x0XHRcbiAgICAgICAgdGhpcy5pbml0aWFsaXplU2VjdXJpdHlRdWVzdGlvbkZvcm0oKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U2VjdXJpdHlRdWVzdGlvbiA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH1cblx0ICB9IGVsc2Uge1xuICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBSZWNvbW1lbmRhdGlvbiBQb3B1cCAqL1xuICBwdWJsaWMgYXN5bmMgaGFuZGxlUmVjb21tZW5kYXRpb25zKHJlczogQWRkclJlcywgcmVxOiBBZGRyUmVxLCB2OiBhbnkpIHtcbiAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBBZGRyUmVjW10gPSBBcnJheS5mcm9tKHJlcy5hZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCA/PyBbXSk7XG4gICBpZiAoIXN1Z2dlc3Rpb25zLmxlbmd0aCkgcmV0dXJuO1xuICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xuICAgICBjb21wb25lbnQ6IEFkZHJlc3NQb3B1cENvbXBvbmVudCxcbiAgICAgY29tcG9uZW50UHJvcHM6IHsgb3JpZ2luYWw6IHJlcSwgY2hvaWNlczogc3VnZ2VzdGlvbnMgfSxcbiAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcbiAgICAgYW5pbWF0ZWQ6IHRydWUsXG4gICAgIHNob3dCYWNrZHJvcDogdHJ1ZVxuICAgfSk7XG4gICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTtcbiAgIGF3YWl0IG1vZGFsLnByZXNlbnQoKTtcbiAgIGNvbnN0IHsgZGF0YSwgcm9sZSB9ID0gYXdhaXQgbW9kYWwub25XaWxsRGlzbWlzcygpO1xuICAgaWYgKHJvbGUgIT09ICdjb25maXJtJyB8fCAhZGF0YT8uc2VsZWN0ZWQpIHJldHVybjtcbiAgIHRoaXMucGF0Y2hGb3JtV2l0aFNlbGVjdGVkQWRkcmVzcyhkYXRhLnNlbGVjdGVkLCB2LmRpZmZtYWlsYWRkcmVzcyA9PT0gJ1knKTtcbiAgfVxuXG4gICAgLyoqIFBhdGNoIEZvcm0gV2l0aCBTZWxlY3RlZCBBZGRyZXNzICovXG5wdWJsaWMgcGF0Y2hGb3JtV2l0aFNlbGVjdGVkQWRkcmVzcyhzZWw6IGFueSwgaXNNYWlsOiBib29sZWFuKSB7XG5jb25zdCBwYXRjaE9iaiA9IGlzTWFpbFxuPyB7IG1haWxBZGRyZXNzOiB0aGlzLm1hcEFkZHJlc3Moc2VsKSB9XG46IHsgcmVzQWRyZXNzOiB0aGlzLm1hcEFkZHJlc3Moc2VsKSxcbiAgbWFpbEFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhzZWwpXG4gfTtcbnRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3M9IHRoaXMubWFwQWRkcmVzcyhzZWwpO1xudGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0uZm9ybS5wYXRjaFZhbHVlKHBhdGNoT2JqKTtcbn1cblxucHJpdmF0ZSBtYXBBZGRyZXNzKHNlbDogYW55KSB7XG5pZiAoc2VsLmlzT3JpZ2luYWwpIHtcbi8vIE9yaWdpbmFsIEFkZHJlc3NcbnJldHVybiB7XG5zdHJlZXRBZGRyZXNzOiBzZWwubGluZTEsXG5vcHRpb25hbEFkZHJlc3M6IHNlbC5saW5lMixcbmNpdHk6IHNlbC5jaXR5LFxuc3RhdGU6IHsgbGFiZWw6IHNlbC5zdGF0ZSwgdmFsdWU6IHNlbC5zdGF0ZSB9LFxuemlwOiBzZWwuemlwQ29kZSxcbmNvdW50cnk6IHsgbGFiZWw6IHNlbC5jb3VudHJ5LCB2YWx1ZTogc2VsLmNvdW50cnkgfVxufTtcbn0gZWxzZSB7XG4vLyBVU1BTIFJlY29tbWVuZGVkIEFkZHJlc3NcbnJldHVybiB7XG5zdHJlZXRBZGRyZXNzOiBzZWwuZGVsaXZlcnlMaW5lMSxcbm9wdGlvbmFsQWRkcmVzczogc2VsLmRlbGl2ZXJ5TGluZTIsXG5jaXR5OiBzZWwuY2l0eU5hbWUsXG5zdGF0ZTogeyBsYWJlbDogc2VsLnN0YXRlQWJicmV2YXRpb24sIHZhbHVlOiBzZWwuc3RhdGVBYmJyZXZhdGlvbiB9LFxuemlwOiBzZWwuemlwQ29kZSxcbmNvdW50cnk6IHsgbGFiZWw6IHNlbC5jb3VudHJ5LCB2YWx1ZTogc2VsLmNvdW50cnkgfVxufTtcbn1cbn1cblxuICB2ZXJpZnkoKSB7XG4gICAgdGhpcy5vdHBDb2RlID0gdGhpcy5vdHBGb3JtLmdldCgnb3RwJyk/LnZhbHVlO1xuICAgIHRoaXMuc3MudmFsaWRhdGVPdHBGb3JDbGFpbWFudCh0aGlzLm90cENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5vdHBWZXJpZmllZCA9IHRydWU7XG4gICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICB0aGlzLmFjY2VwdGVkLmVtaXQodHJ1ZSk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdWZXJpZnkgc3RhdHVzIGVycm9yICcsIGVycik7XG4gICAgICB0aGlzLm90cFZlcmlmaWVkID0gZmFsc2U7XG4gICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDsgXG4gICAgICB0aGlzLmFjY2VwdGVkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubXNnO1xuICAgIH0pXG4gIH1cblxuICB2ZXJpZnlTZWN1cml0eVF1ZXN0aW9uKCkge1xuICAgIHRoaXMuc2VjdXJpdHlBbnN3ZXIgPSB0aGlzLnNlY3VyaXR5UXVlc3Rpb25Gb3JtLmdldCgnc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicpPy52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWN1cml0eUFuc3dlciAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwuc2VjdXJpdHlBbnN3ZXIgPSB0aGlzLnNlY3VyaXR5QW5zd2VyO1xuICAgICAgdGhpcy5zcy52YWxpZGF0ZVVzZXJTZWN1cml0eUluZm9ybWF0aW9uKHRoaXMucmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICB0aGlzLmVycm9yRHRscyA9IG51bGw7XG4gICAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdCh0cnVlKTtcbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdWZXJpZnkgc3RhdHVzIGVycm9yICcsIGVycik7XG4gICAgICAgIHRoaXMuc2VjdXJpdHlRdWVzdGlvblZlcmlmaWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7ICAgICBcbiAgICAgICAgdGhpcy5hY2NlcHRlZC5lbWl0KGZhbHNlKTsgICAgXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0TGluayh2aWV3KSB7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpO1xuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCkudGhlbigoKSA9PiB7XG4gICAgICB3aW5kb3cub3BlbihgJHtMaWJDb25zdGFudHMuYmVuZWZpdHNVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZyPSR7dXNlck1vZGVsLnJlZnJlc2hfdG9rZW59JnY9MjI5OSZDTEFJTUFOVF9QT1JUQUw9dHJ1ZSZ2aWV3PSR7dmlld31gLCAgXCJfc2VsZlwiKTtcbiAgICB9KTtcbiAgfVxuICBnZXRFeHRlcm5hbENsYWltYW50UmVwb3J0KCkge1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5ID0gXCJzdGFydGVkXCI7XG4gICAgcmV0dXJuIHRoaXMuYnMuZ2V0RXh0ZXJuYWxDbGFpbWFudFJlcG9ydCh0aGlzLmxzLmdldFVzZXIoKS5zc24pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5kb3dubG9hZFJhd0ZpbGUocmVzLCdFeHRlcm5hbEFnZW5jeVJlcG9ydC5wZGYnKVxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeSA9IFwiZXJyb3JcIjtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdHZXR0aW5nIEV4dGVybmFsIENsYWltYW50IFJlcG9ydCBlcnJvcicsIGVycik7XG4gICAgfSlcbiAgfVxuICBkb3dubG9hZFJhd0ZpbGUocmVzOmFueSwgZmlsZW5hbWU6IHN0cmluZyl7XG4gICAgbGV0IGJpbmFyeURhdGEgPSBbXTtcbiAgICBiaW5hcnlEYXRhLnB1c2gocmVzKTtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihiaW5hcnlEYXRhLCB7IHR5cGU6IFwiYXBwbGljYXRpb24veGxzeFwiIH0pKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgYS5jbGljaygpO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn1cbiAgaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3I/LmVycm9yQ29kZSA9PSAnNDIyJykge1xuICAgICAgdGhpcy5lcnJvclRleHQgPSBlcnJvci5tc2dbMF07XG4gICAgfVxuICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHN1Y2Nlc3MobXNnKSB7XG4gICAgdGhpcy5zaG93U3VjY2VzcyA9IHRydWU7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCcvbGFuZGluZycpO1xuICAgIHRoaXMubHMubG9nb3V0KCk7XG4gIH1cblxuIGdldExpc3RPZkFjdGl2ZUNsYWltKCl7XG4gICAgdGhpcy5jbGFpbVNlcnZpY2UuZ2V0TGlzdE9mQWN0aXZlQ2xhaW0oKS5zdWJzY3JpYmUoKHJlcyk9PntcbiAgICAgIHRoaXMubGlzdE9mQWN0aXZlQ2xhaW0gPSByZXM7XG4gICAgfSlcbiAgfVxuXG4gIGdldFZlcmlmaWNhdGlvblJlcG9ydCgpe1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JWZXJpZmljYXRpb24gPSBcInN0YXJ0ZWRcIjtcbiAgICByZXR1cm4gdGhpcy5icy5nZXRWZXJpZmljYXRpb25SZXBvcnQodGhpcy5scy5nZXRVc2VyKCkuY2xhaW1hbnRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkUmF3RmlsZShyZXMsJ1VuZW1wbG95bWVudFZlcmlmaWNhdGlvblJlcG9ydC5wZGYnKVxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uID0gXCJlcnJvclwiO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0dldHRpbmcgVW5lbXBsb3ltZW50IFZlcmlmaWNhdGlvbiBSZXBvcnQgZXJyb3InLCBlcnIpO1xuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZmluaXNoQW5kU2F2ZShmb3JtRGF0YTogYW55LCBpc0FkZHJlc3NWYWxpZGF0ZWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dJbmxpbmVFcnJvcj0gZmFsc2U7IFxuICAgICAgIHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLmZvcm0uY29udHJvbHNbJ2hpZElzQWRkcmVzc1ZhbGlkYXRlZCddLnNldFZhbHVlKGlzQWRkcmVzc1ZhbGlkYXRlZCk7XG5cbiAgICAgaWYgKChmb3JtRGF0YVsncGhvbmUnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxQaG9uZSddKSAmJiAoZm9ybURhdGFbJ2VtYWlsJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsRW1haWwnXSkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIG9yIEVtYWlsIE5vdCBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJhZGRyZXNzIHZhbGlkYXRpb24gZm9ybSBmbGFnXCIsZm9ybURhdGEuaGlkSXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIiAmJiBmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiQm90aCBFbWFpbCBhbmQgUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkT3JpZ2luYWxQaG9uZVwiXSA9PT0gXCJudWxsXCIgJiYgZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlRyeWluZyB0byBjaGFuZ2UgZW1haWwgYnV0IHBob25lIG51bWJlciBpcyBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MgYW5kIENlbGwgUGhvbmUgTnVtYmVyLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRW1haWwgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pbml0aWxpemVGb3JtKCk7XG4gICAgICAgICAgdGhpcy5zcy5zZW5kT3RwV2l0aG91dENhcHRjaGEodGhpcy50eXBlKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICB9XG4gIGlzQWRkcmVzc0NoYW5nZWQoY3VycmVudDphbnksIGxhc3Q6YW55KTogYm9vbGVhbntcbiAgcmV0dXJuIGN1cnJlbnQuc3RyZWV0QWRkcmVzcyAhPT0gbGFzdC5zdHJlZXRBZGRyZXNzIHx8XG4gICAgICAgICBjdXJyZW50Lm9wdGlvbmFsQWRkcmVzcyAhPT0gbGFzdC5vcHRpb25hbEFkZHJlc3MgfHwgXG4gICAgICAgICBjdXJyZW50LmNpdHkgIT09IGxhc3QuY2l0eSB8fFxuICAgICAgICAgY3VycmVudC5zdGF0ZT8udmFsdWUgIT09IGxhc3Quc3RhdGU/LnZhbHVlIHx8XG4gICAgICAgICBjdXJyZW50LnppcCAhPT0gbGFzdC56aXAgfHxcbiAgICAgICAgIGN1cnJlbnQuY291bnRyeT8udmFsdWUgIT09IGxhc3QuY291bnRyeT8udmFsdWU7XG4gIH1cbn1cbiIsIjxwLWRpYWxvZyB2aXNpYmxlPVwidHJ1ZVwiIG1vZGFsPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbYnJlYWtwb2ludHNdPVwieycxMDI0cHgnOiAnNzV2dycsICc3NjhweCc6ICc4NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBbc3R5bGVdPVwie3dpZHRoOiAnNjB2dyd9XCIgcG9zaXRpb249XCJ0b3BcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0IGhlYWRpbmdcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjRweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e1wiWW91ciBBY2NvdW50XCIgfCB0cmFuc2xhdGV9fSA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDtcIj4oQ0xBSU1BTlQgSURcclxuICAgICAgICAgICAgICAgICAgICAgICAge3tscy5nZXRVc2VyKCkuY2xhaW1hbnRJZH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiAqbmdJZj1cIiFpc01FKClcIiBzdHlsZUNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBbb3B0aW9uc109XCJwcm9maWxlT3B0c1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgKG9uT3B0aW9uQ2xpY2spPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gKm5nSWY9XCJpc01FKClcIiBzdHlsZUNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBbb3B0aW9uc109XCJwcm9maWxlT3B0c0lWUlwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgKG9uT3B0aW9uQ2xpY2spPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiAqbmdJZj1cIiEoc2hvd1N1Y2Nlc3MgfHwgc2hvd0Vycm9yKVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC04cHg7XCI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BlcnNvbmFsLWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SW5saW5lRXJyb3IgJiYgc2VsZWN0ZWQgPT09ICdjb250YWN0LWRldGFpbHMnXCIgY2xhc3M9XCJlcnJvci1iYW5uZXJcIj5cclxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luLXJpZ2h0OiA4cHg7XCI+PC9pb24taWNvbj5cclxuICAgICAgICA8c3Bhbj57eyBlcnJvclRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BheW1lbnQtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3VwZGF0ZS1pdnInXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvb2Ytb2YtdW5lbXBsb3ltZW50XCIgKm5nSWY9XCJzZWxlY3RlZCA9PSAncHJvb2Ytb2YtdW5lbXBsb3ltZW50J1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJwaGFzZVR3b1Byb29mT2ZVSVZpZXc9PT0ndHJ1ZSc7ZWxzZSAgbm9uUGhyYXNlVHdvVmlld1wiIHN0eWxlPVwicGFkZGluZzogMHB4IDFyZW1cIj5cclxuICAgICAgICAgICAgPCEtLSA8aDIgc3R5bGU9XCJmb250LWZhbWlseTogJ09wZW4gU2FucywgTGlnaHQnO1wiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5wcm9vZi5vZi51bmVtcGxveW1lbnQucGF5XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGlzdE9mQWN0aXZlQ2xhaW0gfHwgbGlzdE9mQWN0aXZlQ2xhaW0ubGVuZ3RoID09PSAwOyBlbHNlIGFjdGl2ZUNsYWltVGFibGVcIj5cclxuICAgICAgICAgICAgICAgPGgzIHN0eWxlPVwiZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMsIExpZ2h0JztcIj5cclxuICAgICAgICAgICAgICAgIHt7XCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5uby5hY3RpdmUuY2xhaW1cInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aXZlQ2xhaW1UYWJsZT5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJsaXN0T2ZBY3RpdmVDbGFpbVwiIGRhdGFLZXk9XCJjbGFpbUlkXCIgW3Jvd0V4cGFuZE1vZGVdPVwiJ3NpbmdsZSdcIiBzdHlsZUNsYXNzPVwic2VwZXJhdGUtcm93XCIgY2xhc3M9XCJzZXBlcmF0ZS1yb3dcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlU3R5bGVdPVwieydib3JkZXItY29sbGFwc2UnOiAnc2VwYXJhdGUnLCdib3JkZXItc3BhY2luZyc6ICcwIDhweCd9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1kYXRhIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIFtwUm93VG9nZ2xlcl09XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImV4cGFuZGVkID8gJ3BpIHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktY2hldnJvbi1yaWdodCdcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS41cmVtO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZmZlY3RpdmVEYXRlfX0gLSB7e2RhdGEuYnllRGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lbnRpdGxlbWVudFR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyb3dleHBhbnNpb25cIiBsZXQtZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI3XCIgc3R5bGU9XCIgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTRlNGU0O2JvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNGU0ZTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwiZGlzcGxheTogZmxleDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImRvY0ZpbGVMaW5rXCIgaGVpZ2h0PSc1MDBweCcgd2lkdGg9JzQyMHB4Jy8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2p1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkYXRhLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJmb250LXNpemU6IDE5cHg7XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaGFwZT1cInJvdW5kXCIgc3R5bGU9XCJwYWRkaW5nLWlubGluZS1lbmQ6IDJyZW07XCIgKGNsaWNrKT1cImdldFZlcmlmaWNhdGlvblJlcG9ydCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYmxlPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPGlvbi1ncmlkIHN0eWxlPVwibWFyZ2luLXRvcDogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBsYXlvdXQ9XCJyb3dcIiBzdHlsZSA9IFwibWFyZ2luOjNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwicC00XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOjEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWhlYWRlciBzdHlsZT1cImJveC1zaGFkb3c6IDAgMCAwIDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+PGkgY2xhc3M9XCJwaSBwaS1maWxlXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO2ZvbnQtc2l6ZTogMzBweDtcIj48L2k+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ubGFiZWwuZG93bmxvYWQudW5lbXBsb3ltZW50LmNsYWltLnJlcG9ydFwifCB0cmFuc2xhdGV9fTwvaW9uLWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInBsLTAgcHItMCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ub3ZlcmxheS51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0J3wgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206MzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKVwiIHN0eWxlPVwid2lkdGg6JzEwcmVtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIiBjbGFzcz1cInByLTEgcGItMVwiPjwvaW9uLWljb24+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28uYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5PT0nc3RhcnRlZCdcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5zdGFydFwifCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkb3dubG9hZFN0YXR1c0Zvckhpc3Rvcnk9PSdlcnJvcidcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5lcnJvclwifCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgbGF5b3V0PVwicm93XCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJwLTRcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6MTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taGVhZGVyIHN0eWxlPVwiYm94LXNoYWRvdzogMCAwIDAgMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT48aSBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtmb250LXNpemU6IDMwcHg7XCI+PC9pPiAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ubGFiZWwuc3VtbWFyeS51bmVtcGxveW1lbnQuY2xhaW1cInwgdHJhbnNsYXRlfX08L2lvbi1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24taGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwbC0wIHByLTAgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBzdHlsZT1cImhlaWdodDogMTAwJTsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sncHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLm92ZXJsYXkuc3VtbWFyeS51bmVtcGxveW1lbnQuY2xhaW0nfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206MzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImdldFZlcmlmaWNhdGlvblJlcG9ydCgpXCIgc3R5bGU9XCJ3aWR0aDoxMHJlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtc3VtbWFyeS12ZXItYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG93bmxvYWQtb3V0bGluZVwiIGNsYXNzPVwicHItMSBwYi0xXCI+PC9pb24taWNvbj4ge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28uYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c0ZvclZlcmlmaWNhdGlvbj09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uPT0nZXJyb3InXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuZXJyb3JcInwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vblBocmFzZVR3b1ZpZXc+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5kb3dubG9hZC51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIj48L2lvbi1pY29uPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmV4dGVybmFsLmNsYWltYW50LnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeT09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5PT0nZXJyb3InXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuZXJyb3JcInwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbVwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJyZWRpcmVjdExpbmsoJy5jbGFpbWFudHN1bW1hcnl2ZXJpZmljYXRpb24nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtc3VtbWFyeS12ZXItYnRuXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5idXR0b24udW5lbXBsb3ltZW50LnZlcmlmaWNhdGlvblwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTVMoKSAmJiBzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJyAmJiBpc090cFNlbnQgPT0gdHJ1ZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogLTkwcHg7XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJvdHBGb3JtXCIgI290cEZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwib3RwXCIgW2lubmVySFRNTF09XCIncHJvZmlsZS5jb250YWN0LmRldGFpbHMubGFiZWwub3RwJyB8IHRyYW5zbGF0ZTp7IHR5cGU6IHR5cGUgfVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TWFzayBmb3JtQ29udHJvbE5hbWU9XCJvdHBcIiBtYXNrPVwiOTk5OTk5XCIgc2l6ZT1cIjZcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9Gb2N1c109J3RydWUnIHRpdGxlPSdFbnRlciBBdXRoY29kZSc+PC9wLWlucHV0TWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJvdHBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnQXV0aGNvZGUgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdBdXRoY29kZSBzaG91bGQgaGF2ZSA2IG51bWJlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ2ZXJpZnkoKVwiPnt7IFwicHJvZmlsZS5jb250YWN0LmRldGFpbHMuYnV0dG9uLnZlcmlmeVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpICYmIHNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnICYmIGRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID09IHRydWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC05MHB4O1wiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VjdXJpdHlRdWVzdGlvbkZvcm1cIiAjc2VjdXJpdHlRdWVzdGlvbkZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZWN1cml0eVF1ZXN0aW9uQW5zd2VyXCIgW2lubmVySFRNTF09XCIncHJvZmlsZS5jb250YWN0LmRldGFpbHMubGFiZWwuc2VjdXJpdHlRdWVzdGlvbicgfCB0cmFuc2xhdGU6eyBzZWN1cml0eVF1ZXN0aW9uVG9Bc2s6IHNlY3VyaXR5UXVlc3Rpb25Ub0FzayB9XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcdDxpbnB1dCBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInNlY3VyaXR5UXVlc3Rpb25BbnN3ZXJcIiBzaXplPVwiMzBcIiBtYXhsZW5ndGg9XCIzMFwiIHRpdGxlPVwiU2VjdXJpdHkgQW5zd2VyXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicgW2Zvcm1dPVwic2VjdXJpdHlRdWVzdGlvbkZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdTZWN1cml0eSBBbnN3ZXIgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ2ZXJpZnlTZWN1cml0eVF1ZXN0aW9uKClcIj57eyBcInByb2ZpbGUuY29udGFjdC5kZXRhaWxzLmJ1dHRvbi52ZXJpZnlcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yRHRsc1wiPnt7ZXJyb3JEdGxzfX08L21hdC1lcnJvcj5cclxuICAgIDxpb24tbGFiZWwgKm5nSWY9XCJzdWNjZXNzRHRsc1wiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmVlbilcIj57e3N1Y2Nlc3NEdGxzfX08YnIgLz48L2lvbi1sYWJlbD5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1N1Y2Nlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogODBweDsgY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmVlbik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPGgxPnt7IFwicHJvZmlsZS5iYW5uZXIuc3VjY2Vzc1wifCB0cmFuc2xhdGV9fTwvaDE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGUtb3V0bGluZVwiIHN0eWxlPVwiZm9udC1zaXplOiA4MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpc01TKClcIj5cclxuICAgICAgICAgICAgICAgIDxoMT57eyBlcnJvclRleHQgPyBlcnJvclRleHQgOiAoJ3Byb2ZpbGUuYmFubmVyLnJlcXVlc3QucHJvY2Vzcy5mYWlsdXJlJyB8IHRyYW5zbGF0ZSkgfX08L2gxPlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxPnt7ZXJyb3JUZXh0ID8gZXJyb3JUZXh0IDogKCdwcm9maWxlLmJhbm5lci5yZXF1ZXN0LnByb2Nlc3MuZmFpbHVyZScgfCB0cmFuc2xhdGUpIH19PC9oMT5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemU9XCIxMlwiIHNpemVYbD1cIjRcIiBzaXplTGc9XCI0XCIgc2l6ZU1kPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9nb3V0KClcIj57eyBcInByb2ZpbGUuYnV0dG9uLmxvZ291dFwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI4XCIgc2l6ZUxnPVwiOFwiIHNpemVNZD1cIjdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiB0eXBlPVwicmVzZXRcIiAoY2xpY2spPVwiY2FuY2VsKClcIj57eyBcInByb2ZpbGUuYnV0dG9uLmNsb3NlXCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInNhdmUoKVwiICpuZ0lmPVwiIShzaG93U3VjY2VzcyB8fCBzaG93RXJyb3IpICYmIHNlbGVjdGVkIT0ncHJvb2Ytb2YtdW5lbXBsb3ltZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc090cFNlbnQ9PSB0cnVlIHx8IGRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uPT0gdHJ1ZVwiPnt7IFwicHJvZmlsZS5idXR0b24uc2F2ZVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPiJdfQ==
901
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTXBFLE9BQU8sRUFBZ0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUDdELDBDQUN1RjtJQUEvRCxvUUFBc0IsME1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGOEMsNkNBQXVCLDZCQUFBOzs7O0lBR3RGLDBDQUN1RjtJQUEvRCxxUUFBc0IsMk1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGNkMsZ0RBQTBCLDZCQUFBOzs7SUFacEcsZ0NBQVUsY0FBQSxpQkFBQTtJQUdFLFlBQStCOztJQUFBLCtCQUErQjtJQUFBLFlBQzlCO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRy9DLCtCQUFTLGNBQUE7SUFFRCxzR0FF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LHlEQUFxRTtZQXFCL0QsZUFBaUM7WUFBakMsMERBQWlDO1lBd0JILGVBQXlDO1lBQXpDLDhEQUF5QztZQXNJdkUsZUFBa0U7WUFBbEUsK0ZBQWtFO1lBd0JsRSxlQUFnRjtZQUFoRiw2R0FBZ0Y7WUFzQjFFLGVBQWU7WUFBZixvQ0FBZTtZQUNmLGVBQWlCO1lBQWpCLHNDQUFpQjtZQUV2QixlQUFpQjtZQUFqQixzQ0FBaUI7WUFPakIsZUFBZTtZQUFmLG9DQUFlOzs7aUZEN01aLGdCQUFnQjtjQUw1QixTQUFTOzJCQUNFLGFBQWE7b1VBa0JOLEVBQUU7a0JBQWxCLFNBQVM7bUJBQUMsSUFBSTtZQUdmLFFBQVE7a0JBRFAsTUFBTTtZQW1CQSxnQkFBZ0I7a0JBRnRCLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBMEJ6Qyw2QkFBNkI7a0JBRm5DLFNBQVM7bUJBQUMsK0JBQStCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBS3BELElBQUk7a0JBQVosS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDSSxRQUFRO2tCQUFqQixNQUFNOztrRkFoRUksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ib09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NvbWJvTW9kZWwnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlclBhZ2UgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlL2Zvcm0tYnVpbGRlci9mb3JtLWJ1aWxkZXIucGFnZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQ2xhaW1hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtc2VydmljZS9jbGFpbWFudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlY3VyaXR5LXNlcnZpY2Uvc2VjdXJpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VsZW1lbnRzTW9kZWwnO1xuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9CYXNlUGFnZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xuaW1wb3J0IHsgQmlydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iaXJ0LXNlcnZpY2UvYmlydC5zZXJ2aWNlJztcbmltcG9ydCB7IENsYWltU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltcy9jbGFpbXMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmVDbGFpbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FjdGl2ZUNsYWltTW9kZWwnOyBcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FkZHJlc3MtdmFsaWRhdGlvbi1zZXJ2aWNlL2FkZHJlc3MtdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZHJlc3NSZWNvbW1lbmRhdGlvbk1vZGVsIGFzIEFkZHJSZWN9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9hZGRyZXNzLXBvcHVwL2FkZHJlc3MtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFkZHJlc3NWYWxpZGF0aW9uUmVxdWVzdENvbXBvbmVudE1vZGVsIGFzIEFkZHJSZXF9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzVmFsaWRhdGlvblJlcXVlc3RDb21wb25lbnRNb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlQ29tcG9uZW50TW9kZWwgYXMgQWRkclJlc30gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZHJlc3NWYWxpZGF0aW9uL0FkZHJlc3NWYWxpZGF0aW9uUmVzcG9uc2VDb21wb25lbnRNb2RlbCc7XG5pbXBvcnQgeyBTZWN1cml0eVF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZUNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2hvd1N1Y2Nlc3MgPSBmYWxzZTtcbiAgc2hvd0Vycm9yID0gZmFsc2U7XG4gIHBoYXNlVHdvUHJvb2ZPZlVJVmlldyA9IExpYkNvbnN0YW50cy5QaGFzZVR3b1Byb29mT2ZVSVZpZXc7XG4gIGRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeSA9IFwiXCI7XG4gIGRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uID0gXCJcIjtcbiAgZG9jRmlsZUxpbms6c3RyaW5nID0gXCJhc3NldHMvaW1hZ2VzL3NhbXBsZURvYy5wbmdcIjtcbiAgZXJyb3JUZXh0OiBzdHJpbmc7XG4gIGNsYWltYW50QWRkcmVzc0lkOiBudW1iZXI9IDA7XG4gIGxhc3RWYWxpZGF0ZWRBZGRyZXNzOiBhbnkgPSBudWxsO1xuICBsYXN0VmFsaWRhdGVSZXN1bHQ6IHN0cmluZyA9Jyc7XG4gIGF0dGVtcHRDb3VudDogbnVtYmVyID0gMDtcbiAgaXNBZGRyZXNzVmFsaWRhdGVkOiBzdHJpbmcgPSAnMCc7XG4gIHNob3dJbmxpbmVFcnJvciA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdmYicpIGZiOiBGb3JtQnVpbGRlclBhZ2VcblxuICBAT3V0cHV0KClcbiAgb25DYW5jZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBwcm9maWxlT3B0cyA9IENvbWJvT3B0aW9uLkNMQUlNQU5UX1BST0ZJTEVfT1BUUztcblxuICBwdWJsaWMgcHJvZmlsZU9wdHNJVlIgPSBDb21ib09wdGlvbi5DTEFJTUFOVF9QUk9GSUxFX09QVFNfSVZSO1xuXG4gIHB1YmxpYyBzZWxlY3RlZCA9ICdwZXJzb25hbC1kZXRhaWxzJztcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBpc090cFNlbnQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHN1Y2Nlc3NEdGxzO1xuXG4gIHB1YmxpYyBlcnJvckR0bHM7XG5cbiAgQFZpZXdDaGlsZCgnb3RwRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuXG4gIHB1YmxpYyBvdHBGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgcHVibGljIG90cEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIG90cENvZGU7XG5cbiAgcHVibGljIG90cFZlcmlmaWVkOiBib29sZWFuO1xuXG4gIHB1YmxpYyBkaXNwbGF5U2VjdXJpdHlRdWVzdGlvbjogYm9vbGVhbjtcblxuICBwdWJsaWMgc2VjdXJpdHlRdWVzdGlvbkZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Ub0FzaztcblxuICBwdWJsaWMgc2VjdXJpdHlBbnN3ZXI7XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZDogYm9vbGVhbjtcblxuICBwdWJsaWMgcmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsOiBTZWN1cml0eVF1ZXN0aW9uQW5zd2VyTW9kZWw7XG5cbiAgcHVibGljIGZhaWxDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlY3VyaXR5UXVlc3Rpb25Gb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Gb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgcHVibGljIHByb29mT2ZVbmVtcGxveW1lbnREYXRhOmFueTtcbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcXVlc3Rpb246IEVsZW1lbnRzTW9kZWw7XG4gIEBPdXRwdXQoKSBhY2NlcHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgbGlzdE9mQWN0aXZlQ2xhaW06QWN0aXZlQ2xhaW1Nb2RlbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHB1YmxpYyBsczogTG9naW5TZXJ2aWNlLCBwdWJsaWMgY3M6IENsYWltYW50U2VydmljZSwgcHVibGljIGJzOiBCaXJ0U2VydmljZSwgcHVibGljIGNsYWltU2VydmljZTogQ2xhaW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBuYXY6IE5hdkNvbnRyb2xsZXIsIHB1YmxpYyBzczogU2VjdXJpdHlTZXJ2aWNlLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsIHB1YmxpYyBmb3JtYnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLHB1YmxpYyB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIpIHtcbiAgICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1N1Y2Nlc3MgPSBmYWxzZTtcbiAgICB0aGlzLmRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeSA9IFwiXCI7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1c0ZvclZlcmlmaWNhdGlvbiA9IFwiXCI7XG4gICAgaWYodGhpcy5zZWxlY3RlZD09PSdwcm9vZi1vZi11bmVtcGxveW1lbnQnKXtcbiAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKFwiUHJvb2Ygb2YgVW5lbXBsb3ltZW50XCIpXG4gICAgICB0aGlzLmdldExpc3RPZkFjdGl2ZUNsYWltKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgaW5pdGlsaXplRm9ybSgpIHtcbiAgICB0aGlzLm90cEZvcm0gPSB0aGlzLmZvcm1idWlsZGVyLmdyb3VwKHtcbiAgICAgICdvdHAnOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpXV0sXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplU2VjdXJpdHlRdWVzdGlvbkZvcm0oKSB7XG5cdCAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uRm9ybSA9IHRoaXMuZm9ybWJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgJ3NlY3VyaXR5UXVlc3Rpb25BbnN3ZXInOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBvdHAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3RwRm9ybS5nZXQoJ290cCcpO1xuICB9XG5cbiAgZ2V0IHNlY3VyaXR5UXVlc3Rpb25BbnN3ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdXJpdHlRdWVzdGlvbkZvcm0uZ2V0KCdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJyk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGlmICh0aGlzLmlzTVMoKSkge1xuICAgICAgaWYgKHRoaXMub3RwVmVyaWZpZWQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJPVFAgVkVSSUZJRUQgQU5EIFNBVklOR1wiKTtcbiAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscycpIHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gdGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0udmFsdWU7XG4gICAgICAgIC8vQ29kZSBmb3IgdGhlIGFkZHJlc3MgdmFsaWRhdGlvbiBwb3B1cFxuICAgICAgICAvL1xuICAgICAgICAvLyBjb25zdCBmb3JtID0gdGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm07XG4gICAgICAgIC8vIGNvbnN0IHYgPSBmb3JtLnZhbHVlO1xuXG4gICAgICAgIC8vIC8vRGV0ZXJtaW5lIEN1cnJlbnQgYWRkcmVzcyBhbmQgdHlwZSBiYXNlZCBvbiB0aGUgYW5zd2VyIHRvIG1haWxpbmcgYWRkcmVzcyBxdWVzdGlvblxuICAgICAgICAvLyBjb25zdCBjdXJyZW50VHlwZSA9IHYuZGlmZm1haWxhZGRyZXNzID09ICdZJyA/ICdtYWlsJyA6ICdyZXMnO1xuICAgICAgICAvLyBjb25zdCBjdXJyZW50QWRkcmVzcyA9IGN1cnJlbnRUeXBlID09ICdtYWlsJyA/IHYubWFpbEFkZHJlc3MgOiB2LnJlc0FkcmVzcztcbiAgICAgICAgLy8gdGhpcy5zaG93SW5saW5lRXJyb3IgPSBmYWxzZVxuICAgICAgICAvLyAvL2NoZWNrIGlmIGFkZHJlc3MgY2hhbmdlZCBzaW5jZSBsYXN0IHZhbGlkYXRpb24gYW5kIGlmIG5vIGNoYW5nZSBjb250aW51ZSB3aXRob3V0IGludGVycnVwdGlvblxuICAgICAgICAvLyBpZiAodGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcyAhPSBudWxsKSB7XG4gICAgICAgIC8vICAgY29uc3QgbGFzdEFkZHJlc3NUeXBlID0gdGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcy5kaWZmbWFpbGFkZHJlc3MgPT0gJ1knID8gJ21haWwnIDogJ3Jlcyc7XG5cbiAgICAgICAgLy8gICBpZiAobGFzdEFkZHJlc3NUeXBlID09IGN1cnJlbnRUeXBlXG4gICAgICAgIC8vICAgICAmJiAhdGhpcy5pc0FkZHJlc3NDaGFuZ2VkKGN1cnJlbnRBZGRyZXNzLCB0aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5pc0FkZHJlc3NWYWxpZGF0ZWQgPSAnMSc7XG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5maW5pc2hBbmRTYXZlKGZvcm0udmFsdWUsIHRoaXMuaXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gLy9TdGFydGluZyB0aGUgcHJvY2VzcyB0byB2YWxpZGF0ZSB0aGUgYWRkcmVzc1xuICAgICAgICAvLyBjb25zdCByZXR1cm5Db21wb25lbnQgPSBhd2FpdCB0aGlzLmFkZHJTdmMudmFsaWRhdGVBZGRyZXNzUHJvY2VzcyhjdXJyZW50VHlwZSwgY3VycmVudEFkZHJlc3MsIGZvcm0pO1xuICAgICAgICAvLyB0aGlzLmxhc3RWYWxpZGF0ZWRBZGRyZXNzID0gcmV0dXJuQ29tcG9uZW50Lmxhc3RWYWxpZGF0ZWRBZGRyZXNzXG5cbiAgICAgICAgLy8gaWYgKHJldHVybkNvbXBvbmVudC5zaG93SW5saW5lRXJyb3IgPT0gdHJ1ZSkge1xuICAgICAgICAvLyAgIHRoaXMuZXJyb3JUZXh0ID0gcmV0dXJuQ29tcG9uZW50LmVycm9yVGV4dDtcbiAgICAgICAgLy8gICB0aGlzLnNob3dJbmxpbmVFcnJvciA9IHJldHVybkNvbXBvbmVudC5zaG93SW5saW5lRXJyb3I7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHJldHVybkNvbXBvbmVudC5zaG93UG9wdXAgPT0gdHJ1ZSkge1xuICAgICAgICAvLyAgIGF3YWl0IHRoaXMuaGFuZGxlUmVjb21tZW5kYXRpb25zKHJldHVybkNvbXBvbmVudC5hZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlLCByZXR1cm5Db21wb25lbnQuYWRkcmVzc1ZhbGlkYXRpb25SZXF1ZXN0LCB2KTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBpZiAocmV0dXJuQ29tcG9uZW50LnNob3dJbmxpbmVFcnJvciA9PSBmYWxzZSAmJiByZXR1cm5Db21wb25lbnQuc2hvd1BvcHVwID09IGZhbHNlKSB7XG4gICAgICAgIC8vICAgdGhpcy5maW5pc2hBbmRTYXZlKGZvcm0udmFsdWUsIHJldHVybkNvbXBvbmVudC5pc0FkZHJlc3NWYWxpZGF0ZWQpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmICgoZm9ybURhdGFbJ3Bob25lJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsUGhvbmUnXSkgJiYgKGZvcm1EYXRhWydlbWFpbCddID09IGZvcm1EYXRhWydoaWRPcmlnaW5hbEVtYWlsJ10pKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQaG9uZSBvciBFbWFpbCBOb3QgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiICYmIGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJCb3RoIEVtYWlsIGFuZCBQaG9uZSBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gXCJQbGVhc2UgY29udGFjdCBNREVTIHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UgdXBkYXRpbmcgRW1haWwgQWRkcmVzcy5cIjtcbiAgICAgICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRPcmlnaW5hbFBob25lXCJdID09PSBcIm51bGxcIiAmJiBmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiVHJ5aW5nIHRvIGNoYW5nZSBlbWFpbCBidXQgcGhvbmUgbnVtYmVyIGlzIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gXCJQbGVhc2UgY29udGFjdCBNREVTIHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UgdXBkYXRpbmcgRW1haWwgQWRkcmVzcyBhbmQgQ2VsbCBQaG9uZSBOdW1iZXIuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJFbWFpbCBDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRJc1Bob25lQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdlbWFpbCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmluaXRpbGl6ZUZvcm0oKTtcbiAgICAgICAgICB0aGlzLnNzLnNlbmRPdHBXaXRob3V0Q2FwdGNoYSh0aGlzLnR5cGUpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IFwiQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuXCI7XG4gICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZztcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCh0aGlzLnNlbGVjdGVkID09ICdwZXJzb25hbC1kZXRhaWxzJykgfHwgKHRoaXMuc2VsZWN0ZWQgPT0gJ3BheW1lbnQtZGV0YWlscycpKSB7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc01FKCkpIHtcblx0ICAgIGlmICh0aGlzLnNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlNFQ1VSSVRZIFFVRVNUSU9OIFZFUklGSUVEIEFORCBTQVZJTkdcIik7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnKSB7ICBcbiAgICAgICAgdGhpcy5zcy5nZXRSYW5kb21TZWN1cml0eVF1ZXN0aW9uU2VsZigpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDoocmVzOiBTZWN1cml0eVF1ZXN0aW9uQW5zd2VyTW9kZWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsID0gcmVzO1xuICAgICAgICAgICAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uVG9Bc2sgPSB0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbC5zZWN1cml0eVF1ZXN0aW9uRGVzY3JpcHRpb247XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgICAgICB9LCBlcnJvcjooZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5U2VjdXJpdHlRdWVzdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XHRcdFxuICAgICAgICB0aGlzLmluaXRpYWxpemVTZWN1cml0eVF1ZXN0aW9uRm9ybSgpO1xuICAgICAgICB0aGlzLmRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfVxuXHQgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlIFJlY29tbWVuZGF0aW9uIFBvcHVwICovXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVSZWNvbW1lbmRhdGlvbnMocmVzOiBBZGRyUmVzLCByZXE6IEFkZHJSZXEsIHY6IGFueSkge1xuICAgY29uc3Qgc3VnZ2VzdGlvbnM6IEFkZHJSZWNbXSA9IEFycmF5LmZyb20ocmVzLmFkZHJlc3NSZWNvbW1lbmRhdGlvbk1vZGVsID8/IFtdKTtcbiAgIGlmICghc3VnZ2VzdGlvbnMubGVuZ3RoKSByZXR1cm47XG4gICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7XG4gICAgIGNvbXBvbmVudDogQWRkcmVzc1BvcHVwQ29tcG9uZW50LFxuICAgICBjb21wb25lbnRQcm9wczogeyBvcmlnaW5hbDogcmVxLCBjaG9pY2VzOiBzdWdnZXN0aW9ucyB9LFxuICAgICBiYWNrZHJvcERpc21pc3M6IGZhbHNlLFxuICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgc2hvd0JhY2tkcm9wOiB0cnVlXG4gICB9KTtcbiAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpO1xuICAgYXdhaXQgbW9kYWwucHJlc2VudCgpO1xuICAgY29uc3QgeyBkYXRhLCByb2xlIH0gPSBhd2FpdCBtb2RhbC5vbldpbGxEaXNtaXNzKCk7XG4gICBpZiAocm9sZSAhPT0gJ2NvbmZpcm0nIHx8ICFkYXRhPy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgdGhpcy5wYXRjaEZvcm1XaXRoU2VsZWN0ZWRBZGRyZXNzKGRhdGEuc2VsZWN0ZWQsIHYuZGlmZm1haWxhZGRyZXNzID09PSAnWScpO1xuICB9XG5cbiAgICAvKiogUGF0Y2ggRm9ybSBXaXRoIFNlbGVjdGVkIEFkZHJlc3MgKi9cbnB1YmxpYyBwYXRjaEZvcm1XaXRoU2VsZWN0ZWRBZGRyZXNzKHNlbDogYW55LCBpc01haWw6IGJvb2xlYW4pIHtcbmNvbnN0IHBhdGNoT2JqID0gaXNNYWlsXG4/IHsgbWFpbEFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhzZWwpIH1cbjogeyByZXNBZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhzZWwpLFxuICBtYWlsQWRkcmVzczogdGhpcy5tYXBBZGRyZXNzKHNlbClcbiB9O1xudGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcz0gdGhpcy5tYXBBZGRyZXNzKHNlbCk7XG50aGlzLmZiLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlRm9ybS5mb3JtLnBhdGNoVmFsdWUocGF0Y2hPYmopO1xufVxuXG5wcml2YXRlIG1hcEFkZHJlc3Moc2VsOiBhbnkpIHtcbmlmIChzZWwuaXNPcmlnaW5hbCkge1xuLy8gT3JpZ2luYWwgQWRkcmVzc1xucmV0dXJuIHtcbnN0cmVldEFkZHJlc3M6IHNlbC5saW5lMSxcbm9wdGlvbmFsQWRkcmVzczogc2VsLmxpbmUyLFxuY2l0eTogc2VsLmNpdHksXG5zdGF0ZTogeyBsYWJlbDogc2VsLnN0YXRlLCB2YWx1ZTogc2VsLnN0YXRlIH0sXG56aXA6IHNlbC56aXBDb2RlLFxuY291bnRyeTogeyBsYWJlbDogc2VsLmNvdW50cnksIHZhbHVlOiBzZWwuY291bnRyeSB9XG59O1xufSBlbHNlIHtcbi8vIFVTUFMgUmVjb21tZW5kZWQgQWRkcmVzc1xucmV0dXJuIHtcbnN0cmVldEFkZHJlc3M6IHNlbC5kZWxpdmVyeUxpbmUxLFxub3B0aW9uYWxBZGRyZXNzOiBzZWwuZGVsaXZlcnlMaW5lMixcbmNpdHk6IHNlbC5jaXR5TmFtZSxcbnN0YXRlOiB7IGxhYmVsOiBzZWwuc3RhdGVBYmJyZXZhdGlvbiwgdmFsdWU6IHNlbC5zdGF0ZUFiYnJldmF0aW9uIH0sXG56aXA6IHNlbC56aXBDb2RlLFxuY291bnRyeTogeyBsYWJlbDogc2VsLmNvdW50cnksIHZhbHVlOiBzZWwuY291bnRyeSB9XG59O1xufVxufVxuXG4gIHZlcmlmeSgpIHtcbiAgICB0aGlzLm90cENvZGUgPSB0aGlzLm90cEZvcm0uZ2V0KCdvdHAnKT8udmFsdWU7XG4gICAgdGhpcy5zcy52YWxpZGF0ZU90cEZvckNsYWltYW50KHRoaXMub3RwQ29kZSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLm90cFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcbiAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdCh0cnVlKTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1ZlcmlmeSBzdGF0dXMgZXJyb3IgJywgZXJyKTtcbiAgICAgIHRoaXMub3RwVmVyaWZpZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsOyBcbiAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgfSlcbiAgfVxuXG4gIHZlcmlmeVNlY3VyaXR5UXVlc3Rpb24oKSB7XG4gICAgdGhpcy5zZWN1cml0eUFuc3dlciA9IHRoaXMuc2VjdXJpdHlRdWVzdGlvbkZvcm0uZ2V0KCdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJyk/LnZhbHVlO1xuICAgIGlmICh0aGlzLnNlY3VyaXR5QW5zd2VyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbC5zZWN1cml0eUFuc3dlciA9IHRoaXMuc2VjdXJpdHlBbnN3ZXI7XG4gICAgICB0aGlzLnNzLnZhbGlkYXRlVXNlclNlY3VyaXR5SW5mb3JtYXRpb24odGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnNlY3VyaXR5UXVlc3Rpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheVNlY3VyaXR5UXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZXJyb3JEdGxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY2NlcHRlZC5lbWl0KHRydWUpO1xuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1ZlcmlmeSBzdGF0dXMgZXJyb3IgJywgZXJyKTtcbiAgICAgICAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZzsgICAgIFxuICAgICAgICB0aGlzLmFjY2VwdGVkLmVtaXQoZmFsc2UpOyAgICBcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmVkaXJlY3RMaW5rKHZpZXcpIHtcbiAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKCk7XG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKS50aGVuKCgpID0+IHtcbiAgICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy5iZW5lZml0c1VybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5JkNMQUlNQU5UX1BPUlRBTD10cnVlJnZpZXc9JHt2aWV3fWAsICBcIl9zZWxmXCIpO1xuICAgIH0pO1xuICB9XG4gIGdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1c0Zvckhpc3RvcnkgPSBcInN0YXJ0ZWRcIjtcbiAgICByZXR1cm4gdGhpcy5icy5nZXRFeHRlcm5hbENsYWltYW50UmVwb3J0KHRoaXMubHMuZ2V0VXNlcigpLnNzbikuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkUmF3RmlsZShyZXMsJ0V4dGVybmFsQWdlbmN5UmVwb3J0LnBkZicpXG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5ID0gXCJlcnJvclwiO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0dldHRpbmcgRXh0ZXJuYWwgQ2xhaW1hbnQgUmVwb3J0IGVycm9yJywgZXJyKTtcbiAgICB9KVxuICB9XG4gIGRvd25sb2FkUmF3RmlsZShyZXM6YW55LCBmaWxlbmFtZTogc3RyaW5nKXtcbiAgICBsZXQgYmluYXJ5RGF0YSA9IFtdO1xuICAgIGJpbmFyeURhdGEucHVzaChyZXMpO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKGJpbmFyeURhdGEsIHsgdHlwZTogXCJhcHBsaWNhdGlvbi94bHN4XCIgfSkpO1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgIGlmKGZpbGVuYW1lPT09J1VuZW1wbG95bWVudFZlcmlmaWNhdGlvblJlcG9ydC5wZGYnKXtcbiAgICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JWZXJpZmljYXRpb24gPSBcImNvbXBsZXRlZFwiO1xuICAgIH1cbiAgICBpZihmaWxlbmFtZT09PSdFeHRlcm5hbEFnZW5jeVJlcG9ydC5wZGYnKXtcbiAgICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5ID0gXCJjb21wbGV0ZWRcIjtcbiAgICB9XG59XG4gIGhhbmRsZUVycm9yKGVycm9yKSB7XG4gICAgaWYgKGVycm9yPy5lcnJvckNvZGUgPT0gJzQyMicpIHtcbiAgICAgIHRoaXMuZXJyb3JUZXh0ID0gZXJyb3IubXNnWzBdO1xuICAgIH1cbiAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gIH1cblxuICBzdWNjZXNzKG1zZykge1xuICAgIHRoaXMuc2hvd1N1Y2Nlc3MgPSB0cnVlO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnL2xhbmRpbmcnKTtcbiAgICB0aGlzLmxzLmxvZ291dCgpO1xuICB9XG5cbiBnZXRMaXN0T2ZBY3RpdmVDbGFpbSgpe1xuICAgIHRoaXMuY2xhaW1TZXJ2aWNlLmdldExpc3RPZkFjdGl2ZUNsYWltKCkuc3Vic2NyaWJlKChyZXMpPT57XG4gICAgICB0aGlzLmxpc3RPZkFjdGl2ZUNsYWltID0gcmVzO1xuICAgIH0pXG4gIH1cblxuICBnZXRWZXJpZmljYXRpb25SZXBvcnQoKXtcbiAgICB0aGlzLmRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uID0gXCJzdGFydGVkXCI7XG4gICAgcmV0dXJuIHRoaXMuYnMuZ2V0VmVyaWZpY2F0aW9uUmVwb3J0KHRoaXMubHMuZ2V0VXNlcigpLmNsYWltYW50SWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5kb3dubG9hZFJhd0ZpbGUocmVzLCdVbmVtcGxveW1lbnRWZXJpZmljYXRpb25SZXBvcnQucGRmJylcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5kb3dubG9hZFN0YXR1c0ZvclZlcmlmaWNhdGlvbiA9IFwiZXJyb3JcIjtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdHZXR0aW5nIFVuZW1wbG95bWVudCBWZXJpZmljYXRpb24gUmVwb3J0IGVycm9yJywgZXJyKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGZpbmlzaEFuZFNhdmUoZm9ybURhdGE6IGFueSwgaXNBZGRyZXNzVmFsaWRhdGVkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93SW5saW5lRXJyb3I9IGZhbHNlOyBcbiAgICAgICB0aGlzLmZiLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlRm9ybS5mb3JtLmNvbnRyb2xzWydoaWRJc0FkZHJlc3NWYWxpZGF0ZWQnXS5zZXRWYWx1ZShpc0FkZHJlc3NWYWxpZGF0ZWQpO1xuXG4gICAgIGlmICgoZm9ybURhdGFbJ3Bob25lJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsUGhvbmUnXSkgJiYgKGZvcm1EYXRhWydlbWFpbCddID09IGZvcm1EYXRhWydoaWRPcmlnaW5hbEVtYWlsJ10pKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQaG9uZSBvciBFbWFpbCBOb3QgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWRkcmVzcyB2YWxpZGF0aW9uIGZvcm0gZmxhZ1wiLGZvcm1EYXRhLmhpZElzQWRkcmVzc1ZhbGlkYXRlZCk7XG4gICAgICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIgJiYgZm9ybURhdGFbXCJoaWRJc1Bob25lQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkJvdGggRW1haWwgYW5kIFBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgdGhpcy5lcnJvclRleHQgPSBcIlBsZWFzZSBjb250YWN0IE1ERVMgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZSB1cGRhdGluZyBFbWFpbCBBZGRyZXNzLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZE9yaWdpbmFsUGhvbmVcIl0gPT09IFwibnVsbFwiICYmIGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJUcnlpbmcgdG8gY2hhbmdlIGVtYWlsIGJ1dCBwaG9uZSBudW1iZXIgaXMgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgdGhpcy5lcnJvclRleHQgPSBcIlBsZWFzZSBjb250YWN0IE1ERVMgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZSB1cGRhdGluZyBFbWFpbCBBZGRyZXNzIGFuZCBDZWxsIFBob25lIE51bWJlci5cIjtcbiAgICAgICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKGZvcm1EYXRhW1wiaGlkSXNFbWFpbENoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkVtYWlsIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJQaG9uZSBDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgdGhpcy50eXBlID0gJ2VtYWlsJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc090cFNlbnQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaW5pdGlsaXplRm9ybSgpO1xuICAgICAgICAgIHRoaXMuc3Muc2VuZE90cFdpdGhvdXRDYXB0Y2hhKHRoaXMudHlwZSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gXCJBY2Nlc3MgY29kZSBzZW50IHN1Y2Nlc3NmdWxseS5cIjtcbiAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc090cFNlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubXNnO1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgfVxuICBpc0FkZHJlc3NDaGFuZ2VkKGN1cnJlbnQ6YW55LCBsYXN0OmFueSk6IGJvb2xlYW57XG4gIHJldHVybiBjdXJyZW50LnN0cmVldEFkZHJlc3MgIT09IGxhc3Quc3RyZWV0QWRkcmVzcyB8fFxuICAgICAgICAgY3VycmVudC5vcHRpb25hbEFkZHJlc3MgIT09IGxhc3Qub3B0aW9uYWxBZGRyZXNzIHx8IFxuICAgICAgICAgY3VycmVudC5jaXR5ICE9PSBsYXN0LmNpdHkgfHxcbiAgICAgICAgIGN1cnJlbnQuc3RhdGU/LnZhbHVlICE9PSBsYXN0LnN0YXRlPy52YWx1ZSB8fFxuICAgICAgICAgY3VycmVudC56aXAgIT09IGxhc3QuemlwIHx8XG4gICAgICAgICBjdXJyZW50LmNvdW50cnk/LnZhbHVlICE9PSBsYXN0LmNvdW50cnk/LnZhbHVlO1xuICB9XG59XG4iLCI8cC1kaWFsb2cgdmlzaWJsZT1cInRydWVcIiBtb2RhbD1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgW2JyZWFrcG9pbnRzXT1cInsnMTAyNHB4JzogJzc1dncnLCAnNzY4cHgnOiAnODV2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzYwdncnfVwiIHBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdCBoZWFkaW5nXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDI0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tcIllvdXIgQWNjb3VudFwiIHwgdHJhbnNsYXRlfX0gPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDE2cHg7XCI+KENMQUlNQU5UIElEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bHMuZ2V0VXNlcigpLmNsYWltYW50SWR9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gKm5nSWY9XCIhaXNNRSgpXCIgc3R5bGVDbGFzcz1cImlvbi1wYWRkaW5nLXN0YXJ0XCIgW29wdGlvbnNdPVwicHJvZmlsZU9wdHNcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIChvbk9wdGlvbkNsaWNrKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uICpuZ0lmPVwiaXNNRSgpXCIgc3R5bGVDbGFzcz1cImlvbi1wYWRkaW5nLXN0YXJ0XCIgW29wdGlvbnNdPVwicHJvZmlsZU9wdHNJVlJcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIChvbk9wdGlvbkNsaWNrKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgKm5nSWY9XCIhKHNob3dTdWNjZXNzIHx8IHNob3dFcnJvcilcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtOHB4O1wiPlxyXG4gICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICNmYiAqbmdJZj1cInNlbGVjdGVkID09ICdwZXJzb25hbC1kZXRhaWxzJ1wiIFtmbG93S2V5XT1cInNlbGVjdGVkXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtoaWRlSGVhZGVyXT1cInRydWVcIiBbaGlkZUZvb3Rlcl09XCJ0cnVlXCIgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiXHJcbiAgICAgICAgICAgIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscydcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0lubGluZUVycm9yICYmIHNlbGVjdGVkID09PSAnY29udGFjdC1kZXRhaWxzJ1wiIGNsYXNzPVwiZXJyb3ItYmFubmVyXCI+XHJcbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbGVydC1jaXJjbGUtb3V0bGluZVwiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpOyBmb250LXNpemU6IDE4cHg7IG1hcmdpbi1yaWdodDogOHB4O1wiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPHNwYW4+e3sgZXJyb3JUZXh0IH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICNmYiAqbmdJZj1cInNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICNmYiAqbmdJZj1cInNlbGVjdGVkID09ICdwYXltZW50LWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICNmYiAqbmdJZj1cInNlbGVjdGVkID09ICd1cGRhdGUtaXZyJ1wiIFtmbG93S2V5XT1cInNlbGVjdGVkXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtoaWRlSGVhZGVyXT1cInRydWVcIiBbaGlkZUZvb3Rlcl09XCJ0cnVlXCIgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiXHJcbiAgICAgICAgICAgIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInByb29mLW9mLXVuZW1wbG95bWVudFwiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3Byb29mLW9mLXVuZW1wbG95bWVudCdcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicGhhc2VUd29Qcm9vZk9mVUlWaWV3PT09J3RydWUnO2Vsc2UgIG5vblBocmFzZVR3b1ZpZXdcIiBzdHlsZT1cInBhZGRpbmc6IDBweCAxcmVtXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGgyIHN0eWxlPVwiZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMsIExpZ2h0JztcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQubGFiZWwucHJvb2Yub2YudW5lbXBsb3ltZW50LnBheVwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxpc3RPZkFjdGl2ZUNsYWltIHx8IGxpc3RPZkFjdGl2ZUNsYWltLmxlbmd0aCA9PT0gMDsgZWxzZSBhY3RpdmVDbGFpbVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgIDxoMyBzdHlsZT1cImZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zLCBMaWdodCc7XCI+XHJcbiAgICAgICAgICAgICAgICB7e1wicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQubGFiZWwubm8uYWN0aXZlLmNsYWltXCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FjdGl2ZUNsYWltVGFibGU+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwibGlzdE9mQWN0aXZlQ2xhaW1cIiBkYXRhS2V5PVwiY2xhaW1JZFwiIFtyb3dFeHBhbmRNb2RlXT1cIidzaW5nbGUnXCIgc3R5bGVDbGFzcz1cInNlcGVyYXRlLXJvd1wiIGNsYXNzPVwic2VwZXJhdGUtcm93XCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZVN0eWxlXT1cInsnYm9yZGVyLWNvbGxhcHNlJzogJ3NlcGFyYXRlJywnYm9yZGVyLXNwYWNpbmcnOiAnMCA4cHgnfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZGF0YSBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBbcFJvd1RvZ2dsZXJdPVwiZGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJleHBhbmRlZCA/ICdwaSBwaS1jaGV2cm9uLWRvd24nIDogJ3BpIHBpLWNoZXZyb24tcmlnaHQnXCIgc3R5bGU9XCJmb250LXNpemU6IDEuNXJlbTtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEuZWZmZWN0aXZlRGF0ZX19IC0ge3tkYXRhLmJ5ZURhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEuZW50aXRsZW1lbnRUeXBlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicm93ZXhwYW5zaW9uXCIgbGV0LWRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiN1wiIHN0eWxlPVwiIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2U0ZTRlNDtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTRlNGU0O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cImRpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJkb2NGaWxlTGlua1wiIGhlaWdodD0nNTAwcHgnIHdpZHRoPSc0MjBweCcvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cImRpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93ID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZGF0YS5kZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC1zaXplOiAxOXB4O1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgc2hhcGU9XCJyb3VuZFwiIHN0eWxlPVwicGFkZGluZy1pbmxpbmUtZW5kOiAycmVtO1wiIChjbGljayk9XCJnZXRWZXJpZmljYXRpb25SZXBvcnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LmJ1dHRvbi5kb3dubG9hZC5yZXBvcnRcInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cIiFpc01FKClcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgbGF5b3V0PVwicm93XCIgc3R5bGUgPSBcIm1hcmdpbjozcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInAtNFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDoxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1oZWFkZXIgc3R5bGU9XCJib3gtc2hhZG93OiAwIDAgMCAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPjxpIGNsYXNzPVwicGkgcGktZmlsZVwiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtmb250LXNpemU6IDMwcHg7XCI+PC9pPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLmxhYmVsLmRvd25sb2FkLnVuZW1wbG95bWVudC5jbGFpbS5yZXBvcnRcInwgdHJhbnNsYXRlfX08L2lvbi1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24taGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwbC0wIHByLTAgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBzdHlsZT1cImhlaWdodDogMTAwJTsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sncHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLm92ZXJsYXkudW5lbXBsb3ltZW50LmNsYWltLnJlcG9ydCd8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbW9iaWxlLXZpZXdcIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOjMwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJnZXRFeHRlcm5hbENsYWltYW50UmVwb3J0KClcIiBzdHlsZT1cIndpZHRoOicxMHJlbSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIkNsYWltYW50LXJlcG9ydC1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb3dubG9hZC1vdXRsaW5lXCIgY2xhc3M9XCJwci0xIHBiLTFcIj48L2lvbi1pY29uPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLmJ1dHRvbi5kb3dubG9hZC5yZXBvcnRcInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeSA9PSdzdGFydGVkJ1wiPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuc3RhdHVzLmRvd25sb2FkLnN0YXJ0XCJ8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeT09J2Vycm9yJ1wiPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuc3RhdHVzLmRvd25sb2FkLmVycm9yXCJ8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBsYXlvdXQ9XCJyb3dcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgc3R5bGUgPSBcIm1hcmdpbjozcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInAtNFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDoxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1oZWFkZXIgc3R5bGU9XCJib3gtc2hhZG93OiAwIDAgMCAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPjxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO2ZvbnQtc2l6ZTogMzBweDtcIj48L2k+ICB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5sYWJlbC5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbVwifCB0cmFuc2xhdGV9fTwvaW9uLWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInBsLTAgcHItMCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ub3ZlcmxheS5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbSd8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIG1vYmlsZS12aWV3XCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTozMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZ2V0VmVyaWZpY2F0aW9uUmVwb3J0KClcIiBzdHlsZT1cIndpZHRoOjEwcmVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJDbGFpbWFudC1zdW1tYXJ5LXZlci1idG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb3dubG9hZC1vdXRsaW5lXCIgY2xhc3M9XCJwci0xIHBiLTFcIj48L2lvbi1pY29uPiB7eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnBoYXNlLnR3by5idXR0b24uZG93bmxvYWQucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uID09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uPT0nZXJyb3InXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuZXJyb3JcInwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vblBocmFzZVR3b1ZpZXc+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5kb3dubG9hZC51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIj48L2lvbi1pY29uPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmV4dGVybmFsLmNsYWltYW50LnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeT09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5PT0nZXJyb3InXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuZXJyb3JcInwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbVwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJyZWRpcmVjdExpbmsoJy5jbGFpbWFudHN1bW1hcnl2ZXJpZmljYXRpb24nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtc3VtbWFyeS12ZXItYnRuXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5idXR0b24udW5lbXBsb3ltZW50LnZlcmlmaWNhdGlvblwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTVMoKSAmJiBzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJyAmJiBpc090cFNlbnQgPT0gdHJ1ZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogLTkwcHg7XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJvdHBGb3JtXCIgI290cEZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwib3RwXCIgW2lubmVySFRNTF09XCIncHJvZmlsZS5jb250YWN0LmRldGFpbHMubGFiZWwub3RwJyB8IHRyYW5zbGF0ZTp7IHR5cGU6IHR5cGUgfVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TWFzayBmb3JtQ29udHJvbE5hbWU9XCJvdHBcIiBtYXNrPVwiOTk5OTk5XCIgc2l6ZT1cIjZcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9Gb2N1c109J3RydWUnIHRpdGxlPSdFbnRlciBBdXRoY29kZSc+PC9wLWlucHV0TWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJvdHBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnQXV0aGNvZGUgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdBdXRoY29kZSBzaG91bGQgaGF2ZSA2IG51bWJlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ2ZXJpZnkoKVwiPnt7IFwicHJvZmlsZS5jb250YWN0LmRldGFpbHMuYnV0dG9uLnZlcmlmeVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpICYmIHNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnICYmIGRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID09IHRydWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC05MHB4O1wiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VjdXJpdHlRdWVzdGlvbkZvcm1cIiAjc2VjdXJpdHlRdWVzdGlvbkZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZWN1cml0eVF1ZXN0aW9uQW5zd2VyXCIgW2lubmVySFRNTF09XCIncHJvZmlsZS5jb250YWN0LmRldGFpbHMubGFiZWwuc2VjdXJpdHlRdWVzdGlvbicgfCB0cmFuc2xhdGU6eyBzZWN1cml0eVF1ZXN0aW9uVG9Bc2s6IHNlY3VyaXR5UXVlc3Rpb25Ub0FzayB9XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcdDxpbnB1dCBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInNlY3VyaXR5UXVlc3Rpb25BbnN3ZXJcIiBzaXplPVwiMzBcIiBtYXhsZW5ndGg9XCIzMFwiIHRpdGxlPVwiU2VjdXJpdHkgQW5zd2VyXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicgW2Zvcm1dPVwic2VjdXJpdHlRdWVzdGlvbkZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdTZWN1cml0eSBBbnN3ZXIgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ2ZXJpZnlTZWN1cml0eVF1ZXN0aW9uKClcIj57eyBcInByb2ZpbGUuY29udGFjdC5kZXRhaWxzLmJ1dHRvbi52ZXJpZnlcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yRHRsc1wiPnt7ZXJyb3JEdGxzfX08L21hdC1lcnJvcj5cclxuICAgIDxpb24tbGFiZWwgKm5nSWY9XCJzdWNjZXNzRHRsc1wiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmVlbilcIj57e3N1Y2Nlc3NEdGxzfX08YnIgLz48L2lvbi1sYWJlbD5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1N1Y2Nlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogODBweDsgY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmVlbik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPGgxPnt7IFwicHJvZmlsZS5iYW5uZXIuc3VjY2Vzc1wifCB0cmFuc2xhdGV9fTwvaDE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGUtb3V0bGluZVwiIHN0eWxlPVwiZm9udC1zaXplOiA4MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpc01TKClcIj5cclxuICAgICAgICAgICAgICAgIDxoMT57eyBlcnJvclRleHQgPyBlcnJvclRleHQgOiAoJ3Byb2ZpbGUuYmFubmVyLnJlcXVlc3QucHJvY2Vzcy5mYWlsdXJlJyB8IHRyYW5zbGF0ZSkgfX08L2gxPlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxPnt7ZXJyb3JUZXh0ID8gZXJyb3JUZXh0IDogKCdwcm9maWxlLmJhbm5lci5yZXF1ZXN0LnByb2Nlc3MuZmFpbHVyZScgfCB0cmFuc2xhdGUpIH19PC9oMT5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemU9XCIxMlwiIHNpemVYbD1cIjRcIiBzaXplTGc9XCI0XCIgc2l6ZU1kPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9nb3V0KClcIj57eyBcInByb2ZpbGUuYnV0dG9uLmxvZ291dFwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI4XCIgc2l6ZUxnPVwiOFwiIHNpemVNZD1cIjdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiB0eXBlPVwicmVzZXRcIiAoY2xpY2spPVwiY2FuY2VsKClcIj57eyBcInByb2ZpbGUuYnV0dG9uLmNsb3NlXCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInNhdmUoKVwiICpuZ0lmPVwiIShzaG93U3VjY2VzcyB8fCBzaG93RXJyb3IpICYmIHNlbGVjdGVkIT0ncHJvb2Ytb2YtdW5lbXBsb3ltZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc090cFNlbnQ9PSB0cnVlIHx8IGRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uPT0gdHJ1ZVwiPnt7IFwicHJvZmlsZS5idXR0b24uc2F2ZVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPiJdfQ==