ctt-puro 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,9 +4,14 @@ import { FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  export class PuroContactFormComponent {
7
+ set inputs(inp) {
8
+ this._inputs = inp;
9
+ this.setInputProperties();
10
+ }
7
11
  constructor(fb) {
8
12
  this.fb = fb;
9
13
  this.submit = new EventEmitter();
14
+ this._inputs = [];
10
15
  this.formReady$ = signal(false);
11
16
  }
12
17
  ngOnInit() {
@@ -14,7 +19,7 @@ export class PuroContactFormComponent {
14
19
  }
15
20
  initializeForm() {
16
21
  const controls = {};
17
- this.inputs?.forEach((input) => {
22
+ this._inputs?.forEach((input) => {
18
23
  if (input.name) {
19
24
  controls[input.name] = ['', input.validators];
20
25
  }
@@ -28,22 +33,21 @@ export class PuroContactFormComponent {
28
33
  controls['ndDropdown'] = ['', Validators.required];
29
34
  controls['prefix'] = ['', Validators.required];
30
35
  this.form = this.fb.group(controls);
31
- this.setInputProperties();
32
36
  this.formReady$.set(true);
33
37
  }
34
38
  setInputProperties() {
35
- this.inputs?.forEach((input) => {
39
+ this._inputs?.forEach((input) => {
36
40
  switch (input.name) {
37
41
  case 'email':
38
42
  this.emailInput = input;
39
43
  break;
40
- case 'name':
44
+ case 'nombre':
41
45
  this.nameInput = input;
42
46
  break;
43
- case 'surname':
47
+ case 'apellido':
44
48
  this.surnameInput = input;
45
49
  break;
46
- case 'phone':
50
+ case 'telefono':
47
51
  this.phoneInput = input;
48
52
  break;
49
53
  default:
@@ -67,16 +71,16 @@ export class PuroContactFormComponent {
67
71
  if (this.textarea) {
68
72
  this.textarea.value = '';
69
73
  }
70
- this.inputs?.forEach((input) => {
74
+ this._inputs?.forEach((input) => {
71
75
  input.value = '';
72
76
  });
73
77
  }
74
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroContactFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroContactFormComponent, isStandalone: true, selector: "lib-puro-contact-form", inputs: { title: "title", subtitle: "subtitle", promotions: "promotions", requiredLabel: "requiredLabel", img: "img", conditionsLink: "conditionsLink", prefix: "prefix", dropdown: "dropdown", ndDropdown: "ndDropdown", inputs: "inputs", textarea: "textarea", button: "button" }, outputs: { submit: "submit" }, ngImport: i0, template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <div class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n <option>Prefijo</option>\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroContactFormComponent, isStandalone: true, selector: "lib-puro-contact-form", inputs: { title: "title", subtitle: "subtitle", promotions: "promotions", requiredLabel: "requiredLabel", img: "img", conditionsLink: "conditionsLink", prefix: "prefix", dropdown: "dropdown", ndDropdown: "ndDropdown", inputs: "inputs", textarea: "textarea", button: "button" }, outputs: { submit: "submit" }, ngImport: i0, template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <form [formGroup]=\"form\" class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (prefix) {\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n @if (prefix.placeholder) {\r\n <option>\r\n {{ prefix.placeholder }}\r\n </option>\r\n }\r\n @for (\r\n item of prefix.options || [];\r\n track $index\r\n ) {\r\n <option [value]=\"item.code\">\r\n {{ item.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
76
80
  }
77
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroContactFormComponent, decorators: [{
78
82
  type: Component,
79
- args: [{ selector: 'lib-puro-contact-form', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <div class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n <option>Prefijo</option>\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n" }]
83
+ args: [{ selector: 'lib-puro-contact-form', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<section class=\"contactForm\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n <div class=\"contactForm__inner\">\r\n <div class=\"contactForm__graphic\">\r\n <div class=\"contactForm__graphicInner\">\r\n @if (img) {\r\n <img\r\n [src]=\"img.src\"\r\n [alt]=\"img.alt\"\r\n width=\"467\"\r\n height=\"551\"\r\n class=\"contactForm__graphicInner--img\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__content\">\r\n @if (title) {\r\n <span class=\"contactForm__title\">{{ title }}</span>\r\n }\r\n @if (subtitle) {\r\n <div\r\n class=\"contactForm__paragraph\"\r\n [innerHtml]=\"subtitle\"\r\n ></div>\r\n }\r\n <form [formGroup]=\"form\" class=\"form\">\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (dropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ dropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of dropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (ndDropdown) {\r\n <div class=\"form__group withIcon\">\r\n <select class=\"form__control\">\r\n <option [value]=\"0\">\r\n {{ ndDropdown.placeholder }}\r\n </option>\r\n @for (\r\n option of ndDropdown.options;\r\n track $index\r\n ) {\r\n <option>{{ option.name }}</option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n @if (emailInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"email\"\r\n class=\"form__control\"\r\n [placeholder]=\"emailInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"19\"\r\n height=\"15\"\r\n >\r\n <use href=\"#email\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (nameInput && nameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Name\"\r\n id=\"Name\"\r\n [placeholder]=\"nameInput.placeholder\"\r\n [formControlName]=\"nameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (surnameInput && surnameInput.name) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"Apellidos\"\r\n id=\"apellidos\"\r\n [placeholder]=\"surnameInput.placeholder\"\r\n [formControlName]=\"surnameInput.name\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"18\"\r\n height=\"20\"\r\n >\r\n <use href=\"#user\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (prefix) {\r\n <div class=\"form__group withIcon\">\r\n <select\r\n class=\"form__control\"\r\n name=\"Prefijo\"\r\n formControlName=\"prefix\"\r\n >\r\n @if (prefix.placeholder) {\r\n <option>\r\n {{ prefix.placeholder }}\r\n </option>\r\n }\r\n @for (\r\n item of prefix.options || [];\r\n track $index\r\n ) {\r\n <option [value]=\"item.code\">\r\n {{ item.name }}\r\n </option>\r\n }\r\n </select>\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"15\"\r\n height=\"8\"\r\n >\r\n <use href=\"#select-arrow\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"contactForm__col\">\r\n @if (phoneInput) {\r\n <div class=\"form__group withIcon\">\r\n <input\r\n type=\"text\"\r\n class=\"form__control\"\r\n name=\"phone\"\r\n id=\"phone\"\r\n [placeholder]=\"phoneInput.placeholder\"\r\n />\r\n <span class=\"icon-right\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"17\"\r\n height=\"17\"\r\n >\r\n <use href=\"#phone\"></use>\r\n </svg>\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n @if (textarea) {\r\n <div class=\"form__group no-dot\">\r\n <textarea\r\n class=\"form__control\"\r\n [placeholder]=\"textarea.placeholder\"\r\n ></textarea>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"contactForm__row\">\r\n <div class=\"contactForm__col\">\r\n <div class=\"block-checkbox\">\r\n @if (requiredLabel) {\r\n <span class=\"required-label\">{{\r\n requiredLabel\r\n }}</span>\r\n }\r\n @if (conditionsLink) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n checked\r\n class=\"checkbox\"\r\n formControlName=\"conditions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span [innerHTML]=\"conditionsLink\"> </span>\r\n </label>\r\n }\r\n @if (promotions) {\r\n <label class=\"form__checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox\"\r\n formControlName=\"promotions\"\r\n />\r\n <span class=\"box\">\r\n <svg\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n width=\"9\"\r\n height=\"7\"\r\n >\r\n <use href=\"#checkbox-tick\"></use>\r\n </svg>\r\n </span>\r\n <span>{{ promotions }}</span>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn__group\">\r\n @if (button) {\r\n <button\r\n class=\"btn btn__primary--outline js-active-modal\"\r\n data-modal_name=\"thankyou\"\r\n >\r\n <span>{{ button.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</section>\r\n" }]
80
84
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { title: [{
81
85
  type: Input
82
86
  }], subtitle: [{
@@ -104,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
104
108
  }], submit: [{
105
109
  type: Output
106
110
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDOzs7QUFXeEIsTUFBTSxPQUFPLHdCQUF3QjtJQXdCakMsWUFBNkIsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFWbEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHM0MsZUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQU9XLENBQUM7SUFFaEQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sUUFBUSxHQUEyQixFQUFFLENBQUM7UUFFNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMs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d0I7a0JBUHBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUM7Z0ZBS2hELEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBGb3JtQnVpbGRlcixcclxuICAgIEZvcm1Hcm91cCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSwgUHVyb0lucHV0SSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBQdXJvRHJvcGRvd25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tY29udGFjdC1mb3JtJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL3B1cm8tY29udGFjdC1mb3JtLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFB1cm9Db250YWN0Rm9ybUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHJvbW90aW9ucz86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkTGFiZWw/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbWc/OiBQdXJvSW1hZ2VJO1xyXG4gICAgQElucHV0KCkgY29uZGl0aW9uc0xpbms/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwcmVmaXg/OiBQdXJvRHJvcGRvd25JO1xyXG4gICAgQElucHV0KCkgZHJvcGRvd24/OiBQdXJvRHJvcGRvd25JO1xyXG4gICAgQElucHV0KCkgbmREcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XHJcbiAgICBASW5wdXQoKSBpbnB1dHM/OiBQdXJvSW5wdXRJW107XHJcbiAgICBASW5wdXQoKSB0ZXh0YXJlYT86IFB1cm9JbnB1dEk7XHJcbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcclxuXHJcbiAgICBAT3V0cHV0KCkgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICAgIGZvcm1SZWFkeSQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAgIGVtYWlsSW5wdXQ/OiBQdXJvSW5wdXRJO1xyXG4gICAgbmFtZUlucHV0PzogUHVyb0lucHV0STtcclxuICAgIHN1cm5hbWVJbnB1dD86IFB1cm9JbnB1dEk7XHJcbiAgICBwaG9uZUlucHV0PzogUHVyb0lucHV0STtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcikge31cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5pbnB1dHM/LmZvckVhY2goKGlucHV0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpbnB1dC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sc1tpbnB1dC5uYW1lXSA9IFsnJywgaW5wdXQudmFsaWRhdG9yc107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgICAgICAgY29udHJvbHNbdGhpcy50ZXh0YXJlYS5uYW1lIV0gPSBbJycsIHRoaXMudGV4dGFyZWE/LnZhbGlkYXRvcnNdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29udHJvbHNbJ2NvbmRpdGlvbnMnXSA9IFtmYWxzZSwgVmFsaWRhdG9ycy5yZXF1aXJlZFRydWVdO1xyXG4gICAgICAgIGNvbnRyb2xzWydwcm9tb3Rpb25zJ10gPSBbZmFsc2VdO1xyXG4gICAgICAgIGNvbnRyb2xzWydkcm9wZG93biddID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcclxuICAgICAgICBjb250cm9sc1snbmREcm9wZG93biddID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcclxuICAgICAgICBjb250cm9sc1sncHJlZml4J10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGNvbnRyb2xzKTtcclxuICAgICAgICB0aGlzLnNldElucHV0UHJvcGVydGllcygpO1xyXG4gICAgICAgIHRoaXMuZm9ybVJlYWR5JC5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5wdXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5wdXRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtYWlsSW5wdXQgPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hbWUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZUlucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdzdXJuYW1lJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1cm5hbWVJbnB1dCA9IGlucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncGhvbmUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVJbnB1dCA9IGlucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGF0ZUlucHV0KGlucHV0OiBQdXJvSW5wdXRJKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICAgIGlucHV0LnZhbGlkID0gdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0Lm5hbWUhXS5lcnJvcnMgPT09IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCwgaW5wdXQ6IFB1cm9JbnB1dEkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKGlucHV0LnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgICAgIGlucHV0RWxlbWVudC52YWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZS5yZXBsYWNlKC9bXjAtOStdL2csICcnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRGb3JtKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybT8ucmVzZXQoKTtcclxuICAgICAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRhcmVhLnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5wdXRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwiY29udGFjdEZvcm1cIj5cclxuICAgIEBpZiAodGl0bGUpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRhY3RGb3JtX190aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxyXG4gICAgfVxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19pbm5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fZ3JhcGhpY1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2dyYXBoaWNJbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChpbWcpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1nLnNyY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaW1nLmFsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNDY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250YWN0Rm9ybV9fZ3JhcGhpY0lubmVyLS1pbWdcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29udGVudFwiPlxyXG4gICAgICAgICAgICBAaWYgKHRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRhY3RGb3JtX190aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoc3VidGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRhY3RGb3JtX19wYXJhZ3JhcGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwic3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtX19jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyb3Bkb3duLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkcm9wZG93bi5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj57eyBvcHRpb24ubmFtZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuZERyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybV9fY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZERyb3Bkb3duLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBuZERyb3Bkb3duLm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPnt7IG9wdGlvbi5uYW1lIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNzZWxlY3QtYXJyb3dcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbWFpbElucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVtYWlsSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2VtYWlsXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuYW1lSW5wdXQgJiYgbmFtZUlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5hbWVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZUlucHV0Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3VzZXJcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHN1cm5hbWVJbnB1dCAmJiBzdXJuYW1lSW5wdXQubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIkFwZWxsaWRvc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYXBlbGxpZG9zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInN1cm5hbWVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwic3VybmFtZUlucHV0Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3VzZXJcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJQcmVmaWpvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmVmaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+UHJlZmlqbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBob25lSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwaG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGhvbmVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjcGhvbmVcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRhcmVhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgbm8tZG90XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0ZXh0YXJlYS5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jay1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyZXF1aXJlZExhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1sYWJlbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29uZGl0aW9uc0xpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2NoZWNrYm94LXRpY2tcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZGl0aW9uc0xpbmtcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb21vdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2NoZWNrYm94LXRpY2tcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb21vdGlvbnMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSBqcy1hY3RpdmUtbW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwidGhhbmt5b3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidXR0b24ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1jb250YWN0LWZvcm0vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHSCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDOzs7QUFXeEIsTUFBTSxPQUFPLHdCQUF3QjtJQVVqQyxJQUFhLE1BQU0sQ0FBQyxHQUFpQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBZ0JELFlBQTZCLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBWmxDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTNDLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBRzNCLGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFPVyxDQUFDO0lBRWhELFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDVixNQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFP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UCxDQUFDOytHQXJHUSx3QkFBd0I7bUdBQXhCLHdCQUF3QixzWUNuQnJDLDRqZEF1U0EseUREeFJjLFlBQVksOEJBQUUsV0FBVyx1dUNBQUUsbUJBQW1COzs0RkFJL0Msd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNJLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDO2dGQUtoRCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEZvcm1CdWlsZGVyLFxyXG4gICAgRm9ybUdyb3VwLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW1hZ2VJLCBQdXJvSW5wdXRJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFB1cm9Ecm9wZG93bkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1jb250YWN0LWZvcm0nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWNvbnRhY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vcHVyby1jb250YWN0LWZvcm0uY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHVyb0NvbnRhY3RGb3JtQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwcm9tb3Rpb25zPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWRMYWJlbD86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUk7XHJcbiAgICBASW5wdXQoKSBjb25kaXRpb25zTGluaz86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHByZWZpeD86IFB1cm9Ecm9wZG93bkk7XHJcbiAgICBASW5wdXQoKSBkcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XHJcbiAgICBASW5wdXQoKSBuZERyb3Bkb3duPzogUHVyb0Ryb3Bkb3duSTtcclxuICAgIEBJbnB1dCgpIHNldCBpbnB1dHMoaW5wOiBQdXJvSW5wdXRJW10pIHtcclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBpbnA7XHJcbiAgICAgICAgdGhpcy5zZXRJbnB1dFByb3BlcnRpZXMoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpIHRleHRhcmVhPzogUHVyb0lucHV0STtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xyXG5cclxuICAgIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBfaW5wdXRzOiBQdXJvSW5wdXRJW10gPSBbXTtcclxuXHJcbiAgICBmb3JtITogRm9ybUdyb3VwO1xyXG4gICAgZm9ybVJlYWR5JCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgZW1haWxJbnB1dD86IFB1cm9JbnB1dEk7XHJcbiAgICBuYW1lSW5wdXQ/OiBQdXJvSW5wdXRJO1xyXG4gICAgc3VybmFtZUlucHV0PzogUHVyb0lucHV0STtcclxuICAgIHBob25lSW5wdXQ/OiBQdXJvSW5wdXRJO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplRm9ybSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgICAgIHRoaXMuX2lucHV0cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xzW2lucHV0Lm5hbWVdID0gWycnLCBpbnB1dC52YWxpZGF0b3JzXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICAgICAgICBjb250cm9sc1t0aGlzLnRleHRhcmVhLm5hbWUhXSA9IFsnJywgdGhpcy50ZXh0YXJlYT8udmFsaWRhdG9yc107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250cm9sc1snY29uZGl0aW9ucyddID0gW2ZhbHNlLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV07XHJcbiAgICAgICAgY29udHJvbHNbJ3Byb21vdGlvbnMnXSA9IFtmYWxzZV07XHJcbiAgICAgICAgY29udHJvbHNbJ2Ryb3Bkb3duJ10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG4gICAgICAgIGNvbnRyb2xzWyduZERyb3Bkb3duJ10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG4gICAgICAgIGNvbnRyb2xzWydwcmVmaXgnXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoY29udHJvbHMpO1xyXG4gICAgICAgIHRoaXMuZm9ybVJlYWR5JC5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5wdXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2lucHV0cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoIChpbnB1dC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbElucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdub21icmUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZUlucHV0ID0gaW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdhcGVsbGlkbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdXJuYW1lSW5wdXQgPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3RlbGVmb25vJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lSW5wdXQgPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGVJbnB1dChpbnB1dDogUHVyb0lucHV0SSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpbnB1dCkge1xyXG4gICAgICAgICAgICBpbnB1dC52YWxpZCA9IHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dC5uYW1lIV0uZXJyb3JzID09PSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnB1dENoYW5nZShldmVudDogRXZlbnQsIGlucHV0OiBQdXJvSW5wdXRJKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChpbnB1dC50eXBlID09PSAndGVsJykge1xyXG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWUucmVwbGFjZSgvW14wLTkrXS9nLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0Rm9ybSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm0/LnJlc2V0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0YXJlYS52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbnB1dHM/LmZvckVhY2goKGlucHV0KSA9PiB7XHJcbiAgICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJjb250YWN0Rm9ybVwiPlxyXG4gICAgQGlmICh0aXRsZSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdEZvcm1fX3RpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XHJcbiAgICB9XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2lubmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19ncmFwaGljXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fZ3JhcGhpY0lubmVyXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGltZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWcuc3JjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpbWcuYWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRhY3RGb3JtX19ncmFwaGljSW5uZXItLWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb250ZW50XCI+XHJcbiAgICAgICAgICAgIEBpZiAodGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdEZvcm1fX3RpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGlmIChzdWJ0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGFjdEZvcm1fX3BhcmFncmFwaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdWJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtX19jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyb3Bkb3duLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBkcm9wZG93bi5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj57eyBvcHRpb24ubmFtZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuZERyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybV9fY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZERyb3Bkb3duLnBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvZiBuZERyb3Bkb3duLm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPnt7IG9wdGlvbi5uYW1lIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNzZWxlY3QtYXJyb3dcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbWFpbElucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgd2l0aEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVtYWlsSW5wdXQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2VtYWlsXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuYW1lSW5wdXQgJiYgbmFtZUlucHV0Lm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5hbWVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZUlucHV0Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3VzZXJcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHN1cm5hbWVJbnB1dCAmJiBzdXJuYW1lSW5wdXQubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtX19jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIkFwZWxsaWRvc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYXBlbGxpZG9zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInN1cm5hbWVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwic3VybmFtZUlucHV0Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3VzZXJcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByZWZpeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiUHJlZmlqb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByZWZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByZWZpeC5wbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcmVmaXgucGxhY2Vob2xkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSBvZiBwcmVmaXgub3B0aW9ucyB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNzZWxlY3QtYXJyb3dcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBob25lSW5wdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19ncm91cCB3aXRoSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwaG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGhvbmVJbnB1dC5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjcGhvbmVcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RGb3JtX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX2NvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRhcmVhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXAgbm8tZG90XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0ZXh0YXJlYS5wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdEZvcm1fX3Jvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0Rm9ybV9fY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jay1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyZXF1aXJlZExhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1sYWJlbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29uZGl0aW9uc0xpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2NoZWNrYm94LXRpY2tcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZGl0aW9uc0xpbmtcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb21vdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtX19jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI2NoZWNrYm94LXRpY2tcIj48L3VzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb21vdGlvbnMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSBqcy1hY3RpdmUtbW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwidGhhbmt5b3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidXR0b24ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=