@tetacom/ng-components 1.1.24 → 1.1.26

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.
@@ -7,14 +7,16 @@ import { VerticalAlign } from '../../../common/enum/vertical-align.enum';
7
7
  import { viewType } from '../../../common/model/view-type.model';
8
8
  import { BasePicker } from '../base-picker';
9
9
  import { DatePeriod } from '../model/date-period';
10
+ import { TetaConfigService } from '../../../locale/teta-config.service';
10
11
  import * as i0 from "@angular/core";
11
12
  export declare const DATE_PICKER_CONTROL_VALUE_ACCESSOR: any;
12
13
  export declare class DatePickerComponent extends BasePicker implements OnInit, ControlValueAccessor {
13
14
  _elementRef: ElementRef;
14
15
  _cdr: ChangeDetectorRef;
15
16
  datePipe: DatePipe;
17
+ private localeService;
16
18
  date: Date | string | number;
17
- locale: string;
19
+ locale: 'en' | 'ru';
18
20
  showTime: boolean;
19
21
  minDate: Date | string | number;
20
22
  maxDate: Date | string | number;
@@ -38,9 +40,9 @@ export declare class DatePickerComponent extends BasePicker implements OnInit, C
38
40
  mask: string;
39
41
  private readonly classDatepicker;
40
42
  private readonly tabindex;
41
- constructor(_elementRef: ElementRef, _cdr: ChangeDetectorRef, datePipe: DatePipe);
43
+ constructor(_elementRef: ElementRef, _cdr: ChangeDetectorRef, datePipe: DatePipe, localeService: TetaConfigService);
42
44
  ngOnInit(): void;
43
- prepareInput(): void;
45
+ prepareInput(): Promise<void>;
44
46
  onBlur(): void;
45
47
  setDate(date: any): void;
46
48
  onChange(date: Date): void;
@@ -7,14 +7,16 @@ import { VerticalAlign } from '../../../common/enum/vertical-align.enum';
7
7
  import { viewType } from '../../../common/model/view-type.model';
8
8
  import { BasePicker } from '../base-picker';
9
9
  import { DateFromToModel } from '../model/from-to.model';
10
+ import { TetaConfigService } from '../../../locale/teta-config.service';
10
11
  import * as i0 from "@angular/core";
11
12
  export declare const DATE_Range_CONTROL_VALUE_ACCESSOR: any;
12
13
  export declare class DateRangeComponent extends BasePicker implements OnInit, ControlValueAccessor {
13
14
  _cdr: ChangeDetectorRef;
14
15
  _elementRef: ElementRef;
15
16
  datePipe: DatePipe;
17
+ private localeService;
16
18
  date: DateFromToModel;
17
- locale: string;
19
+ locale: 'en' | 'ru';
18
20
  showTime: boolean;
19
21
  minDate: Date | string | number;
20
22
  maxDate: Date | string | number;
@@ -31,10 +33,10 @@ export declare class DateRangeComponent extends BasePicker implements OnInit, Co
31
33
  mask: string;
32
34
  selectedDate: ReplaySubject<DateFromToModel>;
33
35
  private readonly classDaterange;
34
- constructor(_cdr: ChangeDetectorRef, _elementRef: ElementRef, datePipe: DatePipe);
36
+ constructor(_cdr: ChangeDetectorRef, _elementRef: ElementRef, datePipe: DatePipe, localeService: TetaConfigService);
35
37
  changeSelectedDate(date: Date, selectedDate: DateFromToModel): void;
36
38
  checkNull(): string;
37
- prepareInput(): void;
39
+ prepareInput(): Promise<void>;
38
40
  onBlur(): void;
39
41
  setDate(range: DateFromToModel): void;
40
42
  writeValue(obj: DateFromToModel): void;
@@ -1,6 +1,6 @@
1
- import { SceneComponent } from "../scene/scene.component";
2
- import { I3dChartConfig } from "../model/i-3d-chart-config";
3
- import { Camera } from "three";
1
+ import { SceneComponent } from '../scene/scene.component';
2
+ import { I3dChartConfig } from '../model/i-3d-chart-config';
3
+ import { Camera } from 'three';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class CanvasComponent {
6
6
  scene: typeof SceneComponent;
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
- import { I3dChartConfig } from '../model/i-3d-chart-config';
3
2
  import { Axes3dMinMax } from '../model/axes-3d-min-max';
3
+ import { I3dChartConfig } from '../model/i-3d-chart-config';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class Chart3dService {
6
6
  minMax: Observable<Axes3dMinMax>;
@@ -37,7 +37,7 @@ export class Chart3dComponent {
37
37
  }
38
38
  ngOnInit() {
39
39
  this._themeService.theme
40
- .pipe(takeWhile((_) => this._alive), tap((_) => {
40
+ .pipe(takeWhile(_ => this._alive), tap(_ => {
41
41
  this.gridColor = _ ? '#5d6a73' : '#bdbdc6';
42
42
  this.axesColor = _ ? '#8e8f9d' : '#7d8f9a';
43
43
  this.init();
@@ -66,7 +66,7 @@ export class Chart3dComponent {
66
66
  if (!data.points?.length) {
67
67
  return;
68
68
  }
69
- const points = data.points.map((_) => new THREE.Vector3(x(_.x), y(_.y), z(_.z)));
69
+ const points = data.points.map(_ => new THREE.Vector3(x(_.x), y(_.y), z(_.z)));
70
70
  const color = d3.scaleOrdinal(d3.schemeTableau10);
71
71
  const material = new THREE.LineBasicMaterial({
72
72
  color: data?.color ?? color(idx.toString()),
@@ -85,13 +85,15 @@ export class Chart3dComponent {
85
85
  const geometryLines = new THREE.BufferGeometry().setFromPoints(pointsLines);
86
86
  const line = new THREE.Line(geometryLines, material);
87
87
  this._scene.add(line);
88
- circles.forEach((r) => {
88
+ circles.forEach(r => {
89
89
  const material = new THREE.LineDashedMaterial({
90
90
  color: this.gridColor,
91
91
  dashSize: 1,
92
- gapSize: 3
92
+ gapSize: 3,
93
93
  });
94
- const circleGeometry = new THREE.BufferGeometry().setFromPoints(new THREE.Path().absarc(0, 0, x(r), 0, Math.PI * 2, false).getSpacedPoints(100));
94
+ const circleGeometry = new THREE.BufferGeometry().setFromPoints(new THREE.Path()
95
+ .absarc(0, 0, x(r), 0, Math.PI * 2, false)
96
+ .getSpacedPoints(100));
95
97
  const circle = new THREE.LineSegments(circleGeometry, material);
96
98
  circle.geometry.rotateX(-Math.PI / 2);
97
99
  this._scene.add(circle);
@@ -143,7 +145,7 @@ export class Chart3dComponent {
143
145
  animate();
144
146
  }
145
147
  addResizeObserver() {
146
- this._obs = new ResizeObserver((_) => {
148
+ this._obs = new ResizeObserver(_ => {
147
149
  this.setSize(_[0]?.contentRect.width, _[0]?.contentRect.height);
148
150
  });
149
151
  this._obs.observe(this._elementRef.nativeElement);
@@ -209,7 +211,7 @@ export class Chart3dComponent {
209
211
  this._scene.add(ticks);
210
212
  }
211
213
  getScales(series) {
212
- const extrems = series.map((_) => ({
214
+ const extrems = series.map(_ => ({
213
215
  x: d3.extent(_.points, (p) => p.x),
214
216
  y: d3.extent(_.points, (p) => p.y),
215
217
  z: d3.extent(_.points, (p) => p.z),
@@ -222,22 +224,28 @@ export class Chart3dComponent {
222
224
  }, { x: [], y: [], z: [] });
223
225
  const x = d3
224
226
  .scaleLinear()
225
- .domain([0, this._config?.axes?.max == null
227
+ .domain([
228
+ 0,
229
+ this._config?.axes?.max == null
226
230
  ? parseInt(d3.max(flattenExtrems.x))
227
231
  : this._config.axes.max,
228
232
  ])
229
- .range([0, this.SIDE_SIZE]).nice();
233
+ .range([0, this.SIDE_SIZE])
234
+ .nice();
230
235
  const y = d3
231
236
  .scaleLinear()
232
237
  .domain([0, parseInt(d3.max(flattenExtrems.y), 10)])
233
238
  .range([this.SIDE_SIZE, 0]);
234
239
  const z = d3
235
240
  .scaleLinear()
236
- .domain([0,
241
+ .domain([
242
+ 0,
237
243
  this._config?.axes?.max == null
238
244
  ? parseInt(d3.max(flattenExtrems.z))
239
- : this._config.axes.max])
240
- .range([0, this.SIDE_SIZE]).nice();
245
+ : this._config.axes.max,
246
+ ])
247
+ .range([0, this.SIDE_SIZE])
248
+ .nice();
241
249
  return { x, y, z };
242
250
  }
243
251
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: Chart3dComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThemeSwitchService }], target: i0.ɵɵFactoryTarget.Component });
@@ -252,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
252
260
  }], config: [{
253
261
  type: Input
254
262
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQzZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2NoYXJ0LTNkL2NoYXJ0M2QvY2hhcnQzZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2NoYXJ0LTNkL2NoYXJ0M2QvY2hhcnQzZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ1UsdUJBQXVCLEVBQ3RDLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUt6QixPQUFPLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFROUMsTUFBTSxPQUFPLGdCQUFnQjtJQWlCakI7SUFDQTtJQWpCVyxTQUFTLENBQWE7SUFFbkMsTUFBTSxDQUFjO0lBQ3BCLE9BQU8sQ0FBMEI7SUFDakMsU0FBUyxDQUFpQjtJQUMxQixTQUFTLENBQWdCO0lBQ3pCLElBQUksQ0FBaUI7SUFDckIsT0FBTyxDQUFpQjtJQUV4QixTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLFNBQVMsQ0FBTTtJQUNmLFNBQVMsQ0FBTTtJQUVmLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFFdEIsWUFDVSxXQUF1QixFQUN2QixhQUFpQztRQURqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFM0MsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQXNCO1FBQ3hDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxD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LENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFN0IsTUFBTSxDQUFDLEdBQUcsRUFBRTthQUNULFdBQVcsRUFBRTthQUNiLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDUixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksSUFBSTtnQkFDN0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVCLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUdwQyxPQUFPLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQztJQUNuQixDQUFDO3VHQXRWVSxnQkFBZ0I7MkZBQWhCLGdCQUFnQix1TEN4QjdCLDZCQUNBOzsyRkR1QmEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTtrSUFHMUIsU0FBUztzQkFBN0IsU0FBUzt1QkFBQyxRQUFRO2dCQXFCTixNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHtPcmJpdENvbnRyb2xzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY29udHJvbHMvT3JiaXRDb250cm9scyc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0NoYXJ0M2RPcHRpb25zfSBmcm9tICcuLi9tb2RlbC9jaGFydC0zZC1vcHRpb25zJztcbmltcG9ydCB7QmFzZTNkUG9pbnR9IGZyb20gJy4uL21vZGVsL2Jhc2UtM2QtcG9pbnQnO1xuaW1wb3J0IHtTZXJpZXMzZH0gZnJvbSAnLi4vbW9kZWwvc2VyaWVzLTNkJztcbmltcG9ydCB7VGhlbWVTd2l0Y2hTZXJ2aWNlfSBmcm9tICcuLi8uLi90aGVtZS1zd2l0Y2gvdGhlbWUtc3dpdGNoLnNlcnZpY2UnO1xuaW1wb3J0IHt0YWtlV2hpbGUsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0M2QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQzZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0M2QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0M2RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhc1JlZjogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9zY2VuZTogVEhSRUUuU2NlbmU7XG4gIHByaXZhdGUgX2NhbWVyYTogVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE7XG4gIHByaXZhdGUgX3JlbmRlcmVyOiBUSFJFRS5SZW5kZXJlcjtcbiAgcHJpdmF0ZSBfY29udHJvbHM6IE9yYml0Q29udHJvbHM7XG4gIHByaXZhdGUgX29iczogUmVzaXplT2JzZXJ2ZXI7XG4gIHByaXZhdGUgX2NvbmZpZzogQ2hhcnQzZE9wdGlvbnM7XG5cbiAgcHJpdmF0ZSBTSURFX1NJWkUgPSAxMDA7XG4gIHByaXZhdGUgZ3JpZENvbG9yOiBhbnk7XG4gIHByaXZhdGUgYXhlc0NvbG9yOiBhbnk7XG5cbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfdGhlbWVTZXJ2aWNlOiBUaGVtZVN3aXRjaFNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogQ2hhcnQzZE9wdGlvbnMpIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBwcml2YXRlIGdldCBjYW52YXMoKTogSFRNTENhbnZhc0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdGhlbWVTZXJ2aWNlLnRoZW1lXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIHRhcCgoXykgPT4ge1xuICAgICAgICAgIHRoaXMuZ3JpZENvbG9yID0gXyA/ICcjNWQ2YTczJyA6ICcjYmRiZGM2JztcbiAgICAgICAgICB0aGlzLmF4ZXNDb2xvciA9ICBfID8gJyM4ZThmOWQnIDogJyM3ZDhmOWEnO1xuICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuYWRkUmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLmNyZWF0ZVNjZW5lKCk7XG4gICAgdGhpcy5zdGFydFJlbmRlcmluZ0xvb3AoKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gICAgdGhpcy5yZW1vdmVSZXNpemVPYnNlcnZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGlmICghdGhpcy5fc2NlbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aGlsZSAodGhpcy5fc2NlbmUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fc2NlbmUucmVtb3ZlKHRoaXMuX3NjZW5lLmNoaWxkcmVuWzBdKTtcbiAgICB9XG5cbiAgICBjb25zdCB7eCwgeSwgen0gPSB0aGlzLmdldFNjYWxlcyh0aGlzLl9jb25maWcuc2VyaWVzKTtcblxuICAgIHRoaXMuY29uZmlnLnNlcmllcy5mb3JFYWNoKChkYXRhLCBpZHgpID0+IHtcblxuICAgICAgaWYgKCFkYXRhLnBvaW50cz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBwb2ludHMgPSBkYXRhLnBvaW50cy5tYXAoKF8pID0+IG5ldyBUSFJFRS5WZWN0b3IzKHgoXy54KSwgeShfLnkpLCB6KF8ueikpKTtcblxuICAgICAgY29uc3QgY29sb3IgPSBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lVGFibGVhdTEwKTtcblxuICAgICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuTGluZUJhc2ljTWF0ZXJpYWwoe1xuICAgICAgICBjb2xvcjogZGF0YT8uY29sb3IgPz8gY29sb3IoaWR4LnRvU3RyaW5nKCkpLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHR1YmVHZW9tZXRyeSA9IG5ldyBUSFJFRS5UdWJlR2VvbWV0cnkoXG4gICAgICAgIG5ldyBUSFJFRS5DYXRtdWxsUm9tQ3VydmUzKHBvaW50cyksXG4gICAgICAgIDEwMjQsXG4gICAgICAgIDAuNSxcbiAgICAgICAgMjAsXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuXG4gICAgICBsZXQgdHViZSA9IG5ldyBUSFJFRS5MaW5lKHR1YmVHZW9tZXRyeSwgbWF0ZXJpYWwpO1xuICAgICAgdGhpcy5fc2NlbmUuYWRkKHR1YmUpO1xuXG5cbiAgICB9KTtcblxuXG4gICAgY29uc3QgY2lyY2xlcyA9IHgudGlja3ModGhpcy5TSURFX1NJWkUgLyAxMCk7XG5cblxuICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiB0aGlzLmF4ZXNDb2xvciB9ICk7XG4gICAgY29uc3QgcG9pbnRzTGluZXMgPSBbXTtcbiAgICBwb2ludHNMaW5lcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAgLCAwKSk7XG4gICAgcG9pbnRzTGluZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMygwLCAwICwgeigtei5kb21haW4oKVsxXSkpKTtcblxuICAgIHBvaW50c0xpbmVzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoMCwgMCAsIDApKTtcbiAgICBwb2ludHNMaW5lcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKHgoLXguZG9tYWluKClbMV0pLCAwICwgMCkpO1xuXG4gICAgY29uc3QgZ2VvbWV0cnlMaW5lcyA9IG5ldyBUSFJFRS5CdWZmZXJHZW9tZXRyeSgpLnNldEZyb21Qb2ludHMocG9pbnRzTGluZXMpO1xuICAgIGNvbnN0IGxpbmUgPSBuZXcgVEhSRUUuTGluZShnZW9tZXRyeUxpbmVzLCBtYXRlcmlhbCk7XG5cbiAgICB0aGlzLl9zY2VuZS5hZGQobGluZSlcblxuICAgIGNpcmNsZXMuZm9yRWFjaCgocikgPT4ge1xuXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5MaW5lRGFzaGVkTWF0ZXJpYWwoe1xuICAgICAgICBjb2xvcjogdGhpcy5ncmlkQ29sb3IsXG4gICAgICAgIGRhc2hTaXplOiAxLFxuICAgICAgICBnYXBTaXplOiAzXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY2lyY2xlR2VvbWV0cnkgPSBuZXcgVEhSRUUuQnVmZmVyR2VvbWV0cnkoKS5zZXRGcm9tUG9pbnRzKFxuICAgICAgICBuZXcgVEhSRUUuUGF0aCgpLmFic2FyYygwLCAwLCB4KHIpLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpLmdldFNwYWNlZFBvaW50cygxMDApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBjaXJjbGUgPSBuZXcgVEhSRUUuTGluZVNlZ21lbnRzKGNpcmNsZUdlb21ldHJ5LCBtYXRlcmlhbCk7XG5cbiAgICAgIGNpcmNsZS5nZW9tZXRyeS5yb3RhdGVYKC1NYXRoLlBJIC8gMilcblxuICAgICAgdGhpcy5fc2NlbmUuYWRkKGNpcmNsZSk7XG5cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhd1RpY2tzKHgsIHksIHopO1xuXG4gICAgaWYoIXRoaXMuX2NvbnRyb2xzKSB7XG4gICAgICB0aGlzLl9jb250cm9scyA9IG5ldyBPcmJpdENvbnRyb2xzKHRoaXMuX2NhbWVyYSwgdGhpcy5fcmVuZGVyZXIuZG9tRWxlbWVudCk7XG5cbiAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZURhbXBpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fY29udHJvbHMuZW5hYmxlUGFuID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NvbnRyb2xzLmRhbXBpbmdGYWN0b3IgPSAwLjI1O1xuICAgICAgdGhpcy5fY29udHJvbHMuc2NyZWVuU3BhY2VQYW5uaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NvbnRyb2xzLm1pbkRpc3RhbmNlID0gMDtcbiAgICAgIHRoaXMuX2NvbnRyb2xzLm1heERpc3RhbmNlID0gMTAwMDA7XG4gICAgICB0aGlzLl9jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7XG5cbiAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZVpvb20gPSB0cnVlO1xuICAgIH1cblxuXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNjZW5lKCkge1xuICAgIHRoaXMuX3NjZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7XG5cbiAgICBjb25zdCBhc3BlY3RSYXRpbyA9XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggL1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgIGNvbnN0IGZpZWxkT2ZWaWV3ID0gMTA7XG4gICAgY29uc3QgbmVhckNsaXBwaW5nUGFuZSA9IDE7XG4gICAgY29uc3QgZmFyQ2xpcHBpbmdQYW5lID0gMTAwMDA7XG5cbiAgICB0aGlzLl9jYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoXG4gICAgICBmaWVsZE9mVmlldyxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgbmVhckNsaXBwaW5nUGFuZSxcbiAgICAgIGZhckNsaXBwaW5nUGFuZVxuICAgICk7XG5cbiAgICB0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KDEzMDAsIDEzMDAsIDEzMDApLnNldExlbmd0aCgxMzAwKTtcbiAgICB0aGlzLl9zY2VuZS5hZGQodGhpcy5fY2FtZXJhKTtcblxuXG4gIH1cblxuICBwcml2YXRlIHNldFNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLl9jYW1lcmEuYXNwZWN0ID0gd2lkdGggLyBoZWlnaHQ7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcblxuICAgIHRoaXMuX2NhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpIHtcbiAgICB0aGlzLl9yZW5kZXJlci5yZW5kZXIodGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UmVuZGVyaW5nTG9vcCgpIHtcbiAgICB0aGlzLl9yZW5kZXJlciA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKHtcbiAgICAgIGFudGlhbGlhczogdHJ1ZSxcbiAgICAgIGNhbnZhczogdGhpcy5jYW52YXMsXG4gICAgICBhbHBoYTogdHJ1ZSxcbiAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGFuaW1hdGUgPSAoKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gICAgICB0aGlzLl9jb250cm9scz8udXBkYXRlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH07XG5cbiAgICBhbmltYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJlc2l6ZU9ic2VydmVyKCkge1xuICAgIHRoaXMuX29icyA9IG5ldyBSZXNpemVPYnNlcnZlcigoXykgPT4ge1xuICAgICAgdGhpcy5zZXRTaXplKF9bMF0/LmNvbnRlbnRSZWN0LndpZHRoLCBfWzBdPy5jb250ZW50UmVjdC5oZWlnaHQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fb2JzLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuICBwcml2YXRlIHJlbW92ZVJlc2l6ZU9ic2VydmVyKCkge1xuICAgIHRoaXMuX29icy51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLl9vYnMuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYWtlU3ByaXRlKHRleHQ6IHN0cmluZywgb3B0cz86IHsgZm9udFNpemU/OiBudW1iZXIgfSk6IFRIUkVFLlNwcml0ZSB7XG4gICAgY29uc3QgZm9udFNpemUgPSAyMDtcblxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IHRleHRXaWR0aCA9IHRleHQubGVuZ3RoICogNTA7XG4gICAgY2FudmFzLmhlaWdodCA9IDUwO1xuICAgIGNhbnZhcy53aWR0aCA9IDUwO1xuXG4gICAgaWYgKGN0eCkge1xuICAgICAgY3R4LmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XG4gICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ21pZGRsZSc7XG4gICAgICBjdHguZmlsbFN0eWxlID0gJyNBMEEwQTAnO1xuICAgICAgY3R4LmZpbGxUZXh0KHRleHQsIDI1LCAyNSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGV4dHVyZSA9IG5ldyBUSFJFRS5UZXh0dXJlKGNhbnZhcyk7XG4gICAgdGV4dHVyZS5taW5GaWx0ZXIgPSBUSFJFRS5MaW5lYXJGaWx0ZXI7XG4gICAgdGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgY29uc3Qgc3ByaXRlTWF0ZXJpYWwgPSBuZXcgVEhSRUUuU3ByaXRlTWF0ZXJpYWwoe1xuICAgICAgbWFwOiB0ZXh0dXJlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ByaXRlID0gbmV3IFRIUkVFLlNwcml0ZShzcHJpdGVNYXRlcmlhbCk7XG4gICAgc3ByaXRlLnNjYWxlLnNldCgwLjQgKiBmb250U2l6ZSwgMC40ICogZm9udFNpemUsIDAuNCAqIGZvbnRTaXplKTtcblxuXG5cbiAgICByZXR1cm4gc3ByaXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3VGlja3MoeDogYW55LCB5OiBhbnksIHo6IGFueSkge1xuICAgIGNvbnN0IHRpY2tzID0gbmV3IFRIUkVFLk9iamVjdDNEKCk7XG4gICAgY29uc3Qgc2NhbGVzRXh0cmVtczogYW55W10gPSBbXTtcblxuICAgIFt4LCB5LCB6XS5mb3JFYWNoKChzY2FsZSwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBnZW5lcmF0ZWRUaWNrcyA9IHNjYWxlLnRpY2tzKHRoaXMuU0lERV9TSVpFIC8gMTApXG5cbiAgICAgIHNjYWxlc0V4dHJlbXMucHVzaChkMy5tYXgoZ2VuZXJhdGVkVGlja3MpKTtcblxuICAgICAgZ2VuZXJhdGVkVGlja3MuZm9yRWFjaCgoXzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHNwcml0ZSA9IHRoaXMubWFrZVNwcml0ZShfKTtcblxuICAgICAgICBpZiAoaWR4ID09PSAwKSB7XG4gICAgICAgICAgc3ByaXRlLnBvc2l0aW9uLnNldCh4KF8pLCB5KHkuZG9tYWluKClbMV0pLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpZHggPT09IDEpIHtcbiAgICAgICAgICBzcHJpdGUucG9zaXRpb24uc2V0KC0xMCwgeShfKSwgMCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpZHggPT09IDIpIHtcbiAgICAgICAgICBzcHJpdGUucG9zaXRpb24uc2V0KDAsIHkoeS5kb21haW4oKVsxXSksIHooXykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGlja3MuYWRkKHNwcml0ZSk7XG5cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm9ydGhMYWJlbCA9IHRoaXMubWFrZVNwcml0ZSgnWCcsIHtmb250U2l6ZTogMjh9KTtcbiAgICBjb25zdCB3ZXN0TGFiZWwgPSB0aGlzLm1ha2VTcHJpdGUoJ1knLCB7Zm9udFNpemU6IDI4fSk7XG4gICAgY29uc3QgdHZkTGFiZWwgPSB0aGlzLm1ha2VTcHJpdGUoJ1RWRCcsIHtmb250U2l6ZTogMjh9KTtcblxuICAgIG5vcnRoTGFiZWwucG9zaXRpb24uc2V0KHgoeC5kb21haW4oKVsxXSkgKyA1LCAwLCAwKTtcbiAgICB3ZXN0TGFiZWwucG9zaXRpb24uc2V0KDAsIDAsIHkoeS5kb21haW4oKVswXSkgKyA1KTtcbiAgICB0dmRMYWJlbC5wb3NpdGlvbi5zZXQoMCwgeih6LmRvbWFpbigpWzFdKSArIDUsIDApO1xuXG4gICAgdGlja3MuYWRkKG5vcnRoTGFiZWwsIHdlc3RMYWJlbCwgdHZkTGFiZWwpO1xuXG5cbiAgICBjb25zdCBheGVzSGVscGVyID0gbmV3IFRIUkVFLkF4ZXNIZWxwZXIodGhpcy5TSURFX1NJWkUpO1xuICAgIGF4ZXNIZWxwZXIuc2V0Q29sb3JzKHRoaXMuYXhlc0NvbG9yLCB0aGlzLmF4ZXNDb2xvciwgdGhpcy5heGVzQ29sb3IpXG5cbiAgICB0aGlzLl9zY2VuZS5hZGQoYXhlc0hlbHBlcik7XG5cbiAgICB0aGlzLl9zY2VuZS5hZGQodGlja3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY2FsZXMoc2VyaWVzOiBTZXJpZXMzZDxCYXNlM2RQb2ludD5bXSkge1xuICAgIGNvbnN0IGV4dHJlbXMgPSBzZXJpZXMubWFwKChfKSA9PiAoe1xuICAgICAgeDogZDMuZXh0ZW50KF8ucG9pbnRzLCAocDogYW55KSA9PiBwLngpLFxuICAgICAgeTogZDMuZXh0ZW50KF8ucG9pbnRzLCAocDogYW55KSA9PiBwLnkpLFxuICAgICAgejogZDMuZXh0ZW50KF8ucG9pbnRzLCAocDogYW55KSA9PiBwLnopLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5FeHRyZW1zID0gZXh0cmVtcy5yZWR1Y2UoXG4gICAgICAoYWNjOiBhbnksIF8pOiB7IHg6IFtudW1iZXJdOyB5OiBbbnVtYmVyXTsgejogW251bWJlcl0gfSA9PiB7XG4gICAgICAgIGFjYy54ID0gYWNjLnguY29uY2F0KF8ueCk7XG4gICAgICAgIGFjYy55ID0gYWNjLnkuY29uY2F0KF8ueSk7XG4gICAgICAgIGFjYy56ID0gYWNjLnouY29uY2F0KF8ueik7XG4gICAgICAgIHJldHVybiBhY2MgYXMgYW55O1xuICAgICAgfSxcbiAgICAgIHt4OiBbXSwgeTogW10sIHo6IFtdfVxuICAgICk7XG5cbiAgICBjb25zdCB4ID0gZDNcbiAgICAgIC5zY2FsZUxpbmVhcigpXG4gICAgICAuZG9tYWluKFswLCB0aGlzLl9jb25maWc/LmF4ZXM/Lm1heCA9PSBudWxsXG4gICAgICAgICAgPyBwYXJzZUludChkMy5tYXgoZmxhdHRlbkV4dHJlbXMueCkpXG4gICAgICAgICAgOiB0aGlzLl9jb25maWcuYXhlcy5tYXgsXG4gICAgICBdKVxuICAgICAgLnJhbmdlKFswLCB0aGlzLlNJREVfU0laRV0pLm5pY2UoKVxuXG4gICAgY29uc3QgeSA9IGQzXG4gICAgICAuc2NhbGVMaW5lYXIoKVxuICAgICAgLmRvbWFpbihbMCwgcGFyc2VJbnQoZDMubWF4KGZsYXR0ZW5FeHRyZW1zLnkpLCAxMCldKVxuICAgICAgLnJhbmdlKFt0aGlzLlNJREVfU0laRSwgMF0pXG5cbiAgICBjb25zdCB6ID0gZDNcbiAgICAgIC5zY2FsZUxpbmVhcigpXG4gICAgICAuZG9tYWluKFswLFxuICAgICAgICB0aGlzLl9jb25maWc/LmF4ZXM/Lm1heCA9PSBudWxsXG4gICAgICAgICAgPyBwYXJzZUludChkMy5tYXgoZmxhdHRlbkV4dHJlbXMueikpXG4gICAgICAgICAgOiB0aGlzLl9jb25maWcuYXhlcy5tYXhdKVxuICAgICAgLnJhbmdlKFswLCB0aGlzLlNJREVfU0laRV0pLm5pY2UoKVxuXG5cbiAgICByZXR1cm4ge3gsIHksIHp9O1xuICB9XG59XG4iLCI8Y2FudmFzICNjYW52YXM+PC9jYW52YXM+XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQzZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2NoYXJ0LTNkL2NoYXJ0M2QvY2hhcnQzZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2NoYXJ0LTNkL2NoYXJ0M2QvY2hhcnQzZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUt6QixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRaEQsTUFBTSxPQUFPLGdCQUFnQjtJQWlCakI7SUFDQTtJQWpCVyxTQUFTLENBQWE7SUFFbkMsTUFBTSxDQUFjO0lBQ3BCLE9BQU8sQ0FBMEI7SUFDakMsU0FBUyxDQUFpQjtJQUMxQixTQUFTLENBQWdCO0lBQ3pCLElBQUksQ0FBaUI7SUFDckIsT0FBTyxDQUFpQjtJQUV4QixTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLFNBQVMsQ0FBTTtJQUNmLFNBQVMsQ0FBTTtJQUVmLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFFdEIsWUFDVSxXQUF1QixFQUN2QixhQUFpQztRQURqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFDeEMsQ0FBQztJQUVKLElBQWEsTUFBTSxDQUFDLE1BQXNCO1FBQ3hDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxD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LEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5QixNQUFNLENBQUMsR0FBRyxFQUFFO2FBQ1QsV0FBVyxFQUFFO2FBQ2IsTUFBTSxDQUFDO1lBQ04sQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJO2dCQUM3QixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRztTQUMxQixDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMxQixJQUFJLEVBQUUsQ0FBQztRQUVWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7dUdBbFZVLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLHVMQ3pCN0IsNkJBQ0E7OzJGRHdCYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNO2tJQUcxQixTQUFTO3NCQUE3QixTQUFTO3VCQUFDLFFBQVE7Z0JBb0JOLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBPcmJpdENvbnRyb2xzIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2NvbnRyb2xzL09yYml0Q29udHJvbHMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgQ2hhcnQzZE9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbC9jaGFydC0zZC1vcHRpb25zJztcbmltcG9ydCB7IEJhc2UzZFBvaW50IH0gZnJvbSAnLi4vbW9kZWwvYmFzZS0zZC1wb2ludCc7XG5pbXBvcnQgeyBTZXJpZXMzZCB9IGZyb20gJy4uL21vZGVsL3Nlcmllcy0zZCc7XG5pbXBvcnQgeyBUaGVtZVN3aXRjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi90aGVtZS1zd2l0Y2gvdGhlbWUtc3dpdGNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVdoaWxlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQzZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydDNkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQzZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnQzZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzUmVmOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3NjZW5lOiBUSFJFRS5TY2VuZTtcbiAgcHJpdmF0ZSBfY2FtZXJhOiBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYTtcbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IFRIUkVFLlJlbmRlcmVyO1xuICBwcml2YXRlIF9jb250cm9sczogT3JiaXRDb250cm9scztcbiAgcHJpdmF0ZSBfb2JzOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBfY29uZmlnOiBDaGFydDNkT3B0aW9ucztcblxuICBwcml2YXRlIFNJREVfU0laRSA9IDEwMDtcbiAgcHJpdmF0ZSBncmlkQ29sb3I6IGFueTtcbiAgcHJpdmF0ZSBheGVzQ29sb3I6IGFueTtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF90aGVtZVNlcnZpY2U6IFRoZW1lU3dpdGNoU2VydmljZVxuICApIHt9XG5cbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IENoYXJ0M2RPcHRpb25zKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5jYW52YXNSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RoZW1lU2VydmljZS50aGVtZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZShfID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgdGFwKF8gPT4ge1xuICAgICAgICAgIHRoaXMuZ3JpZENvbG9yID0gXyA/ICcjNWQ2YTczJyA6ICcjYmRiZGM2JztcbiAgICAgICAgICB0aGlzLmF4ZXNDb2xvciA9IF8gPyAnIzhlOGY5ZCcgOiAnIzdkOGY5YSc7XG4gICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5hZGRSZXNpemVPYnNlcnZlcigpO1xuICAgIHRoaXMuY3JlYXRlU2NlbmUoKTtcbiAgICB0aGlzLnN0YXJ0UmVuZGVyaW5nTG9vcCgpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbW92ZVJlc2l6ZU9ic2VydmVyKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgaWYgKCF0aGlzLl9zY2VuZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdoaWxlICh0aGlzLl9zY2VuZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9zY2VuZS5yZW1vdmUodGhpcy5fc2NlbmUuY2hpbGRyZW5bMF0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgeCwgeSwgeiB9ID0gdGhpcy5nZXRTY2FsZXModGhpcy5fY29uZmlnLnNlcmllcyk7XG5cbiAgICB0aGlzLmNvbmZpZy5zZXJpZXMuZm9yRWFjaCgoZGF0YSwgaWR4KSA9PiB7XG4gICAgICBpZiAoIWRhdGEucG9pbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwb2ludHMgPSBkYXRhLnBvaW50cy5tYXAoXG4gICAgICAgIF8gPT4gbmV3IFRIUkVFLlZlY3RvcjMoeChfLngpLCB5KF8ueSksIHooXy56KSlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGNvbG9yID0gZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZVRhYmxlYXUxMCk7XG5cbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgY29sb3I6IGRhdGE/LmNvbG9yID8/IGNvbG9yKGlkeC50b1N0cmluZygpKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0dWJlR2VvbWV0cnkgPSBuZXcgVEhSRUUuVHViZUdlb21ldHJ5KFxuICAgICAgICBuZXcgVEhSRUUuQ2F0bXVsbFJvbUN1cnZlMyhwb2ludHMpLFxuICAgICAgICAxMDI0LFxuICAgICAgICAwLjUsXG4gICAgICAgIDIwLFxuICAgICAgICBmYWxzZVxuICAgICAgKTtcblxuICAgICAgbGV0IHR1YmUgPSBuZXcgVEhSRUUuTGluZSh0dWJlR2VvbWV0cnksIG1hdGVyaWFsKTtcbiAgICAgIHRoaXMuX3NjZW5lLmFkZCh0dWJlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNpcmNsZXMgPSB4LnRpY2tzKHRoaXMuU0lERV9TSVpFIC8gMTApO1xuXG4gICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuTGluZUJhc2ljTWF0ZXJpYWwoeyBjb2xvcjogdGhpcy5heGVzQ29sb3IgfSk7XG4gICAgY29uc3QgcG9pbnRzTGluZXMgPSBbXTtcbiAgICBwb2ludHNMaW5lcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIDApKTtcbiAgICBwb2ludHNMaW5lcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIHooLXouZG9tYWluKClbMV0pKSk7XG5cbiAgICBwb2ludHNMaW5lcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIDApKTtcbiAgICBwb2ludHNMaW5lcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKHgoLXguZG9tYWluKClbMV0pLCAwLCAwKSk7XG5cbiAgICBjb25zdCBnZW9tZXRyeUxpbmVzID0gbmV3IFRIUkVFLkJ1ZmZlckdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyhwb2ludHNMaW5lcyk7XG4gICAgY29uc3QgbGluZSA9IG5ldyBUSFJFRS5MaW5lKGdlb21ldHJ5TGluZXMsIG1hdGVyaWFsKTtcblxuICAgIHRoaXMuX3NjZW5lLmFkZChsaW5lKTtcblxuICAgIGNpcmNsZXMuZm9yRWFjaChyID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVEYXNoZWRNYXRlcmlhbCh7XG4gICAgICAgIGNvbG9yOiB0aGlzLmdyaWRDb2xvcixcbiAgICAgICAgZGFzaFNpemU6IDEsXG4gICAgICAgIGdhcFNpemU6IDMsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY2lyY2xlR2VvbWV0cnkgPSBuZXcgVEhSRUUuQnVmZmVyR2VvbWV0cnkoKS5zZXRGcm9tUG9pbnRzKFxuICAgICAgICBuZXcgVEhSRUUuUGF0aCgpXG4gICAgICAgICAgLmFic2FyYygwLCAwLCB4KHIpLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpXG4gICAgICAgICAgLmdldFNwYWNlZFBvaW50cygxMDApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBjaXJjbGUgPSBuZXcgVEhSRUUuTGluZVNlZ21lbnRzKGNpcmNsZUdlb21ldHJ5LCBtYXRlcmlhbCk7XG5cbiAgICAgIGNpcmNsZS5nZW9tZXRyeS5yb3RhdGVYKC1NYXRoLlBJIC8gMik7XG5cbiAgICAgIHRoaXMuX3NjZW5lLmFkZChjaXJjbGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kcmF3VGlja3MoeCwgeSwgeik7XG5cbiAgICBpZiAoIXRoaXMuX2NvbnRyb2xzKSB7XG4gICAgICB0aGlzLl9jb250cm9scyA9IG5ldyBPcmJpdENvbnRyb2xzKFxuICAgICAgICB0aGlzLl9jYW1lcmEsXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmRvbUVsZW1lbnRcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZURhbXBpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fY29udHJvbHMuZW5hYmxlUGFuID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NvbnRyb2xzLmRhbXBpbmdGYWN0b3IgPSAwLjI1O1xuICAgICAgdGhpcy5fY29udHJvbHMuc2NyZWVuU3BhY2VQYW5uaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NvbnRyb2xzLm1pbkRpc3RhbmNlID0gMDtcbiAgICAgIHRoaXMuX2NvbnRyb2xzLm1heERpc3RhbmNlID0gMTAwMDA7XG4gICAgICB0aGlzLl9jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7XG5cbiAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZVpvb20gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU2NlbmUoKSB7XG4gICAgdGhpcy5fc2NlbmUgPSBuZXcgVEhSRUUuU2NlbmUoKTtcblxuICAgIGNvbnN0IGFzcGVjdFJhdGlvID1cbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCAvXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgY29uc3QgZmllbGRPZlZpZXcgPSAxMDtcbiAgICBjb25zdCBuZWFyQ2xpcHBpbmdQYW5lID0gMTtcbiAgICBjb25zdCBmYXJDbGlwcGluZ1BhbmUgPSAxMDAwMDtcblxuICAgIHRoaXMuX2NhbWVyYSA9IG5ldyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYShcbiAgICAgIGZpZWxkT2ZWaWV3LFxuICAgICAgYXNwZWN0UmF0aW8sXG4gICAgICBuZWFyQ2xpcHBpbmdQYW5lLFxuICAgICAgZmFyQ2xpcHBpbmdQYW5lXG4gICAgKTtcblxuICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5zZXQoMTMwMCwgMTMwMCwgMTMwMCkuc2V0TGVuZ3RoKDEzMDApO1xuICAgIHRoaXMuX3NjZW5lLmFkZCh0aGlzLl9jYW1lcmEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5fY2FtZXJhLmFzcGVjdCA9IHdpZHRoIC8gaGVpZ2h0O1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFNpemUod2lkdGgsIGhlaWdodCk7XG5cbiAgICB0aGlzLl9jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKSB7XG4gICAgdGhpcy5fcmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlbmRlcmluZ0xvb3AoKSB7XG4gICAgdGhpcy5fcmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7XG4gICAgICBhbnRpYWxpYXM6IHRydWUsXG4gICAgICBjYW52YXM6IHRoaXMuY2FudmFzLFxuICAgICAgYWxwaGE6IHRydWUsXG4gICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBhbmltYXRlID0gKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICAgICAgdGhpcy5fY29udHJvbHM/LnVwZGF0ZSgpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9O1xuXG4gICAgYW5pbWF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSZXNpemVPYnNlcnZlcigpIHtcbiAgICB0aGlzLl9vYnMgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXyA9PiB7XG4gICAgICB0aGlzLnNldFNpemUoX1swXT8uY29udGVudFJlY3Qud2lkdGgsIF9bMF0/LmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9vYnMub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVSZXNpemVPYnNlcnZlcigpIHtcbiAgICB0aGlzLl9vYnMudW5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5fb2JzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZVNwcml0ZSh0ZXh0OiBzdHJpbmcsIG9wdHM/OiB7IGZvbnRTaXplPzogbnVtYmVyIH0pOiBUSFJFRS5TcHJpdGUge1xuICAgIGNvbnN0IGZvbnRTaXplID0gMjA7XG5cbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCB0ZXh0V2lkdGggPSB0ZXh0Lmxlbmd0aCAqIDUwO1xuICAgIGNhbnZhcy5oZWlnaHQgPSA1MDtcbiAgICBjYW52YXMud2lkdGggPSA1MDtcblxuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5mb250ID0gYCR7Zm9udFNpemV9cHggQXJpYWxgO1xuICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnO1xuICAgICAgY3R4LmZpbGxTdHlsZSA9ICcjQTBBMEEwJztcbiAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCAyNSwgMjUpO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHR1cmUgPSBuZXcgVEhSRUUuVGV4dHVyZShjYW52YXMpO1xuICAgIHRleHR1cmUubWluRmlsdGVyID0gVEhSRUUuTGluZWFyRmlsdGVyO1xuICAgIHRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIGNvbnN0IHNwcml0ZU1hdGVyaWFsID0gbmV3IFRIUkVFLlNwcml0ZU1hdGVyaWFsKHtcbiAgICAgIG1hcDogdGV4dHVyZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNwcml0ZSA9IG5ldyBUSFJFRS5TcHJpdGUoc3ByaXRlTWF0ZXJpYWwpO1xuICAgIHNwcml0ZS5zY2FsZS5zZXQoMC40ICogZm9udFNpemUsIDAuNCAqIGZvbnRTaXplLCAwLjQgKiBmb250U2l6ZSk7XG5cbiAgICByZXR1cm4gc3ByaXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3VGlja3MoeDogYW55LCB5OiBhbnksIHo6IGFueSkge1xuICAgIGNvbnN0IHRpY2tzID0gbmV3IFRIUkVFLk9iamVjdDNEKCk7XG4gICAgY29uc3Qgc2NhbGVzRXh0cmVtczogYW55W10gPSBbXTtcblxuICAgIFt4LCB5LCB6XS5mb3JFYWNoKChzY2FsZSwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBnZW5lcmF0ZWRUaWNrcyA9IHNjYWxlLnRpY2tzKHRoaXMuU0lERV9TSVpFIC8gMTApO1xuXG4gICAgICBzY2FsZXNFeHRyZW1zLnB1c2goZDMubWF4KGdlbmVyYXRlZFRpY2tzKSk7XG5cbiAgICAgIGdlbmVyYXRlZFRpY2tzLmZvckVhY2goKF86IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzcHJpdGUgPSB0aGlzLm1ha2VTcHJpdGUoXyk7XG5cbiAgICAgICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgICAgIHNwcml0ZS5wb3NpdGlvbi5zZXQoeChfKSwgeSh5LmRvbWFpbigpWzFdKSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWR4ID09PSAxKSB7XG4gICAgICAgICAgc3ByaXRlLnBvc2l0aW9uLnNldCgtMTAsIHkoXyksIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkeCA9PT0gMikge1xuICAgICAgICAgIHNwcml0ZS5wb3NpdGlvbi5zZXQoMCwgeSh5LmRvbWFpbigpWzFdKSwgeihfKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aWNrcy5hZGQoc3ByaXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm9ydGhMYWJlbCA9IHRoaXMubWFrZVNwcml0ZSgnWCcsIHsgZm9udFNpemU6IDI4IH0pO1xuICAgIGNvbnN0IHdlc3RMYWJlbCA9IHRoaXMubWFrZVNwcml0ZSgnWScsIHsgZm9udFNpemU6IDI4IH0pO1xuICAgIGNvbnN0IHR2ZExhYmVsID0gdGhpcy5tYWtlU3ByaXRlKCdUVkQnLCB7IGZvbnRTaXplOiAyOCB9KTtcblxuICAgIG5vcnRoTGFiZWwucG9zaXRpb24uc2V0KHgoeC5kb21haW4oKVsxXSkgKyA1LCAwLCAwKTtcbiAgICB3ZXN0TGFiZWwucG9zaXRpb24uc2V0KDAsIDAsIHkoeS5kb21haW4oKVswXSkgKyA1KTtcbiAgICB0dmRMYWJlbC5wb3NpdGlvbi5zZXQoMCwgeih6LmRvbWFpbigpWzFdKSArIDUsIDApO1xuXG4gICAgdGlja3MuYWRkKG5vcnRoTGFiZWwsIHdlc3RMYWJlbCwgdHZkTGFiZWwpO1xuXG4gICAgY29uc3QgYXhlc0hlbHBlciA9IG5ldyBUSFJFRS5BeGVzSGVscGVyKHRoaXMuU0lERV9TSVpFKTtcbiAgICBheGVzSGVscGVyLnNldENvbG9ycyh0aGlzLmF4ZXNDb2xvciwgdGhpcy5heGVzQ29sb3IsIHRoaXMuYXhlc0NvbG9yKTtcblxuICAgIHRoaXMuX3NjZW5lLmFkZChheGVzSGVscGVyKTtcblxuICAgIHRoaXMuX3NjZW5lLmFkZCh0aWNrcyk7XG4gIH1cblxuICBwcml2YXRlIGdldFNjYWxlcyhzZXJpZXM6IFNlcmllczNkPEJhc2UzZFBvaW50PltdKSB7XG4gICAgY29uc3QgZXh0cmVtcyA9IHNlcmllcy5tYXAoXyA9PiAoe1xuICAgICAgeDogZDMuZXh0ZW50KF8ucG9pbnRzLCAocDogYW55KSA9PiBwLngpLFxuICAgICAgeTogZDMuZXh0ZW50KF8ucG9pbnRzLCAocDogYW55KSA9PiBwLnkpLFxuICAgICAgejogZDMuZXh0ZW50KF8ucG9pbnRzLCAocDogYW55KSA9PiBwLnopLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5FeHRyZW1zID0gZXh0cmVtcy5yZWR1Y2UoXG4gICAgICAoYWNjOiBhbnksIF8pOiB7IHg6IFtudW1iZXJdOyB5OiBbbnVtYmVyXTsgejogW251bWJlcl0gfSA9PiB7XG4gICAgICAgIGFjYy54ID0gYWNjLnguY29uY2F0KF8ueCk7XG4gICAgICAgIGFjYy55ID0gYWNjLnkuY29uY2F0KF8ueSk7XG4gICAgICAgIGFjYy56ID0gYWNjLnouY29uY2F0KF8ueik7XG4gICAgICAgIHJldHVybiBhY2MgYXMgYW55O1xuICAgICAgfSxcbiAgICAgIHsgeDogW10sIHk6IFtdLCB6OiBbXSB9XG4gICAgKTtcblxuICAgIGNvbnN0IHggPSBkM1xuICAgICAgLnNjYWxlTGluZWFyKClcbiAgICAgIC5kb21haW4oW1xuICAgICAgICAwLFxuICAgICAgICB0aGlzLl9jb25maWc/LmF4ZXM/Lm1heCA9PSBudWxsXG4gICAgICAgICAgPyBwYXJzZUludChkMy5tYXgoZmxhdHRlbkV4dHJlbXMueCkpXG4gICAgICAgICAgOiB0aGlzLl9jb25maWcuYXhlcy5tYXgsXG4gICAgICBdKVxuICAgICAgLnJhbmdlKFswLCB0aGlzLlNJREVfU0laRV0pXG4gICAgICAubmljZSgpO1xuXG4gICAgY29uc3QgeSA9IGQzXG4gICAgICAuc2NhbGVMaW5lYXIoKVxuICAgICAgLmRvbWFpbihbMCwgcGFyc2VJbnQoZDMubWF4KGZsYXR0ZW5FeHRyZW1zLnkpLCAxMCldKVxuICAgICAgLnJhbmdlKFt0aGlzLlNJREVfU0laRSwgMF0pO1xuXG4gICAgY29uc3QgeiA9IGQzXG4gICAgICAuc2NhbGVMaW5lYXIoKVxuICAgICAgLmRvbWFpbihbXG4gICAgICAgIDAsXG4gICAgICAgIHRoaXMuX2NvbmZpZz8uYXhlcz8ubWF4ID09IG51bGxcbiAgICAgICAgICA/IHBhcnNlSW50KGQzLm1heChmbGF0dGVuRXh0cmVtcy56KSlcbiAgICAgICAgICA6IHRoaXMuX2NvbmZpZy5heGVzLm1heCxcbiAgICAgIF0pXG4gICAgICAucmFuZ2UoWzAsIHRoaXMuU0lERV9TSVpFXSlcbiAgICAgIC5uaWNlKCk7XG5cbiAgICByZXR1cm4geyB4LCB5LCB6IH07XG4gIH1cbn1cbiIsIjxjYW52YXMgI2NhbnZhcz48L2NhbnZhcz5cbiJdfQ==
@@ -3,20 +3,21 @@ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBindi
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { maskitoDateOptionsGenerator, maskitoDateTimeOptionsGenerator, } from '@maskito/kit';
5
5
  import dayjs from 'dayjs';
6
- import { ReplaySubject } from 'rxjs';
6
+ import { lastValueFrom, ReplaySubject, take } from 'rxjs';
7
7
  import { Align } from '../../../common/enum/align.enum';
8
8
  import { VerticalAlign } from '../../../common/enum/vertical-align.enum';
9
9
  import { BasePicker } from '../base-picker';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/common";
12
- import * as i2 from "../../dropdown/dropdown/dropdown.component";
13
- import * as i3 from "../../dropdown/dropdown-head.directive";
14
- import * as i4 from "../../dropdown/dropdown-content.directive";
15
- import * as i5 from "@angular/forms";
16
- import * as i6 from "@maskito/angular";
17
- import * as i7 from "../../icon/icon/icon.component";
18
- import * as i8 from "../../input/input/input.component";
19
- import * as i9 from "./date-calendar/date-calendar.component";
12
+ import * as i2 from "../../../locale/teta-config.service";
13
+ import * as i3 from "../../dropdown/dropdown/dropdown.component";
14
+ import * as i4 from "../../dropdown/dropdown-head.directive";
15
+ import * as i5 from "../../dropdown/dropdown-content.directive";
16
+ import * as i6 from "@angular/forms";
17
+ import * as i7 from "@maskito/angular";
18
+ import * as i8 from "../../icon/icon/icon.component";
19
+ import * as i9 from "../../input/input/input.component";
20
+ import * as i10 from "./date-calendar/date-calendar.component";
20
21
  export const DATE_PICKER_CONTROL_VALUE_ACCESSOR = {
21
22
  provide: NG_VALUE_ACCESSOR,
22
23
  useExisting: forwardRef(() => DatePickerComponent),
@@ -26,6 +27,7 @@ export class DatePickerComponent extends BasePicker {
26
27
  _elementRef;
27
28
  _cdr;
28
29
  datePipe;
30
+ localeService;
29
31
  date = null;
30
32
  locale = 'ru';
31
33
  showTime = false;
@@ -51,11 +53,12 @@ export class DatePickerComponent extends BasePicker {
51
53
  mask = '';
52
54
  classDatepicker = true;
53
55
  tabindex = 0;
54
- constructor(_elementRef, _cdr, datePipe) {
56
+ constructor(_elementRef, _cdr, datePipe, localeService) {
55
57
  super(_elementRef, _cdr, datePipe);
56
58
  this._elementRef = _elementRef;
57
59
  this._cdr = _cdr;
58
60
  this.datePipe = datePipe;
61
+ this.localeService = localeService;
59
62
  }
60
63
  ngOnInit() {
61
64
  if (!this.date) {
@@ -67,7 +70,8 @@ export class DatePickerComponent extends BasePicker {
67
70
  }
68
71
  this.prepareInput();
69
72
  }
70
- prepareInput() {
73
+ async prepareInput() {
74
+ const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));
71
75
  const str = this.date ? this.getLocaleString(this.date) : '';
72
76
  let option;
73
77
  const setMinMax = () => {
@@ -79,7 +83,7 @@ export class DatePickerComponent extends BasePicker {
79
83
  }
80
84
  };
81
85
  if (this.showTime) {
82
- this.mask = 'dd.mm.yyyy, hh:mm';
86
+ this.mask = config.dateTimeMask;
83
87
  option = {
84
88
  dateMode: 'dd/mm/yyyy',
85
89
  timeMode: 'HH:MM',
@@ -89,7 +93,7 @@ export class DatePickerComponent extends BasePicker {
89
93
  this.maskitoOptions = maskitoDateTimeOptionsGenerator(option);
90
94
  }
91
95
  else {
92
- this.mask = 'dd.mm.yyyy';
96
+ this.mask = config.dateMask;
93
97
  option = {
94
98
  mode: 'dd/mm/yyyy',
95
99
  separator: '.',
@@ -153,13 +157,13 @@ export class DatePickerComponent extends BasePicker {
153
157
  }
154
158
  }
155
159
  }
156
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
157
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DatePickerComponent, selector: "teta-date-picker", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minYearDate: "minYearDate", maxYearDate: "maxYearDate" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf='{\n selectedDate:selectedDate | async\n } as data'\n class='row row_auto'\n [appendToBody]='appendToBody'\n [backdrop]='backdrop'\n [open]='open'\n (openChange)='openChange($event)'\n [viewType]='viewType'\n [disabled]='disabled'\n [verticalAlign]='verticalAlign'\n [align]='align'\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class='row row_auto flex'>\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class='row row_auto position-relative font-body-3 align-center'>\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]='disabled' #input style='z-index: 1'\n class='row_auto border-0'\n (keydown)='checkEnter($event)'\n [(ngModel)]='inputText'\n (ngModelChange)='changeInput($event)'\n [maskito]='maskitoOptions'>\n <div (click)='input.focus()' *ngIf='data.selectedDate||allowNull' class='position-absolute color-text-10'\n style='top:-0.3px;cursor: text;user-select: none'>{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent\n (click)='$event.preventDefault()'>\n <!-- <ng-container *ngIf='open'>-->\n <teta-date-calendar [isDateNull]='date===null'\n [open]='open'\n [max]='maxDate'\n [min]='minDate'\n (setDate)='changeSelectedDate($event)'\n [selectedDate]='data.selectedDate'\n [viewType]='viewType' [locale]='locale'></teta-date-calendar>\n <!-- </ng-container>-->\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: i3.DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: i4.DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i6.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: i7.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i8.InputComponent, selector: "teta-input", inputs: ["label", "hint", "viewType", "horizontal", "required"] }, { kind: "component", type: i9.DateCalendarComponent, selector: "teta-date-calendar", inputs: ["selectedDate", "locale", "open", "viewType", "min", "isDateNull", "max"], outputs: ["setDate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }, { token: i2.TetaConfigService }], target: i0.ɵɵFactoryTarget.Component });
161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DatePickerComponent, selector: "teta-date-picker", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minYearDate: "minYearDate", maxYearDate: "maxYearDate" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf='{\n selectedDate:selectedDate | async\n } as data'\n class='row row_auto'\n [appendToBody]='appendToBody'\n [backdrop]='backdrop'\n [open]='open'\n (openChange)='openChange($event)'\n [viewType]='viewType'\n [disabled]='disabled'\n [verticalAlign]='verticalAlign'\n [align]='align'\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class='row row_auto flex'>\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class='row row_auto position-relative font-body-3 align-center'>\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]='disabled' #input style='z-index: 1'\n class='row_auto border-0'\n (keydown)='checkEnter($event)'\n [(ngModel)]='inputText'\n (ngModelChange)='changeInput($event)'\n [maskito]='maskitoOptions'>\n <div (click)='input.focus()' *ngIf='data.selectedDate||allowNull' class='position-absolute color-text-10'\n style='top:-0.3px;cursor: text;user-select: none'>{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent\n (click)='$event.preventDefault()'>\n <!-- <ng-container *ngIf='open'>-->\n <teta-date-calendar [isDateNull]='date===null'\n [open]='open'\n [max]='maxDate'\n [min]='minDate'\n (setDate)='changeSelectedDate($event)'\n [selectedDate]='data.selectedDate'\n [viewType]='viewType' [locale]='locale'></teta-date-calendar>\n <!-- </ng-container>-->\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: i4.DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: i5.DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i7.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: i8.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i9.InputComponent, selector: "teta-input", inputs: ["label", "hint", "viewType", "horizontal", "required"] }, { kind: "component", type: i10.DateCalendarComponent, selector: "teta-date-calendar", inputs: ["selectedDate", "locale", "open", "viewType", "min", "isDateNull", "max"], outputs: ["setDate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
158
162
  }
159
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DatePickerComponent, decorators: [{
160
164
  type: Component,
161
165
  args: [{ selector: 'teta-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], template: "<teta-dropdown *ngIf='{\n selectedDate:selectedDate | async\n } as data'\n class='row row_auto'\n [appendToBody]='appendToBody'\n [backdrop]='backdrop'\n [open]='open'\n (openChange)='openChange($event)'\n [viewType]='viewType'\n [disabled]='disabled'\n [verticalAlign]='verticalAlign'\n [align]='align'\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class='row row_auto flex'>\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class='row row_auto position-relative font-body-3 align-center'>\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]='disabled' #input style='z-index: 1'\n class='row_auto border-0'\n (keydown)='checkEnter($event)'\n [(ngModel)]='inputText'\n (ngModelChange)='changeInput($event)'\n [maskito]='maskitoOptions'>\n <div (click)='input.focus()' *ngIf='data.selectedDate||allowNull' class='position-absolute color-text-10'\n style='top:-0.3px;cursor: text;user-select: none'>{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent\n (click)='$event.preventDefault()'>\n <!-- <ng-container *ngIf='open'>-->\n <teta-date-calendar [isDateNull]='date===null'\n [open]='open'\n [max]='maxDate'\n [min]='minDate'\n (setDate)='changeSelectedDate($event)'\n [selectedDate]='data.selectedDate'\n [viewType]='viewType' [locale]='locale'></teta-date-calendar>\n <!-- </ng-container>-->\n </div>\n</teta-dropdown>\n" }]
162
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }]; }, propDecorators: { date: [{
166
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }, { type: i2.TetaConfigService }]; }, propDecorators: { date: [{
163
167
  type: Input
164
168
  }], locale: [{
165
169
  type: Input
@@ -209,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
209
213
  type: HostBinding,
210
214
  args: ['tabindex']
211
215
  }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiwrQkFBK0IsR0FDaEMsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBRzVDLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFRO0lBQ3JELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFTRixNQUFNLE9BQU8sbUJBQ1gsU0FBUSxVQUFV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UUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFYyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1IsVUFBVTtzQkFBbkIsTUFBTTtnQkFLMkMsZUFBZTtzQkFBaEUsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ1csUUFBUTtzQkFBakQsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcixcbiAgbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvcixcbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFsaWduIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vYWxpZ24uZW51bSc7XG5pbXBvcnQgeyBWZXJ0aWNhbEFsaWduIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vdmVydGljYWwtYWxpZ24uZW51bSc7XG5pbXBvcnQgeyB2aWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbC92aWV3LXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQmFzZVBpY2tlciB9IGZyb20gJy4uL2Jhc2UtcGlja2VyJztcbmltcG9ydCB7IERhdGVQZXJpb2QgfSBmcm9tICcuLi9tb2RlbC9kYXRlLXBlcmlvZCc7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1BJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUGlja2VyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0RBVEVfUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIERhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VQaWNrZXJcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBJbnB1dCgpIGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgPSBudWxsO1xuICBASW5wdXQoKSBsb2NhbGUgPSAncnUnO1xuICBASW5wdXQoKSBzaG93VGltZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyID0gbnVsbDtcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG51bGw7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxpZ246IEFsaWduID0gQWxpZ24ubGVmdDtcbiAgQElucHV0KCkgdmVydGljYWxBbGlnbjogVmVydGljYWxBbGlnbiA9IFZlcnRpY2FsQWxpZ24uYXV0bztcbiAgQElucHV0KCkgdmlld1R5cGU6IHZpZXdUeXBlID0gJ3JvdW5kZWQnO1xuICBASW5wdXQoKSBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tkcm9wID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsbG93TnVsbCA9IHRydWU7XG5cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWsgPSAxO1xuICBASW5wdXQoKSBkaXNhYmxlZERhdGVzOiBEYXRlW107XG4gIEBJbnB1dCgpIGRpc2FibGVkUGVyaW9kczogRGF0ZVBlcmlvZFtdO1xuICBASW5wdXQoKSBkaXNhYmxlZERheXM6IG51bWJlcltdO1xuICBASW5wdXQoKSBtaW5ZZWFyRGF0ZTogRGF0ZTtcbiAgQElucHV0KCkgbWF4WWVhckRhdGU6IERhdGU7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcbiAgQE91dHB1dCgpIHNlbGVjdERhdGU6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgcHVibGljIHNlbGVjdGVkRGF0ZTogUmVwbGF5U3ViamVjdDxEYXRlIHwgc3RyaW5nIHwgbnVtYmVyPiA9XG4gICAgbmV3IFJlcGxheVN1YmplY3Q8RGF0ZSB8IHN0cmluZyB8IG51bWJlcj4oMSk7XG4gIHB1YmxpYyBtYXNrID0gJyc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYXRlcGlja2VyJykgcHJpdmF0ZSByZWFkb25seSBjbGFzc0RhdGVwaWNrZXIgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ3RhYmluZGV4JykgcHJpdmF0ZSByZWFkb25seSB0YWJpbmRleCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3ZlcnJpZGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgb3ZlcnJpZGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgb3ZlcnJpZGUgZGF0ZVBpcGU6IERhdGVQaXBlXG4gICkge1xuICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyLCBkYXRlUGlwZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZSkge1xuICAgICAgdGhpcy5zZXREYXRlKHRoaXMuYWxsb3dOdWxsID8gbnVsbCA6IG5ldyBEYXRlKCkpO1xuICAgICAgdGhpcy5kYXRlID0gdGhpcy5hbGxvd051bGwgPyBudWxsIDogbmV3IERhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXREYXRlKG5ldyBEYXRlKHRoaXMuZGF0ZSkpO1xuICAgIH1cbiAgICB0aGlzLnByZXBhcmVJbnB1dCgpO1xuICB9XG5cbiAgcHJlcGFyZUlucHV0KCkge1xuICAgIGNvbnN0IHN0ciA9IHRoaXMuZGF0ZSA/IHRoaXMuZ2V0TG9jYWxlU3RyaW5nKHRoaXMuZGF0ZSkgOiAnJztcbiAgICBsZXQgb3B0aW9uO1xuICAgIGNvbnN0IHNldE1pbk1heCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgb3B0aW9uLm1pbiA9IGRheWpzKG5ldyBEYXRlKHRoaXMubWluRGF0ZSkpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgICBvcHRpb24ubWF4ID0gZGF5anMobmV3IERhdGUodGhpcy5tYXhEYXRlKSkuZW5kT2YoJ2RheScpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgIHRoaXMubWFzayA9ICdkZC5tbS55eXl5LCBoaDptbSc7XG4gICAgICBvcHRpb24gPSB7XG4gICAgICAgIGRhdGVNb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICAgIHRpbWVNb2RlOiAnSEg6TU0nLFxuICAgICAgICBkYXRlU2VwYXJhdG9yOiAnLicsXG4gICAgICB9O1xuICAgICAgc2V0TWluTWF4KCk7XG4gICAgICB0aGlzLm1hc2tpdG9PcHRpb25zID0gbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvcihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hc2sgPSAnZGQubW0ueXl5eSc7XG4gICAgICBvcHRpb24gPSB7XG4gICAgICAgIG1vZGU6ICdkZC9tbS95eXl5JyxcbiAgICAgICAgc2VwYXJhdG9yOiAnLicsXG4gICAgICB9O1xuICAgICAgc2V0TWluTWF4KCk7XG4gICAgICB0aGlzLm1hc2tpdG9PcHRpb25zID0gbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yKG9wdGlvbik7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlUGxhY2Vob2xkZXIoc3RyKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAodGhpcy5hbGxvd051bGwgJiYgdGhpcy5pbnB1dFRleHQudHJpbSgpID09PSAnJykge1xuICAgICAgdGhpcy5zZXREYXRlKG51bGwpO1xuICAgICAgdGhpcy5lbWl0VmFsdWUobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuaW5wdXRUZXh0LnNwbGl0KCcsJyk7XG4gICAgICBjb25zdCB7IGRheSwgeWVhciwgbW9udGggfSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHIodmFsWzBdKTtcbiAgICAgIGNvbnN0IHsgbWlucywgaG91cnMgfSA9IHRoaXMuZ2V0VGltZUZyb21TdHIodmFsWzFdKTtcbiAgICAgIGlmIChkYXkgJiYgeWVhciAmJiBtb250aCkge1xuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS5zZXRIb3Vycyhob3VycyB8fCAwLCBtaW5zIHx8IDApKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGVkRGF0ZShcbiAgICAgICAgICB0aGlzLmdldEF2YWlsYWJsZURhdGUodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGRhdGUpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldERhdGUodGhpcy5kYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXREYXRlKGRhdGUpIHtcbiAgICBpZiAoIWRhdGUgJiYgdGhpcy5hbGxvd051bGwpIHtcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICB0aGlzLmNoYW5nZVBsYWNlaG9sZGVyKCcnKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQobmV3IERhdGUodGhpcy5taW5EYXRlIHx8IG5ldyBEYXRlKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLmdldExvY2FsZVN0cmluZyhkYXRlKTtcbiAgICAgIHRoaXMuY2hhbmdlUGxhY2Vob2xkZXIodGhpcy5nZXRMb2NhbGVTdHJpbmcoZGF0ZSkpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUubmV4dChkYXRlKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZShkYXRlOiBEYXRlKSB7fVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChkYXRlOiBEYXRlKSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7fVxuXG4gIHdyaXRlVmFsdWUob2JqOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5kYXRlID0gbmV3IERhdGUob2JqKTtcbiAgICAgIHRoaXMuc2V0RGF0ZShuZXcgRGF0ZSh0aGlzLmRhdGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuYWxsb3dOdWxsKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLm1pbkRhdGUgfHwgbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubmV4dCh0aGlzLm1pbkRhdGUgfHwgbmV3IERhdGUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8dGV0YS1kcm9wZG93biAqbmdJZj0ne1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZTpzZWxlY3RlZERhdGUgfCBhc3luY1xuICAgICAgICAgICAgICAgfSBhcyBkYXRhJ1xuICAgICAgICAgICAgICAgY2xhc3M9J3JvdyByb3dfYXV0bydcbiAgICAgICAgICAgICAgIFthcHBlbmRUb0JvZHldPSdhcHBlbmRUb0JvZHknXG4gICAgICAgICAgICAgICBbYmFja2Ryb3BdPSdiYWNrZHJvcCdcbiAgICAgICAgICAgICAgIFtvcGVuXT0nb3BlbidcbiAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT0nb3BlbkNoYW5nZSgkZXZlbnQpJ1xuICAgICAgICAgICAgICAgW3ZpZXdUeXBlXT0ndmlld1R5cGUnXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPSdkaXNhYmxlZCdcbiAgICAgICAgICAgICAgIFt2ZXJ0aWNhbEFsaWduXT0ndmVydGljYWxBbGlnbidcbiAgICAgICAgICAgICAgIFthbGlnbl09J2FsaWduJ1xuICAgICAgICAgICAgICAgW2F1dG9DbG9zZUlnbm9yZV09XCJbJ2VzYycsICdpbnNpZGUnLCdlbnRlciddXCI+XG4gIDxkaXYgdGV0YURyb3Bkb3duSGVhZFxuICAgICAgIFtjbGFzc109XCInZGF0ZXBpY2tlci1oZWFkIGZvbnQtYm9keS0zIGdhcC04ICBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsnZGF0ZXBpY2tlci1oZWFkX2ludmFsaWQnOmludmFsaWQsJ2RhdGVwaWNrZXItaGVhZF9kaXNhYmxlZCc6ZGlzYWJsZWR9XCI+XG4gICAgPHRldGEtaW5wdXQgY2xhc3M9J3JvdyByb3dfYXV0byBmbGV4Jz5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIidyb3dfYXV0byByb3cgZGF0ZXBpY2tlcl8nK3ZpZXdUeXBlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9J3JvdyByb3dfYXV0byBwb3NpdGlvbi1yZWxhdGl2ZSBmb250LWJvZHktMyBhbGlnbi1jZW50ZXInPlxuICAgICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2NvbG9yLXRleHQtOTAnOiFkaXNhYmxlZH1cIlxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPSdkaXNhYmxlZCcgI2lucHV0IHN0eWxlPSd6LWluZGV4OiAxJ1xuICAgICAgICAgICAgICAgICBjbGFzcz0ncm93X2F1dG8gYm9yZGVyLTAnXG4gICAgICAgICAgICAgICAgIChrZXlkb3duKT0nY2hlY2tFbnRlcigkZXZlbnQpJ1xuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT0naW5wdXRUZXh0J1xuICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9J2NoYW5nZUlucHV0KCRldmVudCknXG4gICAgICAgICAgICAgICAgIFttYXNraXRvXT0nbWFza2l0b09wdGlvbnMnPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT0naW5wdXQuZm9jdXMoKScgKm5nSWY9J2RhdGEuc2VsZWN0ZWREYXRlfHxhbGxvd051bGwnIGNsYXNzPSdwb3NpdGlvbi1hYnNvbHV0ZSBjb2xvci10ZXh0LTEwJ1xuICAgICAgICAgICAgICAgc3R5bGU9J3RvcDotMC4zcHg7Y3Vyc29yOiB0ZXh0O3VzZXItc2VsZWN0OiBub25lJz57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx0ZXRhLWljb24gW25hbWVdPVwiJ2NhbGVuZGFyJ1wiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZXRhLWlucHV0PlxuICA8L2Rpdj5cbiAgPGRpdiB0ZXRhRHJvcGRvd25Db250ZW50XG4gICAgICAgKGNsaWNrKT0nJGV2ZW50LnByZXZlbnREZWZhdWx0KCknPlxuICAgIDwhLS0gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0nb3Blbic+LS0+XG4gICAgPHRldGEtZGF0ZS1jYWxlbmRhciBbaXNEYXRlTnVsbF09J2RhdGU9PT1udWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgW29wZW5dPSdvcGVuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09J21heERhdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluXT0nbWluRGF0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZXREYXRlKT0nY2hhbmdlU2VsZWN0ZWREYXRlKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWREYXRlXT0nZGF0YS5zZWxlY3RlZERhdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmlld1R5cGVdPSd2aWV3VHlwZScgW2xvY2FsZV09J2xvY2FsZSc+PC90ZXRhLWRhdGUtY2FsZW5kYXI+XG4gICAgPCEtLSAgICA8L25nLWNvbnRhaW5lcj4tLT5cbiAgPC9kaXY+XG48L3RldGEtZHJvcGRvd24+XG4iXX0=
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiwrQkFBK0IsR0FDaEMsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSTVDLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFRO0lBQ3JELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFTRixNQUFN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d0xBTWhELElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRWMsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNSLFVBQVU7c0JBQW5CLE1BQU07Z0JBSzJDLGVBQWU7c0JBQWhFLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNXLFFBQVE7c0JBQWpELFdBQVc7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBtYXNraXRvRGF0ZU9wdGlvbnNHZW5lcmF0b3IsXG4gIG1hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3IsXG59IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgUmVwbGF5U3ViamVjdCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBbGlnbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW0nO1xuaW1wb3J0IHsgVmVydGljYWxBbGlnbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL3ZlcnRpY2FsLWFsaWduLmVudW0nO1xuaW1wb3J0IHsgdmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vbW9kZWwvdmlldy10eXBlLm1vZGVsJztcbmltcG9ydCB7IEJhc2VQaWNrZXIgfSBmcm9tICcuLi9iYXNlLXBpY2tlcic7XG5pbXBvcnQgeyBEYXRlUGVyaW9kIH0gZnJvbSAnLi4vbW9kZWwvZGF0ZS1wZXJpb2QnO1xuaW1wb3J0IHsgVGV0YUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1BJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUGlja2VyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0RBVEVfUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIERhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VQaWNrZXJcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBJbnB1dCgpIGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgPSBudWxsO1xuICBASW5wdXQoKSBsb2NhbGU6ICdlbicgfCAncnUnID0gJ3J1JztcbiAgQElucHV0KCkgc2hvd1RpbWUgPSBmYWxzZTtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG51bGw7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgPSBudWxsO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsaWduOiBBbGlnbiA9IEFsaWduLmxlZnQ7XG4gIEBJbnB1dCgpIHZlcnRpY2FsQWxpZ246IFZlcnRpY2FsQWxpZ24gPSBWZXJ0aWNhbEFsaWduLmF1dG87XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiB2aWV3VHlwZSA9ICdyb3VuZGVkJztcbiAgQElucHV0KCkgYXBwZW5kVG9Cb2R5OiBib29sZWFuO1xuICBASW5wdXQoKSBiYWNrZHJvcCA9IGZhbHNlO1xuICBASW5wdXQoKSBhbGxvd051bGwgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrID0gMTtcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdO1xuICBASW5wdXQoKSBkaXNhYmxlZFBlcmlvZHM6IERhdGVQZXJpb2RbXTtcbiAgQElucHV0KCkgZGlzYWJsZWREYXlzOiBudW1iZXJbXTtcbiAgQElucHV0KCkgbWluWWVhckRhdGU6IERhdGU7XG4gIEBJbnB1dCgpIG1heFllYXJEYXRlOiBEYXRlO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBzZWxlY3REYXRlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIHB1YmxpYyBzZWxlY3RlZERhdGU6IFJlcGxheVN1YmplY3Q8RGF0ZSB8IHN0cmluZyB8IG51bWJlcj4gPVxuICAgIG5ldyBSZXBsYXlTdWJqZWN0PERhdGUgfCBzdHJpbmcgfCBudW1iZXI+KDEpO1xuICBwdWJsaWMgbWFzayA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGF0ZXBpY2tlcicpIHByaXZhdGUgcmVhZG9ubHkgY2xhc3NEYXRlcGlja2VyID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCd0YWJpbmRleCcpIHByaXZhdGUgcmVhZG9ubHkgdGFiaW5kZXggPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG92ZXJyaWRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIG92ZXJyaWRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIG92ZXJyaWRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IFRldGFDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyLCBkYXRlUGlwZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZSkge1xuICAgICAgdGhpcy5zZXREYXRlKHRoaXMuYWxsb3dOdWxsID8gbnVsbCA6IG5ldyBEYXRlKCkpO1xuICAgICAgdGhpcy5kYXRlID0gdGhpcy5hbGxvd051bGwgPyBudWxsIDogbmV3IERhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXREYXRlKG5ldyBEYXRlKHRoaXMuZGF0ZSkpO1xuICAgIH1cbiAgICB0aGlzLnByZXBhcmVJbnB1dCgpO1xuICB9XG5cbiAgYXN5bmMgcHJlcGFyZUlucHV0KCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5sb2NhbGVTZXJ2aWNlLmxvY2FsZS5waXBlKHRha2UoMSkpKTtcbiAgICBjb25zdCBzdHIgPSB0aGlzLmRhdGUgPyB0aGlzLmdldExvY2FsZVN0cmluZyh0aGlzLmRhdGUpIDogJyc7XG4gICAgbGV0IG9wdGlvbjtcbiAgICBjb25zdCBzZXRNaW5NYXggPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5taW5EYXRlKSB7XG4gICAgICAgIG9wdGlvbi5taW4gPSBkYXlqcyhuZXcgRGF0ZSh0aGlzLm1pbkRhdGUpKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1heERhdGUpIHtcbiAgICAgICAgb3B0aW9uLm1heCA9IGRheWpzKG5ldyBEYXRlKHRoaXMubWF4RGF0ZSkpLmVuZE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICh0aGlzLnNob3dUaW1lKSB7XG4gICAgICB0aGlzLm1hc2sgPSBjb25maWcuZGF0ZVRpbWVNYXNrO1xuICAgICAgb3B0aW9uID0ge1xuICAgICAgICBkYXRlTW9kZTogJ2RkL21tL3l5eXknLFxuICAgICAgICB0aW1lTW9kZTogJ0hIOk1NJyxcbiAgICAgICAgZGF0ZVNlcGFyYXRvcjogJy4nLFxuICAgICAgfTtcbiAgICAgIHNldE1pbk1heCgpO1xuICAgICAgdGhpcy5tYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3Iob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXNrID0gY29uZmlnLmRhdGVNYXNrO1xuICAgICAgb3B0aW9uID0ge1xuICAgICAgICBtb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICAgIHNlcGFyYXRvcjogJy4nLFxuICAgICAgfTtcbiAgICAgIHNldE1pbk1heCgpO1xuICAgICAgdGhpcy5tYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcihvcHRpb24pO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVBsYWNlaG9sZGVyKHN0cik7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dOdWxsICYmIHRoaXMuaW5wdXRUZXh0LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZShudWxsKTtcbiAgICAgIHRoaXMuZW1pdFZhbHVlKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWwgPSB0aGlzLmlucHV0VGV4dC5zcGxpdCgnLCcpO1xuICAgICAgY29uc3QgeyBkYXksIHllYXIsIG1vbnRoIH0gPSB0aGlzLmdldERhdGVGcm9tU3RyKHZhbFswXSk7XG4gICAgICBjb25zdCB7IG1pbnMsIGhvdXJzIH0gPSB0aGlzLmdldFRpbWVGcm9tU3RyKHZhbFsxXSk7XG4gICAgICBpZiAoZGF5ICYmIHllYXIgJiYgbW9udGgpIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKSB7XG4gICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuc2V0SG91cnMoaG91cnMgfHwgMCwgbWlucyB8fCAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VTZWxlY3RlZERhdGUoXG4gICAgICAgICAgdGhpcy5nZXRBdmFpbGFibGVEYXRlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCBkYXRlKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXREYXRlKHRoaXMuZGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RGF0ZShkYXRlKSB7XG4gICAgaWYgKCFkYXRlICYmIHRoaXMuYWxsb3dOdWxsKSB7XG4gICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgdGhpcy5jaGFuZ2VQbGFjZWhvbGRlcignJyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5uZXh0KG5ldyBEYXRlKHRoaXMubWluRGF0ZSB8fCBuZXcgRGF0ZSgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5nZXRMb2NhbGVTdHJpbmcoZGF0ZSk7XG4gICAgICB0aGlzLmNoYW5nZVBsYWNlaG9sZGVyKHRoaXMuZ2V0TG9jYWxlU3RyaW5nKGRhdGUpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UoZGF0ZTogRGF0ZSkge31cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoZGF0ZTogRGF0ZSkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICB3cml0ZVZhbHVlKG9iajogRGF0ZSB8IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChvYmopIHtcbiAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKG9iaik7XG4gICAgICB0aGlzLnNldERhdGUobmV3IERhdGUodGhpcy5kYXRlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFsbG93TnVsbCkge1xuICAgICAgICB0aGlzLmRhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5uZXh0KG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5taW5EYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQodGhpcy5taW5EYXRlIHx8IG5ldyBEYXRlKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPHRldGEtZHJvcGRvd24gKm5nSWY9J3tcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGU6c2VsZWN0ZWREYXRlIHwgYXN5bmNcbiAgICAgICAgICAgICAgIH0gYXMgZGF0YSdcbiAgICAgICAgICAgICAgIGNsYXNzPSdyb3cgcm93X2F1dG8nXG4gICAgICAgICAgICAgICBbYXBwZW5kVG9Cb2R5XT0nYXBwZW5kVG9Cb2R5J1xuICAgICAgICAgICAgICAgW2JhY2tkcm9wXT0nYmFja2Ryb3AnXG4gICAgICAgICAgICAgICBbb3Blbl09J29wZW4nXG4gICAgICAgICAgICAgICAob3BlbkNoYW5nZSk9J29wZW5DaGFuZ2UoJGV2ZW50KSdcbiAgICAgICAgICAgICAgIFt2aWV3VHlwZV09J3ZpZXdUeXBlJ1xuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT0nZGlzYWJsZWQnXG4gICAgICAgICAgICAgICBbdmVydGljYWxBbGlnbl09J3ZlcnRpY2FsQWxpZ24nXG4gICAgICAgICAgICAgICBbYWxpZ25dPSdhbGlnbidcbiAgICAgICAgICAgICAgIFthdXRvQ2xvc2VJZ25vcmVdPVwiWydlc2MnLCAnaW5zaWRlJywnZW50ZXInXVwiPlxuICA8ZGl2IHRldGFEcm9wZG93bkhlYWRcbiAgICAgICBbY2xhc3NdPVwiJ2RhdGVwaWNrZXItaGVhZCBmb250LWJvZHktMyBnYXAtOCAgZGF0ZXBpY2tlcl8nK3ZpZXdUeXBlXCJcbiAgICAgICBbbmdDbGFzc109XCJ7J2RhdGVwaWNrZXItaGVhZF9pbnZhbGlkJzppbnZhbGlkLCdkYXRlcGlja2VyLWhlYWRfZGlzYWJsZWQnOmRpc2FibGVkfVwiPlxuICAgIDx0ZXRhLWlucHV0IGNsYXNzPSdyb3cgcm93X2F1dG8gZmxleCc+XG4gICAgICA8ZGl2IFtjbGFzc109XCIncm93X2F1dG8gcm93IGRhdGVwaWNrZXJfJyt2aWV3VHlwZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPSdyb3cgcm93X2F1dG8gcG9zaXRpb24tcmVsYXRpdmUgZm9udC1ib2R5LTMgYWxpZ24tY2VudGVyJz5cbiAgICAgICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydjb2xvci10ZXh0LTkwJzohZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT0nZGlzYWJsZWQnICNpbnB1dCBzdHlsZT0nei1pbmRleDogMSdcbiAgICAgICAgICAgICAgICAgY2xhc3M9J3Jvd19hdXRvIGJvcmRlci0wJ1xuICAgICAgICAgICAgICAgICAoa2V5ZG93bik9J2NoZWNrRW50ZXIoJGV2ZW50KSdcbiAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09J2lucHV0VGV4dCdcbiAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPSdjaGFuZ2VJbnB1dCgkZXZlbnQpJ1xuICAgICAgICAgICAgICAgICBbbWFza2l0b109J21hc2tpdG9PcHRpb25zJz5cbiAgICAgICAgICA8ZGl2IChjbGljayk9J2lucHV0LmZvY3VzKCknICpuZ0lmPSdkYXRhLnNlbGVjdGVkRGF0ZXx8YWxsb3dOdWxsJyBjbGFzcz0ncG9zaXRpb24tYWJzb2x1dGUgY29sb3ItdGV4dC0xMCdcbiAgICAgICAgICAgICAgIHN0eWxlPSd0b3A6LTAuM3B4O2N1cnNvcjogdGV4dDt1c2VyLXNlbGVjdDogbm9uZSc+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidjYWxlbmRhcidcIiBbcGFsZXR0ZV09XCIndGV4dCdcIj48L3RldGEtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGV0YS1pbnB1dD5cbiAgPC9kaXY+XG4gIDxkaXYgdGV0YURyb3Bkb3duQ29udGVudFxuICAgICAgIChjbGljayk9JyRldmVudC5wcmV2ZW50RGVmYXVsdCgpJz5cbiAgICA8IS0tICAgIDxuZy1jb250YWluZXIgKm5nSWY9J29wZW4nPi0tPlxuICAgIDx0ZXRhLWRhdGUtY2FsZW5kYXIgW2lzRGF0ZU51bGxdPSdkYXRlPT09bnVsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcGVuXT0nb3BlbidcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPSdtYXhEYXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09J21pbkRhdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2V0RGF0ZSk9J2NoYW5nZVNlbGVjdGVkRGF0ZSgkZXZlbnQpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkRGF0ZV09J2RhdGEuc2VsZWN0ZWREYXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3ZpZXdUeXBlXT0ndmlld1R5cGUnIFtsb2NhbGVdPSdsb2NhbGUnPjwvdGV0YS1kYXRlLWNhbGVuZGFyPlxuICAgIDwhLS0gICAgPC9uZy1jb250YWluZXI+LS0+XG4gIDwvZGl2PlxuPC90ZXRhLWRyb3Bkb3duPlxuIl19