iptdevs-design-system 2.7.84 → 2.7.85

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.
Files changed (80) hide show
  1. package/esm2020/lib/cod/cod-documents-section/cod-documents-section.component.mjs +3 -3
  2. package/esm2020/lib/cod/cod-form/cod-form.component.mjs +13 -13
  3. package/esm2020/lib/cod/cod.module.mjs +15 -13
  4. package/esm2020/lib/cod/logic/calculate-quotes.service.mjs +4 -4
  5. package/esm2020/lib/cod/logic/cod-form-controls.mjs +3 -3
  6. package/esm2020/lib/cod/logic/communicator.service.mjs +3 -3
  7. package/esm2020/lib/cod/logic/local-storage-cod.service.mjs +3 -3
  8. package/esm2020/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.mjs +12 -10
  9. package/esm2020/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.mjs +9 -9
  10. package/esm2020/lib/cod/steps/cod-form-step-one/cod-form-step-one.component.mjs +6 -6
  11. package/esm2020/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.mjs +6 -6
  12. package/esm2020/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.mjs +24 -24
  13. package/esm2020/lib/components/atoms/aside-button/aside-button.component.mjs +4 -4
  14. package/esm2020/lib/components/atoms/button/button.component.mjs +4 -4
  15. package/esm2020/lib/components/atoms/checkbox/checkbox.component.mjs +4 -4
  16. package/esm2020/lib/components/atoms/datalist/datalist.component.mjs +4 -4
  17. package/esm2020/lib/components/atoms/input/input.component.mjs +4 -4
  18. package/esm2020/lib/components/atoms/level-button/level-button.component.mjs +4 -4
  19. package/esm2020/lib/components/atoms/level-text/level-text.component.mjs +3 -3
  20. package/esm2020/lib/components/atoms/loader/loader.component.mjs +4 -4
  21. package/esm2020/lib/components/atoms/radio/radio.component.mjs +5 -5
  22. package/esm2020/lib/components/atoms/select/select.component.mjs +4 -4
  23. package/esm2020/lib/components/atoms/text-link/text-link.component.mjs +3 -3
  24. package/esm2020/lib/components/components.module.mjs +13 -11
  25. package/esm2020/lib/components/forms/create-user-form/create-user-form.component.mjs +9 -9
  26. package/esm2020/lib/components/forms/login-form/login-form.component.mjs +7 -7
  27. package/esm2020/lib/components/material.module.mjs +4 -4
  28. package/esm2020/lib/components/molecules/question-type/edit-question-types.component.mjs +7 -7
  29. package/esm2020/lib/components/molecules/sidenav/sidenav.component.mjs +9 -9
  30. package/esm2020/lib/core/core.module.mjs +4 -4
  31. package/esm2020/lib/core/services/academic-service/academic.service.mjs +3 -3
  32. package/esm2020/lib/core/services/activity-service/activity.service.mjs +3 -3
  33. package/esm2020/lib/core/services/attendance-service/attendance.service.mjs +3 -3
  34. package/esm2020/lib/core/services/budget-service/budget-service.mjs +3 -3
  35. package/esm2020/lib/core/services/calendar-service/calendar.service.mjs +3 -3
  36. package/esm2020/lib/core/services/certificate-service/certificate.service.mjs +3 -3
  37. package/esm2020/lib/core/services/classroom-service/classroom-service.service.mjs +3 -3
  38. package/esm2020/lib/core/services/commercial-service/comercial.service.mjs +3 -3
  39. package/esm2020/lib/core/services/copies.service.mjs +3 -3
  40. package/esm2020/lib/core/services/course-service/course-service.model.mjs +3 -3
  41. package/esm2020/lib/core/services/ekt-service/userekt.service.mjs +3 -3
  42. package/esm2020/lib/core/services/marketing-service/marketing-service.mjs +3 -3
  43. package/esm2020/lib/core/services/notes-service/notes.service.mjs +3 -3
  44. package/esm2020/lib/core/services/parameters-service/parameters.service.mjs +3 -3
  45. package/esm2020/lib/core/services/storage-service/storage-service.mjs +3 -3
  46. package/esm2020/lib/core/services/student-service/student.service.mjs +3 -3
  47. package/esm2020/lib/core/services/switch-service/switch.service.mjs +3 -3
  48. package/esm2020/lib/core/services/test-service/test.service.mjs +3 -3
  49. package/esm2020/lib/core/services/user-service/user-service.mjs +3 -3
  50. package/esm2020/lib/core/utils/base-service/base.service.mjs +3 -3
  51. package/esm2020/lib/core/utils/route-service/route.service.mjs +3 -3
  52. package/esm2020/lib/design-system.module.mjs +10 -8
  53. package/fesm2015/iptdevs-design-system.mjs +232 -225
  54. package/fesm2015/iptdevs-design-system.mjs.map +1 -1
  55. package/fesm2020/iptdevs-design-system.mjs +232 -225
  56. package/fesm2020/iptdevs-design-system.mjs.map +1 -1
  57. package/lib/cod/cod-documents-section/cod-documents-section.component.d.ts +1 -1
  58. package/lib/cod/cod-form/cod-form.component.d.ts +1 -1
  59. package/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.d.ts +2 -1
  60. package/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.d.ts +1 -1
  61. package/lib/cod/steps/cod-form-step-one/cod-form-step-one.component.d.ts +1 -1
  62. package/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.d.ts +1 -1
  63. package/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.d.ts +1 -1
  64. package/lib/components/atoms/aside-button/aside-button.component.d.ts +1 -1
  65. package/lib/components/atoms/button/button.component.d.ts +1 -1
  66. package/lib/components/atoms/checkbox/checkbox.component.d.ts +1 -1
  67. package/lib/components/atoms/datalist/datalist.component.d.ts +1 -1
  68. package/lib/components/atoms/input/input.component.d.ts +1 -1
  69. package/lib/components/atoms/level-button/level-button.component.d.ts +1 -1
  70. package/lib/components/atoms/level-text/level-text.component.d.ts +1 -1
  71. package/lib/components/atoms/loader/loader.component.d.ts +1 -1
  72. package/lib/components/atoms/radio/radio.component.d.ts +1 -1
  73. package/lib/components/atoms/select/select.component.d.ts +1 -1
  74. package/lib/components/atoms/text-link/text-link.component.d.ts +1 -1
  75. package/lib/components/forms/create-user-form/create-user-form.component.d.ts +1 -1
  76. package/lib/components/forms/login-form/login-form.component.d.ts +1 -1
  77. package/lib/components/molecules/question-type/edit-question-types.component.d.ts +1 -1
  78. package/lib/components/molecules/sidenav/sidenav.component.d.ts +1 -1
  79. package/package.json +3 -3
  80. /package/{index.d.ts → iptdevs-design-system.d.ts} +0 -0
@@ -1,13 +1,14 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
+ import { map } from 'rxjs';
3
4
  import { CodFormControls } from '../../logic/cod-form-controls';
4
5
  import { CodFormSteps } from '../../logic/cod-form-steps';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/forms";
7
8
  import * as i2 from "../../../core/services/parameters-service/parameters.service";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "../../../components/atoms/input/input.component";
10
- import * as i5 from "../../../components/atoms/select/select.component";
9
+ import * as i3 from "../../../components/atoms/input/input.component";
10
+ import * as i4 from "../../../components/atoms/select/select.component";
11
+ import * as i5 from "@angular/common";
11
12
  import * as i6 from "primeng/button";
12
13
  export class CodFormStepTwoComponent extends CodFormSteps {
13
14
  constructor(fb, parameterService) {
@@ -52,6 +53,7 @@ export class CodFormStepTwoComponent extends CodFormSteps {
52
53
  this.codFormStepTwo.controls['country'].setValue(this.initialData.student.city[0].country);
53
54
  this.codFormStepTwo.controls['state'].setValue(this.initialData.student.city[0].state);
54
55
  this.codFormStepTwo.controls['city'].setValue(this.initialData.student.city[0].code);
56
+ this.codFormStepTwo.controls['student_address'].setValue(this.initialData.aditional_information.student_address);
55
57
  this.codFormStepTwo.controls['gender'].setValue(this.initialData.student.gender);
56
58
  this.codFormStepTwo.controls['nickname'].setValue(this.initialData.student.nick_name);
57
59
  this.codFormStepTwo.controls['stratum'].setValue(this.initialData.aditional_information.social_stratum);
@@ -155,28 +157,26 @@ export class CodFormStepTwoComponent extends CodFormSteps {
155
157
  this.parameterService.getCivilStatus().subscribe((response) => {
156
158
  this.civilStatus = response.data;
157
159
  });
158
- this.parameterService.getGenders().subscribe((response) => {
159
- this.genders = response.data;
160
- console.log(this.genders);
161
- });
160
+ // this.parameterService.getGenders().subscribe((response) => {
161
+ // this.genders = response.data;
162
+ // console.log(this.genders);
163
+ // });
162
164
  this.parameterService.getAllCities().subscribe((response) => {
163
165
  this.cities = response.data;
164
166
  });
165
167
  this.parameterService.getAllStates().subscribe((response) => {
166
168
  this.states = response.data;
167
169
  });
168
- // this.parameterService.getGenders().pipe(
169
- // map((response: any) => response.data)
170
- // )
171
- // .subscribe((genders: any[]) => {
172
- // genders.forEach(gender => {
173
- // let genderItem = {
174
- // code: gender.code,
175
- // name: gender.name_spanish
176
- // }
177
- // this.genders.push(genderItem)
178
- // })
179
- // })
170
+ this.parameterService.getGenders().pipe(map((response) => response.data))
171
+ .subscribe((genders) => {
172
+ genders.forEach(gender => {
173
+ let genderItem = {
174
+ code: gender.code,
175
+ name: gender.name_spanish
176
+ };
177
+ this.genders.push(genderItem);
178
+ });
179
+ });
180
180
  }
181
181
  sendForm() {
182
182
  this.codFormStepTwo.markAllAsTouched();
@@ -277,14 +277,14 @@ export class CodFormStepTwoComponent extends CodFormSteps {
277
277
  }
278
278
  }
279
279
  }
280
- CodFormStepTwoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepTwoComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ParameterService }], target: i0.ɵɵFactoryTarget.Component });
281
- CodFormStepTwoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodFormStepTwoComponent, selector: "app-cod-form-step-two", inputs: { initialData: "initialData" }, outputs: { changeStepEvent: "changeStepEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepTwo\" class=\"grid\">\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepTwo.controls['student_name']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_id_card_type'].value\"\n [control]=\"codFormStepTwo.controls['student_id_card_type']\"\n [selectCode]=\"codFormStepTwo.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codFormStepTwo.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 <ipt-select\n [initialValue]=\"codFormStepTwo.controls['country'].value\"\n [control]=\"codFormStepTwo.controls['country']\"\n [selectCode]=\"codFormStepTwo.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codFormStepTwo.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['city'].value\"\n [control]=\"codFormStepTwo.controls['city']\"\n [selectCode]=\"codFormStepTwo.controls['city'].value === null ? 'Ciudad de residencia' : codFormStepTwo.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codFormStepTwo.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['gender'].value\"\n [control]=\"codFormStepTwo.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['stratum'].value\"\n [control]=\"codFormStepTwo.controls['stratum']\"\n [data]=\"stratums\"\n (eventSelect)=\"selectStratum($event)\"\n [defaultText]=\"'Estrato'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Grado'\"\n [control]=\"codFormStepTwo.controls['grade']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_phone_indicative'].value\"\n [control]=\"codFormStepTwo.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codFormStepTwo.controls['student_email']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['re_password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codFormStepTwo.controls['student_last_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codFormStepTwo.controls['student_id_card']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['state'].value\"\n [control]=\"codFormStepTwo.controls['state']\"\n [selectCode]=\"codFormStepTwo.controls['state'].value === null ? 'Departamento o estado' : codFormStepTwo.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_address']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Edad'\"\n [control]=\"codFormStepTwo.controls['age']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nickname'\"\n [control]=\"codFormStepTwo.controls['nickname']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_occupation']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['civil_status'].value\"\n [control]=\"codFormStepTwo.controls['civil_status']\"\n [data]=\"civilStatus\"\n (eventSelect)=\"selectCivilStatus($event)\"\n [defaultText]=\"'Estado civil'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codFormStepTwo.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\"></div>\n\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span *ngIf=\"codFormStepTwo.invalid && codFormStepTwo.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span>\n <button type=\"submit\" class=\"ml-auto p-button-sm\" (click)=\"sendForm()\" pButton label=\"Siguiente\" icon=\"pi pi-arrow-right\"></button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal"], outputs: ["dateSelected"] }, { kind: "component", type: i5.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: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] });
282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodFormStepTwoComponent, decorators: [{
280
+ CodFormStepTwoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodFormStepTwoComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ParameterService }], target: i0.ɵɵFactoryTarget.Component });
281
+ CodFormStepTwoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: CodFormStepTwoComponent, selector: "app-cod-form-step-two", inputs: { initialData: "initialData" }, outputs: { changeStepEvent: "changeStepEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepTwo\" class=\"grid\">\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepTwo.controls['student_name']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_id_card_type'].value\"\n [control]=\"codFormStepTwo.controls['student_id_card_type']\"\n [selectCode]=\"codFormStepTwo.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codFormStepTwo.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 <ipt-select\n [initialValue]=\"codFormStepTwo.controls['country'].value\"\n [control]=\"codFormStepTwo.controls['country']\"\n [selectCode]=\"codFormStepTwo.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codFormStepTwo.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['city'].value\"\n [control]=\"codFormStepTwo.controls['city']\"\n [selectCode]=\"codFormStepTwo.controls['city'].value === null ? 'Ciudad de residencia' : codFormStepTwo.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codFormStepTwo.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['gender'].value\"\n [control]=\"codFormStepTwo.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['stratum'].value\"\n [control]=\"codFormStepTwo.controls['stratum']\"\n [data]=\"stratums\"\n (eventSelect)=\"selectStratum($event)\"\n [defaultText]=\"'Estrato'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Grado'\"\n [control]=\"codFormStepTwo.controls['grade']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_phone_indicative'].value\"\n [control]=\"codFormStepTwo.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codFormStepTwo.controls['student_email']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['re_password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codFormStepTwo.controls['student_last_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codFormStepTwo.controls['student_id_card']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['state'].value\"\n [control]=\"codFormStepTwo.controls['state']\"\n [selectCode]=\"codFormStepTwo.controls['state'].value === null ? 'Departamento o estado' : codFormStepTwo.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_address']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Edad'\"\n [control]=\"codFormStepTwo.controls['age']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nickname'\"\n [control]=\"codFormStepTwo.controls['nickname']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_occupation']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['civil_status'].value\"\n [control]=\"codFormStepTwo.controls['civil_status']\"\n [data]=\"civilStatus\"\n (eventSelect)=\"selectCivilStatus($event)\"\n [defaultText]=\"'Estado civil'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codFormStepTwo.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\"></div>\n\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span *ngIf=\"codFormStepTwo.invalid && codFormStepTwo.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span>\n <button type=\"submit\" class=\"ml-auto p-button-sm\" (click)=\"sendForm()\" pButton label=\"Siguiente\" icon=\"pi pi-arrow-right\"></button>\n</div>\n", styles: [""], components: [{ type: i3.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal"], outputs: ["dateSelected"] }, { type: i4.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] });
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodFormStepTwoComponent, decorators: [{
283
283
  type: Component,
284
- args: [{ selector: 'app-cod-form-step-two', template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepTwo\" class=\"grid\">\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepTwo.controls['student_name']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_id_card_type'].value\"\n [control]=\"codFormStepTwo.controls['student_id_card_type']\"\n [selectCode]=\"codFormStepTwo.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codFormStepTwo.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 <ipt-select\n [initialValue]=\"codFormStepTwo.controls['country'].value\"\n [control]=\"codFormStepTwo.controls['country']\"\n [selectCode]=\"codFormStepTwo.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codFormStepTwo.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['city'].value\"\n [control]=\"codFormStepTwo.controls['city']\"\n [selectCode]=\"codFormStepTwo.controls['city'].value === null ? 'Ciudad de residencia' : codFormStepTwo.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codFormStepTwo.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['gender'].value\"\n [control]=\"codFormStepTwo.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['stratum'].value\"\n [control]=\"codFormStepTwo.controls['stratum']\"\n [data]=\"stratums\"\n (eventSelect)=\"selectStratum($event)\"\n [defaultText]=\"'Estrato'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Grado'\"\n [control]=\"codFormStepTwo.controls['grade']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_phone_indicative'].value\"\n [control]=\"codFormStepTwo.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codFormStepTwo.controls['student_email']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['re_password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codFormStepTwo.controls['student_last_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codFormStepTwo.controls['student_id_card']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['state'].value\"\n [control]=\"codFormStepTwo.controls['state']\"\n [selectCode]=\"codFormStepTwo.controls['state'].value === null ? 'Departamento o estado' : codFormStepTwo.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_address']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Edad'\"\n [control]=\"codFormStepTwo.controls['age']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nickname'\"\n [control]=\"codFormStepTwo.controls['nickname']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_occupation']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['civil_status'].value\"\n [control]=\"codFormStepTwo.controls['civil_status']\"\n [data]=\"civilStatus\"\n (eventSelect)=\"selectCivilStatus($event)\"\n [defaultText]=\"'Estado civil'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codFormStepTwo.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\"></div>\n\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span *ngIf=\"codFormStepTwo.invalid && codFormStepTwo.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span>\n <button type=\"submit\" class=\"ml-auto p-button-sm\" (click)=\"sendForm()\" pButton label=\"Siguiente\" icon=\"pi pi-arrow-right\"></button>\n</div>\n" }]
284
+ args: [{ selector: 'app-cod-form-step-two', template: "<form autocomplete=\"off\" [formGroup]=\"codFormStepTwo\" class=\"grid\">\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codFormStepTwo.controls['student_name']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_id_card_type'].value\"\n [control]=\"codFormStepTwo.controls['student_id_card_type']\"\n [selectCode]=\"codFormStepTwo.controls['student_id_card_type'].value === null ? 'Tipo de documento' : codFormStepTwo.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 <ipt-select\n [initialValue]=\"codFormStepTwo.controls['country'].value\"\n [control]=\"codFormStepTwo.controls['country']\"\n [selectCode]=\"codFormStepTwo.controls['country'].value === null ? 'Pa\u00EDs de residencia' : codFormStepTwo.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['city'].value\"\n [control]=\"codFormStepTwo.controls['city']\"\n [selectCode]=\"codFormStepTwo.controls['city'].value === null ? 'Ciudad de residencia' : codFormStepTwo.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codFormStepTwo.controls['birthdate']\"\n [placeHolder]=\"'Fecha de nacimiento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['gender'].value\"\n [control]=\"codFormStepTwo.controls['gender']\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'G\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['stratum'].value\"\n [control]=\"codFormStepTwo.controls['stratum']\"\n [data]=\"stratums\"\n (eventSelect)=\"selectStratum($event)\"\n [defaultText]=\"'Estrato'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Grado'\"\n [control]=\"codFormStepTwo.controls['grade']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['student_phone_indicative'].value\"\n [control]=\"codFormStepTwo.controls['student_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicatives($event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Correo electr\u00F3nico'\"\n [control]=\"codFormStepTwo.controls['student_email']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['re_password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codFormStepTwo.controls['student_last_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de documento'\"\n [control]=\"codFormStepTwo.controls['student_id_card']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['state'].value\"\n [control]=\"codFormStepTwo.controls['state']\"\n [selectCode]=\"codFormStepTwo.controls['state'].value === null ? 'Departamento o estado' : codFormStepTwo.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_address']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Edad'\"\n [control]=\"codFormStepTwo.controls['age']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nickname'\"\n [control]=\"codFormStepTwo.controls['nickname']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"codFormStepTwo.controls['student_occupation']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codFormStepTwo.controls['civil_status'].value\"\n [control]=\"codFormStepTwo.controls['civil_status']\"\n [data]=\"civilStatus\"\n (eventSelect)=\"selectCivilStatus($event)\"\n [defaultText]=\"'Estado civil'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'N\u00FAmero de tel\u00E9fono'\"\n [control]=\"codFormStepTwo.controls['student_phone_number']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"codFormStepTwo.controls['password']\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\"></div>\n\n</form>\n\n<div class=\"flex mt-3 align-items-center gap-3\">\n <span *ngIf=\"codFormStepTwo.invalid && codFormStepTwo.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span>\n <button type=\"submit\" class=\"ml-auto p-button-sm\" (click)=\"sendForm()\" pButton label=\"Siguiente\" icon=\"pi pi-arrow-right\"></button>\n</div>\n", styles: [""] }]
285
285
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ParameterService }]; }, propDecorators: { initialData: [{
286
286
  type: Input
287
287
  }], changeStepEvent: [{
288
288
  type: Output
289
289
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWZvcm0tc3RlcC10d28uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2QtZm9ybS1zdGVwLXR3by5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQTBCLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBR2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFzQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQU85RSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBWTtJQXFCdkQsWUFDVSxFQUFlLEVBQ2YsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSEEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyQmxDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU92RCxpQkFBWSxHQUFXLDJCQUEyQixDQUFDO1FBQ25ELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFJM0IsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUdwQiwwQkFBMEI7UUFDMUIsYUFBUSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBUTdDLENBQUM7SUFFRCxxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGtD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IEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9wYXJhbWV0ZXJzLXNlcnZpY2UvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2RGb3JtQ29udHJvbHMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2QtZm9ybS1jb250cm9scyc7XG5pbXBvcnQgeyBDb2RGb3JtU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlcyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1mb3JtLXN0ZXBzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvZC1mb3JtLXN0ZXAtdHdvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLWZvcm0tc3RlcC10d28uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvZEZvcm1TdGVwVHdvQ29tcG9uZW50IGV4dGVuZHMgQ29kRm9ybVN0ZXBzIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaW5pdGlhbERhdGE/OiBhbnk7XG4gIEBPdXRwdXQoKSBjaGFuZ2VTdGVwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBjb2RGb3JtU3RlcFR3byE6IEZvcm1Hcm91cDtcbiAgY291bnRyeVNlbGVjdGVkOiBhbnk7XG4gIGNvdW50cmllczogYW55O1xuICBzdGF0ZXM6IGFueTtcbiAgY2l0aWVzOiBhbnk7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ0ZhbHRhbiBjYW1wb3MgcG9yIGxsZW5hci4nO1xuICBoYXNFcnJvcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaWRUeXBlczogYW55O1xuICBpbmRpY2F0aXZlczogYW55O1xuICBjaXZpbFN0YXR1czogYW55O1xuICBnZW5kZXJzOiBhbnlbXSA9IFtdO1xuICBzdHJhdHVtczogYW55O1xuXG4gIC8vIENvbnRyb2xzIGRlbCBmb3JtdWxhcmlvXG4gIGNvbnRyb2xzID0gbmV3IENvZEZvcm1Db250cm9scygpLmNvbnRyb2xzWzFdO1xuICBkYXRhQ291bnRyeTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcGFyYW1ldGVyU2VydmljZTogUGFyYW1ldGVyU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xuICAvLyAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgLy8gICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICAvLyAgIHRoaXMudmFsaWRhdGVFcnJvcnMoKVxuICAvLyAgIGlmICh0aGlzLmluaXRpYWxEYXRhKSB0aGlzLnNldERhdGFGcm9tUHJldml1c0NvZCgpO1xuICAvLyAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAvLyAgIHRoaXMuc2VsZWN0Q291bnRyeSh0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgyLCAnY291bnRyeScpKTtcbiAgLy8gfVxuXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICAgIHRoaXMudmFsaWRhdGVFcnJvcnMoKTtcbiAgICB0aGlzLmdldFBhcmFtZXRlcnMoKTtcblxuXG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxEYXRhJ10pIHtcbiAgICAgIGlmICh0aGlzLmluaXRpYWxEYXRhICE9IG51bGwpIHtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5pbml0aWFsRGF0YSk7XG4gICAgICAgIHRoaXMuc2V0RGF0YUZyb21QcmV2aXVzQ29kKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgIGNvbnNvbGUubG9nKCdObyBoYXkgZGF0YSBjYXJnYWRhIHBhcmEgZWwgUGFzbyAyJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RGF0YUZyb21QcmV2aXVzQ29kKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5uYW1lKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5sYXN0X25hbWUpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmlkX2NhcmQpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQuY2l0eVswXS5jb3VudHJ5KTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5jaXR5WzBdLnN0YXRlKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmNpdHlbMF0uY29kZSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snZ2VuZGVyJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmdlbmRlcik7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snbmlja25hbWUnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQubmlja19uYW1lKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHJhdHVtJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5hZGl0aW9uYWxfaW5mb3JtYXRpb24uc29jaWFsX3N0cmF0dW0pO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfb2NjdXBhdGlvbiddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuYWRpdGlvbmFsX2luZm9ybWF0aW9uLnN0dWRlbnRfb2NjdXBhdGlvbik7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snZ3JhZGUnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbi5lZHVjYXRpb25hbF9sZXZlbCk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l2aWxfc3RhdHVzJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5hZGl0aW9uYWxfaW5mb3JtYXRpb24uY2l2aWxfc3RhdHVzKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9waG9uZV9udW1iZXInXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQucGhvbmVfbnVtYmVyKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQuYmlydGhkYXRlKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmVtYWlsKTtcbiAgfVxuXG4gIHZhbGlkYXRlRXJyb3JzKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2VzID0+IHtcbiAgICAgIGlmICh0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnTG9zIG5vbWJyZXMgZGViZW4gdGVuZXIgbcOtbmltbyAzIGNhcmFjdGVyZXMnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdMb3MgYXBlbGxpZG9zIGRlYmVuIHRlbmVyIG3DrW5pbW8gNSBjYXJhY3RlcmVzJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnTGEgY29udHJhc2XDsWEgZGViZSB0ZW5lciBtw61uaW1vIDYgY2FyYWN0ZXJlcyc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3Bhc3N3b3JkJ10udmFsdWUgIT09IHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ10udmFsdWUpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnTGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW4nO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydhZ2UnXS5lcnJvcnMpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmVjaGEgZGUgbmFjaW1pZW50byBubyB2w6FsaWRhJztcbiAgICAgIH1cbiAgICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmFsdGFuIGNhbXBvcyBwb3IgbGxlbmFyJztcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzID0gdGhpcy5yZWFkQW5kV3JpdGVMUygyLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMiwgY29udHJvbC5uYW1lLCB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udmFsdWVDaGFuZ2VzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHN0dWRlbnRfYWRkcmVzczogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIGJpcnRoZGF0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIGNvdW50cnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBzdGF0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIGNpdHk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBzdHVkZW50X2lkX2NhcmRfdHlwZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIHN0dWRlbnRfaWRfY2FyZDogWyAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgIHN0dWRlbnRfbGFzdF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXV0sXG4gICAgICBzdHVkZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildXSxcbiAgICAgIHN0dWRlbnRfZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgIG5pY2tuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBnZW5kZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGFnZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIHN0dWRlbnRfb2NjdXBhdGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc3RyYXR1bTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgZ3JhZGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGNpdmlsX3N0YXR1czogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUpXV0sXG4gICAgICBwYXNzd29yZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNildXSxcbiAgICAgIHJlX3Bhc3N3b3JkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV1dLFxuICAgIH0pO1xuXG4gICAgLy8gQ2FsY3VsYXIgZWRhZCB5IHNldGVhciB2YWxvclxuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2JpcnRoZGF0ZSddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNoYW5nZSkgPT4ge1xuICAgICAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsZXQgYmlydGhkYXkgPSBuZXcgRGF0ZShjaGFuZ2UpO1xuICAgICAgICBsZXQgYWdlID0gdG9kYXkuZ2V0RnVsbFllYXIoKSAtIGJpcnRoZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBtb250aCA9IHRvZGF5LmdldE1vbnRoKCkgLSBiaXJ0aGRheS5nZXRNb250aCgpO1xuXG4gICAgICAgIGlmIChtb250aCA8IDAgfHwgKG1vbnRoID09PSAwICYmIHRvZGF5LmdldERhdGUoKSA8IGJpcnRoZGF5LmdldERhdGUoKSkpIHtcbiAgICAgICAgICBhZ2UtLTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZ2UgPCAzKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRmVjaGEgZGUgbmFjaW1pZW50byBubyB2w6FsaWRhJ1xuICAgICAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2JpcnRoZGF0ZSddLnNldEVycm9ycyh7XG4gICAgICAgICAgICBpbnZhbGlkQWdlOiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydiaXJ0aGRhdGUnXS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydhZ2UnXS5zZXRWYWx1ZShhZ2UpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDYXJkVHlwZXMoJ2NvbCcpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuaWRUeXBlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEluZGljYXRpdmVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5pbmRpY2F0aXZlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgfSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENvdW50cmllcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuY291bnRyaWVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0U3RyYXR1bXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLnN0cmF0dW1zID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q2l2aWxTdGF0dXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdmlsU3RhdHVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0R2VuZGVycygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuZ2VuZGVycyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmdlbmRlcnMpO1xuXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsQ2l0aWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jaXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbFN0YXRlcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc3RhdGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICAvLyB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0R2VuZGVycygpLnBpcGUoXG4gICAgLy8gICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGEpXG4gICAgLy8gKVxuICAgIC8vIC5zdWJzY3JpYmUoKGdlbmRlcnM6IGFueVtdKSA9PiB7XG4gICAgLy8gICBnZW5kZXJzLmZvckVhY2goZ2VuZGVyID0+IHtcbiAgICAvLyAgICAgbGV0IGdlbmRlckl0ZW0gPSB7XG4gICAgLy8gICAgICAgY29kZTogZ2VuZGVyLmNvZGUsXG4gICAgLy8gICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgIC8vICAgICB9XG4gICAgLy8gICAgIHRoaXMuZ2VuZGVycy5wdXNoKGdlbmRlckl0ZW0pXG4gICAgLy8gICB9KVxuICAgIC8vIH0pXG5cbiAgfVxuXG4gIHNlbmRGb3JtKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmNvZEZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY2hhbmdlU3RlcEV2ZW50LmVtaXQoMik7XG4gIH1cblxuICBnZXRTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgdGhpcy5nZXRDaXR5KHN0YXRlKTtcbiAgfVxuXG4gIGdldENpdHkoc3RhdGU6IGFueSkge1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDaXRpZXNCeVN0YXRlKHN0YXRlKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdENpdHkodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ2NpdHknKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBFdmVudG9zIGRlIGxvcyBzZWxlY3RcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcbiAgICBsZXQgaXNvID0gJyc7XG4gICAgaWYgKGNvdW50cnkgPT09ICcyJykgaXNvID0gJ2NvbCc7XG4gICAgZWxzZSBpZiAoY291bnRyeSA9PT0gJzMnKSBpc28gPSAndmVuJztcbiAgICBlbHNlIGlmIChjb3VudHJ5ID09PSAnNCcpIGlzbyA9ICd1c2EnO1xuICAgIGVsc2UgaXNvID0gJyc7XG4gICAgXG4gICAgaWYgKGlzbyAhPSAnJykge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKGNvdW50cnkpO1xuXG4gICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0U3RhdGVzQnlDb3VudHJ5KGlzbykuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRoaXMuc2VsZWN0U3RhdGUodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ3N0YXRlJykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gICAgdGhpcy5jb3VudHJ5U2VsZWN0ZWQgPSBjb3VudHJ5O1xuICB9XG5cbiAgc2VsZWN0U3RhdGUoc3RhdGU6IGFueSkge1xuICAgIGlmIChzdGF0ZSAhPT0gJ0RlcGFydGFtZW50byBvIGVzdGFkbycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUoc3RhdGUpO1xuICAgICAgdGhpcy5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNpdGllcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdENpdHkoY2l0eTogYW55KSB7XG4gICAgaWYgKGNpdHkgIT09ICdDaXVkYWQgZGUgcmVzaWRlbmNpYScpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShjaXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdElkVHlwZShpZFR5cGU6IGFueSkge1xuICAgIGlmIChpZFR5cGUgIT09ICdUaXBvIGRlIGRvY3VtZW50bycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUoaWRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJbmRpY2F0aXZlcyhpbmRpY2F0aXZlOiBhbnkpIHtcbiAgICBpZiAoaW5kaWNhdGl2ZSAhPT0gJ0luZGljYXRpdm8nKSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZShpbmRpY2F0aXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0R2VuZGVyKGdlbmRlcjogYW55KSB7XG4gICAgaWYgKGdlbmRlciAhPT0gJ0fDqW5lcm8nKSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZShnZW5kZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RTdHJhdHVtKHN0cmF0dW06IGFueSkge1xuICAgIGlmIChzdHJhdHVtICE9PSAnRXN0cmF0bycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0cmF0dW0nXS5zZXRWYWx1ZShzdHJhdHVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RyYXR1bSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdENpdmlsU3RhdHVzKGNpdmlsX3N0YXR1czogYW55KSB7XG4gICAgaWYgKGNpdmlsX3N0YXR1cyAhPT0gJ0VzdGFkbyBjaXZpbCcpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdmlsX3N0YXR1cyddLnNldFZhbHVlKGNpdmlsX3N0YXR1cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdmlsX3N0YXR1cyddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJjb2RGb3JtU3RlcFR3b1wiIGNsYXNzPVwiZ3JpZFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICAgIDxpcHQtc2VsZWN0XG4gICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddXCJcbiAgICAgIFtzZWxlY3RDb2RlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSBudWxsID8gJ1RpcG8gZGUgZG9jdW1lbnRvJyA6IGNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCRldmVudClcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgID48L2lwdC1zZWxlY3Q+XG4gICAgPGlwdC1zZWxlY3RcbiAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgIFtzZWxlY3RDb2RlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWUgPT09IG51bGwgPyAnUGHDrXMgZGUgcmVzaWRlbmNpYScgOiBjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDb3VudHJ5KCRldmVudClcIlxuICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgIFtkZWZhdWx0VGV4dF09XCInUGHDrXMgZGUgcmVzaWRlbmNpYSdcIlxuICAgID48L2lwdC1zZWxlY3Q+XG4gICAgPGlwdC1zZWxlY3RcbiAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l0eSddXCJcbiAgICAgIFtzZWxlY3RDb2RlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXR5J10udmFsdWUgPT09IG51bGwgPyAnQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnIDogY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q2l0eSgkZXZlbnQpXCJcbiAgICAgIFtkYXRhXT1cImNpdGllc1wiXG4gICAgICBbZGVmYXVsdFRleHRdPVwiJ0NpdWRhZCBkZSByZXNpZGVuY2lhJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBvbmZvY3VzPVwiKHRoaXMudHlwZT0nZGF0ZScpXCJcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydiaXJ0aGRhdGUnXVwiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0ZlY2hhIGRlIG5hY2ltaWVudG8nXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgIDxpcHQtc2VsZWN0XG4gICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgW2RhdGFdPVwiZ2VuZGVyc1wiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R2VuZGVyKCRldmVudClcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidHw6luZXJvJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RyYXR1bSddLnZhbHVlXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHJhdHVtJ11cIlxuICAgICAgW2RhdGFdPVwic3RyYXR1bXNcIlxuICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFN0cmF0dW0oJGV2ZW50KVwiXG4gICAgICBbZGVmYXVsdFRleHRdPVwiJ0VzdHJhdG8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInR3JhZG8nXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydncmFkZSddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1zZWxlY3RcbiAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZXMoJGV2ZW50KVwiXG4gICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0NvcnJlbyBlbGVjdHLDs25pY28nXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidSZXBldGlyIGNvbnRyYXNlw7FhJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1sncmVfcGFzc3dvcmQnXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ07Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RhdGUnXVwiXG4gICAgICBbc2VsZWN0Q29kZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RhdGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdEZXBhcnRhbWVudG8gbyBlc3RhZG8nIDogY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3RhdGUoJGV2ZW50KVwiXG4gICAgICBbZGF0YV09XCJzdGF0ZXNcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidEZXBhcnRhbWVudG8gbyBlc3RhZG8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInRGlyZWNjacOzbidcIlxuICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfYWRkcmVzcyddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VkYWQnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydhZ2UnXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInTmlja25hbWUnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWyduaWNrbmFtZSddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidPY3VwYWNpw7NuJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9vY2N1cGF0aW9uJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l2aWxfc3RhdHVzJ10udmFsdWVcIlxuICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdmlsX3N0YXR1cyddXCJcbiAgICAgIFtkYXRhXT1cImNpdmlsU3RhdHVzXCJcbiAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDaXZpbFN0YXR1cygkZXZlbnQpXCJcbiAgICAgIFtkZWZhdWx0VGV4dF09XCInRXN0YWRvIGNpdmlsJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInTsO6bWVybyBkZSB0ZWzDqWZvbm8nXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInQ29udHJhc2XDsWEnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydwYXNzd29yZCddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj48L2Rpdj5cblxuPC9mb3JtPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICA8c3BhbiAqbmdJZj1cImNvZEZvcm1TdGVwVHdvLmludmFsaWQgJiYgY29kRm9ybVN0ZXBUd28udG91Y2hlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBtdC0xIHB5LTIgYmctcmVkLTEwMCB3LWZ1bGwgYm9yZGVyLXJvdW5kLXhsXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cIm1sLWF1dG8gcC1idXR0b24tc21cIiAoY2xpY2spPVwic2VuZEZvcm0oKVwiIHBCdXR0b24gbGFiZWw9XCJTaWd1aWVudGVcIiBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIj48L2J1dHRvbj5cbjwvZGl2PlxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWZvcm0tc3RlcC10d28uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2QtZm9ybS1zdGVwLXR3by5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQTBCLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxHQUFHLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFzQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQU85RSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBWTtJQXFCdkQsWUFDVSxFQUFlLEVBQ2YsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSEEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyQmxDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU92RCxpQkFBWSxHQUFXLDJCQUEyQixDQUFDO1FBQ25ELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFJM0IsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUdwQiwwQkFBMEI7UUFDMUIsYUFBUSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lB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LGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQzs7b0hBdFNVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGtNQ1pwQyxxbkxBZ0pBOzJGRHBJYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsdUJBQXVCO2lJQUt4QixXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9wYXJhbWV0ZXJzLXNlcnZpY2UvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2RGb3JtQ29udHJvbHMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2QtZm9ybS1jb250cm9scyc7XG5pbXBvcnQgeyBDb2RGb3JtU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlcyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1mb3JtLXN0ZXBzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvZC1mb3JtLXN0ZXAtdHdvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLWZvcm0tc3RlcC10d28uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvZEZvcm1TdGVwVHdvQ29tcG9uZW50IGV4dGVuZHMgQ29kRm9ybVN0ZXBzIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaW5pdGlhbERhdGE/OiBhbnk7XG4gIEBPdXRwdXQoKSBjaGFuZ2VTdGVwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBjb2RGb3JtU3RlcFR3byE6IEZvcm1Hcm91cDtcbiAgY291bnRyeVNlbGVjdGVkOiBhbnk7XG4gIGNvdW50cmllczogYW55O1xuICBzdGF0ZXM6IGFueTtcbiAgY2l0aWVzOiBhbnk7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ0ZhbHRhbiBjYW1wb3MgcG9yIGxsZW5hci4nO1xuICBoYXNFcnJvcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaWRUeXBlczogYW55O1xuICBpbmRpY2F0aXZlczogYW55O1xuICBjaXZpbFN0YXR1czogYW55O1xuICBnZW5kZXJzOiBhbnlbXSA9IFtdO1xuICBzdHJhdHVtczogYW55O1xuXG4gIC8vIENvbnRyb2xzIGRlbCBmb3JtdWxhcmlvXG4gIGNvbnRyb2xzID0gbmV3IENvZEZvcm1Db250cm9scygpLmNvbnRyb2xzWzFdO1xuICBkYXRhQ291bnRyeTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcGFyYW1ldGVyU2VydmljZTogUGFyYW1ldGVyU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xuICAvLyAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgLy8gICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICAvLyAgIHRoaXMudmFsaWRhdGVFcnJvcnMoKVxuICAvLyAgIGlmICh0aGlzLmluaXRpYWxEYXRhKSB0aGlzLnNldERhdGFGcm9tUHJldml1c0NvZCgpO1xuICAvLyAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAvLyAgIHRoaXMuc2VsZWN0Q291bnRyeSh0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgyLCAnY291bnRyeScpKTtcbiAgLy8gfVxuXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICAgIHRoaXMudmFsaWRhdGVFcnJvcnMoKTtcbiAgICB0aGlzLmdldFBhcmFtZXRlcnMoKTtcblxuXG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxEYXRhJ10pIHtcbiAgICAgIGlmICh0aGlzLmluaXRpYWxEYXRhICE9IG51bGwpIHtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5pbml0aWFsRGF0YSk7XG4gICAgICAgIHRoaXMuc2V0RGF0YUZyb21QcmV2aXVzQ29kKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgIGNvbnNvbGUubG9nKCdObyBoYXkgZGF0YSBjYXJnYWRhIHBhcmEgZWwgUGFzbyAyJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RGF0YUZyb21QcmV2aXVzQ29kKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5uYW1lKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5sYXN0X25hbWUpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmlkX2NhcmQpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQuY2l0eVswXS5jb3VudHJ5KTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5jaXR5WzBdLnN0YXRlKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5zdHVkZW50LmNpdHlbMF0uY29kZSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9hZGRyZXNzJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5hZGl0aW9uYWxfaW5mb3JtYXRpb24uc3R1ZGVudF9hZGRyZXNzKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQuZ2VuZGVyKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWyduaWNrbmFtZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5uaWNrX25hbWUpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0cmF0dW0nXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbi5zb2NpYWxfc3RyYXR1bSk7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9vY2N1cGF0aW9uJ10uc2V0VmFsdWUodGhpcy5pbml0aWFsRGF0YS5hZGl0aW9uYWxfaW5mb3JtYXRpb24uc3R1ZGVudF9vY2N1cGF0aW9uKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydncmFkZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuYWRpdGlvbmFsX2luZm9ybWF0aW9uLmVkdWNhdGlvbmFsX2xldmVsKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXZpbF9zdGF0dXMnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLmFkaXRpb25hbF9pbmZvcm1hdGlvbi5jaXZpbF9zdGF0dXMpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5waG9uZV9pbmRpY2F0aXZlKTtcbiAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5waG9uZV9udW1iZXIpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2JpcnRoZGF0ZSddLnNldFZhbHVlKHRoaXMuaW5pdGlhbERhdGEuc3R1ZGVudC5iaXJ0aGRhdGUpO1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfZW1haWwnXS5zZXRWYWx1ZSh0aGlzLmluaXRpYWxEYXRhLnN0dWRlbnQuZW1haWwpO1xuICB9XG5cbiAgdmFsaWRhdGVFcnJvcnMoKSB7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgaWYgKHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfbmFtZSddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdMb3Mgbm9tYnJlcyBkZWJlbiB0ZW5lciBtw61uaW1vIDMgY2FyYWN0ZXJlcyc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0xvcyBhcGVsbGlkb3MgZGViZW4gdGVuZXIgbcOtbmltbyA1IGNhcmFjdGVyZXMnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydwYXNzd29yZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdMYSBjb250cmFzZcOxYSBkZWJlIHRlbmVyIG3DrW5pbW8gNiBjYXJhY3RlcmVzJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1sncGFzc3dvcmQnXS52YWx1ZSAhPT0gdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1sncmVfcGFzc3dvcmQnXS52YWx1ZSkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdMYXMgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbic7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2FnZSddLmVycm9ycykge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdGZWNoYSBkZSBuYWNpbWllbnRvIG5vIHbDoWxpZGEnO1xuICAgICAgfVxuICAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdGYWx0YW4gY2FtcG9zIHBvciBsbGVuYXInO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBzdGFydExvY2FsU3RvcmFnZVdvcmsoKSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXMgPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDIsIGNvbnRyb2wubmFtZSk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uc2V0VmFsdWUobG9jYWxTdG9yYWdlVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5saXN0ZW5Gb3JtQ2hhbmdlcygyLCBjb250cm9sLm5hbWUsIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3byA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgc3R1ZGVudF9hZGRyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgYmlydGhkYXRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgY291bnRyeTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIHN0YXRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgY2l0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFtdXSxcbiAgICAgIHN0dWRlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9pZF9jYXJkOiBbICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgc3R1ZGVudF9sYXN0X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildXSxcbiAgICAgIHN0dWRlbnRfbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV1dLFxuICAgICAgc3R1ZGVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgbmlja25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGdlbmRlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgYWdlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW11dLFxuICAgICAgc3R1ZGVudF9vY2N1cGF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzdHJhdHVtOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBncmFkZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgY2l2aWxfc3RhdHVzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzdHVkZW50X3Bob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbXV0sXG4gICAgICBzdHVkZW50X3Bob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV1dLFxuICAgICAgcmVfcGFzc3dvcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpXV0sXG4gICAgfSk7XG5cbiAgICAvLyBDYWxjdWxhciBlZGFkIHkgc2V0ZWFyIHZhbG9yXG4gICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snYmlydGhkYXRlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoY2hhbmdlKSA9PiB7XG4gICAgICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGxldCBiaXJ0aGRheSA9IG5ldyBEYXRlKGNoYW5nZSk7XG4gICAgICAgIGxldCBhZ2UgPSB0b2RheS5nZXRGdWxsWWVhcigpIC0gYmlydGhkYXkuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgbGV0IG1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKSAtIGJpcnRoZGF5LmdldE1vbnRoKCk7XG5cbiAgICAgICAgaWYgKG1vbnRoIDwgMCB8fCAobW9udGggPT09IDAgJiYgdG9kYXkuZ2V0RGF0ZSgpIDwgYmlydGhkYXkuZ2V0RGF0ZSgpKSkge1xuICAgICAgICAgIGFnZS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFnZSA8IDMpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdGZWNoYSBkZSBuYWNpbWllbnRvIG5vIHbDoWxpZGEnXG4gICAgICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snYmlydGhkYXRlJ10uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgIGludmFsaWRBZ2U6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2JpcnRoZGF0ZSddLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2FnZSddLnNldFZhbHVlKGFnZSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldENhcmRUeXBlcygnY29sJykuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5pZFR5cGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0SW5kaWNhdGl2ZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmluZGljYXRpdmVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0Q291bnRyaWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jb3VudHJpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRTdHJhdHVtcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc3RyYXR1bXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDaXZpbFN0YXR1cygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuY2l2aWxTdGF0dXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuICAgIC8vIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRHZW5kZXJzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgIC8vICAgdGhpcy5nZW5kZXJzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAvLyAgIGNvbnNvbGUubG9nKHRoaXMuZ2VuZGVycyk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsQ2l0aWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5jaXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbFN0YXRlcygpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc3RhdGVzID0gcmVzcG9uc2UuZGF0YTtcbiAgICB9KTtcbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0R2VuZGVycygpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGEpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKGdlbmRlcnM6IGFueVtdKSA9PiB7XG4gICAgICBnZW5kZXJzLmZvckVhY2goZ2VuZGVyID0+IHtcbiAgICAgICAgbGV0IGdlbmRlckl0ZW0gPSB7XG4gICAgICAgICAgY29kZTogZ2VuZGVyLmNvZGUsXG4gICAgICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2VuZGVycy5wdXNoKGdlbmRlckl0ZW0pXG4gICAgICB9KVxuICAgIH0pXG5cbiAgfVxuXG4gIHNlbmRGb3JtKCkge1xuICAgIHRoaXMuY29kRm9ybVN0ZXBUd28ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmNvZEZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY2hhbmdlU3RlcEV2ZW50LmVtaXQoMik7XG4gIH1cblxuICBnZXRTdGF0ZShzdGF0ZTogYW55KSB7XG4gICAgdGhpcy5nZXRDaXR5KHN0YXRlKTtcbiAgfVxuXG4gIGdldENpdHkoc3RhdGU6IGFueSkge1xuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRDaXRpZXNCeVN0YXRlKHN0YXRlKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmNpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdENpdHkodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ2NpdHknKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBFdmVudG9zIGRlIGxvcyBzZWxlY3RcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcbiAgICBsZXQgaXNvID0gJyc7XG4gICAgaWYgKGNvdW50cnkgPT09ICcyJykgaXNvID0gJ2NvbCc7XG4gICAgZWxzZSBpZiAoY291bnRyeSA9PT0gJzMnKSBpc28gPSAndmVuJztcbiAgICBlbHNlIGlmIChjb3VudHJ5ID09PSAnNCcpIGlzbyA9ICd1c2EnO1xuICAgIGVsc2UgaXNvID0gJyc7XG4gICAgXG4gICAgaWYgKGlzbyAhPSAnJykge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKGNvdW50cnkpO1xuXG4gICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0U3RhdGVzQnlDb3VudHJ5KGlzbykuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRoaXMuc2VsZWN0U3RhdGUodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ3N0YXRlJykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gICAgdGhpcy5jb3VudHJ5U2VsZWN0ZWQgPSBjb3VudHJ5O1xuICB9XG5cbiAgc2VsZWN0U3RhdGUoc3RhdGU6IGFueSkge1xuICAgIGlmIChzdGF0ZSAhPT0gJ0RlcGFydGFtZW50byBvIGVzdGFkbycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUoc3RhdGUpO1xuICAgICAgdGhpcy5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNpdGllcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdENpdHkoY2l0eTogYW55KSB7XG4gICAgaWYgKGNpdHkgIT09ICdDaXVkYWQgZGUgcmVzaWRlbmNpYScpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShjaXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdElkVHlwZShpZFR5cGU6IGFueSkge1xuICAgIGlmIChpZFR5cGUgIT09ICdUaXBvIGRlIGRvY3VtZW50bycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfaWRfY2FyZF90eXBlJ10uc2V0VmFsdWUoaWRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkX3R5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJbmRpY2F0aXZlcyhpbmRpY2F0aXZlOiBhbnkpIHtcbiAgICBpZiAoaW5kaWNhdGl2ZSAhPT0gJ0luZGljYXRpdm8nKSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXS5zZXRWYWx1ZShpbmRpY2F0aXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0R2VuZGVyKGdlbmRlcjogYW55KSB7XG4gICAgaWYgKGdlbmRlciAhPT0gJ0fDqW5lcm8nKSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZShnZW5kZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RTdHJhdHVtKHN0cmF0dW06IGFueSkge1xuICAgIGlmIChzdHJhdHVtICE9PSAnRXN0cmF0bycpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0cmF0dW0nXS5zZXRWYWx1ZShzdHJhdHVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RyYXR1bSddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdENpdmlsU3RhdHVzKGNpdmlsX3N0YXR1czogYW55KSB7XG4gICAgaWYgKGNpdmlsX3N0YXR1cyAhPT0gJ0VzdGFkbyBjaXZpbCcpIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdmlsX3N0YXR1cyddLnNldFZhbHVlKGNpdmlsX3N0YXR1cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdmlsX3N0YXR1cyddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJjb2RGb3JtU3RlcFR3b1wiIGNsYXNzPVwiZ3JpZFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ05vbWJyZXMnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X25hbWUnXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICAgIDxpcHQtc2VsZWN0XG4gICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddXCJcbiAgICAgIFtzZWxlY3RDb2RlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSBudWxsID8gJ1RpcG8gZGUgZG9jdW1lbnRvJyA6IGNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCRldmVudClcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgID48L2lwdC1zZWxlY3Q+XG4gICAgPGlwdC1zZWxlY3RcbiAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgIFtzZWxlY3RDb2RlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWUgPT09IG51bGwgPyAnUGHDrXMgZGUgcmVzaWRlbmNpYScgOiBjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDb3VudHJ5KCRldmVudClcIlxuICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgIFtkZWZhdWx0VGV4dF09XCInUGHDrXMgZGUgcmVzaWRlbmNpYSdcIlxuICAgID48L2lwdC1zZWxlY3Q+XG4gICAgPGlwdC1zZWxlY3RcbiAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l0eSddXCJcbiAgICAgIFtzZWxlY3RDb2RlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydjaXR5J10udmFsdWUgPT09IG51bGwgPyAnQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnIDogY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q2l0eSgkZXZlbnQpXCJcbiAgICAgIFtkYXRhXT1cImNpdGllc1wiXG4gICAgICBbZGVmYXVsdFRleHRdPVwiJ0NpdWRhZCBkZSByZXNpZGVuY2lhJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBvbmZvY3VzPVwiKHRoaXMudHlwZT0nZGF0ZScpXCJcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydiaXJ0aGRhdGUnXVwiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0ZlY2hhIGRlIG5hY2ltaWVudG8nXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgIDxpcHQtc2VsZWN0XG4gICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgW2RhdGFdPVwiZ2VuZGVyc1wiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R2VuZGVyKCRldmVudClcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidHw6luZXJvJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RyYXR1bSddLnZhbHVlXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHJhdHVtJ11cIlxuICAgICAgW2RhdGFdPVwic3RyYXR1bXNcIlxuICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFN0cmF0dW0oJGV2ZW50KVwiXG4gICAgICBbZGVmYXVsdFRleHRdPVwiJ0VzdHJhdG8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInR3JhZG8nXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydncmFkZSddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1zZWxlY3RcbiAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SW5kaWNhdGl2ZXMoJGV2ZW50KVwiXG4gICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0NvcnJlbyBlbGVjdHLDs25pY28nXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2VtYWlsJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidSZXBldGlyIGNvbnRyYXNlw7FhJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1sncmVfcGFzc3dvcmQnXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X2xhc3RfbmFtZSddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ07Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9pZF9jYXJkJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RhdGUnXVwiXG4gICAgICBbc2VsZWN0Q29kZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3RhdGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdEZXBhcnRhbWVudG8gbyBlc3RhZG8nIDogY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3RhdGUoJGV2ZW50KVwiXG4gICAgICBbZGF0YV09XCJzdGF0ZXNcIlxuICAgICAgW2RlZmF1bHRUZXh0XT1cIidEZXBhcnRhbWVudG8gbyBlc3RhZG8nXCJcbiAgICA+PC9pcHQtc2VsZWN0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInRGlyZWNjacOzbidcIlxuICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ3N0dWRlbnRfYWRkcmVzcyddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VkYWQnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydhZ2UnXVwiXG4gICAgPjwvaXB0LWlucHV0PlxuICAgIDxpcHQtaW5wdXRcbiAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInTmlja25hbWUnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWyduaWNrbmFtZSddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIidPY3VwYWNpw7NuJ1wiXG4gICAgICBbY29udHJvbF09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snc3R1ZGVudF9vY2N1cGF0aW9uJ11cIlxuICAgID48L2lwdC1pbnB1dD5cbiAgICA8aXB0LXNlbGVjdFxuICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RGb3JtU3RlcFR3by5jb250cm9sc1snY2l2aWxfc3RhdHVzJ10udmFsdWVcIlxuICAgICAgW2NvbnRyb2xdPVwiY29kRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NpdmlsX3N0YXR1cyddXCJcbiAgICAgIFtkYXRhXT1cImNpdmlsU3RhdHVzXCJcbiAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDaXZpbFN0YXR1cygkZXZlbnQpXCJcbiAgICAgIFtkZWZhdWx0VGV4dF09XCInRXN0YWRvIGNpdmlsJ1wiXG4gICAgPjwvaXB0LXNlbGVjdD5cbiAgICA8aXB0LWlucHV0XG4gICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInTsO6bWVybyBkZSB0ZWzDqWZvbm8nXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydzdHVkZW50X3Bob25lX251bWJlciddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPGlwdC1pbnB1dFxuICAgICAgW2lucHV0VHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInQ29udHJhc2XDsWEnXCJcbiAgICAgIFtjb250cm9sXT1cImNvZEZvcm1TdGVwVHdvLmNvbnRyb2xzWydwYXNzd29yZCddXCJcbiAgICA+PC9pcHQtaW5wdXQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj48L2Rpdj5cblxuPC9mb3JtPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICA8c3BhbiAqbmdJZj1cImNvZEZvcm1TdGVwVHdvLmludmFsaWQgJiYgY29kRm9ybVN0ZXBUd28udG91Y2hlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBtdC0xIHB5LTIgYmctcmVkLTEwMCB3LWZ1bGwgYm9yZGVyLXJvdW5kLXhsXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cIm1sLWF1dG8gcC1idXR0b24tc21cIiAoY2xpY2spPVwic2VuZEZvcm0oKVwiIHBCdXR0b24gbGFiZWw9XCJTaWd1aWVudGVcIiBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIj48L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -9,8 +9,8 @@ export class AsideButtonComponent {
9
9
  this.isClicked.emit(true);
10
10
  }
11
11
  }
12
- AsideButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: AsideButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- AsideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: AsideButtonComponent, selector: "ipt-aside-button", inputs: { icon: "icon", text: "text", buttonActive: "buttonActive" }, outputs: { isClicked: "isClicked" }, ngImport: i0, template: `
12
+ AsideButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: AsideButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ AsideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: AsideButtonComponent, selector: "ipt-aside-button", inputs: { icon: "icon", text: "text", buttonActive: "buttonActive" }, outputs: { isClicked: "isClicked" }, ngImport: i0, template: `
14
14
  <div [ngSwitch]="buttonActive">
15
15
  <a *ngSwitchCase="0" class="flex-item-menu__link" (click)="clickAction()">
16
16
  <img src="{{ icon }}" alt="icon_url" />
@@ -22,8 +22,8 @@ AsideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
22
22
  <p>{{ text }}</p>
23
23
  </a>
24
24
  </div>
25
- `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media (min-width: 320px){.flex-item-menu__link{cursor:pointer;width:-webkit-fill-available;width:-moz-available;text-decoration:none;display:flex;justify-items:center;padding:.4rem 1rem;transition:all .3s ease 0s;border-radius:30px;margin:15px}.flex-item-menu__link img{cursor:pointer;width:1.4rem;height:1.4rem}.flex-item-menu__link p{cursor:pointer;display:inline;font-weight:500;font-family:Poppins,sans-serif;font-size:.8rem;padding:0 .8rem;margin:auto 0;color:#fff}a:hover,a:focus,.flex-item-menu__link:hover,.flex-item-menu__link p:focus{color:#fff;background-color:#ffffff4f;-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);box-shadow:#0006 0 30px 90px;border-radius:50px}.flex-item-img{width:2.5rem;height:2.5rem;padding:.4rem}.flex-item-active{box-shadow:#0006 0 30px 90px;background:transparent;border:1px solid white}}@media (min-width: 1024px){.flex-item-menu__link{padding:.4rem 1rem}.flex-item-menu__link:focus{border:1px solid white}.flex-item-menu__link img{cursor:pointer;width:1.6rem;height:1.6rem}.flex-item-menu__link p{font-size:1rem;color:#fff}a:hover,a:focus,.flex-item-menu__link:hover,.flex-item-menu__link p:focus{color:#fff;background-color:#ffffff4f;-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);box-shadow:#0006 0 30px 90px}.flex-item-img{width:2.5rem;height:2.5rem;padding:.4rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: AsideButtonComponent, decorators: [{
25
+ `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media (min-width: 320px){.flex-item-menu__link{cursor:pointer;width:-webkit-fill-available;width:-moz-available;text-decoration:none;display:flex;justify-items:center;padding:.4rem 1rem;transition:all .3s ease 0s;border-radius:30px;margin:15px}.flex-item-menu__link img{cursor:pointer;width:1.4rem;height:1.4rem}.flex-item-menu__link p{cursor:pointer;display:inline;font-weight:500;font-family:Poppins,sans-serif;font-size:.8rem;padding:0 .8rem;margin:auto 0;color:#fff}a:hover,a:focus,.flex-item-menu__link:hover,.flex-item-menu__link p:focus{color:#fff;background-color:#ffffff4f;-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);box-shadow:#0006 0 30px 90px;border-radius:50px}.flex-item-img{width:2.5rem;height:2.5rem;padding:.4rem}.flex-item-active{box-shadow:#0006 0 30px 90px;background:transparent;border:1px solid white}}@media (min-width: 1024px){.flex-item-menu__link{padding:.4rem 1rem}.flex-item-menu__link:focus{border:1px solid white}.flex-item-menu__link img{cursor:pointer;width:1.6rem;height:1.6rem}.flex-item-menu__link p{font-size:1rem;color:#fff}a:hover,a:focus,.flex-item-menu__link:hover,.flex-item-menu__link p:focus{color:#fff;background-color:#ffffff4f;-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);box-shadow:#0006 0 30px 90px}.flex-item-img{width:2.5rem;height:2.5rem;padding:.4rem}}\n"], directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: AsideButtonComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'ipt-aside-button', template: `
29
29
  <div [ngSwitch]="buttonActive">
@@ -17,8 +17,8 @@ export class ButtonComponent {
17
17
  return ['ipt-button', `ipt-button--${this.size}`, mode];
18
18
  }
19
19
  }
20
- ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: ButtonComponent, selector: "ipt-button", inputs: { primary: "primary", size: "size", label: "label", buttonType: "buttonType", isEnabled: "isEnabled" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `<button *ngIf="isEnabled"
20
+ ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: ButtonComponent, selector: "ipt-button", inputs: { primary: "primary", size: "size", label: "label", buttonType: "buttonType", isEnabled: "isEnabled" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `<button *ngIf="isEnabled"
22
22
  type="{{ buttonType }}"
23
23
  (click)="onClick.emit($event)"
24
24
  [ngClass]="classes"
@@ -31,8 +31,8 @@ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
31
31
  [ngClass]="classes"
32
32
  >
33
33
  {{ label }}
34
- </button>`, isInline: true, styles: [".ipt-button{font-family:Poppins,sans-serif;font-weight:700;border:0;border-radius:12px;cursor:pointer;display:inline-block;line-height:1;transition:.4s;width:100%;box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset}.ipt-button:hover{box-shadow:0 10px 20px #1b1b1b80;transform:translateY(-3px)}.ipt-button:active{transform:scale(.99)}.ipt-button--primary{color:#fff;background-color:#1c77f7}.ipt-button--primary-disabled{color:gray;background-color:#fff;border:1px solid gray;box-shadow:none;cursor:not-allowed}.ipt-button--primary-disabled:hover{box-shadow:none;transform:translateY(0)}.ipt-button--secondary{color:#1c77f7;background-color:#fff;box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset}.ipt-button--small{font-size:12px;padding:10px 16px}.ipt-button--medium{font-size:14px;padding:11px 20px}.ipt-button--large{font-size:16px;padding:12px 24px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: ButtonComponent, decorators: [{
34
+ </button>`, isInline: true, styles: [".ipt-button{font-family:Poppins,sans-serif;font-weight:700;border:0;border-radius:12px;cursor:pointer;display:inline-block;line-height:1;transition:.4s;width:100%;box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset}.ipt-button:hover{box-shadow:0 10px 20px #1b1b1b80;transform:translateY(-3px)}.ipt-button:active{transform:scale(.99)}.ipt-button--primary{color:#fff;background-color:#1c77f7}.ipt-button--primary-disabled{color:gray;background-color:#fff;border:1px solid gray;box-shadow:none;cursor:not-allowed}.ipt-button--primary-disabled:hover{box-shadow:none;transform:translateY(0)}.ipt-button--secondary{color:#1c77f7;background-color:#fff;box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset}.ipt-button--small{font-size:12px;padding:10px 16px}.ipt-button--medium{font-size:14px;padding:11px 20px}.ipt-button--large{font-size:16px;padding:12px 24px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: ButtonComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{ selector: 'ipt-button', template: `<button *ngIf="isEnabled"
38
38
  type="{{ buttonType }}"
@@ -12,8 +12,8 @@ export class CheckboxComponent {
12
12
  }
13
13
  }
14
14
  }
15
- CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CheckboxComponent, selector: "ipt-checkbox", inputs: { checkboxOption: "checkboxOption", control: "control" }, outputs: { onChecked: "onChecked" }, ngImport: i0, template: `
15
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: CheckboxComponent, selector: "ipt-checkbox", inputs: { checkboxOption: "checkboxOption", control: "control" }, outputs: { onChecked: "onChecked" }, ngImport: i0, template: `
17
17
  <label class="cont">
18
18
  <input
19
19
  class="checkbox"
@@ -23,8 +23,8 @@ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
23
23
  type="checkbox">
24
24
  <span></span>
25
25
  </label>
26
- `, isInline: true, styles: [".cont{display:flex;align-items:center;transform:scale(1)}@media screen and (min-width: 320px){input[type=checkbox]{height:1rem;width:1.1rem;margin:5px;display:inline-block;-webkit-appearance:none;appearance:none;position:relative;background-color:#1c77f733;border-radius:15%;cursor:pointer;overflow:hidden}input[type=checkbox]:after{content:\"\";display:block;height:.4rem;width:.2rem;border-bottom:.21rem solid white;border-right:.21rem solid white;opacity:0;transform:rotate(45deg) translate(-50%,-50%);position:absolute;top:50%;left:20%;transition:.25s ease}input[type=checkbox]:before{content:\"\";display:block;height:0;width:0;background-color:#1c77f7;border-radius:50%;opacity:.5;transform:translate(-50%,-50%);position:absolute;top:50%;left:50%;transition:.3s ease}input[type=checkbox]:checked:before{height:130%;width:130%;opacity:100%}input[type=checkbox]:checked:after{opacity:100%}span{font-size:1rem}}@media screen and (min-width: 375px){input[type=checkbox]{height:1.2rem;width:1.3rem}input[type=checkbox]:after{height:.5rem;width:.2rem;border-bottom:.21rem solid white;border-right:.21rem solid white}}@media screen and (min-width: 1024px){input[type=checkbox]{height:1.3rem;width:1.4rem}input[type=checkbox]:after{height:.6rem;width:.3rem;border-bottom:.21rem solid white;border-right:.21rem solid white}}\n"], dependencies: [{ kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CheckboxComponent, decorators: [{
26
+ `, isInline: true, styles: [".cont{display:flex;align-items:center;transform:scale(1)}@media screen and (min-width: 320px){input[type=checkbox]{height:1rem;width:1.1rem;margin:5px;display:inline-block;-webkit-appearance:none;appearance:none;position:relative;background-color:#1c77f733;border-radius:15%;cursor:pointer;overflow:hidden}input[type=checkbox]:after{content:\"\";display:block;height:.4rem;width:.2rem;border-bottom:.21rem solid white;border-right:.21rem solid white;opacity:0;transform:rotate(45deg) translate(-50%,-50%);position:absolute;top:50%;left:20%;transition:.25s ease}input[type=checkbox]:before{content:\"\";display:block;height:0;width:0;background-color:#1c77f7;border-radius:50%;opacity:.5;transform:translate(-50%,-50%);position:absolute;top:50%;left:50%;transition:.3s ease}input[type=checkbox]:checked:before{height:130%;width:130%;opacity:100%}input[type=checkbox]:checked:after{opacity:100%}span{font-size:1rem}}@media screen and (min-width: 375px){input[type=checkbox]{height:1.2rem;width:1.3rem}input[type=checkbox]:after{height:.5rem;width:.2rem;border-bottom:.21rem solid white;border-right:.21rem solid white}}@media screen and (min-width: 1024px){input[type=checkbox]{height:1.3rem;width:1.4rem}input[type=checkbox]:after{height:.6rem;width:.3rem;border-bottom:.21rem solid white;border-right:.21rem solid white}}\n"], directives: [{ type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CheckboxComponent, decorators: [{
28
28
  type: Component,
29
29
  args: [{ selector: 'ipt-checkbox', template: `
30
30
  <label class="cont">
@@ -33,8 +33,8 @@ export class DatalistComponent {
33
33
  return this.clicked === false ? 'label' : 'labelUp';
34
34
  }
35
35
  }
36
- DatalistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: DatalistComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
37
- DatalistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: DatalistComponent, selector: "ipt-datalist", inputs: { datalistId: "datalistId", datalistData: "datalistData", placeHolder: "placeHolder", validateText: "validateText", initalData: "initalData", disabledSel: "disabledSel" }, outputs: { isChanged: "isChanged" }, ngImport: i0, template: `
36
+ DatalistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DatalistComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
37
+ DatalistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: DatalistComponent, selector: "ipt-datalist", inputs: { datalistId: "datalistId", datalistData: "datalistData", placeHolder: "placeHolder", validateText: "validateText", initalData: "initalData", disabledSel: "disabledSel" }, outputs: { isChanged: "isChanged" }, ngImport: i0, template: `
38
38
  <div class="input-container">
39
39
  <label [ngClass]="labelClass">{{ placeHolder }}</label>
40
40
  <input
@@ -53,8 +53,8 @@ DatalistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
53
53
  </option>
54
54
  </datalist>
55
55
  </div>
56
- `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}.input-container{position:relative;margin-top:30px}.input{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;display:block;transition:.2s;font-weight:300;margin:10px 10px -30px;width:-webkit-fill-available;width:-moz-available;height:28px;padding-left:10px;background-color:#fff}.input:hover{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.input:focus{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px;transition:0s;border:1.5px solid #1c77f7}.label{color:#999;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:7px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}.labelUp{color:#1c77f7;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:-20px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: DatalistComponent, decorators: [{
56
+ `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}.input-container{position:relative;margin-top:30px}.input{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;display:block;transition:.2s;font-weight:300;margin:10px 10px -30px;width:-webkit-fill-available;width:-moz-available;height:28px;padding-left:10px;background-color:#fff}.input:hover{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.input:focus{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px;transition:0s;border:1.5px solid #1c77f7}.label{color:#999;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:7px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}.labelUp{color:#1c77f7;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:-20px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DatalistComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'ipt-datalist', template: `
60
60
  <div class="input-container">
@@ -26,8 +26,8 @@ export class InputComponent {
26
26
  this.clicked = value.isTrusted;
27
27
  }
28
28
  }
29
- InputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: InputComponent, selector: "ipt-input", inputs: { inputType: "inputType", placeHolder: "placeHolder", validateText: "validateText", withPipe: "withPipe", list: "list", iconUrl: "iconUrl", control: "control", prefix: "prefix", thousands: "thousands", decimal: "decimal" }, outputs: { dateSelected: "dateSelected" }, ngImport: i0, template: `
29
+ InputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: InputComponent, selector: "ipt-input", inputs: { inputType: "inputType", placeHolder: "placeHolder", validateText: "validateText", withPipe: "withPipe", list: "list", iconUrl: "iconUrl", control: "control", prefix: "prefix", thousands: "thousands", decimal: "decimal" }, outputs: { dateSelected: "dateSelected" }, ngImport: i0, template: `
31
31
  <div class="input-container">
32
32
  <input *ngIf="inputType === 'date'"
33
33
  class="input"
@@ -71,8 +71,8 @@ InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
71
71
  {{ validateText }}
72
72
  </p>
73
73
  </div>
74
- `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media screen and (min-width: 320px){p{color:#c73a3a;font-size:12px;padding-left:15px}}@media screen and (min-width: 768px){p{color:#c73a3a;font-size:13px;padding-left:15px}}@media screen and (min-width: 1024px){p{color:#c73a3a;font-size:13px;padding-left:15px}}.input-container{position:relative;margin-top:30px}input{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;display:block;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;height:28px;padding-left:10px;background-color:#fff;-webkit-appearance:none}input:hover{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}input:focus{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px;transition:0s;border:1.5px solid #1c77f7}label{color:#999;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:7px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}.input:focus~label,.input:invalid~label{top:-20px;font-size:15px;color:#1c77f7}.labelUp{color:#999;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:-20px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.CurrencyMaskDirective, selector: "[currencyMask]", inputs: ["max", "min", "options"] }] });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: InputComponent, decorators: [{
74
+ `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media screen and (min-width: 320px){p{color:#c73a3a;font-size:12px;padding-left:15px}}@media screen and (min-width: 768px){p{color:#c73a3a;font-size:13px;padding-left:15px}}@media screen and (min-width: 1024px){p{color:#c73a3a;font-size:13px;padding-left:15px}}.input-container{position:relative;margin-top:30px}input{box-shadow:#64646f33 0 7px 29px;border-radius:6px;border:none;outline:none;display:block;transition:.2s;font-weight:300;width:-webkit-fill-available;width:-moz-available;height:28px;padding-left:10px;background-color:#fff;-webkit-appearance:none}input:hover{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}input:focus{box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px;transition:0s;border:1.5px solid #1c77f7}label{color:#999;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:7px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}.input:focus~label,.input:invalid~label{top:-20px;font-size:15px;color:#1c77f7}.labelUp{color:#999;font-size:15px;font-weight:400;position:absolute;pointer-events:none;left:20px;top:-20px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.CurrencyMaskDirective, selector: "[currencyMask]", inputs: ["max", "min", "options"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: InputComponent, decorators: [{
76
76
  type: Component,
77
77
  args: [{ selector: 'ipt-input', template: `
78
78
  <div class="input-container">
@@ -9,8 +9,8 @@ export class LevelButtonComponent {
9
9
  this.isClicked.emit(true);
10
10
  }
11
11
  }
12
- LevelButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: LevelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- LevelButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: LevelButtonComponent, selector: "ipt-level-button", inputs: { level: "level", buttonActive: "buttonActive", idColor: "idColor" }, outputs: { isClicked: "isClicked" }, ngImport: i0, template: `
12
+ LevelButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LevelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ LevelButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: LevelButtonComponent, selector: "ipt-level-button", inputs: { level: "level", buttonActive: "buttonActive", idColor: "idColor" }, outputs: { isClicked: "isClicked" }, ngImport: i0, template: `
14
14
  <div [ngSwitch]="buttonActive">
15
15
  <button
16
16
  *ngSwitchCase="0"
@@ -29,8 +29,8 @@ LevelButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
29
29
  <p class="p-level p-level-active">{{ level }}</p>
30
30
  </button>
31
31
  </div>
32
- `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media (min-width: 320px){.courses{cursor:pointer;text-decoration:none;display:flex;border-radius:6px;width:100%;height:30px;box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset;border:none;outline:none;align-items:center;background-color:transparent;color:#1c77f7}.p-level{display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px}#level-1{background-color:#02eed8}#level-2{background-color:#61acff}#level-3{background-color:#f168f4}#level-4{background-color:#ff3737}#level-5{background-color:#004dfa}#level-6{background-color:#14c25a}#level-7{background-color:#a052da}#level-8{background-color:#f2583d}#level-9{background-color:#291d26}#level-10{background-color:#1c77f7}.p-level-active{color:#fff}}@media (min-width: 375px){.courses{height:40px}.p-level{font-size:18px}}@media (min-width: 425px){.courses{height:30px}}@media (min-width: 768px){.courses{height:40px}}@media (min-width: 1024px){.courses{transition:.6s}.courses:active{transform:scale(1.05);box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset}.p-level{font-weight:700}}@media (min-width: 1440px){.p-level{font-weight:600}}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: LevelButtonComponent, decorators: [{
32
+ `, isInline: true, styles: ["*{font-family:Poppins,sans-serif}@media (min-width: 320px){.courses{cursor:pointer;text-decoration:none;display:flex;border-radius:6px;width:100%;height:30px;box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset;border:none;outline:none;align-items:center;background-color:transparent;color:#1c77f7}.p-level{display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px}#level-1{background-color:#02eed8}#level-2{background-color:#61acff}#level-3{background-color:#f168f4}#level-4{background-color:#ff3737}#level-5{background-color:#004dfa}#level-6{background-color:#14c25a}#level-7{background-color:#a052da}#level-8{background-color:#f2583d}#level-9{background-color:#291d26}#level-10{background-color:#1c77f7}.p-level-active{color:#fff}}@media (min-width: 375px){.courses{height:40px}.p-level{font-size:18px}}@media (min-width: 425px){.courses{height:30px}}@media (min-width: 768px){.courses{height:40px}}@media (min-width: 1024px){.courses{transition:.6s}.courses:active{transform:scale(1.05);box-shadow:#06182c66 0 0 0 2px,#06182ca6 0 4px 6px -1px,#ffffff14 0 1px inset}.p-level{font-weight:700}}@media (min-width: 1440px){.p-level{font-weight:600}}\n"], directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LevelButtonComponent, decorators: [{
34
34
  type: Component,
35
35
  args: [{ selector: 'ipt-level-button', template: `
36
36
  <div [ngSwitch]="buttonActive">
@@ -2,11 +2,11 @@ import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class LevelTextComponent {
4
4
  }
5
- LevelTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: LevelTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- LevelTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: LevelTextComponent, selector: "ipt-level-button", inputs: { level: "level", total: "total" }, ngImport: i0, template: `
5
+ LevelTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LevelTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ LevelTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: LevelTextComponent, selector: "ipt-level-button", inputs: { level: "level", total: "total" }, ngImport: i0, template: `
7
7
  <p class="p-table-course">{{ level }}: {{ total }}</p>
8
8
  `, isInline: true, styles: ["@media (min-width: 320px){.p-table-course{background-color:#4b4a4a;color:#fff;font-size:14px;font-weight:700;padding:5px;width:100%;text-align:center}}@media (min-width: 375px){.p-table-course{background-color:#4b4a4a;color:#fff;font-size:14px;font-weight:700;padding:5px;width:100%;text-align:center}}@media (min-width: 425px){.p-table-course{font-size:18px}}@media (min-width: 1024px){.p-table-course{font-size:20px}}\n"] });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: LevelTextComponent, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LevelTextComponent, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'ipt-level-button', template: `
12
12
  <p class="p-table-course">{{ level }}: {{ total }}</p>
@@ -7,8 +7,8 @@ export class LoaderComponent {
7
7
  this.isDialog = false;
8
8
  }
9
9
  }
10
- LoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: LoaderComponent, selector: "ipt-loader", inputs: { message: "message", isDialog: "isDialog" }, ngImport: i0, template: `
10
+ LoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: LoaderComponent, selector: "ipt-loader", inputs: { message: "message", isDialog: "isDialog" }, ngImport: i0, template: `
12
12
  <div [ngClass]="{'dialog': isDialog}">
13
13
  <div [ngClass]="{'loader_container' : isDialog}">
14
14
  <span>{{ message }}</span>
@@ -22,8 +22,8 @@ LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
22
22
  </div>
23
23
  </div>
24
24
  </div>
25
- </div>`, isInline: true, styles: [".dialog{background:rgba(0,0,0,.472);color:#fff;position:fixed;top:0;left:0;height:100vh;width:100vw;transition:all .5s;z-index:9999}.loader_container{height:-moz-fit-content;height:fit-content;width:-moz-fit-content;width:fit-content;position:absolute;inset:0;margin:auto;background-color:#fff;border-radius:6px;padding:1rem;z-index:9999}span{display:flex;justify-content:center;color:#1c77f7;font:bold;margin-bottom:1rem}.container{display:flex;justify-content:center}.spinner{width:60px;height:60px;position:relative}.spinner .dot{position:absolute;inset:0;display:flex;justify-content:center}.spinner .dot:after{content:\"\";width:7px;height:7px;border-radius:50%;background-color:#1c77f7}@keyframes spin{to{transform:rotate(360deg)}}.spinner .dot{animation:spin 2s infinite}.spinner .dot:nth-child(2){animation-delay:.1s}.spinner .dot:nth-child(3){animation-delay:.2s}.spinner .dot:nth-child(4){animation-delay:.3s}.spinner .dot:nth-child(5){animation-delay:.4s}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: LoaderComponent, decorators: [{
25
+ </div>`, isInline: true, styles: [".dialog{background:rgba(0,0,0,.472);color:#fff;position:fixed;top:0;left:0;height:100vh;width:100vw;transition:all .5s;z-index:9999}.loader_container{height:-moz-fit-content;height:fit-content;width:-moz-fit-content;width:fit-content;position:absolute;inset:0;margin:auto;background-color:#fff;border-radius:6px;padding:1rem;z-index:9999}span{display:flex;justify-content:center;color:#1c77f7;font:bold;margin-bottom:1rem}.container{display:flex;justify-content:center}.spinner{width:60px;height:60px;position:relative}.spinner .dot{position:absolute;inset:0;display:flex;justify-content:center}.spinner .dot:after{content:\"\";width:7px;height:7px;border-radius:50%;background-color:#1c77f7}@keyframes spin{to{transform:rotate(360deg)}}.spinner .dot{animation:spin 2s infinite}.spinner .dot:nth-child(2){animation-delay:.1s}.spinner .dot:nth-child(3){animation-delay:.2s}.spinner .dot:nth-child(4){animation-delay:.3s}.spinner .dot:nth-child(5){animation-delay:.4s}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: LoaderComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'ipt-loader', template: `
29
29
  <div [ngClass]="{'dialog': isDialog}">