speechrecorderng 3.4.3 → 3.4.4

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 (48) hide show
  1. package/esm2020/lib/audio/audio_display.mjs +4 -4
  2. package/esm2020/lib/audio/audio_player.mjs +4 -4
  3. package/esm2020/lib/audio/capture/capture.mjs +119 -105
  4. package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
  5. package/esm2020/lib/audio/ui/audio_display_control.mjs +4 -4
  6. package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
  7. package/esm2020/lib/audio/ui/audiosignal.mjs +4 -4
  8. package/esm2020/lib/audio/ui/container.mjs +4 -4
  9. package/esm2020/lib/audio/ui/livelevel.mjs +4 -4
  10. package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +4 -4
  11. package/esm2020/lib/audio/ui/sonagram.mjs +4 -4
  12. package/esm2020/lib/db/inddb.mjs +4 -4
  13. package/esm2020/lib/speechrecorder/project/project.service.mjs +4 -4
  14. package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
  15. package/esm2020/lib/speechrecorder/script/script.service.mjs +4 -4
  16. package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +7 -7
  17. package/esm2020/lib/speechrecorder/session/controlpanel.mjs +22 -22
  18. package/esm2020/lib/speechrecorder/session/progress.mjs +4 -4
  19. package/esm2020/lib/speechrecorder/session/prompting.mjs +16 -16
  20. package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +4 -4
  21. package/esm2020/lib/speechrecorder/session/recording_list.mjs +4 -4
  22. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
  23. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +4 -4
  24. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
  25. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
  26. package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
  27. package/esm2020/lib/speechrecorder/session/session.service.mjs +4 -4
  28. package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
  29. package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +4 -4
  30. package/esm2020/lib/speechrecorder/session/warning_bar.mjs +4 -4
  31. package/esm2020/lib/speechrecorder/spruploader.mjs +4 -4
  32. package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
  33. package/esm2020/lib/speechrecorderng.component.mjs +4 -4
  34. package/esm2020/lib/speechrecorderng.module.mjs +5 -5
  35. package/esm2020/lib/spr.config.mjs +4 -4
  36. package/esm2020/lib/spr.module.version.mjs +2 -2
  37. package/esm2020/lib/ui/canvas_layer_comp.mjs +4 -4
  38. package/esm2020/lib/ui/message_dialog.mjs +4 -4
  39. package/esm2020/lib/ui/recordingitem_display.mjs +7 -7
  40. package/esm2020/lib/ui/responsive_component.mjs +4 -4
  41. package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +4 -4
  42. package/fesm2015/speechrecorderng.mjs +277 -263
  43. package/fesm2015/speechrecorderng.mjs.map +1 -1
  44. package/fesm2020/speechrecorderng.mjs +277 -263
  45. package/fesm2020/speechrecorderng.mjs.map +1 -1
  46. package/lib/audio/capture/capture.d.ts +2 -0
  47. package/lib/spr.module.version.d.ts +1 -1
  48. package/package.json +14 -14
@@ -16,14 +16,14 @@ export class StatusDisplay {
16
16
  this.statusWaiting = false;
17
17
  }
18
18
  }
19
- StatusDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- StatusDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
19
+ StatusDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StatusDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ StatusDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: { statusAlertType: "statusAlertType", statusMsg: "statusMsg", statusWaiting: "statusWaiting" }, ngImport: i0, template: `
21
21
  <p matTooltip="Status">
22
22
  <mat-progress-spinner *ngIf="statusWaiting" color="black" mode="indeterminate" [diameter]="30" [strokeWidth]="5"></mat-progress-spinner><mat-icon *ngIf="statusAlertType==='error'" style="color:red">report_problem</mat-icon>
23
23
  {{statusMsg}}
24
24
  </p>
25
25
  `, isInline: true, styles: [":host{display:inline;text-align:left;font-size:smaller}\n", "p{padding:4px;white-space:nowrap;display:inline-block}\n", "mat-progress-spinner{color:#000;display:inline-block}\n", "span{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StatusDisplay, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: StatusDisplay, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'app-sprstatusdisplay', template: `
29
29
  <p matTooltip="Status">
@@ -95,11 +95,11 @@ export class UploadStatus {
95
95
  return this._status;
96
96
  }
97
97
  }
98
- UploadStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
- UploadStatus.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: UploadStatus, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
98
+ UploadStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UploadStatus, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
+ UploadStatus.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: UploadStatus, selector: "app-uploadstatus", inputs: { value: "value", awaitNewUpload: "awaitNewUpload", status: "status" }, ngImport: i0, template: `
100
100
  <mat-progress-spinner [mode]="spinnerMode" [color]="status" [diameter]="30" [strokeWidth]="5" [value]="_value" [matTooltip]="toolTipText"></mat-progress-spinner>
101
101
  `, isInline: true, styles: [":host{text-align:left}\n", "mat-progress-spinner{display:inline-block}\n"], dependencies: [{ kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UploadStatus, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UploadStatus, decorators: [{
103
103
  type: Component,
104
104
  args: [{ selector: 'app-uploadstatus', template: `
105
105
  <mat-progress-spinner [mode]="spinnerMode" [color]="status" [diameter]="30" [strokeWidth]="5" [value]="_value" [matTooltip]="toolTipText"></mat-progress-spinner>
@@ -116,11 +116,11 @@ export class ProgressDisplay {
116
116
  this.progressMsg = '[itemcode]';
117
117
  }
118
118
  }
119
- ProgressDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
120
- ProgressDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ProgressDisplay, selector: "app-sprprogressdisplay", ngImport: i0, template: `
119
+ ProgressDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProgressDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
120
+ ProgressDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ProgressDisplay, selector: "app-sprprogressdisplay", ngImport: i0, template: `
121
121
  <p>{{progressMsg}}</p>
122
122
  `, isInline: true, styles: [":host{flex:1;width:100%;text-align:left}\n"] });
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProgressDisplay, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ProgressDisplay, decorators: [{
124
124
  type: Component,
125
125
  args: [{ selector: 'app-sprprogressdisplay', template: `
126
126
  <p>{{progressMsg}}</p>
@@ -211,8 +211,8 @@ export class TransportPanel extends ResponsiveComponent {
211
211
  }
212
212
  }
213
213
  }
214
- TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TransportPanel, deps: [{ token: i5.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
215
- TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, usesInheritance: true, ngImport: i0, template: `
214
+ TransportPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, deps: [{ token: i5.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
215
+ TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TransportPanel, selector: "app-sprtransport", inputs: { readonly: "readonly", actions: "actions", navigationEnabled: "navigationEnabled", pausingEnabled: "pausingEnabled" }, usesInheritance: true, ngImport: i0, template: `
216
216
  <button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
217
217
  mat-raised-button>
218
218
  <mat-icon>chevron_left</mat-icon>
@@ -233,7 +233,7 @@ TransportPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
233
233
  </button>
234
234
 
235
235
  `, isInline: true, styles: [":host{flex:20;align-self:center;width:100%;text-align:center;align-content:center;margin:0}\n", "div{display:inline;flex:0}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TransportPanel, decorators: [{
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TransportPanel, decorators: [{
237
237
  type: Component,
238
238
  args: [{ selector: 'app-sprtransport', template: `
239
239
  <button id="bwdBtn" *ngIf="navigationEnabled" (click)="actions.bwdAction.perform()" [disabled]="bwdDisabled()"
@@ -273,11 +273,11 @@ export class WakeLockIndicator {
273
273
  this._screenLocked = screenLock;
274
274
  }
275
275
  }
276
- WakeLockIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WakeLockIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
277
- WakeLockIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: { screenLocked: "screenLocked" }, ngImport: i0, template: `
276
+ WakeLockIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WakeLockIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
277
+ WakeLockIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: WakeLockIndicator, selector: "app-wakelockindicator", inputs: { screenLocked: "screenLocked" }, ngImport: i0, template: `
278
278
  <mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
279
279
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WakeLockIndicator, decorators: [{
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WakeLockIndicator, decorators: [{
281
281
  type: Component,
282
282
  args: [{ selector: 'app-wakelockindicator', template: `
283
283
  <mat-icon *ngIf="_screenLocked">screen_lock_portrait</mat-icon>
@@ -300,11 +300,11 @@ export class ReadyStateIndicator {
300
300
  return this._ready;
301
301
  }
302
302
  }
303
- ReadyStateIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
304
- ReadyStateIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
303
+ ReadyStateIndicator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ReadyStateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
304
+ ReadyStateIndicator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: { ready: "ready" }, ngImport: i0, template: `
305
305
  <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
306
306
  `, isInline: true, dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ReadyStateIndicator, decorators: [{
307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ReadyStateIndicator, decorators: [{
308
308
  type: Component,
309
309
  args: [{ selector: 'app-readystateindicator', template: `
310
310
  <mat-icon [matTooltip]="readyStateToolTip">{{hourGlassIconName}}</mat-icon>
@@ -328,8 +328,8 @@ export class ControlPanel extends ResponsiveComponent {
328
328
  return this._ready;
329
329
  }
330
330
  }
331
- ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ControlPanel, deps: [{ token: i5.BreakpointObserver }, { token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
332
- ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
331
+ ControlPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, deps: [{ token: i5.BreakpointObserver }, { token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
332
+ ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ControlPanel, selector: "app-sprcontrolpanel", inputs: { readonly: "readonly", transportActions: "transportActions", processing: "processing", statusMsg: "statusMsg", statusAlertType: "statusAlertType", statusWaiting: "statusWaiting", uploadStatus: "uploadStatus", uploadProgress: "uploadProgress", currentRecording: "currentRecording", enableUploadRecordings: "enableUploadRecordings", navigationEnabled: "navigationEnabled", ready: "ready" }, viewQueries: [{ propertyName: "statusDisplay", first: true, predicate: StatusDisplay, descendants: true, static: true }, { propertyName: "transportPanel", first: true, predicate: TransportPanel, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
333
333
  <div *ngIf="!screenXs" style="flex-direction: row" >
334
334
  <app-sprstatusdisplay style="flex:0 0 0" [statusMsg]="statusMsg" [statusAlertType]="statusAlertType" [statusWaiting]="statusWaiting"
335
335
  class="hidden-xs"></app-sprstatusdisplay>
@@ -350,7 +350,7 @@ ControlPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
350
350
 
351
351
  </div>
352
352
  `, isInline: true, styles: ["div{align-content:center;align-items:center;margin:0;padding:20px;min-height:min-content}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: StatusDisplay, selector: "app-sprstatusdisplay", inputs: ["statusAlertType", "statusMsg", "statusWaiting"] }, { kind: "component", type: UploadStatus, selector: "app-uploadstatus", inputs: ["value", "awaitNewUpload", "status"] }, { kind: "component", type: TransportPanel, selector: "app-sprtransport", inputs: ["readonly", "actions", "navigationEnabled", "pausingEnabled"] }, { kind: "component", type: ReadyStateIndicator, selector: "app-readystateindicator", inputs: ["ready"] }] });
353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ControlPanel, decorators: [{
353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ControlPanel, decorators: [{
354
354
  type: Component,
355
355
  args: [{ selector: 'app-sprcontrolpanel', template: `
356
356
  <div *ngIf="!screenXs" style="flex-direction: row" >
@@ -404,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
404
404
  }], ready: [{
405
405
  type: Input
406
406
  }] } });
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vY29udHJvbHBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQzVCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFzQ2xFLE1BQU0sT0FBTyxhQUFhO0lBakMxQjtRQWtDVyxvQkFBZSxHQUFHLE1BQU0sQ0FBQztRQUN6QixjQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVCLGtCQUFhLEdBQUUsS0FBSyxDQUFDO0tBQy9COzswR0FKWSxhQUFhOzhGQUFiLGFBQWEsb0tBN0JkOzs7OztHQUtUOzJGQXdCVSxhQUFhO2tCQWpDekIsU0FBUzsrQkFFRSxzQkFBc0IsWUFFdEI7Ozs7O0dBS1Q7OEJBeUJRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLOztBQWVSLE1BQU0sT0FBTyxZQUFZO0lBWHpCO1FBWVUsb0JBQWUsR0FBQyxLQUFLLENBQUM7UUFDOUIsZ0JBQVcsR0FBdUIsYUFBYSxDQUFDO1FBRWhELGlCQUFZLEdBQWMsU0FBUyxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFDYixpQkFBWSxHQUFhLElBQUksQ0FBQztRQUM5QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztLQW1EdkI7SUFqRFMsY0FBYztRQUVwQixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFB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LHFJQThHZCxtQkFBbUI7MkZBbURuQixZQUFZO2tCQWpDeEIsU0FBUzsrQkFFRSxxQkFBcUIsWUFFckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUO2lJQVUyQyxhQUFhO3NCQUF4RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVsQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3Rpb259IGZyb20gJy4uLy4uL2FjdGlvbi9hY3Rpb24nXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIElucHV0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IE1hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1Byb2dyZXNzU3Bpbm5lck1vZGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XHJcbmltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50c30gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuaW1wb3J0IHtSZXNwb25zaXZlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vdWkvcmVzcG9uc2l2ZV9jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJzdGF0dXNkaXNwbGF5JyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwIG1hdFRvb2x0aXA9XCJTdGF0dXNcIj5cclxuICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyICpuZ0lmPVwic3RhdHVzV2FpdGluZ1wiIGNvbG9yPVwiYmxhY2tcIiAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMzBcIiBbc3Ryb2tlV2lkdGhdPVwiNVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+PG1hdC1pY29uICpuZ0lmPVwic3RhdHVzQWxlcnRUeXBlPT09J2Vycm9yJ1wiIHN0eWxlPVwiY29sb3I6cmVkXCI+cmVwb3J0X3Byb2JsZW08L21hdC1pY29uPlxyXG4gICAgICB7e3N0YXR1c01zZ319XHJcbiAgICA8L3A+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcclxuICB9YCwgYFxyXG4gICAgcCB7XHJcbiAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgd2hpdGUtc3BhY2U6bm93cmFwO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgYCwgYFxyXG4gICAgbWF0LXByb2dyZXNzLXNwaW5uZXIge1xyXG4gICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICBgLCBgXHJcbiAgICBzcGFuIHtcclxuICAgICAgY29sb3I6IHJlZDtcclxuICAgIH1cclxuICBgXVxyXG5cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTdGF0dXNEaXNwbGF5IHtcclxuICBASW5wdXQoKSBzdGF0dXNBbGVydFR5cGUgPSAnaW5mbyc7XHJcbiAgQElucHV0KCkgc3RhdHVzTXNnID0gJ0luaXRpYWxpemUuLi4nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c1dhaXRpbmcgPWZhbHNlO1xyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdXBsb2Fkc3RhdHVzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFttb2RlXT1cInNwaW5uZXJNb2RlXCIgW2NvbG9yXT1cInN0YXR1c1wiIFtkaWFtZXRlcl09XCIzMFwiIFtzdHJva2VXaWR0aF09XCI1XCIgW3ZhbHVlXT1cIl92YWx1ZVwiIFttYXRUb29sdGlwXT1cInRvb2xUaXBUZXh0XCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1gLGBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lcntcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkU3RhdHVzIHtcclxuICBwcml2YXRlIF9hd2FpdE5ld1VwbG9hZD1mYWxzZTtcclxuICBzcGlubmVyTW9kZTpQcm9ncmVzc1NwaW5uZXJNb2RlID0gJ2RldGVybWluYXRlJztcclxuICBfc3RhdHVzITpzdHJpbmc7XHJcbiAgX2NvbG9yU3RhdHVzOlRoZW1lUGFsZXR0ZT0ncHJpbWFyeSc7XHJcbiAgX3ZhbHVlID0gMTAwO1xyXG4gIGRpc3BsYXlWYWx1ZTpzdHJpbmd8bnVsbD1udWxsO1xyXG4gIHRvb2xUaXBUZXh0OnN0cmluZz0nJztcclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU3Bpbm5lcigpe1xyXG5cclxuICAgIGxldCB1cGxNc2c7XHJcbiAgICBpZiAodGhpcy5fYXdhaXROZXdVcGxvYWQgfHwgdGhpcy5fdmFsdWUgPT09IDApIHtcclxuICAgICAgdGhpcy5zcGlubmVyTW9kZSA9ICdpbmRldGVybWluYXRlJ1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZT0nJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7J1xyXG4gICAgICB1cGxNc2c9J1ByZXBhcmluZyB1cGxvYWQuJ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSdcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWU9dGhpcy5fdmFsdWUrJyUnXHJcbiAgICAgIGlmKHRoaXMuX3ZhbHVlPT09MTAwKXtcclxuICAgICAgICB1cGxNc2cgPSAnVXBsb2FkIGNvbXBsZXRlJ1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdXBsTXNnID0gJ1VwbG9hZCBwcm9ncmVzczogJyArIHRoaXMuZGlzcGxheVZhbHVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmKHRoaXMuc3RhdHVzPT09J3dhcm4nKXtcclxuICAgICAgdXBsTXNnPSdVcGxvYWQgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbi4gJyt1cGxNc2dcclxuICAgIH1cclxuICAgIHRoaXMudG9vbFRpcFRleHQ9dXBsTXNnXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdXBkYXRlU3Bpbm5lcigpXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGF3YWl0TmV3VXBsb2FkKGF3YWl0TmV3VXBsb2FkOmJvb2xlYW4pe1xyXG4gICAgdGhpcy5fYXdhaXROZXdVcGxvYWQ9YXdhaXROZXdVcGxvYWRcclxuICAgIHRoaXMuX3VwZGF0ZVNwaW5uZXIoKVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHN0YXR1cyhzdGF0dXM6c3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICBpZiAoJ2FjY2VudCcgPT09IHN0YXR1cykge1xyXG4gICAgICB0aGlzLl9jb2xvclN0YXR1cyA9ICdhY2NlbnQnO1xyXG4gICAgfSBlbHNlIGlmICgnd2FybicgPT09IHN0YXR1cykge1xyXG4gICAgICB0aGlzLl9jb2xvclN0YXR1cyA9ICd3YXJuJztcclxuICAgIH0gZWxzZXtcclxuICAgICAgdGhpcy5fY29sb3JTdGF0dXMgPSAncHJpbWFyeSc7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91cGRhdGVTcGlubmVyKClcclxuICB9XHJcblxyXG4gIGdldCBzdGF0dXMoKTpzdHJpbmd7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb2dyZXNzZGlzcGxheScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwPnt7cHJvZ3Jlc3NNc2d9fTwvcD5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBmbGV4OiAxO1xyXG4gIC8qIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7ICovXHJcbiAgICAvKmRpc3BsYXk6IGlubGluZTsgKi9cclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NEaXNwbGF5IHtcclxuICBwcm9ncmVzc01zZyA9ICdbaXRlbWNvZGVdJztcclxufVxyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFRyYW5zcG9ydEFjdGlvbnMge1xyXG4gIHN0YXJ0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgc3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIG5leHRBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBmd2ROZXh0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgcGF1c2VBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBmd2RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBid2RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnN0YXJ0QWN0aW9uID0gbmV3IEFjdGlvbignU3RhcnQnKTtcclxuICAgIHRoaXMuc3RvcEFjdGlvbiA9IG5ldyBBY3Rpb24oJ1N0b3AnKTtcclxuICAgIHRoaXMubmV4dEFjdGlvbiA9IG5ldyBBY3Rpb24oJ05leHQnKTtcclxuICAgIHRoaXMucGF1c2VBY3Rpb24gPSBuZXcgQWN0aW9uKCdQYXVzZScpO1xyXG4gICAgdGhpcy5md2ROZXh0QWN0aW9uID0gbmV3IEFjdGlvbignTmV4dCByZWNvcmRpbmcnKTtcclxuICAgIHRoaXMuZndkQWN0aW9uID0gbmV3IEFjdGlvbignRm9yd2FyZCcpO1xyXG4gICAgdGhpcy5id2RBY3Rpb24gPSBuZXcgQWN0aW9uKCdCYWNrd2FyZCcpO1xyXG5cclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJ0cmFuc3BvcnQnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGJ1dHRvbiBpZD1cImJ3ZEJ0blwiICpuZ0lmPVwibmF2aWdhdGlvbkVuYWJsZWRcIiAgKGNsaWNrKT1cImFjdGlvbnMuYndkQWN0aW9uLnBlcmZvcm0oKVwiIFtkaXNhYmxlZF09XCJid2REaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJzdGFydFN0b3BOZXh0UGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInN0YXJ0RGlzYWJsZWQoKSAmJiBzdG9wRGlzYWJsZWQoKSAmJiBuZXh0RGlzYWJsZWQoKVwiICBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJzdGFydFN0b3BOZXh0SWNvbkNvbG9yKClcIj57e3N0YXJ0U3RvcE5leHRJY29uTmFtZSgpfX08L21hdC1pY29uPjxtYXQtaWNvbiAqbmdJZj1cIiFuZXh0RGlzYWJsZWQoKVwiIFtzdHlsZS5jb2xvcl09XCJuZXh0RGlzYWJsZWQoKSA/ICdncmV5JyA6ICdibGFjaydcIj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhc2NyZWVuWHNcIj57e3N0YXJ0U3RvcE5leHROYW1lKCl9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInBhdXNpbmdFbmFibGVkXCIgKGNsaWNrKT1cImFjdGlvbnMucGF1c2VBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInBhdXNlRGlzYWJsZWQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICA8bWF0LWljb24+cGF1c2U8L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFzY3JlZW5Yc1wiPlBhdXNlPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZndkTmV4dEJ0blwiICpuZ0lmPVwibmF2aWdhdGlvbkVuYWJsZWQgJiYgIXNjcmVlblhzXCIgKGNsaWNrKT1cImFjdGlvbnMuZndkTmV4dEFjdGlvbi5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwiZndkTmV4dERpc2FibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPnJlZG88L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZndkQnRuXCIgKm5nSWY9XCJuYXZpZ2F0aW9uRW5hYmxlZFwiICAoY2xpY2spPVwiYWN0aW9ucy5md2RBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cImZ3ZERpc2FibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIGZsZXg6IDIwO1xyXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBtYXJnaW46IDA7XHJcblxyXG4gIH1gLCBgXHJcbiAgICBkaXYge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAgIGZsZXg6IDA7XHJcbiAgICB9YCxgXHJcbiAgICAgYnV0dG9uIHtcclxuICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xyXG4gICAgIH1gXHJcbiAgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zcG9ydFBhbmVsIGV4dGVuZHMgUmVzcG9uc2l2ZUNvbXBvbmVudHtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkhOmJvb2xlYW47XHJcbiAgQElucHV0KCkgYWN0aW9ucyE6IFRyYW5zcG9ydEFjdGlvbnM7XHJcbiAgQElucHV0KCkgbmF2aWdhdGlvbkVuYWJsZWQ9dHJ1ZTtcclxuICBASW5wdXQoKSBwYXVzaW5nRW5hYmxlZD10cnVlO1xyXG5cclxuICBzdGFydFN0b3BOZXh0QnV0dG9uTmFtZSE6c3RyaW5nO1xyXG4gIHN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZSE6c3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyKSB7XHJcbiAgICAgIHN1cGVyKGJyZWFrcG9pbnRPYnNlcnZlcik7XHJcbiAgICB9XHJcblxyXG4gIHN0YXJ0RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuYWN0aW9ucy5zdGFydEFjdGlvbi5kaXNhYmxlZFxyXG4gIH1cclxuXHJcbiAgc3RvcERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLnN0b3BBY3Rpb24uZGlzYWJsZWRcclxuICB9XHJcblxyXG4gIG5leHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5uZXh0QWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5wYXVzZUFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5wYXVzaW5nRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGZ3ZERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLmZ3ZEFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGZ3ZE5leHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5md2ROZXh0QWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgYndkRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLmFjdGlvbnMuYndkQWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgICBzdGFydFN0b3BOZXh0TmFtZSgpOnN0cmluZ3tcclxuICAgICAgICBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU9IFwiTmV4dFwiXHJcbiAgICAgICAgfWVsc2UgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uTmFtZT1cIlN0YXJ0XCJcclxuICAgICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25OYW1lID0gXCJTdG9wXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU7XHJcbiAgICB9XHJcbiAgc3RhcnRTdG9wTmV4dEljb25OYW1lKCk6c3RyaW5ne1xyXG4gICAgICBpZighdGhpcy5zdGFydERpc2FibGVkKCkpe1xyXG4gICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cImZpYmVyX21hbnVhbF9yZWNvcmRcIlxyXG4gICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cInN0b3BcIlxyXG4gICAgICB9ZWxzZSBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cInN0b3BcIlxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZVxyXG4gIH1cclxuICAgIHN0YXJ0U3RvcE5leHRJY29uQ29sb3IoKTpzdHJpbmd7XHJcbiAgICAgICAgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgICAgcmV0dXJuIFwicmVkXCJcclxuICAgICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSB8fCAhdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHJldHVybiBcInllbGxvd1wiXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiBcImdyZXlcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHN0YXJ0U3RvcE5leHRQZXJmb3JtKCl7XHJcbiAgICBpZighdGhpcy5zdGFydERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMuc3RhcnRBY3Rpb24ucGVyZm9ybSgpO1xyXG4gICAgfWVsc2UgaWYoIXRoaXMuc3RvcERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMuc3RvcEFjdGlvbi5wZXJmb3JtKCk7XHJcbiAgICB9ZWxzZSBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgIHRoaXMuYWN0aW9ucy5uZXh0QWN0aW9uLnBlcmZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13YWtlbG9ja2luZGljYXRvcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cIl9zY3JlZW5Mb2NrZWRcIj5zY3JlZW5fbG9ja19wb3J0cmFpdDwvbWF0LWljb24+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXYWtlTG9ja0luZGljYXRvciB7XHJcbiAgX3NjcmVlbkxvY2tlZD1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBASW5wdXQoKSBzZXQgc2NyZWVuTG9ja2VkKHNjcmVlbkxvY2s6Ym9vbGVhbil7XHJcbiAgICB0aGlzLl9zY3JlZW5Mb2NrZWQ9c2NyZWVuTG9jaztcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1yZWFkeXN0YXRlaW5kaWNhdG9yJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCJyZWFkeVN0YXRlVG9vbFRpcFwiPnt7aG91ckdsYXNzSWNvbk5hbWV9fTwvbWF0LWljb24+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWFkeVN0YXRlSW5kaWNhdG9yIHtcclxuICBfcmVhZHk9dHJ1ZTtcclxuICBob3VyR2xhc3NJY29uTmFtZT0naG91cmdsYXNzX2VtcHR5J1xyXG4gIHJlYWR5U3RhdGVUb29sVGlwOnN0cmluZz0nJ1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIEBJbnB1dCgpIHNldCByZWFkeShyZWFkeTpib29sZWFuKXtcclxuICAgIHRoaXMuX3JlYWR5PXJlYWR5XHJcbiAgICB0aGlzLmhvdXJHbGFzc0ljb25OYW1lPXRoaXMuX3JlYWR5Pydob3VyZ2xhc3NfZW1wdHknOidob3VyZ2xhc3NfZnVsbCdcclxuICAgIHRoaXMucmVhZHlTdGF0ZVRvb2xUaXA9dGhpcy5fcmVhZHk/J0F1ZGlvIHByb2Nlc3NpbmcgYW5kIHVwbG9hZCBkb25lLiBZb3UgY2FuIGxlYXZlIHRoZSBwYWdlIHdpdGhvdXQgZGF0YSBsb3NzLic6J1BsZWFzZSB3YWl0IHVudGlsIGF1ZGlvIHByb2Nlc3NpbmcgYW5kIHVwbG9hZCBoYXZlIGZpbmlzaGVkLiBQbGVhc2UgZG8gbm90IGxlYXZlIHRoZSBwYWdlLidcclxuICB9XHJcblxyXG4gIGdldCByZWFkeSgpOmJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5fcmVhZHlcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJjb250cm9scGFuZWwnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5Yc1wiIHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvd1wiID5cclxuICAgICA8YXBwLXNwcnN0YXR1c2Rpc3BsYXkgc3R5bGU9XCJmbGV4OjAgMCAwXCIgW3N0YXR1c01zZ109XCJzdGF0dXNNc2dcIiBbc3RhdHVzQWxlcnRUeXBlXT1cInN0YXR1c0FsZXJ0VHlwZVwiIFtzdGF0dXNXYWl0aW5nXT1cInN0YXR1c1dhaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuLXhzXCI+PC9hcHAtc3Byc3RhdHVzZGlzcGxheT5cclxuICAgICAgPGFwcC1zcHJ0cmFuc3BvcnQgc3R5bGU9XCJmbGV4OjEwIDAgMFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFthY3Rpb25zXT1cInRyYW5zcG9ydEFjdGlvbnNcIiBbbmF2aWdhdGlvbkVuYWJsZWRdPVwibmF2aWdhdGlvbkVuYWJsZWRcIj48L2FwcC1zcHJ0cmFuc3BvcnQ+XHJcbiAgICAgIDxhcHAtdXBsb2Fkc3RhdHVzIHN0eWxlPVwiZmxleDowIDAgMFwiICpuZ0lmPVwiZW5hYmxlVXBsb2FkUmVjb3JkaW5nc1wiIFt2YWx1ZV09XCJ1cGxvYWRQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInVwbG9hZFN0YXR1c1wiIFthd2FpdE5ld1VwbG9hZF09XCJwcm9jZXNzaW5nXCI+PC9hcHAtdXBsb2Fkc3RhdHVzPlxyXG4gICAgICA8YXBwLXJlYWR5c3RhdGVpbmRpY2F0b3IgW3JlYWR5XT1cIl9yZWFkeVwiPjwvYXBwLXJlYWR5c3RhdGVpbmRpY2F0b3I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzY3JlZW5Yc1wic3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogY29sdW1uXCIgID5cclxuICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiByb3dcIiBjbGFzcz1cImZsZXhGaWxsXCIgPlxyXG4gICAgICAgPGFwcC1zcHJzdGF0dXNkaXNwbGF5IHN0eWxlPVwiZmxleDoxMCAwIDA7ZmxleC1hbGlnbjpsZWZ0XCIgW3N0YXR1c01zZ109XCJzdGF0dXNNc2dcIiBbc3RhdHVzQWxlcnRUeXBlXT1cInN0YXR1c0FsZXJ0VHlwZVwiIFtzdGF0dXNXYWl0aW5nXT1cInN0YXR1c1dhaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4teHNcIj48L2FwcC1zcHJzdGF0dXNkaXNwbGF5PlxyXG4gICAgICAgPGFwcC11cGxvYWRzdGF0dXMgc3R5bGU9XCJmbGV4OjAgMCAwXCIgKm5nSWY9XCJlbmFibGVVcGxvYWRSZWNvcmRpbmdzXCIgW3ZhbHVlXT1cInVwbG9hZFByb2dyZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJ1cGxvYWRTdGF0dXNcIiBbYXdhaXROZXdVcGxvYWRdPVwicHJvY2Vzc2luZ1wiPjwvYXBwLXVwbG9hZHN0YXR1cz5cclxuICAgICAgICA8YXBwLXJlYWR5c3RhdGVpbmRpY2F0b3IgW3JlYWR5XT1cIl9yZWFkeVwiPjwvYXBwLXJlYWR5c3RhdGVpbmRpY2F0b3I+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YXBwLXNwcnRyYW5zcG9ydCBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbYWN0aW9uc109XCJ0cmFuc3BvcnRBY3Rpb25zXCIgW25hdmlnYXRpb25FbmFibGVkXT1cIm5hdmlnYXRpb25FbmFibGVkXCI+PC9hcHAtc3BydHJhbnNwb3J0PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYGRpdiB7XHJcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIG1pbi1oZWlnaHQ6IG1pbi1jb250ZW50OyAvKiBpbXBvcnRhbnQgKi9cclxuICB9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRyb2xQYW5lbCBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoU3RhdHVzRGlzcGxheSwgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRGlzcGxheSE6IFN0YXR1c0Rpc3BsYXk7XHJcbiAgQFZpZXdDaGlsZChUcmFuc3BvcnRQYW5lbCwgeyBzdGF0aWM6IHRydWUgfSkgdHJhbnNwb3J0UGFuZWwhOiBUcmFuc3BvcnRQYW5lbDtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkhOmJvb2xlYW5cclxuICBASW5wdXQoKSB0cmFuc3BvcnRBY3Rpb25zITogVHJhbnNwb3J0QWN0aW9uc1xyXG4gIEBJbnB1dCgpIHByb2Nlc3Npbmc9ZmFsc2VcclxuICBASW5wdXQoKSBzdGF0dXNNc2chOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3RhdHVzQWxlcnRUeXBlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c1dhaXRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHVwbG9hZFN0YXR1cyE6IHN0cmluZztcclxuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzcyE6IG51bWJlcjtcclxuICBASW5wdXQoKSBjdXJyZW50UmVjb3JkaW5nOiBBdWRpb0J1ZmZlcnwgbnVsbHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVVwbG9hZFJlY29yZGluZ3MhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG5hdmlnYXRpb25FbmFibGVkPXRydWU7XHJcblxyXG4gIF9yZWFkeT10cnVlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBicG86QnJlYWtwb2ludE9ic2VydmVyLHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgc3VwZXIoYnBvKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCByZWFkeShyZWFkeTpib29sZWFuKXtcclxuICAgIHRoaXMuX3JlYWR5PXJlYWR5XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZHkoKTpib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ==
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vY29udHJvbHBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQzVCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFzQ2xFLE1BQU0sT0FBTyxhQUFhO0lBakMxQjtRQWtDVyxvQkFBZSxHQUFHLE1BQU0sQ0FBQztRQUN6QixjQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVCLGtCQUFhLEdBQUUsS0FBSyxDQUFDO0tBQy9COzsyR0FKWSxhQUFhOytGQUFiLGFBQWEsb0tBN0JkOzs7OztHQUtUOzRGQXdCVSxhQUFhO2tCQWpDekIsU0FBUzsrQkFFRSxzQkFBc0IsWUFFdEI7Ozs7O0dBS1Q7OEJBeUJRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLOztBQWVSLE1BQU0sT0FBTyxZQUFZO0lBWHpCO1FBWVUsb0JBQWUsR0FBQyxLQUFLLENBQUM7UUFDOUIsZ0JBQVcsR0FBdUIsYUFBYSxDQUFDO1FBRWhELGlCQUFZLEdBQWMsU0FBUyxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFDYixpQkFBWSxHQUFhLElBQUksQ0FBQztRQUM5QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztLQW1EdkI7SUFqRFMsY0FBYztRQUVwQixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFDLDBCQUEwQixDQUFBO1lBQzVDLE1BQU0sR0FBQyxtQkFBbUIsQ0FBQTtTQUMzQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUE7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEdBQUcsQ0FBQTtZQUNqQyxJQUFHLElBQUksQ0FBQyxNQUFNLEtBQUcsR0FBRyxFQUFDO2dCQUNuQixNQUFNLEdBQUcsaUJBQWlCLENBQUE7YUFDM0I7aUJBQUs7Z0JBQ0osTUFBTSxHQUFHLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7YUFDakQ7U0FDRjtRQUNELElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBRyxNQUFNLEVBQUM7WUFDdEIsTUFBTSxHQUFDLCtEQUErRCxHQUFDLE1BQU0sQ0FBQTtTQUM5RTtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQWEsY0FBYyxDQUFDLGNBQXNCO1FBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUMsY0FBYyxDQUFBO1FBQ25DLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7U0FDOUI7YUFBTSxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7U0FDNUI7YUFBSztZQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQzs7MEdBeERVLFlBQVk7OEZBQVosWUFBWSx3SUFUYjs7R0FFVDs0RkFPVSxZQUFZO2tCQVh4QixTQUFTOytCQUNFLGtCQUFrQixZQUNsQjs7R0FFVDs4QkF1Q0csS0FBSztzQkFEUixLQUFLO2dCQU1PLGNBQWM7c0JBQTFCLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSzs7QUFnQ1IsTUFBTSxPQUFPLGVBQWU7SUFiNUI7UUFjRSxnQkFBVyxHQUFHLFlBQVksQ0FBQztLQUM1Qjs7NkdBRlksZUFBZTtpR0FBZixlQUFlLDhEQVhoQjs7R0FFVDs0RkFTVSxlQUFlO2tCQWIzQixTQUFTOytCQUNFLHdCQUF3QixZQUN4Qjs7R0FFVDs7QUFnQkgsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQjtRQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQyxDQUFDO0NBQ0Y7QUE4Q0QsTUFBTSxPQUFPLGNBQWUsU0FBUSxtQkFBbUI7SUFVbkQsWUFBWSxrQkFBc0M7UUFDaEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFQckIsc0JBQWlCLEdBQUMsSUFBSSxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUMsSUFBSSxDQUFDO0lBTzNCLENBQUM7SUFFSCxhQUFhO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUE7SUFDNUUsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUE7SUFDMUQsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDdEYsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ3JGLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ3pGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ3JGLENBQUM7SUFFQyxpQkFBaUI7UUFDYixJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDO1lBQ3BCLElBQUksQ0FBQyx1QkFBdUIsR0FBRSxNQUFNLENBQUE7U0FDdkM7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDO1lBQzNCLElBQUksQ0FBQyx1QkFBdUIsR0FBQyxPQUFPLENBQUE7U0FDdkM7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxNQUFNLENBQUE7U0FDeEM7UUFDRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBQ0gscUJBQXFCO1FBQ2pCLElBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUM7WUFDdEIsSUFBSSxDQUFDLDJCQUEyQixHQUFDLHFCQUFxQixDQUFBO1NBQ3hEO2FBQUssSUFBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBQztZQUMxQixJQUFJLENBQUMsMkJBQTJCLEdBQUMsTUFBTSxDQUFBO1NBQzFDO2FBQUssSUFBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBQztZQUMxQixJQUFJLENBQUMsMkJBQTJCLEdBQUMsTUFBTSxDQUFBO1NBQzFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUNDLHNCQUFzQjtRQUNsQixJQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDO1lBQ3JCLE9BQU8sS0FBSyxDQUFBO1NBQ2Y7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDO1lBQ2xELE9BQU8sUUFBUSxDQUFBO1NBQ2xCO2FBQUk7WUFDRCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFSCxvQkFBb0I7UUFDbEIsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBQztZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNwQzthQUFLLElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDbkM7YUFBSyxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQzs7NEdBaEZVLGNBQWM7Z0dBQWQsY0FBYywrTUF4Q2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUOzRGQW9CVSxjQUFjO2tCQTVDMUIsU0FBUzsrQkFFRSxrQkFBa0IsWUFFbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUO3lHQXNCUSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSzs7QUFzRlIsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QjtRQUZBLGtCQUFhLEdBQUMsS0FBSyxDQUFDO0lBRUwsQ0FBQztJQUVoQixJQUFhLFlBQVksQ0FBQyxVQUFrQjtRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFDLFVBQVUsQ0FBQztJQUNoQyxDQUFDOzsrR0FQVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix1R0FMbEI7O0dBRVQ7NEZBR1UsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLHVCQUF1QixZQUN2Qjs7R0FFVDswRUFRWSxZQUFZO3NCQUF4QixLQUFLOztBQWNSLE1BQU0sT0FBTyxtQkFBbUI7SUFLOUI7UUFKQSxXQUFNLEdBQUMsSUFBSSxDQUFDO1FBQ1osc0JBQWlCLEdBQUMsaUJBQWlCLENBQUE7UUFDbkMsc0JBQWlCLEdBQVEsRUFBRSxDQUFBO0lBRVosQ0FBQztJQUVoQixJQUFhLEtBQUssQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUMsS0FBSyxDQUFBO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSxpQkFBaUIsQ0FBQSxDQUFDLENBQUEsZ0JBQWdCLENBQUE7UUFDckUsSUFBSSxDQUFDLGlCQUFpQixHQUFDLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFBLDZFQUE2RSxDQUFBLENBQUMsQ0FBQSw0RkFBNEYsQ0FBQTtJQUMvTSxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7O2lIQWZVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLDJGQUxwQjs7R0FFVDs0RkFHVSxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBRUUseUJBQXlCLFlBRXpCOztHQUVUOzBFQVVZLEtBQUs7c0JBQWpCLEtBQUs7O0FBNENSLE1BQU0sT0FBTyxZQUFhLFNBQVEsbUJBQW1CO0lBa0JuRCxZQUFzQixHQUFzQixFQUFRLE1BQWlCO1FBQ25FLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVo1RCxlQUFVLEdBQUMsS0FBSyxDQUFBO1FBUWhCLHNCQUFpQixHQUFDLElBQUksQ0FBQztRQUVoQyxXQUFNLEdBQUMsSUFBSSxDQUFBO0lBSVgsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBQyxLQUFLLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDOzswR0E1QlUsWUFBWTs4RkFBWixZQUFZLHdmQUNaLGFBQWEsK0ZBQ2IsY0FBYyxxRkEvQmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JULHlRQTVUVSxhQUFhLDRIQWtCYixZQUFZLDRHQWtKWixjQUFjLHFJQThHZCxtQkFBbUI7NEZBbURuQixZQUFZO2tCQWpDeEIsU0FBUzsrQkFFRSxxQkFBcUIsWUFFckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUO2lJQVUyQyxhQUFhO3NCQUF4RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVsQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3Rpb259IGZyb20gJy4uLy4uL2FjdGlvbi9hY3Rpb24nXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIElucHV0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IE1hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1Byb2dyZXNzU3Bpbm5lck1vZGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XHJcbmltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50c30gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuaW1wb3J0IHtSZXNwb25zaXZlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vdWkvcmVzcG9uc2l2ZV9jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJzdGF0dXNkaXNwbGF5JyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwIG1hdFRvb2x0aXA9XCJTdGF0dXNcIj5cclxuICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyICpuZ0lmPVwic3RhdHVzV2FpdGluZ1wiIGNvbG9yPVwiYmxhY2tcIiAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMzBcIiBbc3Ryb2tlV2lkdGhdPVwiNVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+PG1hdC1pY29uICpuZ0lmPVwic3RhdHVzQWxlcnRUeXBlPT09J2Vycm9yJ1wiIHN0eWxlPVwiY29sb3I6cmVkXCI+cmVwb3J0X3Byb2JsZW08L21hdC1pY29uPlxyXG4gICAgICB7e3N0YXR1c01zZ319XHJcbiAgICA8L3A+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgZGlzcGxheTogaW5saW5lO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcclxuICB9YCwgYFxyXG4gICAgcCB7XHJcbiAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgd2hpdGUtc3BhY2U6bm93cmFwO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgYCwgYFxyXG4gICAgbWF0LXByb2dyZXNzLXNwaW5uZXIge1xyXG4gICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICBgLCBgXHJcbiAgICBzcGFuIHtcclxuICAgICAgY29sb3I6IHJlZDtcclxuICAgIH1cclxuICBgXVxyXG5cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTdGF0dXNEaXNwbGF5IHtcclxuICBASW5wdXQoKSBzdGF0dXNBbGVydFR5cGUgPSAnaW5mbyc7XHJcbiAgQElucHV0KCkgc3RhdHVzTXNnID0gJ0luaXRpYWxpemUuLi4nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c1dhaXRpbmcgPWZhbHNlO1xyXG59XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdXBsb2Fkc3RhdHVzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFttb2RlXT1cInNwaW5uZXJNb2RlXCIgW2NvbG9yXT1cInN0YXR1c1wiIFtkaWFtZXRlcl09XCIzMFwiIFtzdHJva2VXaWR0aF09XCI1XCIgW3ZhbHVlXT1cIl92YWx1ZVwiIFttYXRUb29sdGlwXT1cInRvb2xUaXBUZXh0XCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1gLGBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lcntcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkU3RhdHVzIHtcclxuICBwcml2YXRlIF9hd2FpdE5ld1VwbG9hZD1mYWxzZTtcclxuICBzcGlubmVyTW9kZTpQcm9ncmVzc1NwaW5uZXJNb2RlID0gJ2RldGVybWluYXRlJztcclxuICBfc3RhdHVzITpzdHJpbmc7XHJcbiAgX2NvbG9yU3RhdHVzOlRoZW1lUGFsZXR0ZT0ncHJpbWFyeSc7XHJcbiAgX3ZhbHVlID0gMTAwO1xyXG4gIGRpc3BsYXlWYWx1ZTpzdHJpbmd8bnVsbD1udWxsO1xyXG4gIHRvb2xUaXBUZXh0OnN0cmluZz0nJztcclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU3Bpbm5lcigpe1xyXG5cclxuICAgIGxldCB1cGxNc2c7XHJcbiAgICBpZiAodGhpcy5fYXdhaXROZXdVcGxvYWQgfHwgdGhpcy5fdmFsdWUgPT09IDApIHtcclxuICAgICAgdGhpcy5zcGlubmVyTW9kZSA9ICdpbmRldGVybWluYXRlJ1xyXG4gICAgICB0aGlzLmRpc3BsYXlWYWx1ZT0nJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7J1xyXG4gICAgICB1cGxNc2c9J1ByZXBhcmluZyB1cGxvYWQuJ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zcGlubmVyTW9kZSA9ICdkZXRlcm1pbmF0ZSdcclxuICAgICAgdGhpcy5kaXNwbGF5VmFsdWU9dGhpcy5fdmFsdWUrJyUnXHJcbiAgICAgIGlmKHRoaXMuX3ZhbHVlPT09MTAwKXtcclxuICAgICAgICB1cGxNc2cgPSAnVXBsb2FkIGNvbXBsZXRlJ1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdXBsTXNnID0gJ1VwbG9hZCBwcm9ncmVzczogJyArIHRoaXMuZGlzcGxheVZhbHVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmKHRoaXMuc3RhdHVzPT09J3dhcm4nKXtcclxuICAgICAgdXBsTXNnPSdVcGxvYWQgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbi4gJyt1cGxNc2dcclxuICAgIH1cclxuICAgIHRoaXMudG9vbFRpcFRleHQ9dXBsTXNnXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdXBkYXRlU3Bpbm5lcigpXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGF3YWl0TmV3VXBsb2FkKGF3YWl0TmV3VXBsb2FkOmJvb2xlYW4pe1xyXG4gICAgdGhpcy5fYXdhaXROZXdVcGxvYWQ9YXdhaXROZXdVcGxvYWRcclxuICAgIHRoaXMuX3VwZGF0ZVNwaW5uZXIoKVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHN0YXR1cyhzdGF0dXM6c3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICBpZiAoJ2FjY2VudCcgPT09IHN0YXR1cykge1xyXG4gICAgICB0aGlzLl9jb2xvclN0YXR1cyA9ICdhY2NlbnQnO1xyXG4gICAgfSBlbHNlIGlmICgnd2FybicgPT09IHN0YXR1cykge1xyXG4gICAgICB0aGlzLl9jb2xvclN0YXR1cyA9ICd3YXJuJztcclxuICAgIH0gZWxzZXtcclxuICAgICAgdGhpcy5fY29sb3JTdGF0dXMgPSAncHJpbWFyeSc7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91cGRhdGVTcGlubmVyKClcclxuICB9XHJcblxyXG4gIGdldCBzdGF0dXMoKTpzdHJpbmd7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb2dyZXNzZGlzcGxheScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwPnt7cHJvZ3Jlc3NNc2d9fTwvcD5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBmbGV4OiAxO1xyXG4gIC8qIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7ICovXHJcbiAgICAvKmRpc3BsYXk6IGlubGluZTsgKi9cclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1gXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NEaXNwbGF5IHtcclxuICBwcm9ncmVzc01zZyA9ICdbaXRlbWNvZGVdJztcclxufVxyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFRyYW5zcG9ydEFjdGlvbnMge1xyXG4gIHN0YXJ0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgc3RvcEFjdGlvbjogQWN0aW9uPHZvaWQ+O1xyXG4gIG5leHRBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBmd2ROZXh0QWN0aW9uOiBBY3Rpb248dm9pZD47XHJcbiAgcGF1c2VBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBmd2RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuICBid2RBY3Rpb246IEFjdGlvbjx2b2lkPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnN0YXJ0QWN0aW9uID0gbmV3IEFjdGlvbignU3RhcnQnKTtcclxuICAgIHRoaXMuc3RvcEFjdGlvbiA9IG5ldyBBY3Rpb24oJ1N0b3AnKTtcclxuICAgIHRoaXMubmV4dEFjdGlvbiA9IG5ldyBBY3Rpb24oJ05leHQnKTtcclxuICAgIHRoaXMucGF1c2VBY3Rpb24gPSBuZXcgQWN0aW9uKCdQYXVzZScpO1xyXG4gICAgdGhpcy5md2ROZXh0QWN0aW9uID0gbmV3IEFjdGlvbignTmV4dCByZWNvcmRpbmcnKTtcclxuICAgIHRoaXMuZndkQWN0aW9uID0gbmV3IEFjdGlvbignRm9yd2FyZCcpO1xyXG4gICAgdGhpcy5id2RBY3Rpb24gPSBuZXcgQWN0aW9uKCdCYWNrd2FyZCcpO1xyXG5cclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJ0cmFuc3BvcnQnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGJ1dHRvbiBpZD1cImJ3ZEJ0blwiICpuZ0lmPVwibmF2aWdhdGlvbkVuYWJsZWRcIiAgKGNsaWNrKT1cImFjdGlvbnMuYndkQWN0aW9uLnBlcmZvcm0oKVwiIFtkaXNhYmxlZF09XCJid2REaXNhYmxlZCgpXCJcclxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJzdGFydFN0b3BOZXh0UGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInN0YXJ0RGlzYWJsZWQoKSAmJiBzdG9wRGlzYWJsZWQoKSAmJiBuZXh0RGlzYWJsZWQoKVwiICBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJzdGFydFN0b3BOZXh0SWNvbkNvbG9yKClcIj57e3N0YXJ0U3RvcE5leHRJY29uTmFtZSgpfX08L21hdC1pY29uPjxtYXQtaWNvbiAqbmdJZj1cIiFuZXh0RGlzYWJsZWQoKVwiIFtzdHlsZS5jb2xvcl09XCJuZXh0RGlzYWJsZWQoKSA/ICdncmV5JyA6ICdibGFjaydcIj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhc2NyZWVuWHNcIj57e3N0YXJ0U3RvcE5leHROYW1lKCl9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInBhdXNpbmdFbmFibGVkXCIgKGNsaWNrKT1cImFjdGlvbnMucGF1c2VBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInBhdXNlRGlzYWJsZWQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICA8bWF0LWljb24+cGF1c2U8L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFzY3JlZW5Yc1wiPlBhdXNlPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZndkTmV4dEJ0blwiICpuZ0lmPVwibmF2aWdhdGlvbkVuYWJsZWQgJiYgIXNjcmVlblhzXCIgKGNsaWNrKT1cImFjdGlvbnMuZndkTmV4dEFjdGlvbi5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwiZndkTmV4dERpc2FibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPnJlZG88L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZndkQnRuXCIgKm5nSWY9XCJuYXZpZ2F0aW9uRW5hYmxlZFwiICAoY2xpY2spPVwiYWN0aW9ucy5md2RBY3Rpb24ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cImZ3ZERpc2FibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuICAgIGZsZXg6IDIwO1xyXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBtYXJnaW46IDA7XHJcblxyXG4gIH1gLCBgXHJcbiAgICBkaXYge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAgIGZsZXg6IDA7XHJcbiAgICB9YCxgXHJcbiAgICAgYnV0dG9uIHtcclxuICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xyXG4gICAgIH1gXHJcbiAgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zcG9ydFBhbmVsIGV4dGVuZHMgUmVzcG9uc2l2ZUNvbXBvbmVudHtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkhOmJvb2xlYW47XHJcbiAgQElucHV0KCkgYWN0aW9ucyE6IFRyYW5zcG9ydEFjdGlvbnM7XHJcbiAgQElucHV0KCkgbmF2aWdhdGlvbkVuYWJsZWQ9dHJ1ZTtcclxuICBASW5wdXQoKSBwYXVzaW5nRW5hYmxlZD10cnVlO1xyXG5cclxuICBzdGFydFN0b3BOZXh0QnV0dG9uTmFtZSE6c3RyaW5nO1xyXG4gIHN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZSE6c3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyKSB7XHJcbiAgICAgIHN1cGVyKGJyZWFrcG9pbnRPYnNlcnZlcik7XHJcbiAgICB9XHJcblxyXG4gIHN0YXJ0RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuYWN0aW9ucy5zdGFydEFjdGlvbi5kaXNhYmxlZFxyXG4gIH1cclxuXHJcbiAgc3RvcERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLnN0b3BBY3Rpb24uZGlzYWJsZWRcclxuICB9XHJcblxyXG4gIG5leHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5uZXh0QWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5wYXVzZUFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5wYXVzaW5nRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGZ3ZERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zLmZ3ZEFjdGlvbi5kaXNhYmxlZCB8fCAhdGhpcy5uYXZpZ2F0aW9uRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIGZ3ZE5leHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiAhdGhpcy5hY3Rpb25zIHx8IHRoaXMuYWN0aW9ucy5md2ROZXh0QWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgYndkRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuYWN0aW9ucyB8fCB0aGlzLmFjdGlvbnMuYndkQWN0aW9uLmRpc2FibGVkIHx8ICF0aGlzLm5hdmlnYXRpb25FbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgICBzdGFydFN0b3BOZXh0TmFtZSgpOnN0cmluZ3tcclxuICAgICAgICBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU9IFwiTmV4dFwiXHJcbiAgICAgICAgfWVsc2UgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFN0b3BOZXh0QnV0dG9uTmFtZT1cIlN0YXJ0XCJcclxuICAgICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25OYW1lID0gXCJTdG9wXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRTdG9wTmV4dEJ1dHRvbk5hbWU7XHJcbiAgICB9XHJcbiAgc3RhcnRTdG9wTmV4dEljb25OYW1lKCk6c3RyaW5ne1xyXG4gICAgICBpZighdGhpcy5zdGFydERpc2FibGVkKCkpe1xyXG4gICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cImZpYmVyX21hbnVhbF9yZWNvcmRcIlxyXG4gICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cInN0b3BcIlxyXG4gICAgICB9ZWxzZSBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZT1cInN0b3BcIlxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0U3RvcE5leHRCdXR0b25JY29uTmFtZVxyXG4gIH1cclxuICAgIHN0YXJ0U3RvcE5leHRJY29uQ29sb3IoKTpzdHJpbmd7XHJcbiAgICAgICAgaWYoIXRoaXMuc3RhcnREaXNhYmxlZCgpKXtcclxuICAgICAgICAgICAgcmV0dXJuIFwicmVkXCJcclxuICAgICAgICB9ZWxzZSBpZighdGhpcy5zdG9wRGlzYWJsZWQoKSB8fCAhdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgICAgICAgIHJldHVybiBcInllbGxvd1wiXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiBcImdyZXlcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHN0YXJ0U3RvcE5leHRQZXJmb3JtKCl7XHJcbiAgICBpZighdGhpcy5zdGFydERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMuc3RhcnRBY3Rpb24ucGVyZm9ybSgpO1xyXG4gICAgfWVsc2UgaWYoIXRoaXMuc3RvcERpc2FibGVkKCkpe1xyXG4gICAgICB0aGlzLmFjdGlvbnMuc3RvcEFjdGlvbi5wZXJmb3JtKCk7XHJcbiAgICB9ZWxzZSBpZighdGhpcy5uZXh0RGlzYWJsZWQoKSl7XHJcbiAgICAgIHRoaXMuYWN0aW9ucy5uZXh0QWN0aW9uLnBlcmZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13YWtlbG9ja2luZGljYXRvcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cIl9zY3JlZW5Mb2NrZWRcIj5zY3JlZW5fbG9ja19wb3J0cmFpdDwvbWF0LWljb24+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXYWtlTG9ja0luZGljYXRvciB7XHJcbiAgX3NjcmVlbkxvY2tlZD1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBASW5wdXQoKSBzZXQgc2NyZWVuTG9ja2VkKHNjcmVlbkxvY2s6Ym9vbGVhbil7XHJcbiAgICB0aGlzLl9zY3JlZW5Mb2NrZWQ9c2NyZWVuTG9jaztcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1yZWFkeXN0YXRlaW5kaWNhdG9yJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCJyZWFkeVN0YXRlVG9vbFRpcFwiPnt7aG91ckdsYXNzSWNvbk5hbWV9fTwvbWF0LWljb24+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWFkeVN0YXRlSW5kaWNhdG9yIHtcclxuICBfcmVhZHk9dHJ1ZTtcclxuICBob3VyR2xhc3NJY29uTmFtZT0naG91cmdsYXNzX2VtcHR5J1xyXG4gIHJlYWR5U3RhdGVUb29sVGlwOnN0cmluZz0nJ1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIEBJbnB1dCgpIHNldCByZWFkeShyZWFkeTpib29sZWFuKXtcclxuICAgIHRoaXMuX3JlYWR5PXJlYWR5XHJcbiAgICB0aGlzLmhvdXJHbGFzc0ljb25OYW1lPXRoaXMuX3JlYWR5Pydob3VyZ2xhc3NfZW1wdHknOidob3VyZ2xhc3NfZnVsbCdcclxuICAgIHRoaXMucmVhZHlTdGF0ZVRvb2xUaXA9dGhpcy5fcmVhZHk/J0F1ZGlvIHByb2Nlc3NpbmcgYW5kIHVwbG9hZCBkb25lLiBZb3UgY2FuIGxlYXZlIHRoZSBwYWdlIHdpdGhvdXQgZGF0YSBsb3NzLic6J1BsZWFzZSB3YWl0IHVudGlsIGF1ZGlvIHByb2Nlc3NpbmcgYW5kIHVwbG9hZCBoYXZlIGZpbmlzaGVkLiBQbGVhc2UgZG8gbm90IGxlYXZlIHRoZSBwYWdlLidcclxuICB9XHJcblxyXG4gIGdldCByZWFkeSgpOmJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5fcmVhZHlcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1zcHJjb250cm9scGFuZWwnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAqbmdJZj1cIiFzY3JlZW5Yc1wiIHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvd1wiID5cclxuICAgICA8YXBwLXNwcnN0YXR1c2Rpc3BsYXkgc3R5bGU9XCJmbGV4OjAgMCAwXCIgW3N0YXR1c01zZ109XCJzdGF0dXNNc2dcIiBbc3RhdHVzQWxlcnRUeXBlXT1cInN0YXR1c0FsZXJ0VHlwZVwiIFtzdGF0dXNXYWl0aW5nXT1cInN0YXR1c1dhaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuLXhzXCI+PC9hcHAtc3Byc3RhdHVzZGlzcGxheT5cclxuICAgICAgPGFwcC1zcHJ0cmFuc3BvcnQgc3R5bGU9XCJmbGV4OjEwIDAgMFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFthY3Rpb25zXT1cInRyYW5zcG9ydEFjdGlvbnNcIiBbbmF2aWdhdGlvbkVuYWJsZWRdPVwibmF2aWdhdGlvbkVuYWJsZWRcIj48L2FwcC1zcHJ0cmFuc3BvcnQ+XHJcbiAgICAgIDxhcHAtdXBsb2Fkc3RhdHVzIHN0eWxlPVwiZmxleDowIDAgMFwiICpuZ0lmPVwiZW5hYmxlVXBsb2FkUmVjb3JkaW5nc1wiIFt2YWx1ZV09XCJ1cGxvYWRQcm9ncmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInVwbG9hZFN0YXR1c1wiIFthd2FpdE5ld1VwbG9hZF09XCJwcm9jZXNzaW5nXCI+PC9hcHAtdXBsb2Fkc3RhdHVzPlxyXG4gICAgICA8YXBwLXJlYWR5c3RhdGVpbmRpY2F0b3IgW3JlYWR5XT1cIl9yZWFkeVwiPjwvYXBwLXJlYWR5c3RhdGVpbmRpY2F0b3I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzY3JlZW5Yc1wic3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogY29sdW1uXCIgID5cclxuICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiByb3dcIiBjbGFzcz1cImZsZXhGaWxsXCIgPlxyXG4gICAgICAgPGFwcC1zcHJzdGF0dXNkaXNwbGF5IHN0eWxlPVwiZmxleDoxMCAwIDA7ZmxleC1hbGlnbjpsZWZ0XCIgW3N0YXR1c01zZ109XCJzdGF0dXNNc2dcIiBbc3RhdHVzQWxlcnRUeXBlXT1cInN0YXR1c0FsZXJ0VHlwZVwiIFtzdGF0dXNXYWl0aW5nXT1cInN0YXR1c1dhaXRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4teHNcIj48L2FwcC1zcHJzdGF0dXNkaXNwbGF5PlxyXG4gICAgICAgPGFwcC11cGxvYWRzdGF0dXMgc3R5bGU9XCJmbGV4OjAgMCAwXCIgKm5nSWY9XCJlbmFibGVVcGxvYWRSZWNvcmRpbmdzXCIgW3ZhbHVlXT1cInVwbG9hZFByb2dyZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJ1cGxvYWRTdGF0dXNcIiBbYXdhaXROZXdVcGxvYWRdPVwicHJvY2Vzc2luZ1wiPjwvYXBwLXVwbG9hZHN0YXR1cz5cclxuICAgICAgICA8YXBwLXJlYWR5c3RhdGVpbmRpY2F0b3IgW3JlYWR5XT1cIl9yZWFkeVwiPjwvYXBwLXJlYWR5c3RhdGVpbmRpY2F0b3I+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YXBwLXNwcnRyYW5zcG9ydCBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbYWN0aW9uc109XCJ0cmFuc3BvcnRBY3Rpb25zXCIgW25hdmlnYXRpb25FbmFibGVkXT1cIm5hdmlnYXRpb25FbmFibGVkXCI+PC9hcHAtc3BydHJhbnNwb3J0PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYGRpdiB7XHJcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIG1pbi1oZWlnaHQ6IG1pbi1jb250ZW50OyAvKiBpbXBvcnRhbnQgKi9cclxuICB9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRyb2xQYW5lbCBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoU3RhdHVzRGlzcGxheSwgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRGlzcGxheSE6IFN0YXR1c0Rpc3BsYXk7XHJcbiAgQFZpZXdDaGlsZChUcmFuc3BvcnRQYW5lbCwgeyBzdGF0aWM6IHRydWUgfSkgdHJhbnNwb3J0UGFuZWwhOiBUcmFuc3BvcnRQYW5lbDtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkhOmJvb2xlYW5cclxuICBASW5wdXQoKSB0cmFuc3BvcnRBY3Rpb25zITogVHJhbnNwb3J0QWN0aW9uc1xyXG4gIEBJbnB1dCgpIHByb2Nlc3Npbmc9ZmFsc2VcclxuICBASW5wdXQoKSBzdGF0dXNNc2chOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3RhdHVzQWxlcnRUeXBlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0YXR1c1dhaXRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHVwbG9hZFN0YXR1cyE6IHN0cmluZztcclxuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzcyE6IG51bWJlcjtcclxuICBASW5wdXQoKSBjdXJyZW50UmVjb3JkaW5nOiBBdWRpb0J1ZmZlcnwgbnVsbHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVVwbG9hZFJlY29yZGluZ3MhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG5hdmlnYXRpb25FbmFibGVkPXRydWU7XHJcblxyXG4gIF9yZWFkeT10cnVlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBicG86QnJlYWtwb2ludE9ic2VydmVyLHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgc3VwZXIoYnBvKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCByZWFkeShyZWFkeTpib29sZWFuKXtcclxuICAgIHRoaXMuX3JlYWR5PXJlYWR5XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZHkoKTpib29sZWFue1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -41,8 +41,8 @@ export class Progress {
41
41
  return cached;
42
42
  }
43
43
  }
44
- Progress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Progress, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: Progress, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0, template: `
44
+ Progress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Progress, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
+ Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: Progress, selector: "app-sprprogress", inputs: { items: "items", selectedItemIdx: "selectedItemIdx", enableDownload: "enableDownload" }, outputs: { onRowSelect: "onRowSelect", rowSelect: "rowSelect", onShowDoneAction: "onShowDoneAction", clickDone: "clickDone", onDownloadDoneAction: "onDownloadDoneAction", clickDownloadDone: "clickDownloadDone" }, ngImport: i0, template: `
46
46
 
47
47
  <table class="mat-typography">
48
48
  <thead>
@@ -71,7 +71,7 @@ Progress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
71
71
  </tbody>
72
72
  </table>
73
73
  `, isInline: true, styles: [":host{overflow-x:hidden;overflow-y:scroll;padding:10pt;flex:.1 0 content;background:white;min-height:1px}\n", "table{min-height:1px;border-collapse:collapse}table,th,td{border:1px solid lightgrey;padding:.5em}\n", ".selRow{background:lightblue}\n", ".promptDescriptor{max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.ScrollIntoViewDirective, selector: "[scrollIntoViewToBottom]", inputs: ["scrollIntoViewToBottom"] }] });
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Progress, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Progress, decorators: [{
75
75
  type: Component,
76
76
  args: [{ selector: 'app-sprprogress', template: `
77
77
 
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
121
121
  }], clickDownloadDone: [{
122
122
  type: Output
123
123
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9wcm9ncmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFBOzs7OztBQWdGcEUsTUFBTSxPQUFPLFFBQVE7SUE1RXJCO1FBNkVXLFVBQUssR0FBd0IsU0FBUyxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLG1CQUFjLEdBQVUsS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU16QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBUzlDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0F1QjdEO0lBckNDLElBQ0ksU0FBUyxDQUFDLE1BQWE7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUdELElBQ0ksU0FBUyxDQUFDLE1BQWE7UUFDekIsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFHRCxJQUNJLGlCQUFpQixDQUFDLE1BQWE7UUFDakMsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFTO1FBQzVCLElBQUksTUFBTSxHQUFDLElBQUksQ0FBQztRQUNoQixJQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDO1lBQ25CLElBQUksT0FBTyxHQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUcsT0FBTyxHQUFDLENBQUMsRUFBQztnQkFDWCxJQUFJLEVBQUUsR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBRyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRTtvQkFDM0IsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQztpQkFDdkM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7cUdBeENVLFFBQVE7eUZBQVIsUUFBUSw4V0F4RVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7MkZBNENVLFFBQVE7a0JBNUVwQixTQUFTOytCQUVFLGlCQUFpQixZQUVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDs4QkE2Q1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVILFNBQVM7c0JBRFosTUFBTTtnQkFLRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUgsU0FBUztzQkFEWixNQUFNO2dCQVFHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFSCxpQkFBaUI7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb2dyZXNzJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICA8dGFibGUgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxyXG4gICAgICA8dGhlYWQ+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGg+IzwvdGg+PCEtLTx0aD5Db2RlPC90aD4tLT5cclxuICAgICAgICA8dGg+UHJvbXB0PC90aD5cclxuICAgICAgICA8dGg+U3RhdHVzPC90aD5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXNcIj5cclxuXHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaXRJZHg9aW5kZXg7XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInJvd1NlbGVjdD1pdElkeFwiIFtjbGFzcy5zZWxSb3ddPVwiaXRJZHg9PT1zZWxlY3RlZEl0ZW1JZHhcIlxyXG4gICAgICAgICAgICBbc2Nyb2xsSW50b1ZpZXdUb0JvdHRvbV09XCJpdElkeD09PXNlbGVjdGVkSXRlbUlkeFwiPlxyXG4gICAgICAgICAgPHRkPnt7aXRJZHh9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJwcm9tcHREZXNjcmlwdG9yXCI+e3tpdGVtLnByb21wdEFzU3RyaW5nfX08L3RkPlxyXG4gICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gICpuZ0lmPVwiaXRlbS5pdGVtRG9uZSgpXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwhLS08bWF0LWljb24gKm5nSWY9XCJsYXRlc3RSZWNvcmRpbmdBdmFpbChpdGVtKT09PWZhbHNlXCIgc3R5bGU9XCJmb250LXNpemU6MC42ZW07d2lkdGg6MC42ZW07aGVpZ2h0OjAuNmVtXCI+Y2xvdWRfZG93bmxvYWQ8L21hdC1pY29uPi0tPlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbiAgICBwYWRkaW5nOiAxMHB0O1xyXG4gICAgLypmbGV4OiAwLjEgMCAzMDBweDtcclxuICAgICAgbWluLXdpZHRoOiAzMDBweDsgKi9cclxuICAgIGZsZXg6IDAuMSAwIGNvbnRlbnQ7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIC8qIFdvcmthcm91bmQgZm9yIEZpcmVmb3hcclxuICAgIElmIHRoZSBwcm9ncmVzcyB0YWJsZSBnZXRzIGxvbmcgKHNjcmlwdCB3aXRoIG1hbnkgaXRlbXMpIEZGIGluY3JlYXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVyZmxvdyBwcm9ncmVzc0NvbnRhaW5lciBhbmRcclxuICAgIHRoZSB3aG9sZSBhcHAgZG9lcyBub3QgZml0IGludG8gdGhlIHBhZ2UgYW55bW9yZS4gVGhlIGFwcCBvdmVyZmxvd3MgYW5kIHNob3dzIGEgdmVydGljYWwgc2Nyb2xsYmFyIGZvciB0aGUgd2hvbGUgYXBwLlxyXG4gICAgU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjg2MzY4MzIvZmlyZWZveC1vdmVyZmxvdy15LW5vdC13b3JraW5nLXdpdGgtbmVzdGVkLWZsZXhib3hcclxuICAgICovXHJcbiAgICAvKiBtaW4taGVpZ2h0OjBweDsgKi9cclxuICAgIG1pbi1oZWlnaHQ6IDFweDtcclxuICB9YCxcclxuICAgICAgYHRhYmxlIHtcclxuICAgICAgbWluLWhlaWdodDogMXB4O1xyXG4gICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgICAgICAgLyogVGFibGVzIGRvIG5vdCBoYXZlIGEgbmF0dXJhbCBtaW4gc2l6ZSAqL1xyXG4gICAgICAgICAgLyptaW4td2lkdGg6IDMwMHB4OyAqL1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0YWJsZSwgdGgsIHRkIHtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmV5O1xyXG4gICAgICBwYWRkaW5nOiAwLjVlbTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgYCwgYFxyXG4gICAgICAuc2VsUm93IHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBsaWdodGJsdWU7XHJcbiAgICAgIH1cclxuICAgIGAsYC5wcm9tcHREZXNjcmlwdG9ye1xyXG5cclxuICAgICAgbWF4LXdpZHRoOiAyMDBweDtcclxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XHJcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PEl0ZW0+fHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtSWR4ID0gMDtcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KClcclxuICBzZXQgcm93U2VsZWN0KHJvd0lkeDpudW1iZXIpe1xyXG4gICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25TaG93RG9uZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNldCBjbGlja0RvbmUocm93SWR4Om51bWJlcil7XHJcbiAgICBpZih0aGlzLml0ZW1zICYmdGhpcy5pdGVtc1tyb3dJZHhdICYmIHRoaXMuaXRlbXNbcm93SWR4XS5yZWNzKSB7XHJcbiAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChyb3dJZHgpO1xyXG4gICAgICB0aGlzLm9uU2hvd0RvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uRG93bmxvYWREb25lQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgc2V0IGNsaWNrRG93bmxvYWREb25lKHJvd0lkeDpudW1iZXIpe1xyXG4gICAgaWYodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zW3Jvd0lkeF0gJiYgdGhpcy5pdGVtc1tyb3dJZHhdLnJlY3MpIHtcclxuICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgICAgIHRoaXMub25Eb3dubG9hZERvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGF0ZXN0UmVjb3JkaW5nQXZhaWwoaXRlbTpJdGVtKTpib29sZWFufG51bGx7XHJcbiAgICBsZXQgY2FjaGVkPW51bGw7XHJcbiAgICBpZihpdGVtICYmIGl0ZW0ucmVjcyl7XHJcbiAgICAgIGxldCByZWNzTGVuPWl0ZW0ucmVjcy5sZW5ndGg7XHJcbiAgICAgIGlmKHJlY3NMZW4+MCl7XHJcbiAgICAgICAgbGV0IHJmPWl0ZW0ucmVjc1tyZWNzTGVuLTFdO1xyXG4gICAgICAgIGlmKHJmICYmIHJmLnNlcnZlclBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgY2FjaGVkID0gKHJmLmF1ZGlvRGF0YUhvbGRlciAhPSBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9wcm9ncmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFBOzs7OztBQWdGcEUsTUFBTSxPQUFPLFFBQVE7SUE1RXJCO1FBNkVXLFVBQUssR0FBd0IsU0FBUyxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLG1CQUFjLEdBQVUsS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU16QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBUzlDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0F1QjdEO0lBckNDLElBQ0ksU0FBUyxDQUFDLE1BQWE7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUdELElBQ0ksU0FBUyxDQUFDLE1BQWE7UUFDekIsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFHRCxJQUNJLGlCQUFpQixDQUFDLE1BQWE7UUFDakMsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFTO1FBQzVCLElBQUksTUFBTSxHQUFDLElBQUksQ0FBQztRQUNoQixJQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDO1lBQ25CLElBQUksT0FBTyxHQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUcsT0FBTyxHQUFDLENBQUMsRUFBQztnQkFDWCxJQUFJLEVBQUUsR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBRyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRTtvQkFDM0IsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQztpQkFDdkM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7c0dBeENVLFFBQVE7MEZBQVIsUUFBUSw4V0F4RVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7NEZBNENVLFFBQVE7a0JBNUVwQixTQUFTOytCQUVFLGlCQUFpQixZQUVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDs4QkE2Q1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVILFNBQVM7c0JBRFosTUFBTTtnQkFLRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUgsU0FBUztzQkFEWixNQUFNO2dCQVFHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFSCxpQkFBaUI7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLXNwcnByb2dyZXNzJyxcclxuXHJcbiAgdGVtcGxhdGU6IGBcclxuXHJcbiAgICA8dGFibGUgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxyXG4gICAgICA8dGhlYWQ+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGg+IzwvdGg+PCEtLTx0aD5Db2RlPC90aD4tLT5cclxuICAgICAgICA8dGg+UHJvbXB0PC90aD5cclxuICAgICAgICA8dGg+U3RhdHVzPC90aD5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXNcIj5cclxuXHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaXRJZHg9aW5kZXg7XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInJvd1NlbGVjdD1pdElkeFwiIFtjbGFzcy5zZWxSb3ddPVwiaXRJZHg9PT1zZWxlY3RlZEl0ZW1JZHhcIlxyXG4gICAgICAgICAgICBbc2Nyb2xsSW50b1ZpZXdUb0JvdHRvbV09XCJpdElkeD09PXNlbGVjdGVkSXRlbUlkeFwiPlxyXG4gICAgICAgICAgPHRkPnt7aXRJZHh9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJwcm9tcHREZXNjcmlwdG9yXCI+e3tpdGVtLnByb21wdEFzU3RyaW5nfX08L3RkPlxyXG4gICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gICpuZ0lmPVwiaXRlbS5pdGVtRG9uZSgpXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwhLS08bWF0LWljb24gKm5nSWY9XCJsYXRlc3RSZWNvcmRpbmdBdmFpbChpdGVtKT09PWZhbHNlXCIgc3R5bGU9XCJmb250LXNpemU6MC42ZW07d2lkdGg6MC42ZW07aGVpZ2h0OjAuNmVtXCI+Y2xvdWRfZG93bmxvYWQ8L21hdC1pY29uPi0tPlxyXG5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbiAgICBwYWRkaW5nOiAxMHB0O1xyXG4gICAgLypmbGV4OiAwLjEgMCAzMDBweDtcclxuICAgICAgbWluLXdpZHRoOiAzMDBweDsgKi9cclxuICAgIGZsZXg6IDAuMSAwIGNvbnRlbnQ7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIC8qIFdvcmthcm91bmQgZm9yIEZpcmVmb3hcclxuICAgIElmIHRoZSBwcm9ncmVzcyB0YWJsZSBnZXRzIGxvbmcgKHNjcmlwdCB3aXRoIG1hbnkgaXRlbXMpIEZGIGluY3JlYXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVyZmxvdyBwcm9ncmVzc0NvbnRhaW5lciBhbmRcclxuICAgIHRoZSB3aG9sZSBhcHAgZG9lcyBub3QgZml0IGludG8gdGhlIHBhZ2UgYW55bW9yZS4gVGhlIGFwcCBvdmVyZmxvd3MgYW5kIHNob3dzIGEgdmVydGljYWwgc2Nyb2xsYmFyIGZvciB0aGUgd2hvbGUgYXBwLlxyXG4gICAgU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjg2MzY4MzIvZmlyZWZveC1vdmVyZmxvdy15LW5vdC13b3JraW5nLXdpdGgtbmVzdGVkLWZsZXhib3hcclxuICAgICovXHJcbiAgICAvKiBtaW4taGVpZ2h0OjBweDsgKi9cclxuICAgIG1pbi1oZWlnaHQ6IDFweDtcclxuICB9YCxcclxuICAgICAgYHRhYmxlIHtcclxuICAgICAgbWluLWhlaWdodDogMXB4O1xyXG4gICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgICAgICAgLyogVGFibGVzIGRvIG5vdCBoYXZlIGEgbmF0dXJhbCBtaW4gc2l6ZSAqL1xyXG4gICAgICAgICAgLyptaW4td2lkdGg6IDMwMHB4OyAqL1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0YWJsZSwgdGgsIHRkIHtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmV5O1xyXG4gICAgICBwYWRkaW5nOiAwLjVlbTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgYCwgYFxyXG4gICAgICAuc2VsUm93IHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBsaWdodGJsdWU7XHJcbiAgICAgIH1cclxuICAgIGAsYC5wcm9tcHREZXNjcmlwdG9ye1xyXG5cclxuICAgICAgbWF4LXdpZHRoOiAyMDBweDtcclxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XHJcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PEl0ZW0+fHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtSWR4ID0gMDtcclxuICBASW5wdXQoKSBlbmFibGVEb3dubG9hZDogYm9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KClcclxuICBzZXQgcm93U2VsZWN0KHJvd0lkeDpudW1iZXIpe1xyXG4gICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25TaG93RG9uZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNldCBjbGlja0RvbmUocm93SWR4Om51bWJlcil7XHJcbiAgICBpZih0aGlzLml0ZW1zICYmdGhpcy5pdGVtc1tyb3dJZHhdICYmIHRoaXMuaXRlbXNbcm93SWR4XS5yZWNzKSB7XHJcbiAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChyb3dJZHgpO1xyXG4gICAgICB0aGlzLm9uU2hvd0RvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uRG93bmxvYWREb25lQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgc2V0IGNsaWNrRG93bmxvYWREb25lKHJvd0lkeDpudW1iZXIpe1xyXG4gICAgaWYodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zW3Jvd0lkeF0gJiYgdGhpcy5pdGVtc1tyb3dJZHhdLnJlY3MpIHtcclxuICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHJvd0lkeCk7XHJcbiAgICAgIHRoaXMub25Eb3dubG9hZERvbmVBY3Rpb24uZW1pdChyb3dJZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGF0ZXN0UmVjb3JkaW5nQXZhaWwoaXRlbTpJdGVtKTpib29sZWFufG51bGx7XHJcbiAgICBsZXQgY2FjaGVkPW51bGw7XHJcbiAgICBpZihpdGVtICYmIGl0ZW0ucmVjcyl7XHJcbiAgICAgIGxldCByZWNzTGVuPWl0ZW0ucmVjcy5sZW5ndGg7XHJcbiAgICAgIGlmKHJlY3NMZW4+MCl7XHJcbiAgICAgICAgbGV0IHJmPWl0ZW0ucmVjc1tyZWNzTGVuLTFdO1xyXG4gICAgICAgIGlmKHJmICYmIHJmLnNlcnZlclBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgY2FjaGVkID0gKHJmLmF1ZGlvRGF0YUhvbGRlciAhPSBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=