iptdevs-design-system 3.1.491 → 3.1.493

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.
@@ -21,6 +21,7 @@ export class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
21
21
  this.messageService = messageService;
22
22
  this.completed = new EventEmitter();
23
23
  this.genders = [];
24
+ this.grades = [];
24
25
  this.errorMessage = 'Faltan campos por llenar.';
25
26
  this.controls = new CodSelfManagedControls().controls[0];
26
27
  this.visible = false;
@@ -106,11 +107,11 @@ export class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
106
107
  });
107
108
  this.parameterService.GetAllGradeEducation().pipe(map((response) => response.data)).subscribe((grades) => {
108
109
  grades.forEach(grade => {
109
- let genderItem = {
110
+ let gradesItems = {
110
111
  code: grade.code,
111
112
  name: grade.grade
112
113
  };
113
- this.grades.push(genderItem);
114
+ this.grades.push(gradesItems);
114
115
  // this.grade = response.data;
115
116
  });
116
117
  });
@@ -237,13 +238,13 @@ export class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
237
238
  }
238
239
  }
239
240
  CodSelfFormStepOneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ParameterService }, { token: i0.ChangeDetectorRef }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component });
240
- CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { userStudent: "userStudent" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i6.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
241
+ CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { userStudent: "userStudent" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor selecciona un grado educativo</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i6.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
241
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, decorators: [{
242
243
  type: Component,
243
- args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"] }]
244
+ args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor selecciona un grado educativo</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"] }]
244
245
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ParameterService }, { type: i0.ChangeDetectorRef }, { type: i3.MessageService }]; }, propDecorators: { userStudent: [{
245
246
  type: Input
246
247
  }], completed: [{
247
248
  type: Output
248
249
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLW9uZS9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtb25lL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFlLFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7O0FBU2hHLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFzQmxFLFlBQ1UsRUFBZSxFQUNmLGdCQUFrQyxFQUNsQyxLQUF3QixFQUN4QixjQUE4QjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQUxBLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXRCOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHakQsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQVVwQixp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U0FBUyxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQzs7d0hBalBVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDJMQ2R4QyxzaFFBaUtBOzJGRG5KYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsNEJBQTRCOzhMQU03QixXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFyYW1ldGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGFyYW1ldGVycy1zZXJ2aWNlL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkQ29udHJvbHMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLWNvbnRyb2xzJztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlc1R3byB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBJVXNlcklQVFJxcyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3VzZXIvdXNlci1ycy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kU2VsZkZvcm1TdGVwT25lQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBASW5wdXQoKSB1c2VyU3R1ZGVudD86IElVc2VySVBUUnFzO1xuXG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBjb2RTZWxmRm9ybVN0ZXBPbmUhOiBGb3JtR3JvdXBcbiAgZ2VuZGVyczogYW55W10gPSBbXTtcbiAgc3RyYXR1bXM6IGFueTtcbiAgaWRUeXBlczogYW55O1xuICBpbmRpY2F0aXZlczogYW55O1xuICBjaXZpbFN0YXR1czogYW55O1xuICBjb3VudHJ5U2VsZWN0ZWQ6IGFueTtcbiAgY291bnRyaWVzOiBhbnk7XG4gIHN0YXRlczogYW55O1xuICBjaXRpZXM6IGFueTtcbiAgZ3JhZGVzOmFueVxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICdGYWx0YW4gY2FtcG9zIHBvciBsbGVuYXIuJztcbiAgY29udHJvbHMgPSBuZXcgQ29kU2VsZk1hbmFnZWRDb250cm9scygpLmNvbnRyb2xzWzBdO1xuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIG1lc3NhZ2VJbmZvPSdFc3RhIHNlY2Npb24gc29sbyBlcyBwYXJhIGRhdG9zIGRlbCBlc3R1ZGlhbnRlLic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJTZXJ2aWNlOiBQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQYXJhbWV0ZXJzKCk7XG5cbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICAvLyBjb25zdCBjdXJyZW50VXNlciA9IGNoYW5nZXNbJ3VzZXJTdHVkZW50J10uY3VycmVudFZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudXNlclN0dWRlbnQpO1xuICAgIGlmIChjaGFuZ2VzWyd1c2VyU3R1ZGVudCddICYmIHRoaXMudXNlclN0dWRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRVc2VyJyxjdXJyZW50VXNlcik7XG4gICAgICB0aGlzLnNldERhdGFVc2VycygpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzdHVkZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfbGFzdF9uYW1lOlsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9pZF9jYXJkOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBiaXJ0aGRhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBhZ2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjb3VudHJ5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3RhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICAgIGdyYWRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgfSk7XG4gICAgLy8gQ2FsY3VsYXIgZWRhZCB5IHNldGVhciB2YWxvclxuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChjaGFuZ2UpID0+IHtcbiAgICAgICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgbGV0IGJpcnRoZGF5ID0gbmV3IERhdGUoY2hhbmdlKTtcbiAgICAgICAgbGV0IGFnZSA9IHRvZGF5LmdldEZ1bGxZZWFyKCkgLSBiaXJ0aGRheS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBsZXQgbW9udGggPSB0b2RheS5nZXRNb250aCgpIC0gYmlydGhkYXkuZ2V0TW9udGgoKTtcblxuICAgICAgICBpZiAobW9udGggPCAwIHx8IChtb250aCA9PT0gMCAmJiB0b2RheS5nZXREYXRlKCkgPCBiaXJ0aGRheS5nZXREYXRlKCkpKSB7XG4gICAgICAgICAgYWdlLS07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWdlIDwgMykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0ZlY2hhIGRlIG5hY2ltaWVudG8gbm8gdsOhbGlkYSdcbiAgICAgICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYmlydGhkYXRlJ10uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgIGludmFsaWRBZ2U6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYWdlJ10uc2V0VmFsdWUoYWdlKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENhcmRUeXBlcygnY29sJykuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5pZFR5cGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0SW5kaWNhdGl2ZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmluZGljYXRpdmVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q291bnRyaWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jb3VudHJpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRBbGxDaXRpZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbFN0YXRlcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc3RhdGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0R2VuZGVycygpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhKSkuc3Vic2NyaWJlKChnZW5kZXJzOiBhbnlbXSkgPT4ge1xuICAgICAgZ2VuZGVycy5mb3JFYWNoKGdlbmRlciA9PiB7XG4gICAgICAgIGxldCBnZW5kZXJJdGVtID0ge1xuICAgICAgICAgIGNvZGU6IGdlbmRlci5jb2RlLFxuICAgICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdlbmRlcnMucHVzaChnZW5kZXJJdGVtKVxuICAgICAgfSlcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuR2V0QWxsR3JhZGVFZHVjYXRpb24oKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YSkpLnN1YnNjcmliZSgoZ3JhZGVzOiBhbnlbXSkgPT4ge1xuICAgICAgZ3JhZGVzLmZvckVhY2goZ3JhZGUgPT4ge1xuICAgICAgICBsZXQgZ2VuZGVySXRlbSA9IHtcbiAgICAgICAgICBjb2RlOiBncmFkZS5jb2RlLFxuICAgICAgICAgIG5hbWU6IGdyYWRlLmdyYWRlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmFkZXMucHVzaChnZW5kZXJJdGVtKVxuICAgICAgLy8gdGhpcy5ncmFkZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gIH0pO1xuICB9XG5cbiAgc2V0RGF0YVVzZXJzKCl7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/Lm5hbWUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/Lmxhc3RfbmFtZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUodGhpcy51c2VyU3R1ZGVudD8uaWRfY2FyZF90eXBlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ10uc2V0VmFsdWUodGhpcy51c2VyU3R1ZGVudD8uaWRfY2FyZCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5jaXR5WzBdPy5jb3VudHJ5ICE9ICgxIHx8IG51bGwpID8gdGhpcy51c2VyU3R1ZGVudD8uY2l0eVswXT8uY291bnRyeSA6IG51bGwpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LmNpdHlbMF0/LnN0YXRlICE9ICgzMyB8fCBudWxsKSA/IHRoaXMudXNlclN0dWRlbnQ/LmNpdHlbMF0/LnN0YXRlIDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5jaXR5WzBdPy5jb2RlICE9ICgxIHx8IG51bGwpID8gdGhpcy51c2VyU3R1ZGVudD8uY2l0eVswXT8uY29kZSA6IG51bGwpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5nZW5kZXIpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5iaXJ0aGRhdGUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ10uc2V0VmFsdWUodGhpcy51c2VyU3R1ZGVudD8uZW1haWwpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5waG9uZV9pbmRpY2F0aXZlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5waG9uZV9udW1iZXIpO1xuXG4gIH1cblxuICBzZWxlY3RDb3VudHJ5KGNvdW50cnk6IGFueSkge1xuICAgIGxldCBpc28gPSAnJztcbiAgICBpZiAoY291bnRyeSA9PT0gJzInKSBpc28gPSAnY29sJztcbiAgICBlbHNlIGlmIChjb3VudHJ5ID09PSAnMycpIGlzbyA9ICd2ZW4nO1xuICAgIGVsc2UgaWYgKGNvdW50cnkgPT09ICc0JykgaXNvID0gJ3VzYSc7XG4gICAgZWxzZSBpc28gPSAnJztcblxuICAgIGlmIChpc28gIT0gJycpIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10uc2V0VmFsdWUoY291bnRyeSk7XG5cbiAgICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRTdGF0ZXNCeUNvdW50cnkoaXNvKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RTdGF0ZSh0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgyLCAnc3RhdGUnKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gICAgdGhpcy5jb3VudHJ5U2VsZWN0ZWQgPSBjb3VudHJ5O1xuICB9XG5cbiAgc2VsZWN0U3RhdGUoc3RhdGU6IGFueSkge1xuICAgIGlmIChzdGF0ZSAhPT0gJ0RlcGFydGFtZW50byBvIGVzdGFkbycpIHtcbiAgICAgIHRoaXMuZ2V0U3RhdGUoc3RhdGUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUoc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNpdGllcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdENpdHkoY2l0eTogYW55KSB7XG4gICAgaWYgKGNpdHkgIT09ICdDaXVkYWQgZGUgcmVzaWRlbmNpYScpIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUoY2l0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SWRUeXBlKGlkVHlwZTogYW55KSB7XG4gICAgaWYgKGlkVHlwZSAhPT0gJ1RpcG8gZGUgZG9jdW1lbnRvJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUoaWRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG4gIHNlbGVjdEdlbmRlcihnZW5kZXI6IGFueSkge1xuICAgIGlmIChnZW5kZXIgIT09ICdHw6luZXJvJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnNldFZhbHVlKGdlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VsZWN0SW5kaWNhdGl2ZXMoaW5kaWNhdGl2ZTogYW55KSB7XG4gICAgaWYgKGluZGljYXRpdmUgIT09ICdJbmRpY2F0aXZvJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnNldFZhbHVlKGluZGljYXRpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG4gIHNlbGVjdEdyYWRlKGdyYWRlOiBhbnkpIHtcbiAgICBpZiAoZ3JhZGUgIT09ICdHcmFkbyBFZHVjYXRpdm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ3JhZGUnXS5zZXRWYWx1ZShncmFkZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydncmFkZSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuICBzZW5kRm9ybSgpIHtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gMVxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMSk7XG4gIH1cbiAgZ2V0U3RhdGUoc3RhdGU6IGFueSkge1xuICAgIHRoaXMuZ2V0Q2l0eShzdGF0ZSk7XG4gIH1cbiAgZ2V0Q2l0eShzdGF0ZTogYW55KSB7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENpdGllc0J5U3RhdGUoc3RhdGUpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuY2l0aWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIHRoaXMuc2VsZWN0Q2l0eSh0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgxLCAnY2l0eScpKTtcbiAgICB9KTtcbiAgfVxuICBzdGFydExvY2FsU3RvcmFnZVdvcmsoKSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDEsIGNvbnRyb2wubmFtZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMSwgY29udHJvbC5uYW1lLCB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlQ2hhbmdlcyk7XG4gICAgfSk7XG4gIH1cbiAgc2hvd0NvbmZpcm0oKSB7XG4gICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBrZXk6ICdjb25maXJtJywgc3RpY2t5OiB0cnVlLCBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnQ2FuIHlvdSBzZW5kIG1lIHRoZSByZXBvcnQ/JywgbGlmZTogMTAwMDAgfSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25SZWplY3QoKSB7XG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jbGVhcignY29uZmlybScpO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZm9ybVwiPlxuICAgIDxoMj5EYXRvcyBQZXJzb25hbGVzPC9oMj5cbiAgICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiIGtleT1cImNvbmZpcm1cIiAob25DbG9zZSk9XCJvblJlamVjdCgpXCIgW2Jhc2VaSW5kZXhdPVwiMTBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCIgc3R5bGU9XCJmbGV4OiAxXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9xYS5pcHRkZXYuY29tLmNvL2Fzc2V0cy9sb2dvcy9yZWFkaW5nLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDY1cHg7XCIgc2hhcGU9XCJjaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LTkwMFwiPkphY29iPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuXG4gICAgPGkgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUgY3Vyc29yLXBvaW50ZXIgdy1hdXRvXCIgKGNsaWNrKT1cInNob3dDb25maXJtKClcIj48L2k+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjb2RTZWxmRm9ybVN0ZXBPbmVcIj5cblxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIG5vbWJyZSB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInQXBlbGxpZG9zJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9sYXN0X25hbWUnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gYXBlbGxpZG8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddXCJcbiAgICAgICAgW3NlbGVjdENvZGVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSBudWxsID8gJ1RpcG8gZGUgZG9jdW1lbnRvJyA6IGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZGF0YV09XCJpZFR5cGVzXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdElkVHlwZSgkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biB0aXBvIGRlIGRvY3VtZW50byB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOw7ptZXJvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZCddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZCddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGRvY3VtZW50byB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXVwiXG4gICAgICAgIFtkYXRhXT1cImdlbmRlcnNcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R2VuZGVyKCRldmVudClcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0fDqW5lcm8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBnZW5lcm8gdsOhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgb25mb2N1cz1cIih0aGlzLnR5cGU9J2RhdGUnKVwiXG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXVwiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRmVjaGEgZGUgbmFjaW1pZW50bydcIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYmlydGhkYXRlJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW5hIGZlY2hhIG1heW9yIGRlIDMgYcOxb3MuPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J11cIlxuICAgICAgICBbc2VsZWN0Q29kZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZSA9PT0gbnVsbCA/ICdQYcOtcyBkZSByZXNpZGVuY2lhJyA6IGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENvdW50cnkoJGV2ZW50KVwiXG4gICAgICAgIFtkYXRhXT1cImNvdW50cmllc1wiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInUGHDrXMgZGUgcmVzaWRlbmNpYSdcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gcGFpcyB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ11cIlxuICAgICAgICBbc2VsZWN0Q29kZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10udmFsdWUgPT09IG51bGwgPyAnRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJyA6IGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3RhdGUoJGV2ZW50KVwiXG4gICAgICAgIFtkYXRhXT1cInN0YXRlc1wiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGRlcGFydGFtZW50byB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddXCJcbiAgICAgICAgW3NlbGVjdENvZGVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10udmFsdWUgPT09IG51bGwgPyAnQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnIDogY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10udmFsdWVcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q2l0eSgkZXZlbnQpXCJcbiAgICAgICAgW2RhdGFdPVwiY2l0aWVzXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidDaXVkYWQgZGUgcmVzaWRlbmNpYSdcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW5hIGNpdWRhZCB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBbaW5wdXRUeXBlXT1cIidlbWFpbCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0NvcnJlbyBlbGVjdHLDs25pY28nXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9lbWFpbCddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBlbWFpbCB2YWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddXCJcbiAgICAgICAgW2RhdGFdPVwiaW5kaWNhdGl2ZXNcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZXMoJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInSW5kaWNhdGl2bydcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGluZGljYXRpdm8gdmFsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOw7ptZXJvIGRlIHRlbMOpZm9ubydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfbnVtYmVyJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dyYWRlJ10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dyYWRlJ11cIlxuICAgICAgICBbZGF0YV09XCJncmFkZXNcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R3JhZGUoJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInR3JhZG8gRWR1Y2F0aXZvJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIG51bWVybyBkZSB0ZWxlZm9ubyB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBPbmUudmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPCEtLSA8ZGl2PlxuICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcE9uZS52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgPGRpdj5cbiAgICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcE9uZS52YWxpZCB8IGpzb24gfX08L3ByZT5cbiAgPC9kaXY+XG48L2Rpdj4gLS0+XG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLW9uZS9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtb25lL2NvZC1zZWxmLWZvcm0tc3RlcC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFlLFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7O0FBU2hHLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFzQmxFLFlBQ1UsRUFBZSxFQUNmLGdCQUFrQyxFQUNsQyxLQUF3QixFQUN4QixjQUE4QjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQUxBLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXRCOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHakQsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQVNwQixXQUFNLEdBQVMsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQVcsMkJBQTJCLENBQUM7UUFDbkQsYUFBUSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFDLGlEQUFpRCxDQUFDO1FBUzVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUV2QixDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLDJEQUEyRDtRQUMzRCxpQ0FBaUM7UUFDakMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDdEQsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3RDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxpQkFBaUIsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckQsZUFBZSxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEgsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCx3QkFBd0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekQsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuQyxDQUFDLENBQUM7UUFDSCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ25FLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNmLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUVuRCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdEUsR0FBRyxFQUFFLENBQUM7aUJBQ1A7Z0JBRUQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO29CQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsK0JBQStCLENBQUE7b0JBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDO3dCQUN0RCxVQUFVLEVBQUUsSUFBSTtxQkFDakIsQ0FBQyxDQUFBO2lCQUNIO3FCQUFNO29CQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMvRDtnQkFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBYyxFQUFFLEVBQUU7WUFDMUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxVQUFVLEdBQUc7b0JBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVk7aUJBQzFCLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDL0IsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFhLEVBQUUsRUFBRTtZQUNsRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixJQUFJLFdBQVcsR0FBRztvQkFDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUs7aUJBQ2xCLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQy9CLDhCQUE4QjtZQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwSixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0ksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsa0JBQWtCLENB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QU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7O3dIQWxQVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiwyTENkeEMseWdRQWlLQTsyRkRuSmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDRCQUE0Qjs4TEFNN0IsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBhcmFtZXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3BhcmFtZXRlcnMtc2VydmljZS9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZFN0ZXBzLCBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gfSBmcm9tICcuLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLXN0ZXBzJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgSVVzZXJJUFRScXMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91c2VyL3VzZXItcnMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29kLXNlbGYtZm9ybS1zdGVwLW9uZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtb25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLXNlbGYtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvZFNlbGZGb3JtU3RlcE9uZUNvbXBvbmVudCBleHRlbmRzIENvZFNlbGZNYW5hZ2VkU3RlcHMgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgdXNlclN0dWRlbnQ/OiBJVXNlcklQVFJxcztcblxuICBAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29kU2VsZkZvcm1TdGVwT25lITogRm9ybUdyb3VwXG4gIGdlbmRlcnM6IGFueVtdID0gW107XG4gIHN0cmF0dW1zOiBhbnk7XG4gIGlkVHlwZXM6IGFueTtcbiAgaW5kaWNhdGl2ZXM6IGFueTtcbiAgY2l2aWxTdGF0dXM6IGFueTtcbiAgY291bnRyeVNlbGVjdGVkOiBhbnk7XG4gIGNvdW50cmllczogYW55O1xuICBzdGF0ZXM6IGFueTtcbiAgY2l0aWVzOiBhbnk7XG4gIGdyYWRlczphbnlbXSA9IFtdO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICdGYWx0YW4gY2FtcG9zIHBvciBsbGVuYXIuJztcbiAgY29udHJvbHMgPSBuZXcgQ29kU2VsZk1hbmFnZWRDb250cm9scygpLmNvbnRyb2xzWzBdO1xuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIG1lc3NhZ2VJbmZvPSdFc3RhIHNlY2Npb24gc29sbyBlcyBwYXJhIGRhdG9zIGRlbCBlc3R1ZGlhbnRlLic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJTZXJ2aWNlOiBQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQYXJhbWV0ZXJzKCk7XG5cbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICAvLyBjb25zdCBjdXJyZW50VXNlciA9IGNoYW5nZXNbJ3VzZXJTdHVkZW50J10uY3VycmVudFZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudXNlclN0dWRlbnQpO1xuICAgIGlmIChjaGFuZ2VzWyd1c2VyU3R1ZGVudCddICYmIHRoaXMudXNlclN0dWRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRVc2VyJyxjdXJyZW50VXNlcik7XG4gICAgICB0aGlzLnNldERhdGFVc2VycygpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzdHVkZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfbGFzdF9uYW1lOlsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0dWRlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9pZF9jYXJkOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBiaXJ0aGRhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBhZ2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjb3VudHJ5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3RhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICAgIGdyYWRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgfSk7XG4gICAgLy8gQ2FsY3VsYXIgZWRhZCB5IHNldGVhciB2YWxvclxuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChjaGFuZ2UpID0+IHtcbiAgICAgICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgbGV0IGJpcnRoZGF5ID0gbmV3IERhdGUoY2hhbmdlKTtcbiAgICAgICAgbGV0IGFnZSA9IHRvZGF5LmdldEZ1bGxZZWFyKCkgLSBiaXJ0aGRheS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBsZXQgbW9udGggPSB0b2RheS5nZXRNb250aCgpIC0gYmlydGhkYXkuZ2V0TW9udGgoKTtcblxuICAgICAgICBpZiAobW9udGggPCAwIHx8IChtb250aCA9PT0gMCAmJiB0b2RheS5nZXREYXRlKCkgPCBiaXJ0aGRheS5nZXREYXRlKCkpKSB7XG4gICAgICAgICAgYWdlLS07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWdlIDwgMykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0ZlY2hhIGRlIG5hY2ltaWVudG8gbm8gdsOhbGlkYSdcbiAgICAgICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYmlydGhkYXRlJ10uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgIGludmFsaWRBZ2U6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYWdlJ10uc2V0VmFsdWUoYWdlKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENhcmRUeXBlcygnY29sJykuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5pZFR5cGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0SW5kaWNhdGl2ZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmluZGljYXRpdmVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q291bnRyaWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jb3VudHJpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRBbGxDaXRpZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbFN0YXRlcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc3RhdGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0R2VuZGVycygpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhKSkuc3Vic2NyaWJlKChnZW5kZXJzOiBhbnlbXSkgPT4ge1xuICAgICAgZ2VuZGVycy5mb3JFYWNoKGdlbmRlciA9PiB7XG4gICAgICAgIGxldCBnZW5kZXJJdGVtID0ge1xuICAgICAgICAgIGNvZGU6IGdlbmRlci5jb2RlLFxuICAgICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdlbmRlcnMucHVzaChnZW5kZXJJdGVtKVxuICAgICAgfSlcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuR2V0QWxsR3JhZGVFZHVjYXRpb24oKS5waXBlXG4gICAgKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YSkpLnN1YnNjcmliZSgoZ3JhZGVzOiBhbnlbXSkgPT4ge1xuICAgICAgZ3JhZGVzLmZvckVhY2goZ3JhZGUgPT4ge1xuICAgICAgICBsZXQgZ3JhZGVzSXRlbXMgPSB7XG4gICAgICAgICAgY29kZTogZ3JhZGUuY29kZSxcbiAgICAgICAgICBuYW1lOiBncmFkZS5ncmFkZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhZGVzLnB1c2goZ3JhZGVzSXRlbXMpXG4gICAgICAvLyB0aGlzLmdyYWRlID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgfSk7XG4gIH1cblxuICBzZXREYXRhVXNlcnMoKXtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ10uc2V0VmFsdWUodGhpcy51c2VyU3R1ZGVudD8ubmFtZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbGFzdF9uYW1lJ10uc2V0VmFsdWUodGhpcy51c2VyU3R1ZGVudD8ubGFzdF9uYW1lKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5pZF9jYXJkX3R5cGUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmQnXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5pZF9jYXJkKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LmNpdHlbMF0/LmNvdW50cnkgIT0gKDEgfHwgbnVsbCkgPyB0aGlzLnVzZXJTdHVkZW50Py5jaXR5WzBdPy5jb3VudHJ5IDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUodGhpcy51c2VyU3R1ZGVudD8uY2l0eVswXT8uc3RhdGUgIT0gKDMzIHx8IG51bGwpID8gdGhpcy51c2VyU3R1ZGVudD8uY2l0eVswXT8uc3RhdGUgOiBudWxsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LmNpdHlbMF0/LmNvZGUgIT0gKDEgfHwgbnVsbCkgPyB0aGlzLnVzZXJTdHVkZW50Py5jaXR5WzBdPy5jb2RlIDogbnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LmdlbmRlcik7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LmJpcnRoZGF0ZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS5zZXRWYWx1ZSh0aGlzLnVzZXJTdHVkZW50Py5lbWFpbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LnBob25lX2luZGljYXRpdmUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddLnNldFZhbHVlKHRoaXMudXNlclN0dWRlbnQ/LnBob25lX251bWJlcik7XG5cbiAgfVxuXG4gIHNlbGVjdENvdW50cnkoY291bnRyeTogYW55KSB7XG4gICAgbGV0IGlzbyA9ICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnMicpIGlzbyA9ICdjb2wnO1xuICAgIGVsc2UgaWYgKGNvdW50cnkgPT09ICczJykgaXNvID0gJ3Zlbic7XG4gICAgZWxzZSBpZiAoY291bnRyeSA9PT0gJzQnKSBpc28gPSAndXNhJztcbiAgICBlbHNlIGlzbyA9ICcnO1xuXG4gICAgaWYgKGlzbyAhPSAnJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShjb3VudHJ5KTtcblxuICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldFN0YXRlc0J5Q291bnRyeShpc28pLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDIsICdzdGF0ZScpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmNvdW50cnlTZWxlY3RlZCA9IGNvdW50cnk7XG4gIH1cblxuICBzZWxlY3RTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgaWYgKHN0YXRlICE9PSAnRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJykge1xuICAgICAgdGhpcy5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2l0eShjaXR5OiBhbnkpIHtcbiAgICBpZiAoY2l0eSAhPT0gJ0NpdWRhZCBkZSByZXNpZGVuY2lhJykge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShjaXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJZFR5cGUoaWRUeXBlOiBhbnkpIHtcbiAgICBpZiAoaWRUeXBlICE9PSAnVGlwbyBkZSBkb2N1bWVudG8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VsZWN0R2VuZGVyKGdlbmRlcjogYW55KSB7XG4gICAgaWYgKGdlbmRlciAhPT0gJ0fDqW5lcm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10uc2V0VmFsdWUoZ2VuZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuICBzZWxlY3RJbmRpY2F0aXZlcyhpbmRpY2F0aXZlOiBhbnkpIHtcbiAgICBpZiAoaW5kaWNhdGl2ZSAhPT0gJ0luZGljYXRpdm8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUoaW5kaWNhdGl2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cbiAgc2VsZWN0R3JhZGUoZ3JhZGU6IGFueSkge1xuICAgIGlmIChncmFkZSAhPT0gJ0dyYWRvIEVkdWNhdGl2bycpIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydncmFkZSddLnNldFZhbHVlKGdyYWRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dyYWRlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG4gIHNlbmRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICBpZiAodGhpcy5jb2RTZWxmRm9ybVN0ZXBPbmUuaW52YWxpZCkgcmV0dXJuO1xuXG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyAxXG4gICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgxKTtcbiAgfVxuICBnZXRTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgdGhpcy5nZXRDaXR5KHN0YXRlKTtcbiAgfVxuICBnZXRDaXR5KHN0YXRlOiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q2l0aWVzQnlTdGF0ZShzdGF0ZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jaXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgdGhpcy5zZWxlY3RDaXR5KHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdjaXR5JykpO1xuICAgIH0pO1xuICB9XG4gIHN0YXJ0TG9jYWxTdG9yYWdlV29yaygpIHtcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBsZXQgbG9jYWxTdG9yYWdlVmFsdWU6IGxvY2FsU3RvcmFnZVZhbHVlc1R3byA9IHRoaXMucmVhZEFuZFdyaXRlTFMoMSwgY29udHJvbC5uYW1lKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uc2V0VmFsdWUobG9jYWxTdG9yYWdlVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5saXN0ZW5Gb3JtQ2hhbmdlcygxLCBjb250cm9sLm5hbWUsIHRoaXMuY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udmFsdWVDaGFuZ2VzKTtcbiAgICB9KTtcbiAgfVxuICBzaG93Q29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvblJlamVjdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKCdjb25maXJtJyk7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mb3JtXCI+XG4gICAgPGgyPkRhdG9zIFBlcnNvbmFsZXM8L2gyPlxuICAgICAgPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIga2V5PVwiY29uZmlybVwiIChvbkNsb3NlKT1cIm9uUmVqZWN0KClcIiBbYmFzZVpJbmRleF09XCIxMFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3FhLmlwdGRldi5jb20uY28vYXNzZXRzL2xvZ29zL3JlYWRpbmcucG5nXCIgc3R5bGU9XCJ3aWR0aDogNjVweDtcIiBzaGFwZT1cImNpcmNsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtOTAwXCI+SmFjb2I8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtbGcgbXktMyB0ZXh0LTkwMFwiPnt7IG1lc3NhZ2VJbmZvIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdG9hc3Q+XG5cbiAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZSBjdXJzb3ItcG9pbnRlciB3LWF1dG9cIiAoY2xpY2spPVwic2hvd0NvbmZpcm0oKVwiPjwvaT5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvZFNlbGZGb3JtU3RlcE9uZVwiPlxuXG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOb21icmVzJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9uYW1lJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gbm9tYnJlIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddXCJcbiAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbGFzdF9uYW1lJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfbGFzdF9uYW1lJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBhcGVsbGlkbyB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICBbc2VsZWN0Q29kZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtkYXRhXT1cImlkVHlwZXNcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCRldmVudClcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1RpcG8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIHRpcG8gZGUgZG9jdW1lbnRvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ07Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ11cIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZCddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gZG9jdW1lbnRvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddXCJcbiAgICAgICAgW2RhdGFdPVwiZ2VuZGVyc1wiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RHZW5kZXIoJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0VGV4dF09XCInR8OpbmVybydcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2dlbmRlciddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydnZW5kZXInXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGdlbmVybyB2w6FsaWRvLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBvbmZvY3VzPVwiKHRoaXMudHlwZT0nZGF0ZScpXCJcbiAgICAgICAgW2lucHV0VHlwZV09XCInZGF0ZSdcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2JpcnRoZGF0ZSddXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidGZWNoYSBkZSBuYWNpbWllbnRvJ1wiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snYmlydGhkYXRlJ10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1bmEgZmVjaGEgbWF5b3IgZGUgMyBhw7Fvcy48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWVcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NvdW50cnknXVwiXG4gICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLnZhbHVlID09PSBudWxsID8gJ1Bhw61zIGRlIHJlc2lkZW5jaWEnIDogY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWVcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q291bnRyeSgkZXZlbnQpXCJcbiAgICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidQYcOtcyBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY291bnRyeSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjb3VudHJ5J10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1biBwYWlzIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXVwiXG4gICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3RhdGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdEZXBhcnRhbWVudG8gbyBlc3RhZG8nIDogY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlXCJcbiAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RTdGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgW2RhdGFdPVwic3RhdGVzXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidEZXBhcnRhbWVudG8gbyBlc3RhZG8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdGF0ZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gZGVwYXJ0YW1lbnRvIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J11cIlxuICAgICAgICBbc2VsZWN0Q29kZV09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS52YWx1ZSA9PT0gbnVsbCA/ICdDaXVkYWQgZGUgcmVzaWRlbmNpYScgOiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDaXR5KCRldmVudClcIlxuICAgICAgICBbZGF0YV09XCJjaXRpZXNcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0NpdWRhZCBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snY2l0eSddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydjaXR5J10udG91Y2hlZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3IgaW5ncmVzYSB1bmEgY2l1ZGFkIHbDoWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInQ29ycmVvIGVsZWN0csOzbmljbydcIlxuICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS50b3VjaGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBpbmdyZXNhIHVuIGVtYWlsIHZhbGlkby48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ11cIlxuICAgICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlcygkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidJbmRpY2F0aXZvJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUuY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIGluZ3Jlc2EgdW4gaW5kaWNhdGl2byB2YWxpZG8uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ07Dum1lcm8gZGUgdGVsw6lmb25vJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXVwiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ3JhZGUnXS52YWx1ZVwiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcE9uZS5jb250cm9sc1snZ3JhZGUnXVwiXG4gICAgICAgIFtkYXRhXT1cImdyYWRlc1wiXG4gICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RHcmFkZSgkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidHcmFkbyBFZHVjYXRpdm8nXCJcbiAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddLnRvdWNoZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIHNlbGVjY2lvbmEgdW4gZ3JhZG8gZWR1Y2F0aXZvPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodFwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcE9uZS52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48IS0tIDxkaXY+XG4gIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwT25lLnZhbHVlIHwganNvbiB9fTwvcHJlPlxuICA8ZGl2PlxuICAgIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwT25lLnZhbGlkIHwganNvbiB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PiAtLT5cbiJdfQ==
@@ -64,9 +64,10 @@ export class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
64
64
  }
65
65
  searchAvalaibleCourse() {
66
66
  const age = localStorage.getItem('COD SELF - step1(age)');
67
- // console.log(age);
67
+ const grade = localStorage.getItem('COD SELF - step1(grade)');
68
68
  const request = {
69
69
  age: age,
70
+ grade: grade,
70
71
  schedule: this.codSelfFormStepTwo.get('schedule')?.value,
71
72
  possible_start: this.codSelfFormStepTwo.get('to_start')?.value
72
73
  };
@@ -108,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
108
109
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i2.MessageService }]; }, propDecorators: { completed: [{
109
110
  type: Output
110
111
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVy9CLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFVbEUsWUFDVSxFQUFlLEVBQ2YsS0FBd0IsRUFDeEIsY0FBOEI7UUFFdEMsS0FBSyxFQUFFLENBQUM7UUFKQSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVjlCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpELGFBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZ0JBQVcs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LEtBQUssRUFBRSwwREFBMEQ7Z0JBQ2pFLGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNILENBQUM7O3dIQXJHVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixtSkNmeEMsNmdKQXFIQTsyRkR0R2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDRCQUE0QjsrSkFPNUIsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZFN0ZXBzLCBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gfSBmcm9tICcuLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLXN0ZXBzJztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkQ29udHJvbHMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLWNvbnRyb2xzJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvZC1zZWxmLWZvcm0tc3RlcC10d28nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb2RTZWxmRm9ybVN0ZXBUd29Db21wb25lbnQgZXh0ZW5kcyBDb2RTZWxmTWFuYWdlZFN0ZXBzIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cblxuICBAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIGNvZFNlbGZGb3JtU3RlcFR3byE6IEZvcm1Hcm91cFxuICBjb250cm9scyA9IG5ldyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzKCkuY29udHJvbHNbMV07XG4gIHN0YXJ0RGF0ZTEhOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWVzc2FnZUluZm86c3RyaW5nID0gJ0J1c2NhIHVuIHBsYW4gZGVhY3VlcmRvIGEgdHUgZGlzcG9uaWJpbGlkYWQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgfVxuICBuZ09uQ2hhbmdlcygpe1xuICAgIC8vIHRoaXMuaW5pdEZvcm0oKTtcbiAgICAvLyB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10uc2V0VmFsdWUoXCJcIik7XG4gIH1cbiAgaW5pdEZvcm0oKSB7XG5cbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3byA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc2NoZWR1bGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHRvX3N0YXJ0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyBhY2FkZW1pY19wbGFuOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyBjb3Vyc2VfdHlwZTpbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyBhZ3JlZW1lbnRfYnlfY2F0ZWdvcnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLF0sXG4gICAgICAvLyBlbmdsaXNoX2xldmVsOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgLy8gYXZhaWxpYmxlX2NvdXJzZXM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIGNvdXJzZV9tb2RhbGl0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXSxcblxuICAgIH0pO1xuICB9XG4gIGJhY2soKSB7XG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyBhbnRlcmlvclxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMCk7XG4gIH1cbiAgc2VuZEZvcm0oKSB7XG4gICAgLy8gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIC8vIGlmICh0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5pbnZhbGlkKSByZXR1cm47XG5cbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIDNcbiAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KDIpO1xuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygyLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS5zZXRWYWx1ZShsb2NhbFN0b3JhZ2VWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKDIsIGNvbnRyb2wubmFtZSwgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VhcmNoQXZhbGFpYmxlQ291cnNlKCl7XG4gICAgY29uc3QgYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDEoYWdlKScpXG4gICAgLy8gY29uc29sZS5sb2coYWdlKTtcbiAgICBjb25zdCByZXF1ZXN0OmFueT17XG4gICAgICBhZ2U6IGFnZSxcbiAgICAgIHNjaGVkdWxlOiB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5nZXQoJ3NjaGVkdWxlJyk/LnZhbHVlLFxuICAgICAgcG9zc2libGVfc3RhcnQ6IHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmdldCgndG9fc3RhcnQnKT8udmFsdWVcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVxdWVzdCk7XG4gIH1cbiAgdmFsaWRhdGVEYXRlKGRhdGVSZWNpYjogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0ZVJlY2liVHJlYW5mID0gZGF0ZVJlY2liICsgJ1QwMDowMDowMC0wNTowMCc7XG4gICAgY29uc3QgZjEgPSBuZXcgRGF0ZShkYXRlUmVjaWJUcmVhbmYpO1xuICAgIGNvbnN0IGYyID0gbmV3IERhdGUoKTtcbiAgICBpZiAoZjEgPj0gZjIpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlMSA9IGRhdGVSZWNpYjtcbiAgICB9IGVsc2UgaWYgKGYxIDwgZjIpIHtcbiAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHBvc2l0aW9uOiAndG9wLWVuZCcsXG4gICAgICAgIGljb246ICdlcnJvcicsXG4gICAgICAgIHRpdGxlOiAnVGhlIHNlbGVjdGVkIGRhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgZGF0ZS4nLFxuICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgIHRpbWVyOiA1MDAwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblJlamVjdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKCdjb25maXJtJyk7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzaG93Q29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZm9ybVwiPlxuICAgIDxoMj5QbGFuZXM8L2gyPlxuICAgICAgPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIga2V5PVwiY29uZmlybVwiIChvbkNsb3NlKT1cIm9uUmVqZWN0KClcIiBbYmFzZVpJbmRleF09XCIxMFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3FhLmlwdGRldi5jb20uY28vYXNzZXRzL2xvZ29zL3JlYWRpbmcucG5nXCIgc3R5bGU9XCJ3aWR0aDogNjVweDtcIiBzaGFwZT1cImNpcmNsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtOTAwXCI+SmFjb2I8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtbGcgbXktMyB0ZXh0LTkwMFwiPnt7IG1lc3NhZ2VJbmZvIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdG9hc3Q+XG5cbiAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZSBjdXJzb3ItcG9pbnRlciB3LWF1dG9cIiAoY2xpY2spPVwic2hvd0NvbmZpcm0oKVwiPjwvaT5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvZFNlbGZGb3JtU3RlcFR3b1wiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1hcm91bmQgZmxleC13cmFwIGdhcC0yIG0tMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5jZSBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC13cmFwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTZyZW0gaC00cmVtIG0tMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlNlbGVjY2lvbmEgdW4gSG9yYXJpbyBkZXNlYWRvPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBbdGltZU9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJoaDptbVwiXG4gICAgICAgICAgICAgICAgW2hvdXJGb3JtYXRdPVwiJzEyJ1wiXG4gICAgICAgICAgICAgICAgaW5wdXRJZD1cInRpbWVvbmx5XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10pXCJcbiAgICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0ycmVtIGgtNHJlbSBtLTJcIj5cbiAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUG9zaWJsZSBJbmljaW8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWyd0b19zdGFydCddXCJcbiAgICAgICAgICAgICAgKGRhdGVTZWxlY3RlZCk9XCJ2YWxpZGF0ZURhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy00cmVtIGgtNHJlbSBtLTJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBUd28udmFsaWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoQXZhbGFpYmxlQ291cnNlKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWV2ZW5seSBjb2x1bW4tZ2FwLTQgcm93LWdhcC02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctOXJlbSBoLTRyZW0gbS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICA8c3Bhbj5Ib3JhcmlvIGRlc2VhZG8/PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICBbdGltZU9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaGg6bW1cIlxuICAgICAgICAgICAgICBbaG91ckZvcm1hdF09XCInMTInXCJcbiAgICAgICAgICAgICAgaW5wdXRJZD1cInRpbWVvbmx5XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydzY2hlZHVsZSddKVwiXG4gICAgICAgICAgICA+PC9wLWNhbGVuZGFyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctOXJlbSBoLTRyZW0gbS0yXCI+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidQb3NpYmxlIEluaWNpbydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3RvX3N0YXJ0J11cIlxuICAgICAgICAgICAgICAoZGF0ZVNlbGVjdGVkKT1cInZhbGlkYXRlRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ub25lIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgbS0yXCI+XG4gICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBUd28udmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoQXZhbGFpYmxlQ291cnNlKClcIlxuICAgICAgPjwvYnV0dG9uPiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBSaXBwbGVcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tb3V0bGluZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcFR3by52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hBdmFsYWlibGVDb3Vyc2UoKVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUudG91Y2hlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBtdC0xIHB5LTIgYmctcmVkLTEwMCB3LWZ1bGwgYm9yZGVyLXJvdW5kLXhsXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgIHBCdXR0b25cbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1sZWZ0XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgKGNsaWNrKT1cImJhY2soKVwiXG4gICAgICA+PC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgIHBCdXR0b25cbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodFwiXG4gICAgICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwVHdvLnZhbHVlIHwganNvbiB9fTwvcHJlPlxuICA8ZGl2PlxuICAgIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkIHwganNvbiB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVy9CLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFVbEUsWUFDVSxFQUFlLEVBQ2YsS0FBd0IsRUFDeEIsY0FBOEI7UUFFdEMsS0FBSyxFQUFFLENBQUM7UUFKQSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVjlCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpELGFBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZ0JBQVcs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SSxDQUFDLElBQUksQ0FBQztnQkFDUixRQUFRLEVBQUUsU0FBUztnQkFDbkIsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLDBEQUEwRDtnQkFDakUsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BJLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzs7d0hBdkdVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLG1KQ2Z4Qyw2Z0pBcUhBOzJGRHRHYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsNEJBQTRCOytKQU81QixTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlc1R3byB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRDb250cm9scyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtY29udHJvbHMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29kLXNlbGYtZm9ybS1zdGVwLXR3bycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvZFNlbGZGb3JtU3RlcFR3b0NvbXBvbmVudCBleHRlbmRzIENvZFNlbGZNYW5hZ2VkU3RlcHMgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuXG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgY29kU2VsZkZvcm1TdGVwVHdvITogRm9ybUdyb3VwXG4gIGNvbnRyb2xzID0gbmV3IENvZFNlbGZNYW5hZ2VkQ29udHJvbHMoKS5jb250cm9sc1sxXTtcbiAgc3RhcnREYXRlMSE6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBtZXNzYWdlSW5mbzpzdHJpbmcgPSAnQnVzY2EgdW4gcGxhbiBkZWFjdWVyZG8gYSB0dSBkaXNwb25pYmlsaWRhZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICB9XG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgLy8gdGhpcy5pbml0Rm9ybSgpO1xuICAgIC8vIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXS5zZXRWYWx1ZShcIlwiKTtcbiAgfVxuICBpbml0Rm9ybSgpIHtcblxuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzY2hlZHVsZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgdG9fc3RhcnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIGFjYWRlbWljX3BsYW46IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIGNvdXJzZV90eXBlOlsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIGFncmVlbWVudF9ieV9jYXRlZ29yeTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXSxcbiAgICAgIC8vIGVuZ2xpc2hfbGV2ZWw6IFt7dmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZX0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApXV0sXG4gICAgICAvLyBhdmFpbGlibGVfY291cnNlczogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gY291cnNlX21vZGFsaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxdLFxuXG4gICAgfSk7XG4gIH1cbiAgYmFjaygpIHtcbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIGFudGVyaW9yXG4gICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgwKTtcbiAgfVxuICBzZW5kRm9ybSgpIHtcbiAgICAvLyB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgLy8gaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMik7XG4gIH1cblxuICBzdGFydExvY2FsU3RvcmFnZVdvcmsoKSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDIsIGNvbnRyb2wubmFtZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMiwgY29udHJvbC5uYW1lLCB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlQ2hhbmdlcyk7XG4gICAgfSk7XG4gIH1cblxuICBzZWFyY2hBdmFsYWlibGVDb3Vyc2UoKXtcbiAgICBjb25zdCBhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMShhZ2UpJylcbiAgICBjb25zdCBncmFkZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDT0QgU0VMRiAtIHN0ZXAxKGdyYWRlKScpXG4gICAgXG4gICAgY29uc3QgcmVxdWVzdDphbnk9e1xuICAgICAgYWdlOiBhZ2UsXG4gICAgICBncmFkZTogZ3JhZGUsXG4gICAgICBzY2hlZHVsZTogdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uZ2V0KCdzY2hlZHVsZScpPy52YWx1ZSxcbiAgICAgIHBvc3NpYmxlX3N0YXJ0OiB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5nZXQoJ3RvX3N0YXJ0Jyk/LnZhbHVlXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlcXVlc3QpO1xuICB9XG4gIHZhbGlkYXRlRGF0ZShkYXRlUmVjaWI6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGVSZWNpYlRyZWFuZiA9IGRhdGVSZWNpYiArICdUMDA6MDA6MDAtMDU6MDAnO1xuICAgIGNvbnN0IGYxID0gbmV3IERhdGUoZGF0ZVJlY2liVHJlYW5mKTtcbiAgICBjb25zdCBmMiA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKGYxID49IGYyKSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZTEgPSBkYXRlUmVjaWI7XG4gICAgfSBlbHNlIGlmIChmMSA8IGYyKSB7XG4gICAgICBTd2FsLmZpcmUoe1xuICAgICAgICBwb3NpdGlvbjogJ3RvcC1lbmQnLFxuICAgICAgICBpY29uOiAnZXJyb3InLFxuICAgICAgICB0aXRsZTogJ1RoZSBzZWxlY3RlZCBkYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGRhdGUuJyxcbiAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICB0aW1lcjogNTAwMFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25SZWplY3QoKSB7XG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jbGVhcignY29uZmlybScpO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgc2hvd0NvbmZpcm0oKSB7XG4gICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBrZXk6ICdjb25maXJtJywgc3RpY2t5OiB0cnVlLCBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnQ2FuIHlvdSBzZW5kIG1lIHRoZSByZXBvcnQ/JywgbGlmZTogMTAwMDAgfSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItbWFpblwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZvcm1cIj5cbiAgICA8aDI+UGxhbmVzPC9oMj5cbiAgICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiIGtleT1cImNvbmZpcm1cIiAob25DbG9zZSk9XCJvblJlamVjdCgpXCIgW2Jhc2VaSW5kZXhdPVwiMTBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCIgc3R5bGU9XCJmbGV4OiAxXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9xYS5pcHRkZXYuY29tLmNvL2Fzc2V0cy9sb2dvcy9yZWFkaW5nLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDY1cHg7XCIgc2hhcGU9XCJjaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LTkwMFwiPkphY29iPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuXG4gICAgPGkgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUgY3Vyc29yLXBvaW50ZXIgdy1hdXRvXCIgKGNsaWNrKT1cInNob3dDb25maXJtKClcIj48L2k+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjb2RTZWxmRm9ybVN0ZXBUd29cIj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIGZsZXgtd3JhcCBnYXAtMiBtLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luY2UgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy02cmVtIGgtNHJlbSBtLTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZWxlY2Npb25hIHVuIEhvcmFyaW8gZGVzZWFkbzwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgICAgW3RpbWVPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaGg6bW1cIlxuICAgICAgICAgICAgICAgIFtob3VyRm9ybWF0XT1cIicxMidcIlxuICAgICAgICAgICAgICAgIGlucHV0SWQ9XCJ0aW1lb25seVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydzY2hlZHVsZSddKVwiXG4gICAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMnJlbSBoLTRyZW0gbS0yXCI+XG4gICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInZGF0ZSdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1Bvc2libGUgSW5pY2lvJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1sndG9fc3RhcnQnXVwiXG4gICAgICAgICAgICAgIChkYXRlU2VsZWN0ZWQpPVwidmFsaWRhdGVEYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctNHJlbSBoLTRyZW0gbS0yXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEF2YWxhaWJsZUNvdXJzZSgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1ldmVubHkgY29sdW1uLWdhcC00IHJvdy1nYXAtNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTlyZW0gaC00cmVtIG0tMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgPHNwYW4+SG9yYXJpbyBkZXNlYWRvPzwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgW3RpbWVPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImhoOm1tXCJcbiAgICAgICAgICAgICAgW2hvdXJGb3JtYXRdPVwiJzEyJ1wiXG4gICAgICAgICAgICAgIGlucHV0SWQ9XCJ0aW1lb25seVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXSlcIlxuICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTlyZW0gaC00cmVtIG0tMlwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUG9zaWJsZSBJbmljaW8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWyd0b19zdGFydCddXCJcbiAgICAgICAgICAgICAgKGRhdGVTZWxlY3RlZCk9XCJ2YWxpZGF0ZURhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kIG0tMlwiPlxuICAgICAgICA8IS0tIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaEF2YWxhaWJsZUNvdXJzZSgpXCJcbiAgICAgID48L2J1dHRvbj4gLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHBCdXR0b25cbiAgICAgICAgUmlwcGxlXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLW91dGxpbmVkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBUd28udmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoQXZhbGFpYmxlQ291cnNlKClcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTMgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLnRvdWNoZWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCBmb250LWJvbGQgdGV4dC1jZW50ZXIgbXQtMSBweS0yIGJnLXJlZC0xMDAgdy1mdWxsIGJvcmRlci1yb3VuZC14bFwiPnt7IGVycm9yTWVzc2FnZSB9fTwvc3Bhbj4gLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICBwQnV0dG9uXG4gICAgICBpY29uPVwicGkgcGktYXJyb3ctbGVmdFwiXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICBwQnV0dG9uXG4gICAgICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxuICAgICAgKGNsaWNrKT1cInNlbmRGb3JtKClcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2PlxuICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcFR3by52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgPGRpdj5cbiAgICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcFR3by52YWxpZCB8IGpzb24gfX08L3ByZT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -6350,6 +6350,7 @@ class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
6350
6350
  this.messageService = messageService;
6351
6351
  this.completed = new EventEmitter();
6352
6352
  this.genders = [];
6353
+ this.grades = [];
6353
6354
  this.errorMessage = 'Faltan campos por llenar.';
6354
6355
  this.controls = new CodSelfManagedControls().controls[0];
6355
6356
  this.visible = false;
@@ -6435,11 +6436,11 @@ class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
6435
6436
  });
6436
6437
  this.parameterService.GetAllGradeEducation().pipe(map((response) => response.data)).subscribe((grades) => {
6437
6438
  grades.forEach(grade => {
6438
- let genderItem = {
6439
+ let gradesItems = {
6439
6440
  code: grade.code,
6440
6441
  name: grade.grade
6441
6442
  };
6442
- this.grades.push(genderItem);
6443
+ this.grades.push(gradesItems);
6443
6444
  // this.grade = response.data;
6444
6445
  });
6445
6446
  });
@@ -6567,10 +6568,10 @@ class CodSelfFormStepOneComponent extends CodSelfManagedSteps {
6567
6568
  }
6568
6569
  }
6569
6570
  CodSelfFormStepOneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, deps: [{ token: i1$1.FormBuilder }, { token: ParameterService }, { token: i0.ChangeDetectorRef }, { token: i3$1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
6570
- CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { userStudent: "userStudent" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
6571
+ CodSelfFormStepOneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepOneComponent, selector: "app-cod-self-form-step-one", inputs: { userStudent: "userStudent" }, outputs: { completed: "completed" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor selecciona un grado educativo</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i8$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
6571
6572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepOneComponent, decorators: [{
6572
6573
  type: Component,
6573
- args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor ingresa un numero de telefono v\u00E1lido.</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"] }]
6574
+ args: [{ selector: 'app-cod-self-form-step-one', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos Personales</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto\" (click)=\"showConfirm()\"></i>\n <form [formGroup]=\"codSelfFormStepOne\">\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepOne.controls['student_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_name'].invalid && codSelfFormStepOne.controls['student_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un nombre v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepOne.controls['student_last_name']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_last_name'].invalid && codSelfFormStepOne.controls['student_last_name'].touched\">\n <span class=\"error-message\">Por favor ingresa un apellido v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_id_card_type'].value\"\n [control]=\"codSelfFormStepOne.controls['student_id_card_type']\"\n [selectCode]=\"codSelfFormStepOne.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codSelfFormStepOne.controls['student_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card_type'].invalid && codSelfFormStepOne.controls['student_id_card_type'].touched\">\n <span class=\"error-message\">Por favor ingresa un tipo de documento v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codSelfFormStepOne.controls['student_id_card']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_id_card'].invalid && codSelfFormStepOne.controls['student_id_card'].touched\">\n <span class=\"error-message\">Por favor ingresa un documento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['gender'].value\"\n [control]=\"codSelfFormStepOne.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['gender'].invalid && codSelfFormStepOne.controls['gender'].touched\">\n <span class=\"error-message\">Por favor ingresa un genero v\u00E1lido.</span>\n </div>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepOne.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['birthdate'].invalid && codSelfFormStepOne.controls['birthdate'].touched\">\n <span class=\"error-message\">Por favor ingresa una fecha mayor de 3 a\u00F1os.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['country'].value\"\n [control]=\"codSelfFormStepOne.controls['country']\"\n [selectCode]=\"codSelfFormStepOne.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codSelfFormStepOne.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['country'].invalid && codSelfFormStepOne.controls['country'].touched\">\n <span class=\"error-message\">Por favor ingresa un pais v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['state'].value\"\n [control]=\"codSelfFormStepOne.controls['state']\"\n [selectCode]=\"codSelfFormStepOne.controls['state'].value === null ? 'Departamento o estado' : codSelfFormStepOne.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['state'].invalid && codSelfFormStepOne.controls['state'].touched\">\n <span class=\"error-message\">Por favor ingresa un departamento v\u00E1lido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['city'].value\"\n [control]=\"codSelfFormStepOne.controls['city']\"\n [selectCode]=\"codSelfFormStepOne.controls['city'].value === null ? 'Ciudad de residencia' : codSelfFormStepOne.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['city'].invalid && codSelfFormStepOne.controls['city'].touched\">\n <span class=\"error-message\">Por favor ingresa una ciudad v\u00E1lido.</span>\n </div>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codSelfFormStepOne.controls['student_email']\"\n ></ipt-input>\n <div *ngIf=\"codSelfFormStepOne.controls['student_email'].invalid && codSelfFormStepOne.controls['student_email'].touched\">\n <span class=\"error-message\">Por favor ingresa un email valido.</span>\n </div>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['student_phone_indicative'].value\"\n [control]=\"codSelfFormStepOne.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_indicative'].invalid && codSelfFormStepOne.controls['student_phone_indicative'].touched\">\n <span class=\"error-message\">Por favor ingresa un indicativo valido.</span>\n </div>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codSelfFormStepOne.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepOne.controls['grade'].value\"\n [control]=\"codSelfFormStepOne.controls['grade']\"\n [data]=\"grades\"\n (eventSelect)=\"selectGrade($event)\"\n [defaultText]=\"'Grado Educativo'\"\n ></ipt-select>\n <div *ngIf=\"codSelfFormStepOne.controls['student_phone_number'].invalid && codSelfFormStepOne.controls['student_phone_number'].touched\">\n <span class=\"error-message\">Por favor selecciona un grado educativo</span>\n </div>\n </form>\n\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n type=\"submit\"\n [disabled]=\"!codSelfFormStepOne.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n\n</div>\n\n<!-- <div>\n <pre>{{ codSelfFormStepOne.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepOne.valid | json }}</pre>\n </div>\n</div> -->\n", styles: [".container-main{margin:1%}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}\n"] }]
6574
6575
  }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: ParameterService }, { type: i0.ChangeDetectorRef }, { type: i3$1.MessageService }]; }, propDecorators: { userStudent: [{
6575
6576
  type: Input
6576
6577
  }], completed: [{
@@ -6631,9 +6632,10 @@ class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
6631
6632
  searchAvalaibleCourse() {
6632
6633
  var _a, _b;
6633
6634
  const age = localStorage.getItem('COD SELF - step1(age)');
6634
- // console.log(age);
6635
+ const grade = localStorage.getItem('COD SELF - step1(grade)');
6635
6636
  const request = {
6636
6637
  age: age,
6638
+ grade: grade,
6637
6639
  schedule: (_a = this.codSelfFormStepTwo.get('schedule')) === null || _a === void 0 ? void 0 : _a.value,
6638
6640
  possible_start: (_b = this.codSelfFormStepTwo.get('to_start')) === null || _b === void 0 ? void 0 : _b.value
6639
6641
  };