myrta-ui 1.0.47 → 1.0.48

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 (39) hide show
  1. package/esm2020/lib/components/form/input-number/input-number.component.mjs +47 -27
  2. package/esm2020/lib/components/form/input-tel/assets/base64.mjs +4 -0
  3. package/esm2020/lib/components/form/input-tel/data/all-countries.mjs +1323 -0
  4. package/esm2020/lib/components/form/input-tel/data/country-iso.enum.mjs +247 -0
  5. package/esm2020/lib/components/form/input-tel/data/phone-number-format.enum.mjs +6 -0
  6. package/esm2020/lib/components/form/input-tel/data/search-country-field.enum.mjs +8 -0
  7. package/esm2020/lib/components/form/input-tel/directives/input-tel.directive.mjs +63 -0
  8. package/esm2020/lib/components/form/input-tel/enums/input-phone.enum.mjs +7 -0
  9. package/esm2020/lib/components/form/input-tel/input-tel.component.mjs +368 -0
  10. package/esm2020/lib/components/form/input-tel/input-tel.module.mjs +49 -0
  11. package/esm2020/lib/components/form/input-tel/models/country.model.mjs +2 -0
  12. package/esm2020/public-api.mjs +3 -3
  13. package/fesm2015/myrta-ui.mjs +250 -81
  14. package/fesm2015/myrta-ui.mjs.map +1 -1
  15. package/fesm2020/myrta-ui.mjs +247 -81
  16. package/fesm2020/myrta-ui.mjs.map +1 -1
  17. package/lib/components/form/input-number/input-number.component.d.ts +4 -1
  18. package/lib/components/form/input-tel/data/phone-number-format.enum.d.ts +5 -0
  19. package/lib/components/form/input-tel/directives/input-tel.directive.d.ts +20 -0
  20. package/lib/components/form/input-tel/enums/input-phone.enum.d.ts +11 -0
  21. package/lib/{test → components/form}/input-tel/input-tel.component.d.ts +22 -3
  22. package/lib/components/form/input-tel/input-tel.module.d.ts +14 -0
  23. package/package.json +1 -1
  24. package/public-api.d.ts +2 -2
  25. package/esm2020/lib/test/input-tel/assets/base64.mjs +0 -4
  26. package/esm2020/lib/test/input-tel/data/all-countries.mjs +0 -1323
  27. package/esm2020/lib/test/input-tel/data/country-iso.enum.mjs +0 -247
  28. package/esm2020/lib/test/input-tel/data/phone-number-format.enum.mjs +0 -6
  29. package/esm2020/lib/test/input-tel/data/search-country-field.enum.mjs +0 -8
  30. package/esm2020/lib/test/input-tel/input-tel.component.mjs +0 -293
  31. package/esm2020/lib/test/input-tel/input-tel.module.mjs +0 -30
  32. package/esm2020/lib/test/input-tel/models/country.model.mjs +0 -2
  33. package/lib/test/input-tel/data/phone-number-format.enum.d.ts +0 -4
  34. package/lib/test/input-tel/input-tel.module.d.ts +0 -9
  35. /package/lib/{test → components/form}/input-tel/assets/base64.d.ts +0 -0
  36. /package/lib/{test → components/form}/input-tel/data/all-countries.d.ts +0 -0
  37. /package/lib/{test → components/form}/input-tel/data/country-iso.enum.d.ts +0 -0
  38. /package/lib/{test → components/form}/input-tel/data/search-country-field.enum.d.ts +0 -0
  39. /package/lib/{test → components/form}/input-tel/models/country.model.d.ts +0 -0
@@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Ou
2
2
  import { NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
3
3
  import { InputNumberSizesEnum } from './input-number.enum';
4
4
  import { v4 as uuidv4 } from 'uuid';
5
+ import { distinctUntilChanged, pairwise, startWith } from 'rxjs/operators';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/forms";
7
8
  import * as i2 from "../../error-message/error-message.component";
@@ -30,6 +31,7 @@ export class InputNumberComponent {
30
31
  this.allowNegative = false;
31
32
  this.size = 'large';
32
33
  this.isNullableValue = false;
34
+ this.isAutoCorrectingValue = false;
33
35
  // ERROR
34
36
  this.invalid = false;
35
37
  this.checkInvalid = null;
@@ -128,40 +130,56 @@ export class InputNumberComponent {
128
130
  this._delimitersInitialised = true;
129
131
  }
130
132
  ngOnInit() {
131
- this.numberForm.valueChanges.subscribe(val => {
132
- if (this.invokeChanged) {
133
- if (this.numberForm.valid) {
134
- const num = this.numberForm.value.number;
135
- let numValue;
136
- if (num === '') {
137
- this.propagateChange(null);
138
- this.modelChange.emit({ value: null, id: this.uuid });
139
- }
140
- if (num && typeof (num) === 'string') {
141
- numValue = parseFloat(num.replace(',', '.').split(this.thousandsSeparator).join(''));
142
- this.propagateChange(numValue);
143
- this.modelChange.emit({ value: numValue, id: this.uuid });
144
- }
145
- else if (typeof (num) === 'number') {
146
- numValue = num;
147
- this.propagateChange(numValue);
148
- this.modelChange.emit({ value: numValue, id: this.uuid });
149
- }
150
- }
151
- }
133
+ this.numberForm.valueChanges.pipe(startWith(null), distinctUntilChanged(), pairwise()).subscribe(([oldValue, newValue]) => {
134
+ this._updateValue(newValue.number);
152
135
  });
153
136
  this.numberForm.statusChanges.subscribe(val => {
154
137
  this.checkIsValid();
155
138
  });
156
139
  }
140
+ _updateValue(insideValue) {
141
+ if (this.invokeChanged) {
142
+ if (this.numberForm.valid) {
143
+ const num = insideValue;
144
+ let numValue;
145
+ if (num === '') {
146
+ this.propagateChange(null);
147
+ this.modelChange.emit({ value: null, id: this.uuid });
148
+ }
149
+ if (num && typeof (num) === 'string') {
150
+ numValue = parseFloat(num.replace(',', '.').split(this.thousandsSeparator).join(''));
151
+ this.propagateChange(numValue);
152
+ this.modelChange.emit({ value: numValue, id: this.uuid });
153
+ }
154
+ else if (typeof (num) === 'number') {
155
+ numValue = num;
156
+ this.propagateChange(numValue);
157
+ this.modelChange.emit({ value: numValue, id: this.uuid });
158
+ }
159
+ }
160
+ }
161
+ }
157
162
  resetToMax(event) {
158
163
  event.preventDefault();
159
164
  const f = this.getControl('number');
160
165
  f.setValue(this._max);
161
166
  }
162
167
  checkIsValid() {
163
- const f = this.getControl('number');
164
- this._isValid = this.numberForm.disabled || (f && f.valid || (!f.dirty && !f.touched));
168
+ if (!this.isAutoCorrectingValue) {
169
+ const f = this.getControl('number');
170
+ this._isValid = this.numberForm.disabled || (f && f.valid || (!f.dirty && !f.touched));
171
+ }
172
+ }
173
+ onPhoneInputBlur() {
174
+ if (this.isAutoCorrectingValue) {
175
+ const f = this.getControl('number');
176
+ if (f.value > this._max) {
177
+ f.setValue(this._max);
178
+ }
179
+ if (f.value < this._min) {
180
+ f.setValue(this._min);
181
+ }
182
+ }
165
183
  }
166
184
  writeValue(value) {
167
185
  const f = this.getControl('number');
@@ -179,14 +197,14 @@ export class InputNumberComponent {
179
197
  }
180
198
  InputNumberComponent._delimitersInitialised = false;
181
199
  InputNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputNumberComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
182
- InputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputNumberComponent, selector: "mrx-input-number", inputs: { fields: "fields", placeholder: "placeholder", innerClass: "innerClass", customClasses: "customClasses", required: "required", allowNegative: "allowNegative", size: "size", separator: "separator", decimalSeparator: "decimalSeparator", isNullableValue: "isNullableValue", invalid: "invalid", checkInvalid: "checkInvalid", setNumberType: ["numberType", "setNumberType"], setInvalidMessage: ["invalidMessage", "setInvalidMessage"], setDisabled: ["disabled", "setDisabled"], setReadonly: ["readonly", "setReadonly"], setMin: ["minValue", "setMin"], setMax: ["maxValue", "setMax"] }, outputs: { modelChange: "modelChange" }, providers: [
200
+ InputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputNumberComponent, selector: "mrx-input-number", inputs: { fields: "fields", placeholder: "placeholder", innerClass: "innerClass", customClasses: "customClasses", required: "required", allowNegative: "allowNegative", size: "size", separator: "separator", decimalSeparator: "decimalSeparator", isNullableValue: "isNullableValue", isAutoCorrectingValue: "isAutoCorrectingValue", invalid: "invalid", checkInvalid: "checkInvalid", setNumberType: ["numberType", "setNumberType"], setInvalidMessage: ["invalidMessage", "setInvalidMessage"], setDisabled: ["disabled", "setDisabled"], setReadonly: ["readonly", "setReadonly"], setMin: ["minValue", "setMin"], setMax: ["maxValue", "setMax"] }, outputs: { modelChange: "modelChange" }, providers: [
183
201
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true },
184
- ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"], components: [{ type: i2.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }, { type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }], 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: 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]" }, { type: i4.MaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "triggerOnMaskChange"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
202
+ ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (blur)=\"onPhoneInputBlur()\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"], components: [{ type: i2.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }, { type: i3.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }], 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: 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]" }, { type: i4.MaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "triggerOnMaskChange"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
185
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputNumberComponent, decorators: [{
186
204
  type: Component,
187
205
  args: [{ selector: 'mrx-input-number', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
188
206
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true },
189
- ], template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"] }]
207
+ ], template: "<div\r\n class=\"mrx-input-number\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"!isValid || invalid\"\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n>\r\n <div class=\"mrx-input-number__wrapper\">\r\n <form [formGroup]=\"numberForm\">\r\n <div>\r\n <input\r\n #inputElement\r\n autocomplete=\"nope\"\r\n formControlName=\"number\"\r\n type=\"text\"\r\n [thousandSeparator]=\"thousandsSeparator\"\r\n [decimalMarker]=\"decimalMarker\"\r\n [class]=\"innerClass\"\r\n [mask]=\"'separator.' + decimals\"\r\n [allowNegativeNumbers]=\"allowNegative\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (blur)=\"onPhoneInputBlur()\"\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <mrx-error-message *ngIf=\"!isValid && invalidMessageStart\">\r\n {{invalidMessageStart}}\r\n <a href=\"#\" (click)=\"resetToMax($event)\">{{maxMessage}}</a>\r\n {{invalidMessageEnd}}\r\n </mrx-error-message>\r\n\r\n <mrx-save-state [id]=\"uuid\" [fields]=\"fields\"></mrx-save-state>\r\n</div>\r\n", styles: [".mrx-input-number.mrx-input-number{width:100%;position:relative}.mrx-input-number.mrx-input-number .mrx-input-text__wrapper{position:relative}.mrx-input-number.mrx-input-number input{box-sizing:border-box;border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s}.mrx-input-number.mrx-input-number input:focus,.mrx-input-number.mrx-input-number input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-input-number.mrx-input-number input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-input-number.mrx-input-number.mrx-input__readonly input[type=tel]:disabled{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input__readonly input{background-color:inherit}.mrx-input-number.mrx-input-number.mrx-input-number-lg input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-lg:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-lg.mrx-input-number-with-icon input{padding:calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-3) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-md input{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-md:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-md.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) + var(--spacing-helf) - var(--border-width-default)) calc(var(--spacing-module) * 10)}.mrx-input-number.mrx-input-number.mrx-input-number-sm input{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-input-number.mrx-input-number.mrx-input-number-sm:not(.mrx-input-number-with-icon) input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4)}.mrx-input-number.mrx-input-number.mrx-input-number-sm.mrx-input-number-with-icon input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-8)}.mrx-input-number.mrx-input-number.mrx-input-error input{border-color:var(--system-bg-controls-negative-default)}.mrx-input-number.mrx-input-number.mrx-input-checked-error input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-number.mrx-input-number.mrx-input-checked-success input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-input-number.mrx-input-number.-disabled input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E)}.mrx-input-number.mrx-input-number.-readonly input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626)}\n"] }]
190
208
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { fields: [{
191
209
  type: Input
192
210
  }], placeholder: [{
@@ -207,6 +225,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
207
225
  type: Input
208
226
  }], isNullableValue: [{
209
227
  type: Input
228
+ }], isAutoCorrectingValue: [{
229
+ type: Input
210
230
  }], invalid: [{
211
231
  type: Input
212
232
  }], checkInvalid: [{
@@ -235,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
235
255
  }], modelChange: [{
236
256
  type: Output
237
257
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUlyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBR3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtBQUNsQixDQUFDLENBQUM7QUFhRixNQUFNLE9BQU8sb0JBQW9CO0lBMkcvQixZQUFZLEVBQWU7UUFyR3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUt4QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRUwsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBQ3JDLG9CQUFlLEdBQXFCLElBQUksQ0FBQztRQUN6QyxTQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDckIsU0FBSSxHQUFHLFlBQVksQ0FBQztRQUNwQixhQUFRLEdBQUcsSUFBSSxDQUFD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QTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXROdW1iZXJTaXplc0VudW0sXHJcbiAgSW5wdXROdW1iZXJTaXplc1R5cGVzLFxyXG4gIElucHV0TnVtYmVyVHlwZSxcclxuICBJbnB1dE51bWJlclZhbHVlV2l0aElkXHJcbn0gZnJvbSAnLi9pbnB1dC1udW1iZXIuZW51bSc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21yeC1hdXRvc2F2ZS9tcngtYXV0b3NhdmUuc2VydmljZSc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRGVjaW1hbE1hcmtlclR5cGUgPSAnLicgfCAnLCcgfCBbJy4nLCAnLCddO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtbnVtYmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlY2ltYWxNYXJrZXI/OiBEZWNpbWFsTWFya2VyVHlwZTtcclxuICBwcml2YXRlIHN0YXRpYyBfZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gZmFsc2U7XHJcbiAgcHVibGljIHN0YXRpYyB0aG91c2FuZHNTZXBhcmF0b3I6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcblxyXG4gIG51bWJlckZvcm06IEZvcm1Hcm91cDtcclxuICBpbnZhbGlkTWVzc2FnZVN0YXJ0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGludmFsaWRNZXNzYWdlRW5kOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xyXG4gIGRlY2ltYWxzID0gMjtcclxuXHJcbiAgcHJpdmF0ZSBpbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZTogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgcHJpdmF0ZSBfbWluID0gLTk5OTk5OTk5OS45OTtcclxuICBwcml2YXRlIF9tYXggPSA5OTk5OTk5OTkuOTk7XHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCA9IHRydWU7XHJcblxyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbm5lckNsYXNzID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dOZWdhdGl2ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiBJbnB1dE51bWJlclNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXBhcmF0b3I/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRlY2ltYWxTZXBhcmF0b3I/OiBEZWNpbWFsTWFya2VyVHlwZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNOdWxsYWJsZVZhbHVlID0gZmFsc2U7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCdudW1iZXJUeXBlJylcclxuICBwdWJsaWMgc2V0IHNldE51bWJlclR5cGUodmFsdWU6IElucHV0TnVtYmVyVHlwZSkge1xyXG4gICAgdGhpcy5kZWNpbWFscyA9IHZhbHVlID09PSAnZmxvYXQnID8gMiA6IHZhbHVlID09PSAncGVyY2VudCcgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnaW52YWxpZE1lc3NhZ2UnKVxyXG4gIHB1YmxpYyBzZXQgc2V0SW52YWxpZE1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB2YWx1ZS5zcGxpdCgnezB9Jyk7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VTdGFydCA9IHBhcmFbMF07XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VFbmQgPSBwYXJhWzFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZVN0YXJ0ID0gbnVsbDtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2Rpc2FibGVkJylcclxuICBwdWJsaWMgc2V0IHNldERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZVxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdyZWFkb25seScpXHJcbiAgcHVibGljIHNldCBzZXRSZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gdmFsdWVcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWluVmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWluKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21pbiA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWF4VmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWF4KHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21heCA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLm51bWJlckZvcm0gPSBmYi5ncm91cCh7XHJcbiAgICAgIG51bWJlcjogWycnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIElucHV0TnVtYmVyQ29tcG9uZW50LmluaXROdW1iZXJGb3JtYXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXROdW1iZXJTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBkZWNpbWFsTWFya2VyKCk6ICcuJyB8ICcsJyB8IFsnLicsICcsJ10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC5kZWNpbWFsTWFya2VyIHx8ICcsJztcclxuICB9XHJcblxyXG4gIGdldCB0aG91c2FuZHNTZXBhcmF0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC50aG91c2FuZHNTZXBhcmF0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRlYyA9IHRoaXMuZGVjaW1hbE1hcmtlclswXTtcclxuICAgIHJldHVybiB0aGlzLl9tYXgudG9Mb2NhbGVTdHJpbmcoJ2VuJykuc3BsaXQoJywnKS5qb2luKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5yZXBsYWNlKCcuJywgZGVjKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZlcmlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICByZXR1cm4gIXRoaXMucmVxdWlyZWQgfHxcclxuICAgICAgKHRoaXMucmVxdWlyZWQgJiYgZi52YWx1ZSAhPT0gbnVsbCAmJiBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pc1ZhbGlkKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbml0TnVtYmVyRm9ybWF0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2RlbGltaXRlcnNJbml0aWFsaXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDRgdC40YHRgtC10LzQvdGL0Lkg0YTQvtGA0LzQsNGCINGH0LjRgdC70LAg0YEg0LTRgNC+0LHQvdC+0Lkg0YfQsNGB0YLRjNGOINC4INCz0YDRg9C/0L/QvtC5INGA0LDQt9GA0LDRj9C00L7QsiAo0YLRi9GB0Y/Rh9C4KVxyXG4gICAgY29uc3QgYyA9IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0VG9QYXJ0cygxMjM0LjUpO1xyXG5cclxuICAgIGNvbnN0IHQgPSBjLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdncm91cCcpPy52YWx1ZTtcclxuXHJcbiAgICAvLyDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINCz0YDRg9C/0L9cclxuICAgIHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yID0gdD8uY2hhckNvZGVBdCgwKSA9PT0gMTYwID8gJyAnIDogdCB8fCAnICc7XHJcblxyXG4gICAgLy8g0YDQsNC30LTQtdC70LjRgtC10LvRjCDQtNGA0L7QsdC90L7QuSDRh9Cw0YHRgtC4XHJcbiAgICB0aGlzLmRlY2ltYWxNYXJrZXIgPSAoYy5maW5kKHggPT4geC50eXBlID09PSAnZGVjaW1hbCcpPy52YWx1ZSBhcyAoJywnIHwgJy4nKSk7XHJcblxyXG4gICAgdGhpcy5fZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHRoaXMuaW52b2tlQ2hhbmdlZCkge1xyXG4gICAgICAgIGlmICh0aGlzLm51bWJlckZvcm0udmFsaWQpIHtcclxuICAgICAgICAgIGNvbnN0IG51bSA9IHRoaXMubnVtYmVyRm9ybS52YWx1ZS5udW1iZXI7XHJcbiAgICAgICAgICBsZXQgbnVtVmFsdWU6IG51bWJlcjtcclxuICAgICAgICAgIGlmIChudW0gPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChudW0gJiYgdHlwZW9mIChudW0pID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBudW1WYWx1ZSA9IHBhcnNlRmxvYXQobnVtLnJlcGxhY2UoJywnLCAnLicpLnNwbGl0KHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5qb2luKCcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bVZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHsgdmFsdWU6IG51bVZhbHVlLCBpZDogdGhpcy51dWlkIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKG51bSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIG51bVZhbHVlID0gbnVtO1xyXG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudW1WYWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7IHZhbHVlOiBudW1WYWx1ZSwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tJc1ZhbGlkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0VG9NYXgoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodGhpcy5fbWF4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNWYWxpZCgpIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgdGhpcy5faXNWYWxpZCA9IHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlZCB8fCAoZiAmJiBmLnZhbGlkIHx8ICghZi5kaXJ0eSAmJiAhZi50b3VjaGVkKSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGYgPSB0aGlzLmdldENvbnRyb2woJ251bWJlcicpO1xyXG4gICAgZi5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLm51bWJlckZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBjbGFzcz1cIm1yeC1pbnB1dC1udW1iZXJcIlxyXG4gICAgW2NsYXNzXT1cImdldENsYXNzZXNcIlxyXG4gICAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCIhaXNWYWxpZCB8fCBpbnZhbGlkXCJcclxuICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LW51bWJlcl9fd3JhcHBlclwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJudW1iZXJGb3JtXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibm9wZVwiXHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgW3Rob3VzYW5kU2VwYXJhdG9yXT1cInRob3VzYW5kc1NlcGFyYXRvclwiXHJcbiAgICAgICAgICAgIFtkZWNpbWFsTWFya2VyXT1cImRlY2ltYWxNYXJrZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5uZXJDbGFzc1wiXHJcbiAgICAgICAgICAgIFttYXNrXT1cIidzZXBhcmF0b3IuJyArIGRlY2ltYWxzXCJcclxuICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVOdW1iZXJzXT1cImFsbG93TmVnYXRpdmVcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1yeC1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWlzVmFsaWQgJiYgaW52YWxpZE1lc3NhZ2VTdGFydFwiPlxyXG4gICAge3tpbnZhbGlkTWVzc2FnZVN0YXJ0fX1cclxuICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cInJlc2V0VG9NYXgoJGV2ZW50KVwiPnt7bWF4TWVzc2FnZX19PC9hPlxyXG4gICAge3tpbnZhbGlkTWVzc2FnZUVuZH19XHJcbiAgPC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUlyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFM0UsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO0FBQ2xCLENBQUMsQ0FBQztBQWFGLE1BQU0sT0FBTyxvQkFBb0I7SUE0Ry9CLFlBQVksRUFBZTtRQXRHcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3hCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFTCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixzQkFBaUIsR0FBZSxJQUFJLENBQUM7UUFDckMsb0JBQWUsR0FBcUIsSUFBSSxDQUFDO1FBQ3pDLFNBQUksR0FBRyxD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aUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7cUJBQ2pHO2tHQTBCZSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UscUJBQXFCO3NCQUFwQyxLQUFLO2dCQUdVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFcUIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUdkLGFBQWE7c0JBRHZCLEtBQUs7dUJBQUMsWUFBWTtnQkFNUixpQkFBaUI7c0JBRDNCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQWFaLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsVUFBVTtnQkFhTixXQUFXO3NCQURyQixLQUFLO3VCQUFDLFVBQVU7Z0JBYU4sTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVlOLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsVUFBVTtnQkFXQSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBWYWxpZGF0b3JzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIElucHV0TnVtYmVyU2l6ZXNFbnVtLFxyXG4gIElucHV0TnVtYmVyU2l6ZXNUeXBlcyxcclxuICBJbnB1dE51bWJlclR5cGUsXHJcbiAgSW5wdXROdW1iZXJWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vaW5wdXQtbnVtYmVyLmVudW0nO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tcngtYXV0b3NhdmUvbXJ4LWF1dG9zYXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgcGFpcndpc2UsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmNvbnN0IG5vb3AgPSAoKSA9PiB7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBEZWNpbWFsTWFya2VyVHlwZSA9ICcuJyB8ICcsJyB8IFsnLicsICcsJ107XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1udW1iZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LW51bWJlci5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXROdW1iZXJDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZGVjaW1hbE1hcmtlcj86IERlY2ltYWxNYXJrZXJUeXBlO1xyXG4gIHByaXZhdGUgc3RhdGljIF9kZWxpbWl0ZXJzSW5pdGlhbGlzZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIHRob3VzYW5kc1NlcGFyYXRvcjogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuXHJcbiAgbnVtYmVyRm9ybTogRm9ybUdyb3VwO1xyXG4gIGludmFsaWRNZXNzYWdlU3RhcnQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcbiAgaW52YWxpZE1lc3NhZ2VFbmQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XHJcbiAgZGVjaW1hbHMgPSAyO1xyXG5cclxuICBwcml2YXRlIGludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIF9taW4gPSAtOTk5OTk5OTk5Ljk5O1xyXG4gIHByaXZhdGUgX21heCA9IDk5OTk5OTk5OS45OTtcclxuICBwcml2YXRlIF9pc1ZhbGlkID0gdHJ1ZTtcclxuXHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGlubmVyQ2xhc3MgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd05lZ2F0aXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0TnVtYmVyU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIHNlcGFyYXRvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVjaW1hbFNlcGFyYXRvcj86IERlY2ltYWxNYXJrZXJUeXBlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc051bGxhYmxlVmFsdWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNBdXRvQ29ycmVjdGluZ1ZhbHVlID0gZmFsc2U7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCdudW1iZXJUeXBlJylcclxuICBwdWJsaWMgc2V0IHNldE51bWJlclR5cGUodmFsdWU6IElucHV0TnVtYmVyVHlwZSkge1xyXG4gICAgdGhpcy5kZWNpbWFscyA9IHZhbHVlID09PSAnZmxvYXQnID8gMiA6IHZhbHVlID09PSAncGVyY2VudCcgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnaW52YWxpZE1lc3NhZ2UnKVxyXG4gIHB1YmxpYyBzZXQgc2V0SW52YWxpZE1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB2YWx1ZS5zcGxpdCgnezB9Jyk7XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VTdGFydCA9IHBhcmFbMF07XHJcbiAgICAgIHRoaXMuaW52YWxpZE1lc3NhZ2VFbmQgPSBwYXJhWzFdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZVN0YXJ0ID0gbnVsbDtcclxuICAgICAgdGhpcy5pbnZhbGlkTWVzc2FnZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2Rpc2FibGVkJylcclxuICBwdWJsaWMgc2V0IHNldERpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZVxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMubnVtYmVyRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludm9rZUNoYW5nZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdyZWFkb25seScpXHJcbiAgcHVibGljIHNldCBzZXRSZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gdmFsdWVcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm51bWJlckZvcm0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5udW1iZXJGb3JtLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbnZva2VDaGFuZ2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWluVmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWluKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21pbiA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnbWF4VmFsdWUnKVxyXG4gIHB1YmxpYyBzZXQgc2V0TWF4KHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuX21heCA9IHZhbDtcclxuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgYy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLl9taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLl9tYXgpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dE51bWJlclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXROdW1iZXJWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLm51bWJlckZvcm0gPSBmYi5ncm91cCh7XHJcbiAgICAgIG51bWJlcjogWycnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIElucHV0TnVtYmVyQ29tcG9uZW50LmluaXROdW1iZXJGb3JtYXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXROdW1iZXJTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIGdldCBkZWNpbWFsTWFya2VyKCk6ICcuJyB8ICcsJyB8IFsnLicsICcsJ10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC5kZWNpbWFsTWFya2VyIHx8ICcsJztcclxuICB9XHJcblxyXG4gIGdldCB0aG91c2FuZHNTZXBhcmF0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlcGFyYXRvciB8fCBJbnB1dE51bWJlckNvbXBvbmVudC50aG91c2FuZHNTZXBhcmF0b3I7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRlYyA9IHRoaXMuZGVjaW1hbE1hcmtlclswXTtcclxuICAgIHJldHVybiB0aGlzLl9tYXgudG9Mb2NhbGVTdHJpbmcoJ2VuJykuc3BsaXQoJywnKS5qb2luKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5yZXBsYWNlKCcuJywgZGVjKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZlcmlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICByZXR1cm4gIXRoaXMucmVxdWlyZWQgfHxcclxuICAgICAgKHRoaXMucmVxdWlyZWQgJiYgZi52YWx1ZSAhPT0gbnVsbCAmJiBmLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pc1ZhbGlkKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbml0TnVtYmVyRm9ybWF0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2RlbGltaXRlcnNJbml0aWFsaXNlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDRgdC40YHRgtC10LzQvdGL0Lkg0YTQvtGA0LzQsNGCINGH0LjRgdC70LAg0YEg0LTRgNC+0LHQvdC+0Lkg0YfQsNGB0YLRjNGOINC4INCz0YDRg9C/0L/QvtC5INGA0LDQt9GA0LDRj9C00L7QsiAo0YLRi9GB0Y/Rh9C4KVxyXG4gICAgY29uc3QgYyA9IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0VG9QYXJ0cygxMjM0LjUpO1xyXG5cclxuICAgIGNvbnN0IHQgPSBjLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdncm91cCcpPy52YWx1ZTtcclxuXHJcbiAgICAvLyDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINCz0YDRg9C/0L9cclxuICAgIHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yID0gdD8uY2hhckNvZGVBdCgwKSA9PT0gMTYwID8gJyAnIDogdCB8fCAnICc7XHJcblxyXG4gICAgLy8g0YDQsNC30LTQtdC70LjRgtC10LvRjCDQtNGA0L7QsdC90L7QuSDRh9Cw0YHRgtC4XHJcbiAgICB0aGlzLmRlY2ltYWxNYXJrZXIgPSAoYy5maW5kKHggPT4geC50eXBlID09PSAnZGVjaW1hbCcpPy52YWx1ZSBhcyAoJywnIHwgJy4nKSk7XHJcblxyXG4gICAgdGhpcy5fZGVsaW1pdGVyc0luaXRpYWxpc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5udW1iZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHBhaXJ3aXNlKClcclxuICAgICkuc3Vic2NyaWJlKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICB0aGlzLl91cGRhdGVWYWx1ZShuZXdWYWx1ZS5udW1iZXIpXHJcbiAgICB9KTtcclxuICAgIHRoaXMubnVtYmVyRm9ybS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrSXNWYWxpZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pbnZva2VDaGFuZ2VkKSB7XHJcbiAgICAgIGlmICh0aGlzLm51bWJlckZvcm0udmFsaWQpIHtcclxuICAgICAgICBjb25zdCBudW0gPSBpbnNpZGVWYWx1ZTtcclxuICAgICAgICBsZXQgbnVtVmFsdWU6IG51bWJlcjtcclxuICAgICAgICBpZiAobnVtID09PSAnJykge1xyXG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSAmJiB0eXBlb2YgKG51bSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBudW1WYWx1ZSA9IHBhcnNlRmxvYXQobnVtLnJlcGxhY2UoJywnLCAnLicpLnNwbGl0KHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKS5qb2luKCcnKSk7XHJcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudW1WYWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoeyB2YWx1ZTogbnVtVmFsdWUsIGlkOiB0aGlzLnV1aWQgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKG51bSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBudW1WYWx1ZSA9IG51bTtcclxuICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bVZhbHVlKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7IHZhbHVlOiBudW1WYWx1ZSwgaWQ6IHRoaXMudXVpZCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0VG9NYXgoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuICAgIGYuc2V0VmFsdWUodGhpcy5fbWF4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNWYWxpZCgpIHtcclxuICAgIGlmICghdGhpcy5pc0F1dG9Db3JyZWN0aW5nVmFsdWUpIHtcclxuICAgICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0aGlzLm51bWJlckZvcm0uZGlzYWJsZWQgfHwgKGYgJiYgZi52YWxpZCB8fCAoIWYuZGlydHkgJiYgIWYudG91Y2hlZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QaG9uZUlucHV0Qmx1cigpIHtcclxuICAgIGlmICh0aGlzLmlzQXV0b0NvcnJlY3RpbmdWYWx1ZSkge1xyXG4gICAgICBjb25zdCBmID0gdGhpcy5nZXRDb250cm9sKCdudW1iZXInKTtcclxuXHJcbiAgICAgIGlmIChmLnZhbHVlID4gdGhpcy5fbWF4KSB7XHJcbiAgICAgICAgZi5zZXRWYWx1ZSh0aGlzLl9tYXgpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmLnZhbHVlIDwgdGhpcy5fbWluKSB7XHJcbiAgICAgICAgZi5zZXRWYWx1ZSh0aGlzLl9taW4pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZiA9IHRoaXMuZ2V0Q29udHJvbCgnbnVtYmVyJyk7XHJcbiAgICBmLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UsIGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubnVtYmVyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAgIGNsYXNzPVwibXJ4LWlucHV0LW51bWJlclwiXHJcbiAgICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cIiFpc1ZhbGlkIHx8IGludmFsaWRcIlxyXG4gICAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICBbY2xhc3MuLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtbnVtYmVyX193cmFwcGVyXCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm51bWJlckZvcm1cIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2lucHV0RWxlbWVudFxyXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJub3BlXCJcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbdGhvdXNhbmRTZXBhcmF0b3JdPVwidGhvdXNhbmRzU2VwYXJhdG9yXCJcclxuICAgICAgICAgICAgW2RlY2ltYWxNYXJrZXJdPVwiZGVjaW1hbE1hcmtlclwiXHJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbm5lckNsYXNzXCJcclxuICAgICAgICAgICAgW21hc2tdPVwiJ3NlcGFyYXRvci4nICsgZGVjaW1hbHNcIlxyXG4gICAgICAgICAgICBbYWxsb3dOZWdhdGl2ZU51bWJlcnNdPVwiYWxsb3dOZWdhdGl2ZVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyIDogJydcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvblBob25lSW5wdXRCbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhaXNWYWxpZCAmJiBpbnZhbGlkTWVzc2FnZVN0YXJ0XCI+XHJcbiAgICB7e2ludmFsaWRNZXNzYWdlU3RhcnR9fVxyXG4gICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwicmVzZXRUb01heCgkZXZlbnQpXCI+e3ttYXhNZXNzYWdlfX08L2E+XHJcbiAgICB7e2ludmFsaWRNZXNzYWdlRW5kfX1cclxuICA8L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ export const dropdownOpen = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABDklEQVRIie3PK0uEQRQG4EfdIoIgiIJtg8VgMa6woEEMBpvFZNhmM2k1icVkM5j0D1hNFoPFsMGyYBAEEUS8X8qMLB/frHsTDPvCSec9zzD08p9SRg2lDoxSMMrZxSwe8IV7zLSBT+MuGI+Yy8Pj3GKqBXwSNxnj55FaZhHnGsUm8GLo5hk1mMdTonCFiQb4GKqJ2xcsxuICnhPFKsZz8FFcJm5esZQ9WMZb4uACI3XdYZwnuu9YSX15FR+JwzMMYRCnic4n1lJ4TCUU84CTMCm88hses55AGs1Gs3jMVgv4Zqt4zHYT+G67eMxOA3yvUxz6sJ+DH4RdV9KPwzr8GAPdwmMKOApT6Dbey9/lG8m7mtO59/lwAAAAAElFTkSuQmCC";
2
+ export const dropdownClose = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABEklEQVRIie3Pr0uDQRwG8I+6IoIgiIJtwWKwGCeoGMRgMVlMhtlsJjGaxGIyWUz6B1hNFoPFYLAoBkEQQcTf0+AdjPHe3LutCHvgSff9fu6OTv5TCjgMLbQb78YBvkOP0NMuvAt7VXjsfri45Wxn4LG7reJbdfDYnWbxzQbw2I28+FoOPHa9UXwVlQRyHJp1VkH5L3wZXwngFH3oxUmdS1ZS+CI+EovnGKia7cdZYvYTS7X4HF4TC5cYznjQIC4SO+9YiIOzeEkMXmEk9WUMhQdk7b5hHm4SA7co1sFjimE2y7iGSTzVHNxjrAE8ZhR3NcYzZuJA9SWPmMiBx4zjIQuPmfb7pVITeEwpGFMtGJ20OT8JFprkRrg+uAAAAABJRU5ErkJggg==";
3
+ export const flagPlaceholder = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAABHElEQVR4nO3aIU5DQQCE4R+CA1fTC3ADDAoEcIAmSBQHIMFyEyySExQUaDgFFRgUHADxLN1NyNudNu//kqpJk+kkb5umC5IkSZIkTc5OITsFHoD9Tl1a+QGugJe/wr3CG8+BL+C2Qame7oAL/jEAwCfwOHajzq5L4W6vFpvKAdIF0hwgXSDNAdIF0hwgXSDNAdIF0hwgXSBt8gPUfg4fA289ijR0CLyvC2sDrID7Uev0d1MKawN8sP0DLErh5M8AB0gXSJv8ALVDcAac9SjS0KwU1gY4Ap7H6xLztC6oPQJLhn+Ptvm1LH3AyZ8BDpAukOYA6QJpta/BOXDZo0hD81JYuiBxwnBB4mDUOv19M1yQeE0XkSRJkiRpQ/wCRYIVXPol4dwAAAAASUVORK5CYII=";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtdGVsL2Fzc2V0cy9iYXNlNjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLG9lQUFvZSxDQUFDO0FBRWpnQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsNGVBQTRlLENBQUM7QUFFMWdCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyx3ZkFBd2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkcm9wZG93bk9wZW4gPSBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUJEa2xFUVZSSWllM1BLMHVFUVJRRzRFZmRJb0lnaUlKdGc4VmdNYTZ3b0VFTUJwdkZaTmhtTTJrMWljVmtNNWowRDFoTkZvUEZzTUd5WUJBRUVVUzhYOHFNTEIvZnJIc1REUHZDU2VjOXp6RDA4cDlTUmcybERveFNNTXJaeFN3ZThJVjd6TFNCVCtNdUdJK1l5OFBqM0dLcUJYd1NOeG5qNTVGYVpoSG5Hc1VtOEdMbzVoazFtTWRUb25DRmlRYjRHS3FKMnhjc3h1SUNuaFBGS3NaejhGRmNKbTVlc1pROVdNWmI0dUFDSTNYZFlad251dTlZU1gxNUZSK0p3ek1NWVJDbmljNG4xbEo0VENVVTg0Q1RNQ204OGhzZXM1NUFHczFHczNqTVZndjRacXQ0ekhZVCtHNjdlTXhPQTN5dlV4ejZzSitESDRSZFY5S1B3enI4R0FQZHdtTUtPQXBUNkRiZXk5L2xHOG03bXRPNTkvbHdBQUFBQUVsRlRrU3VRbUNDXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZHJvcGRvd25DbG9zZSA9IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQkVrbEVRVlJJaWUzUHIwdURRUndHOEkrNklvSWdpSUp0d1dLd0dDZW9HTVJnTVZsTWh0bHNKakdheEdJeVdVejZCMWhORm9QRllMQW9Ca0VRUWNUZjArQWRqUEhlM0x1dENIdmdTZmY5ZnU2T1R2NVRDamdNTGJRYjc4WUJ2a09QME5NdXZBdDdWWGpzZnJpNDVXeG40TEc3cmVKYmRmRFluV2J4elFidzJJMjgrRm9PUEhhOVVYd1ZsUVJ5SEpwMVZrSDVMM3daWHduZ0ZIM294VW1kUzFaUytDSStFb3ZuR0tpYTdjZFpZdllUUzdYNEhGNFRDNWNZem5qUUlDNFNPKzlZaUlPemVFa01YbUVrOVdVTWhRZGs3YjVoSG00U0E3Y28xc0ZqaW1FMnk3aUdTVHpWSE54anJBRThaaFIzTmNZelp1SkE5U1dQbU1pQng0empJUXVQbWZiN3BWSVRlRXdwR0ZNdEdKMjBPVDhKRnBya1JyZyt1QUFBQUFCSlJVNUVya0pnZ2c9PVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZsYWdQbGFjZWhvbGRlciA9IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FZQUFBQ3FhWEhlQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQkhFbEVRVlI0bk8zYUlVNURRUUNFNFIrQ0ExZlRDM0FEREFvRWNJQW1TQlFISU1GeUV5eVNFeFFVYURnRkZSZ1VIQUR4TE4xTnlOdWROdS8va3FwSmsra2tiNXVtQzVJa1NaSWtUYzVPSVRzRkhvRDlUbDFhK1FHdWdKZS93cjNDRzgrQkwrQzJRYW1lN29BTC9qRUF3Q2Z3T0hhanpxNUw0VzZ2RnB2S0FkSUYwaHdnWFNETkFkSUYwaHdnWFNETkFkSUYwaHdnWFNCdDhnUFVmZzRmQTI4OWlqUjBDTHl2QzJzRHJJRDdVZXYwZDFNS2F3TjhzUDBETEVyaDVNOEFCMGdYU0p2OEFMVkRjQWFjOVNqUzBLd1UxZ1k0QXA3SDZ4THp0QzZvUFFKTGhuK1B0dm0xTEgzQXlaOEJEcEF1a09ZQTZRSnB0YS9CT1hEWm8waEQ4MUpZdWlCeHduQkI0bURVT3YxOU0xeVFlRTBYa1NSSmtpUnBRL3dDUllJVlhQb2w0ZHdBQUFBQVNVVk9SSzVDWUlJPVwiO1xyXG4iXX0=