speechrecorderng 3.9.7 → 3.9.9
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.
- package/README.md +478 -12
- package/esm2022/lib/action/action.mjs +1 -1
- package/esm2022/lib/audio/array_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/array_audio_buffer_input_stream.mjs +1 -1
- package/esm2022/lib/audio/audio_data_holder.mjs +1 -1
- package/esm2022/lib/audio/audio_display.mjs +4 -4
- package/esm2022/lib/audio/audio_player.mjs +4 -4
- package/esm2022/lib/audio/capture/capture.mjs +1 -1
- package/esm2022/lib/audio/context.mjs +1 -1
- package/esm2022/lib/audio/dsp/level_measure.mjs +5 -4
- package/esm2022/lib/audio/impl/wavreader.mjs +1 -1
- package/esm2022/lib/audio/impl/wavwriter.mjs +1 -1
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/io/stream.mjs +1 -1
- package/esm2022/lib/audio/net_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/persistor.mjs +1 -1
- package/esm2022/lib/audio/playback/array_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/audio_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +1 -1
- package/esm2022/lib/audio/playback/inddb_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/net_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/player.mjs +1 -1
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
- package/esm2022/lib/audio/ui/audio_display_control.mjs +4 -4
- package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
- package/esm2022/lib/audio/ui/audiosignal.mjs +4 -4
- package/esm2022/lib/audio/ui/container.mjs +4 -4
- package/esm2022/lib/audio/ui/livelevel.mjs +4 -4
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +3 -3
- package/esm2022/lib/audio/ui/sonagram.mjs +4 -4
- package/esm2022/lib/db/inddb.mjs +4 -4
- package/esm2022/lib/dsp/utils.mjs +1 -1
- package/esm2022/lib/io/BinaryReader.mjs +1 -1
- package/esm2022/lib/io/BinaryWriter.mjs +1 -1
- package/esm2022/lib/io/stream.mjs +1 -1
- package/esm2022/lib/math/complex.mjs +1 -1
- package/esm2022/lib/math/dft.mjs +1 -1
- package/esm2022/lib/net/uploader.mjs +1 -1
- package/esm2022/lib/recorder_component.mjs +1 -1
- package/esm2022/lib/speechrecorder/project/project.mjs +1 -1
- package/esm2022/lib/speechrecorder/project/project.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/recording.mjs +1 -1
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +1 -1
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/script/script.mjs +1 -1
- package/esm2022/lib/speechrecorder/script/script.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +7 -7
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +22 -22
- package/esm2022/lib/speechrecorder/session/item.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/progress.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/prompting.mjs +16 -16
- package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/recording_list.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/session.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/warning_bar.mjs +4 -4
- package/esm2022/lib/speechrecorder/spruploader.mjs +4 -4
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
- package/esm2022/lib/speechrecorderng.component.mjs +4 -4
- package/esm2022/lib/speechrecorderng.module.mjs +9 -13
- package/esm2022/lib/spr.config.mjs +3 -3
- package/esm2022/lib/spr.module.version.mjs +2 -2
- package/esm2022/lib/ui/canvas_layer_comp.mjs +4 -4
- package/esm2022/lib/ui/intersection-observer.directive.mjs +4 -4
- package/esm2022/lib/ui/message_dialog.mjs +3 -3
- package/esm2022/lib/ui/recordingitem_display.mjs +7 -7
- package/esm2022/lib/ui/responsive_component.mjs +3 -3
- package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +4 -4
- package/esm2022/lib/utils/ua-parser.mjs +1 -1
- package/esm2022/lib/utils/utils.mjs +1 -1
- package/esm2022/lib/utils/wake_lock.mjs +1 -1
- package/fesm2022/speechrecorderng.mjs +171 -174
- package/fesm2022/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorderng.module.d.ts +11 -12
- package/lib/spr.module.version.d.ts +1 -1
- package/package.json +13 -13
|
@@ -363,8 +363,8 @@ export class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
|
|
|
363
363
|
this.as.playFramePosition = playFramePosition;
|
|
364
364
|
this.so.playFramePosition = playFramePosition;
|
|
365
365
|
}
|
|
366
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
367
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioClipUIContainer, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: AudioClipUIContainer, selector: "app-audio", inputs: { audioData: "audioData", audioClip: "audioClip" }, outputs: { selectionEventEmitter: "selectionEventEmitter" }, host: { listeners: { "window:resize": "onResize($event)", "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["divider"], descendants: true, static: true }, { propertyName: "ceRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "as", first: true, predicate: AudioSignal, descendants: true, static: true }, { propertyName: "so", first: true, predicate: Sonagram, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
368
368
|
<div #virtualCanvas>
|
|
369
369
|
<canvas #divider (mousedown)="mousedown($event)" (mouseover)="mouseover($event)"
|
|
370
370
|
(mouseleave)="mouseleave($event)" height="10"></canvas>
|
|
@@ -373,7 +373,7 @@ export class AudioClipUIContainer extends BasicAudioCanvasLayerComponent {
|
|
|
373
373
|
</div>
|
|
374
374
|
`, isInline: true, styles: ["div{margin:0;padding:0;top:0;left:0;width:100%;height:100%;position:relative;box-sizing:border-box;transform:none;overflow:hidden}\n", "canvas{top:0;left:0;width:0;height:0;cursor:ns-resize;position:absolute;z-index:1;transform:none}\n", "audio-signal{top:0;left:0;position:absolute;z-index:1;transform:none}\n", "audio-sonagram{top:0;left:0;position:absolute;z-index:1;transform:none}\n"], dependencies: [{ kind: "component", type: i1.AudioSignal, selector: "audio-signal" }, { kind: "component", type: i2.Sonagram, selector: "audio-sonagram" }] }); }
|
|
375
375
|
}
|
|
376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioClipUIContainer, decorators: [{
|
|
377
377
|
type: Component,
|
|
378
378
|
args: [{ selector: 'app-audio', template: `
|
|
379
379
|
<div #virtualCanvas>
|
|
@@ -411,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
411
411
|
}], audioClip: [{
|
|
412
412
|
type: Input
|
|
413
413
|
}] } });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ3NCLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFDN0UsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sRUFBUyxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFFdEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFckUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFHekU7Ozs7OztHQU1HO0FBRUgsaUNBQWlDO0FBQ2pDLGdDQUFnQztBQUNoQywrQkFBK0I7QUFDL0IsSUFBSTtBQUNKLEVBQUU7QUFDRix5Q0FBeUM7QUFDekMsOEJBQThCO0FBQzlCLDRDQUE0QztBQUM1Qyx3REFBd0Q7QUFDeEQseURBQXlEO0FBQ3pELG9FQUFvRTtBQUNwRSxJQUFJO0FBQ0osRUFBRTtBQUNGLDZDQUE2QztBQUM3QywwRUFBMEU7QUFDMUUsSUFBSTtBQUNKLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsNERBQTREO0FBQzVELEtBQUs7QUFFTCw0QkFBNEI7QUFDNUIsZ0NBQWdDO0FBQ2hDLG1EQUFtRDtBQUNuRCx1RUFBdUU7QUFDdkUsbUNBQW1DO0FBQ25DLDBCQUEwQjtBQUMxQixJQUFJO0FBRUo7Ozs7Ozs7R0FPRztBQStDSCxNQUFNLE9BQU8sb0JBQXFC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QVEsQ0FBQztnQkFZNUMsV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXNOMUMsU0FBUztzQkFEWixLQUFLO2dCQWVGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7QXVkaW9TaWduYWx9IGZyb20gJy4vYXVkaW9zaWduYWwnXHJcbmltcG9ydCB7U29uYWdyYW19IGZyb20gJy4vc29uYWdyYW0nXHJcbmltcG9ydCB7TWFya2VyLCBQb2ludH0gZnJvbSAnLi9jb21tb24nXHJcblxyXG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQb3NpdGlvbixEaW1lbnNpb24sIFJlY3RhbmdsZX0gZnJvbSBcIi4uLy4uL21hdGgvMmQvZ2VvbWV0cnlcIjtcclxuaW1wb3J0IHtBdWRpb0NsaXAsU2VsZWN0aW9ufSBmcm9tIFwiLi4vcGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7QmFzaWNBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50fSBmcm9tIFwiLi9hdWRpb19jYW52YXNfbGF5ZXJfY29tcFwiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG4vKlxyXG4gIFJlc2l6ZU9ic2VydmVyIG5vdCB5ZXQgYXZhaWxhYmxlIGluIG9mZmljaWFsIFR5cGVzY3JpcHQgZGVjbGFyYXRpb25cclxuICBDcnJlYXRlZCBkZWNsYXJhdGlvbiBmcm9tIElETCB1bnRpbCBpdHMgYXZhaWxhYmxlLlxyXG4gIFNlZSBzcGVjczpcclxuICBodHRwczovL3d3dy53My5vcmcvVFIvcmVzaXplLW9ic2VydmVyXHJcblxyXG4gKi9cclxuXHJcbi8vIGludGVyZmFjZSBSZXNpemVPYnNlcnZlclNpemUge1xyXG4vLyAgIHJlYWRvbmx5IGlubGluZVNpemU6bnVtYmVyO1xyXG4vLyAgIHJlYWRvbmx5IGJsb2NrU2l6ZTpudW1iZXI7XHJcbi8vIH1cclxuLy9cclxuLy8gZGVjbGFyZSBpbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJFbnRyeXtcclxuLy8gICByZWFkb25seSB0YXJnZXQ6IEVsZW1lbnQ7XHJcbi8vICAgcmVhZG9ubHkgY29udGVudFJlY3Q6IERPTVJlY3RSZWFkT25seSA7XHJcbi8vICAgcmVhZG9ubHkgYm9yZGVyQm94U2l6ZTogQXJyYXk8UmVzaXplT2JzZXJ2ZXJTaXplPiA7XHJcbi8vICAgcmVhZG9ubHkgY29udGVudEJveFNpemU6IEFycmF5PFJlc2l6ZU9ic2VydmVyU2l6ZT4gO1xyXG4vLyAgIHJlYWRvbmx5IGRldmljZVBpeGVsQ29udGVudEJveFNpemU6IEFycmF5PFJlc2l6ZU9ic2VydmVyU2l6ZT4gO1xyXG4vLyB9XHJcbi8vXHJcbi8vIGRlY2xhcmUgaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2sge1xyXG4vLyAgIChlbnRyaWVzOiBBcnJheTxSZXNpemVPYnNlcnZlckVudHJ5Piwgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyKTp2b2lkO1xyXG4vLyB9XHJcbi8vXHJcbi8vIGRlY2xhcmUgZW51bSBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMge1xyXG4vLyAgIFwiYm9yZGVyLWJveFwiLCBcImNvbnRlbnQtYm94XCIsIFwiZGV2aWNlLXBpeGVsLWNvbnRlbnQtYm94XCJcclxuLy8gfTtcclxuXHJcbi8vIC8vIERlY2xhcmUgUmVzaXplb2JzZXJ2ZXJcclxuLy8gZGVjbGFyZSBjbGFzcyBSZXNpemVPYnNlcnZlcntcclxuLy8gICBjb25zdHJ1Y3RvcihjYWxsYmFjazogUmVzaXplT2JzZXJ2ZXJDYWxsYmFjayk7XHJcbi8vICAgb2JzZXJ2ZTogKGVsOkVsZW1lbnQsb3B0czogUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zIHwgbnVsbCk9PnZvaWQ7XHJcbi8vICAgdW5vYnNlcnZlOiAoZWw6RWxlbWVudCk9PnZvaWQ7XHJcbi8vICAgZGlzY29ubmVjdDogKCk9PnZvaWQ7XHJcbi8vIH1cclxuXHJcbi8qXHJcbiAqIENvbnRhaW5lciBjb21wb25lbnQgZm9yIGF1ZGlvIGRpc3BsYXkuXHJcbiAqIFRoZSBkaXNwbGF5IGVsZW1lbnRzIGFyZSBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgY2FudmFzLiBUaGUgdmlydHVhbCBjYW52YXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaGF2ZSBoaWdoIHpvb20gZmFjdG9ycyB3aXRoIHZlcnkgd2lkZSB2aXJ0dWFsIGF1ZGlvIGRpc3BsYXlzLlxyXG4gKiBPbmx5IHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIHZpcnR1YWwgY2FudmFzIGlzIGltcGxlbWVudGVkIGFzIGEgYnJvd3NlciBjYW52YXMgYW5kIHRoZXJlZm9yZSBjb25zdW1pbmcgbWVtb3J5LlxyXG4gKiBUaGUgdmlzaWJsZSBwYXJ0IGhhcyB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgdmlld3BvcnQgb2YgdGhlIHNjcm9sbCBwYW5lIHBhcmVudC5cclxuICogVGhlIHZpcnR1YWwgY2FudmFzIGl0c2VsZiBpcyBpbXBsZW1lbnRlZCBhcyBhbiBIVE1MIGRpdiBlbGVtZW50LlxyXG4gKiBUaGUgbGF5b3V0IG9mIHRoZSBjb21wb25lbnQgaXMgdXBkYXRlZCBvbiByZXNpemUgb2YgdGhlIHBhcmVudCBvciBjaGFuZ2VzIG9mIHRoZSB6b29tIGZhY3Rvci5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2FwcC1hdWRpbycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgI3ZpcnR1YWxDYW52YXM+XHJcbiAgICA8Y2FudmFzICNkaXZpZGVyIChtb3VzZWRvd24pPVwibW91c2Vkb3duKCRldmVudClcIiAobW91c2VvdmVyKT1cIm1vdXNlb3ZlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VsZWF2ZSgkZXZlbnQpXCIgaGVpZ2h0PVwiMTBcIj48L2NhbnZhcz5cclxuICAgIDxhdWRpby1zaWduYWwgW3BvaW50ZXJQb3NpdGlvbl09XCJwb2ludGVyXCIgW3NlbGVjdGluZ109XCJzZWxlY3RpbmdcIiBbc2VsZWN0aW9uXT1cInNlbGVjdGlvblwiIChwb2ludGVyUG9zaXRpb25FdmVudEVtaXR0ZXIpPVwicG9pbnRlclBvc2l0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgKHNlbGVjdGluZ0V2ZW50RW1pdHRlcik9XCJzZWxlY3RpbmdDaGFuZ2VkKCRldmVudClcIiAoc2VsZWN0ZWRFdmVudEVtaXR0ZXIpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+PC9hdWRpby1zaWduYWw+XHJcbiAgICA8YXVkaW8tc29uYWdyYW0gW3BvaW50ZXJQb3NpdGlvbl09XCJwb2ludGVyXCIgW3NlbGVjdGluZ109XCJzZWxlY3RpbmdcIiBbc2VsZWN0aW9uXT1cInNlbGVjdGlvblwiIChwb2ludGVyUG9zaXRpb25FdmVudEVtaXR0ZXIpPVwicG9pbnRlclBvc2l0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgKHNlbGVjdGluZ0V2ZW50RW1pdHRlcik9XCJzZWxlY3RpbmdDaGFuZ2VkKCRldmVudClcIiAoc2VsZWN0ZWRFdmVudEVtaXR0ZXIpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+PC9hdWRpby1zb25hZ3JhbT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYGRpdiB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBUT0RPIGNvbnRhaW5lciBkaXYgcG9zaXRpb24gbXVzdCBub3QgYmUgJ3N0YXRpYycgKGRlZmF1bHQpIHRvIGFjdCBhcyByZWZlcmVuY2UgZm9yIHRoZSBjYW52YXNlcyAqL1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfWAsIGBjYW52YXN7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDA7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfWAsIGBhdWRpby1zaWduYWwge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfWAsIGBhdWRpby1zb25hZ3JhbSB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpb0NsaXBVSUNvbnRhaW5lciBleHRlbmRzIEJhc2ljQXVkaW9DYW52YXNMYXllckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlclZpZXdJbml0e1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBESVZJREVSX1BJWEVMX1NJWkUgPSAxMDtcclxuXHJcbiAgcGFyZW50RTogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIC8vIERpdmlkZXIgY2FudmFzXHJcbiAgQFZpZXdDaGlsZCgnZGl2aWRlcicsIHsgc3RhdGljOiB0cnVlIH0pIGNhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgZGMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuXHJcbiAgLy8gVmlydHVhbCBjb250YWluZXJcclxuICBAVmlld0NoaWxkKCd2aXJ0dWFsQ2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgY2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIGNlITogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoQXVkaW9TaWduYWwsIHsgc3RhdGljOiB0cnVlIH0pIGFzITogQXVkaW9TaWduYWw7XHJcbiAgQFZpZXdDaGlsZChTb25hZ3JhbSwgeyBzdGF0aWM6IHRydWUgfSkgc28hOiBTb25hZ3JhbTtcclxuXHJcbiAgcHJpdmF0ZSBfYXVkaW9DbGlwOkF1ZGlvQ2xpcCB8IG51bGw9bnVsbDtcclxuICBwb2ludGVyOiBNYXJrZXJ8bnVsbD1udWxsO1xyXG4gIHNlbGVjdGluZzogU2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICBzZWxlY3Rpb246IFNlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uPigpO1xyXG4gIHByaXZhdGUgX3BsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgZHJhZ1N0YXJ0TW91c2VZOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGRyYWdTdGFydFk6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGl2aWRlclBvc2l0aW9uID0gMC41O1xyXG5cclxuICB1c2VyQWN0aW9uPWZhbHNlO1xyXG5cclxuICBwcml2YXRlIF94Wm9vbTogbnVtYmVyIHwgbnVsbCA9IG51bGw7IC8vIHBpeGVscyBwZXIgc2Vjb25kXHJcblxyXG4gIGdldCB4Wm9vbSgpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl94Wm9vbTtcclxuICB9XHJcblxyXG4gIHNldCB4Wm9vbSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xyXG4gICAgdGhpcy51c2VyQWN0aW9uPXRydWU7XHJcbiAgICB0aGlzLl94Wm9vbSA9IHZhbHVlO1xyXG4gICAgdGhpcy5sYXlvdXQoKVxyXG4gICAgdGhpcy51c2VyQWN0aW9uPWZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8gaWYgdHJ1ZSB0aGUgY29tcGxldGUgYXVkaW8gZmlsZSBpcyBzaG93biwgdGhlIGRpc3BsYXkgZml0cyB0byB0aGUgdmlzaWJsZSBwYW5lbCwgdGhlIHgtem9vbSBmYWN0b3IgaXMgdmFyaWFibGUsIHRoaXMgaXMgdGhlIGRlZmF1bHRcclxuICBwcml2YXRlIF9maXhGaXRUb1BhbmVsID0gdHJ1ZTtcclxuXHJcbiAgc2V0IGZpeEZpdFRvUGFuZWwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ZpeEZpdFRvUGFuZWwgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAvLyB3ZSBkb24ndCBuZWVkICBjbGlwIGJvdW5kc1xyXG4gICAgICB0aGlzLmJvdW5kcz1udWxsO1xyXG4gICAgICB0aGlzLl94Wm9vbSA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBob2xkIGN1cnJlbnQgem9vbSB2YWx1ZVxyXG4gICAgICAvL3RoaXMuX3hab29tPXRoaXMuY2Uub2Zmc2V0V2lkdGgvdGhpcy5fYXVkaW9EYXRhLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXlvdXQoKVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKClcclxuICAgIHRoaXMucGFyZW50RSA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2UgPSB0aGlzLmNlUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmRjID0gdGhpcy5jYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICBjb25zdCBoZWlnaHRMaXN0ZW5lciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtcnM6IEFycmF5PE11dGF0aW9uUmVjb3JkPiwgbW86IE11dGF0aW9uT2JzZXJ2ZXIpID0+IHtcclxuXHJcbiAgICAgIGxldCBsYXlvdXQ9ZmFsc2U7XHJcbiAgICAgIG1ycy5mb3JFYWNoKChtcjogTXV0YXRpb25SZWNvcmQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudXNlckFjdGlvbiAmJiAnYXR0cmlidXRlcycgPT09IG1yLnR5cGUgJiYgKCdjbGFzcycgPT09IG1yLmF0dHJpYnV0ZU5hbWUgfHwgJ3N0eWxlJyA9PT0gbXIuYXR0cmlidXRlTmFtZSkpIHtcclxuICAgICAgICAgIGxheW91dD10cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmKGxheW91dCl7XHJcbiAgICAgICAgLy8gcmUtbGF5b3V0IHJlcXVpcmVkXHJcbiAgICAgICAgdGhpcy5sYXlvdXQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBoZWlnaHRMaXN0ZW5lci5vYnNlcnZlKHRoaXMuY2UsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWV9KTtcclxuICAgIGhlaWdodExpc3RlbmVyLm9ic2VydmUodGhpcy5kYywge2F0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzLG9icykgPT4ge1xyXG4gICAgICAvL2NvbnNvbGUubG9nKFwiUmVzaXplIG9ic2VydmVkOlwiKTtcclxuICAgICAgZW50cmllcy5mb3JFYWNoKChlKT0+e1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coZS5jb250ZW50UmVjdC53aWR0aCtcInhcIitlLmNvbnRlbnRSZWN0LmhlaWdodCk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXQoKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5jZSk7XHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmxheW91dCgpO1xyXG4gIH1cclxuXHJcbiAgbW91c2VvdmVyKG1lOiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmRpdmlkZXJDdXJzb3JQb3NpdGlvbihtZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBtb3VzZWxlYXZlKG1lOiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmRpdmlkZXJDdXJzb3JQb3NpdGlvbihtZSwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgbW91c2Vkb3duKG1lOiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmRyYWdTdGFydE1vdXNlWSA9IG1lLmNsaWVudFk7XHJcbiAgICB0aGlzLmRyYWdTdGFydFkgPSB0aGlzLmRjLm9mZnNldFRvcDtcclxuICAgIHRoaXMuZHJhZ1N0YXJ0TW91c2VZID0gbWUuY2xpZW50WTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKVxyXG4gIG9uTW91c2V1cChtZTogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZHJhZ1N0YXJ0WSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMudXNlckFjdGlvbj10cnVlO1xyXG4gICAgICB0aGlzLmRpdmlkZXJEcmFnKG1lKTtcclxuICAgICAgdGhpcy5sYXlvdXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmRyYWdTdGFydFkgPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJBY3Rpb249ZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxyXG4gIG9uTW91c2Vtb3ZlKG1lOiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kcmFnU3RhcnRZICE9IG51bGwpIHtcclxuICAgICAgdGhpcy51c2VyQWN0aW9uPXRydWU7XHJcbiAgICAgIHRoaXMuZGl2aWRlckRyYWcobWUpO1xyXG4gICAgICB0aGlzLmxheW91dFNjYWxlZCgpO1xyXG4gICAgICB0aGlzLnVzZXJBY3Rpb249dHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvaW50ZXJQb3NpdGlvbkNoYW5nZWQocHA6TWFya2VyKXtcclxuICAgIHRoaXMucG9pbnRlcj1wcFxyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW5nQ2hhbmdlZChzOlNlbGVjdGlvbnwgbnVsbCl7XHJcbiAgICB0aGlzLnNlbGVjdGluZz1zXHJcbiAgfVxyXG5cclxuICBzZWxlY3Rpb25DaGFuZ2VkKHM6U2VsZWN0aW9uKXtcclxuICAgIHRoaXMuc2VsZWN0aW9uPXNcclxuICAgIGlmKHRoaXMuX2F1ZGlvQ2xpcCl7XHJcbiAgICAgIHRoaXMuX2F1ZGlvQ2xpcC5zZWxlY3Rpb249c1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3Rpb25FdmVudEVtaXR0ZXIuZW1pdCh0aGlzLnNlbGVjdGlvbilcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FudmFzTW91c2VQb3MoYzogSFRNTENhbnZhc0VsZW1lbnQsIGU6IE1vdXNlRXZlbnQpOiBQb2ludCB7XHJcbiAgICBjb25zdCBjciA9IGMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB4ID0gZS54IC0gY3IubGVmdDtcclxuICAgIGNvbnN0IHkgPSBlLnkgLSBjci50b3A7XHJcbiAgICByZXR1cm4gbmV3IFBvaW50KHgseSk7XHJcbiAgfVxyXG5cclxuICBkaXZpZGVyQ3Vyc29yUG9zaXRpb24oZTogTW91c2VFdmVudCwgc2hvdzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZGMpIHtcclxuICAgICAgdGhpcy5jYW52YXNNb3VzZVBvcyh0aGlzLmRjLCBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpdmlkZXJEcmFnKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRjICYmIHRoaXMuZHJhZ1N0YXJ0TW91c2VZICYmIHRoaXMuZHJhZ1N0YXJ0WSkge1xyXG5cclxuICAgICAgY29uc3QgZHJhZ09mZnNldCA9IGUuY2xpZW50WSAtIHRoaXMuZHJhZ1N0YXJ0TW91c2VZO1xyXG4gICAgICBjb25zdCBjZUhlaWdodCA9IHRoaXMuY2Uub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgbGV0IG5ld1RvcCA9ICh0aGlzLmRyYWdTdGFydFkgKyBkcmFnT2Zmc2V0KTtcclxuICAgICAgaWYgKG5ld1RvcCA8IDApIHtcclxuICAgICAgICBuZXdUb3AgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdUb3AgPiBjZUhlaWdodCAtIEF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRSkge1xyXG4gICAgICAgIG5ld1RvcCA9IGNlSGVpZ2h0IC0gQXVkaW9DbGlwVUlDb250YWluZXIuRElWSURFUl9QSVhFTF9TSVpFO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGMuc3R5bGUudG9wID0gbmV3VG9wLnRvU3RyaW5nKCkgKyAncHgnO1xyXG4gICAgICB0aGlzLmRpdmlkZXJQb3NpdGlvbiA9ICh0aGlzLmRjLm9mZnNldFRvcCArIEF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRSAvIDIpIC8gY2VIZWlnaHQ7XHJcbiAgICAgIGlmICh0aGlzLmRpdmlkZXJQb3NpdGlvbiA+IDEuMCkge1xyXG4gICAgICAgIHRoaXMuZGl2aWRlclBvc2l0aW9uID0gMS4wO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRpdmlkZXJQb3NpdGlvbiA8IDAuMCkge1xyXG4gICAgICAgIHRoaXMuZGl2aWRlclBvc2l0aW9uID0gMC4wO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJhd0RpdmlkZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkcmF3RGl2aWRlcigpIHtcclxuICAgIGNvbnN0IHcgPSB0aGlzLmRjLndpZHRoO1xyXG4gICAgY29uc3QgaCA9IHRoaXMuZGMuaGVpZ2h0O1xyXG4gICAgY29uc3QgZyA9IHRoaXMuZGMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGlmIChnICYmIHc+MTAgJiYgaD49MSkge1xyXG4gICAgICBnLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XHJcbiAgICAgIGcuZmlsbFJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgIGcuZmlsbFN0eWxlID0gJ2JsYWNrJztcclxuICAgICAgZy5maWxsUmVjdCg1LCA1LCB3IC0gMTAsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xpcEJvdW5kcyhjbGlwQm91bmRzOiBSZWN0YW5nbGUpIHtcclxuICAgIHRoaXMuYm91bmRzID0gY2xpcEJvdW5kcztcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50WFpvb20oKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBsZXQgeHogPSB0aGlzLl94Wm9vbTtcclxuICAgIGlmICh4ej09bnVsbCAmJiB0aGlzLl9hdWRpb0RhdGFIb2xkZXIpIHtcclxuICAgICAgbGV0IG93ID0gdGhpcy5jZS5vZmZzZXRXaWR0aDtcclxuICAgICAgaWYgKG93IDwgMSkge1xyXG4gICAgICAgIC8vIGF0IGxlYXN0IG9uZSBwaXhlbCB3aWR0aCB0byBhdm9pZCB4LXpvb20gemVybyB2YWx1ZXNcclxuICAgICAgICBvdyA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgeHogPSBvdyAvIHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5kdXJhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiB4ejtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xheW91dChjbGVhcjogYm9vbGVhbiwgcmVkcmF3OiBib29sZWFuKSB7XHJcbiAgICBsZXQgY2VCY3IgPSB0aGlzLmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGNlQmNySW50VyA9IE1hdGguZmxvb3IoY2VCY3Iud2lkdGgpO1xyXG4gICAgY29uc3QgY2VCY3JJbnRIID0gTWF0aC5mbG9vcihjZUJjci5oZWlnaHQpO1xyXG5cclxuICAgIC8vIGhlaWdodCBhdmFpbGFibGUgZm9yIHBsdWdpbnMgKGF1ZGlvc2lnbmFsIGFuZCBzb25hZ3JhbSlcclxuICAgIGxldCBwc0ggPSBjZUJjckludEggLSBBdWRpb0NsaXBVSUNvbnRhaW5lci5ESVZJREVSX1BJWEVMX1NJWkU7XHJcbiAgICBpZiAocHNIIDwgMCkge1xyXG4gICAgICBwc0ggPSAwO1xyXG4gICAgfVxyXG4gICAgLy8gYXVkaW8gc2lnbmFsIGhlaWdodFxyXG4gICAgY29uc3QgYXNIID0gTWF0aC5yb3VuZChwc0ggKiB0aGlzLmRpdmlkZXJQb3NpdGlvbik7XHJcblxyXG4gICAgLy8gc29uYWdyYW0gaGVpZ2h0IChyZXN0OiBhdmFpbGFibGUgaGVpZ2h0IG1pbnVzIGRpdmlkZXIgaGVpZ2h0IG1pbnVzIGF1ZGlvc2lnbmFsIGhlaWdodClcclxuICAgIGxldCBzb0ggPSBjZUJjckludEggLSBBdWRpb0NsaXBVSUNvbnRhaW5lci5ESVZJREVSX1BJWEVMX1NJWkUgLSBhc0g7XHJcbiAgICBpZiAoc29IIDwgMCkge1xyXG4gICAgICBzb0ggPSAwO1xyXG4gICAgfVxyXG5cclxuICAvLyBzb25hZ3JhbSB0b3AgcG9zaXRpb25cclxuICAgIGNvbnN0IHNvVG9wID0gYXNIICsgQXVkaW9DbGlwVUlDb250YWluZXIuRElWSURFUl9QSVhFTF9TSVpFO1xyXG5cclxuICAgIC8vIFZpc2libGUgYm91bmRzXHJcbiAgICAvLyBsZWZ0IHBvc2l0aW9uXHJcbiAgICBsZXQgdmJMZWZ0ID0gMDtcclxuICAgIC8vIHdpZHRoXHJcbiAgICBsZXQgdmJXaWR0aCA9IGNlQmNySW50VztcclxuICAgIGlmICghdGhpcy5fZml4Rml0VG9QYW5lbCAmJiB0aGlzLmJvdW5kcykge1xyXG4gICAgICB2YkxlZnQgPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLnBvc2l0aW9uLmxlZnQpO1xyXG4gICAgICB2YldpZHRoID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERpdmlkZXJcclxuICAgIC8vIGxlZnQgcG9zaXRpb25cclxuICAgIGxldCB2YkxlZnRTdHlsID0gdmJMZWZ0ICsgJ3B4JztcclxuICAgIGlmICh0aGlzLmRjLnN0eWxlLmxlZnQgIT0gdmJMZWZ0U3R5bCkge1xyXG4gICAgICB0aGlzLmRjLnN0eWxlLmxlZnQgPSB2YkxlZnRTdHlsO1xyXG4gICAgfVxyXG4gICAgLy8gdG9wIHBvc2l0aW9uXHJcbiAgICAvL2NvbnN0IGRUb3AgPSBhc0g7XHJcbiAgICBjb25zdCBkVG9wU3RyID0gYXNIICsgJ3B4JztcclxuICAgIGlmICh0aGlzLmRjLnN0eWxlLnRvcCAhPSBkVG9wU3RyKSB7XHJcbiAgICAgIHRoaXMuZGMuc3R5bGUudG9wID0gZFRvcFN0cjtcclxuICAgIH1cclxuICAgIC8vIHdpZHRoXHJcbiAgICBsZXQgdmJXaWR0aFN0eWxlID0gdmJXaWR0aCArICdweCc7XHJcbiAgICBpZiAodGhpcy5kYy5zdHlsZS53aWR0aCAhPSB2YldpZHRoU3R5bGUpIHtcclxuICAgICAgdGhpcy5kYy5zdHlsZS53aWR0aCA9IHZiV2lkdGhTdHlsZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRjLndpZHRoICE9IHZiV2lkdGgpIHtcclxuICAgICAgdGhpcy5kYy53aWR0aCA9IHZiV2lkdGg7XHJcbiAgICB9XHJcbiAgICAvLyBoZWlnaHRcclxuICAgIGlmKHRoaXMuZGMuaGVpZ2h0IT1BdWRpb0NsaXBVSUNvbnRhaW5lci5ESVZJREVSX1BJWEVMX1NJWkUpIHtcclxuICAgICAgdGhpcy5kYy5oZWlnaHQgPSBBdWRpb0NsaXBVSUNvbnRhaW5lci5ESVZJREVSX1BJWEVMX1NJWkU7XHJcblxyXG4gICAgfVxyXG4gICAgbGV0IGRpdlBpeGVsU2l6ZVN0eWxlPUF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRS50b1N0cmluZygpICsgJ3B4JztcclxuICAgIGlmKHRoaXMuZGMuc3R5bGUuaGVpZ2h0IT1kaXZQaXhlbFNpemVTdHlsZSkge1xyXG4gICAgICB0aGlzLmRjLnN0eWxlLmhlaWdodCA9IGRpdlBpeGVsU2l6ZVN0eWxlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJhd0RpdmlkZXIoKTtcclxuXHJcblxyXG4gICAgLy8gVmlydHVhbCBkaW1lbnNpb24sIG9ubHkgd2lkdGggaXMgdXNlZFxyXG4gICAgbGV0IHZpcnR1YWxEaW0gPSBuZXcgRGltZW5zaW9uKGNlQmNySW50VywgMClcclxuXHJcbiAgICAvLyBWaXNpYmxlIGJvdW5kcyBvZiBjb250YWluZXJcclxuICAgIGxldCBiciA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKHZiTGVmdCwgMCksIG5ldyBEaW1lbnNpb24odmJXaWR0aCwgY2VCY3JJbnRIKSk7XHJcblxyXG4gICAgLy8gU2V0IGNvbnRhaW5lciBib3VuZHNcclxuICAgIHRoaXMubGF5b3V0Qm91bmRzKGJyLCB2aXJ0dWFsRGltLCBmYWxzZSk7XHJcblxyXG4gICAgLy8gVmlzaWJsZSBib3VuZHMgb2YgYXVkaW9zaWduYWxcclxuICAgIGxldCBhc1IgPSBuZXcgUmVjdGFuZ2xlKG5ldyBQb3NpdGlvbih2YkxlZnQsIDApLCBuZXcgRGltZW5zaW9uKHZiV2lkdGgsIGFzSCkpO1xyXG5cclxuICAgIC8vIFNldCBhdWRpb3NpZ25hbCBib3VuZHNcclxuICAgIHRoaXMuYXMubGF5b3V0Qm91bmRzKGFzUiwgdmlydHVhbERpbSwgcmVkcmF3LCBjbGVhcik7XHJcblxyXG4gICAgLy8gVmlzaWJsZSBib3VuZHMgb2Ygc29uYWdyYW1cclxuICAgIGxldCBzb1IgPSBuZXcgUmVjdGFuZ2xlKG5ldyBQb3NpdGlvbih2YkxlZnQsIHNvVG9wKSwgbmV3IERpbWVuc2lvbih2YldpZHRoLCBzb0gpKTtcclxuXHJcbiAgICAvLyBTZXQgc29uYWdyYW0gYm91bmRzXHJcbiAgICB0aGlzLnNvLmxheW91dEJvdW5kcyhzb1IsIHZpcnR1YWxEaW0sIHJlZHJhdywgY2xlYXIpO1xyXG4gIH1cclxuXHJcbiAgbGF5b3V0U2NhbGVkKCkge1xyXG4gICAgdGhpcy5fbGF5b3V0KGZhbHNlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBsYXlvdXQoY2xlYXI9dHJ1ZSkge1xyXG5cclxuICAgIGlmKHRoaXMuY2UgJiYgdGhpcy5kYykge1xyXG4gICAgICBjb25zdCBjbGllbnRXPXRoaXMuY2UuY2xpZW50V2lkdGg7XHJcbiAgICAgIGlmKHRoaXMuX2F1ZGlvRGF0YUhvbGRlcil7XHJcbiAgICAgICAgaWYodGhpcy5fZml4Rml0VG9QYW5lbCkge1xyXG4gICAgICAgICAgLy8gU2V0IHRoZSB2aXJ0dWFsIGNhbnZhcyB3aWR0aCB0byB0aGUgdmlzaWJsZSB3aWR0aFxyXG4gICAgICAgICAgaWYodGhpcy5jZS5zdHlsZS53aWR0aCE9JzEwMCUnKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXQgd2lkdGggdG8gMTAwJVwiKTtcclxuICAgICAgICAgICAgdGhpcy5jZS5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGlmICh0aGlzLl94Wm9vbSkge1xyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHZpcnR1YWwgY2FudmFzIHdpZHRoIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgdGhlIHVzZXIgc2VsZWN0ZWQgeFpvb20gdmFsdWVcclxuICAgICAgICAgICAgY29uc3QgbmV3Q2xXID0gTWF0aC5yb3VuZCggdGhpcy5feFpvb20qdGhpcy5fYXVkaW9EYXRhSG9sZGVyPy5kdXJhdGlvbiApO1xyXG4gICAgICAgICAgICB0aGlzLmNlLnN0eWxlLndpZHRoID0gbmV3Q2xXICsgJ3B4JztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgdmlydHVhbCBjYW52YXMgd2lkdGggdG8gdGhlIHZpc2libGUgd2lkdGggb25seVxyXG4gICAgICAgICAgICB0aGlzLmNlLnN0eWxlLndpZHRoID0gY2xpZW50VyArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2xheW91dChjbGVhcix0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvRGF0YShhdWRpb0RhdGFIb2xkZXI6IEF1ZGlvRGF0YUhvbGRlciB8IG51bGwpIHtcclxuICAgIHRoaXMuX2F1ZGlvQ2xpcD1udWxsXHJcbiAgICB0aGlzLl9hdWRpb0RhdGFIb2xkZXI9YXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgdGhpcy5hcy5zZXREYXRhKGF1ZGlvRGF0YUhvbGRlcik7XHJcbiAgICB0aGlzLnNvLnNldERhdGEoYXVkaW9EYXRhSG9sZGVyKTtcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgYXVkaW9EYXRhKCk6QXVkaW9EYXRhSG9sZGVyfG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9EYXRhSG9sZGVyXHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYXVkaW9DbGlwKGF1ZGlvQ2xpcDogQXVkaW9DbGlwIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fYXVkaW9DbGlwPWF1ZGlvQ2xpcFxyXG4gICAgICBsZXQgYXVkaW9EYXRhOkF1ZGlvRGF0YUhvbGRlcnxudWxsPW51bGw7XHJcbiAgICBsZXQgc2VsOlNlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgICAgIGlmKGF1ZGlvQ2xpcCkge1xyXG4gICAgICAgIGF1ZGlvRGF0YSA9IGF1ZGlvQ2xpcC5hdWRpb0RhdGFIb2xkZXI7XHJcbiAgICAgICAgaWYgKHRoaXMuX2F1ZGlvQ2xpcCkge1xyXG4gICAgICAgICAgdGhpcy5fYXVkaW9DbGlwLmFkZFNlbGVjdGlvbk9ic2VydmVyKChjbGlwKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gY2xpcC5zZWxlY3Rpb25cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWw9YXVkaW9DbGlwLnNlbGVjdGlvbjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9hdWRpb0RhdGFIb2xkZXIgPSBhdWRpb0RhdGE7XHJcbiAgICAgIHRoaXMuYXMuc2V0RGF0YSh0aGlzLl9hdWRpb0RhdGFIb2xkZXIpO1xyXG4gICAgICB0aGlzLnNvLnNldERhdGEodGhpcy5fYXVkaW9EYXRhSG9sZGVyKTtcclxuICAgICAgdGhpcy5zZWxlY3Rpbmc9bnVsbFxyXG4gICAgICB0aGlzLnNlbGVjdGlvbj1zZWxcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxheUZyYW1lUG9zaXRpb24oKTogbnVtYmVyIHxudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihwbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyfG51bGwpIHtcclxuICAgIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB0aGlzLmFzLnBsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB0aGlzLnNvLnBsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ3NCLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFDN0UsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sRUFBUyxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFFdEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFckUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFHekU7Ozs7OztHQU1HO0FBRUgsaUNBQWlDO0FBQ2pDLGdDQUFnQztBQUNoQywrQkFBK0I7QUFDL0IsSUFBSTtBQUNKLEVBQUU7QUFDRix5Q0FBeUM7QUFDekMsOEJBQThCO0FBQzlCLDRDQUE0QztBQUM1Qyx3REFBd0Q7QUFDeEQseURBQXlEO0FBQ3pELG9FQUFvRTtBQUNwRSxJQUFJO0FBQ0osRUFBRTtBQUNGLDZDQUE2QztBQUM3QywwRUFBMEU7QUFDMUUsSUFBSTtBQUNKLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsNERBQTREO0FBQzVELEtBQUs7QUFFTCw0QkFBNEI7QUFDNUIsZ0NBQWdDO0FBQ2hDLG1EQUFtRDtBQUNuRCx1RUFBdUU7QUFDdkUsbUNBQW1DO0FBQ25DLDBCQUEwQjtBQUMxQixJQUFJO0FBRUo7Ozs7Ozs7R0FPRztBQStDSCxNQUFNLE9BQU8sb0JBQXFC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TUFBTSxFQUFFLElBQUksRUFBRTtnQkFJUSxLQUFLO3NCQUFsRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR0YsRUFBRTtzQkFBM0MsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNELEVBQUU7c0JBQXhDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNM0IscUJBQXFCO3NCQUE5QixNQUFNO2dCQStFUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9CekMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVk1QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBc04xQyxTQUFTO3NCQURaLEtBQUs7Z0JBZUYsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtBdWRpb1NpZ25hbH0gZnJvbSAnLi9hdWRpb3NpZ25hbCdcclxuaW1wb3J0IHtTb25hZ3JhbX0gZnJvbSAnLi9zb25hZ3JhbSdcclxuaW1wb3J0IHtNYXJrZXIsIFBvaW50fSBmcm9tICcuL2NvbW1vbidcclxuXHJcbmltcG9ydCB7Q29tcG9uZW50LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1Bvc2l0aW9uLERpbWVuc2lvbiwgUmVjdGFuZ2xlfSBmcm9tIFwiLi4vLi4vbWF0aC8yZC9nZW9tZXRyeVwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcCxTZWxlY3Rpb259IGZyb20gXCIuLi9wZXJzaXN0b3JcIjtcclxuaW1wb3J0IHtCYXNpY0F1ZGlvQ2FudmFzTGF5ZXJDb21wb25lbnR9IGZyb20gXCIuL2F1ZGlvX2NhbnZhc19sYXllcl9jb21wXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi4vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuXHJcbi8qXHJcbiAgUmVzaXplT2JzZXJ2ZXIgbm90IHlldCBhdmFpbGFibGUgaW4gb2ZmaWNpYWwgVHlwZXNjcmlwdCBkZWNsYXJhdGlvblxyXG4gIENycmVhdGVkIGRlY2xhcmF0aW9uIGZyb20gSURMIHVudGlsIGl0cyBhdmFpbGFibGUuXHJcbiAgU2VlIHNwZWNzOlxyXG4gIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9yZXNpemUtb2JzZXJ2ZXJcclxuXHJcbiAqL1xyXG5cclxuLy8gaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyU2l6ZSB7XHJcbi8vICAgcmVhZG9ubHkgaW5saW5lU2l6ZTpudW1iZXI7XHJcbi8vICAgcmVhZG9ubHkgYmxvY2tTaXplOm51bWJlcjtcclxuLy8gfVxyXG4vL1xyXG4vLyBkZWNsYXJlIGludGVyZmFjZSBSZXNpemVPYnNlcnZlckVudHJ5e1xyXG4vLyAgIHJlYWRvbmx5IHRhcmdldDogRWxlbWVudDtcclxuLy8gICByZWFkb25seSBjb250ZW50UmVjdDogRE9NUmVjdFJlYWRPbmx5IDtcclxuLy8gICByZWFkb25seSBib3JkZXJCb3hTaXplOiBBcnJheTxSZXNpemVPYnNlcnZlclNpemU+IDtcclxuLy8gICByZWFkb25seSBjb250ZW50Qm94U2l6ZTogQXJyYXk8UmVzaXplT2JzZXJ2ZXJTaXplPiA7XHJcbi8vICAgcmVhZG9ubHkgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogQXJyYXk8UmVzaXplT2JzZXJ2ZXJTaXplPiA7XHJcbi8vIH1cclxuLy9cclxuLy8gZGVjbGFyZSBpbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJDYWxsYmFjayB7XHJcbi8vICAgKGVudHJpZXM6IEFycmF5PFJlc2l6ZU9ic2VydmVyRW50cnk+LCBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIpOnZvaWQ7XHJcbi8vIH1cclxuLy9cclxuLy8gZGVjbGFyZSBlbnVtIFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB7XHJcbi8vICAgXCJib3JkZXItYm94XCIsIFwiY29udGVudC1ib3hcIiwgXCJkZXZpY2UtcGl4ZWwtY29udGVudC1ib3hcIlxyXG4vLyB9O1xyXG5cclxuLy8gLy8gRGVjbGFyZSBSZXNpemVvYnNlcnZlclxyXG4vLyBkZWNsYXJlIGNsYXNzIFJlc2l6ZU9ic2VydmVye1xyXG4vLyAgIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBSZXNpemVPYnNlcnZlckNhbGxiYWNrKTtcclxuLy8gICBvYnNlcnZlOiAoZWw6RWxlbWVudCxvcHRzOiBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfCBudWxsKT0+dm9pZDtcclxuLy8gICB1bm9ic2VydmU6IChlbDpFbGVtZW50KT0+dm9pZDtcclxuLy8gICBkaXNjb25uZWN0OiAoKT0+dm9pZDtcclxuLy8gfVxyXG5cclxuLypcclxuICogQ29udGFpbmVyIGNvbXBvbmVudCBmb3IgYXVkaW8gZGlzcGxheS5cclxuICogVGhlIGRpc3BsYXkgZWxlbWVudHMgYXJlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBjYW52YXMuIFRoZSB2aXJ0dWFsIGNhbnZhcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBoYXZlIGhpZ2ggem9vbSBmYWN0b3JzIHdpdGggdmVyeSB3aWRlIHZpcnR1YWwgYXVkaW8gZGlzcGxheXMuXHJcbiAqIE9ubHkgdGhlIHZpc2libGUgcGFydCBvZiB0aGUgdmlydHVhbCBjYW52YXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBicm93c2VyIGNhbnZhcyBhbmQgdGhlcmVmb3JlIGNvbnN1bWluZyBtZW1vcnkuXHJcbiAqIFRoZSB2aXNpYmxlIHBhcnQgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB2aWV3cG9ydCBvZiB0aGUgc2Nyb2xsIHBhbmUgcGFyZW50LlxyXG4gKiBUaGUgdmlydHVhbCBjYW52YXMgaXRzZWxmIGlzIGltcGxlbWVudGVkIGFzIGFuIEhUTUwgZGl2IGVsZW1lbnQuXHJcbiAqIFRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvbmVudCBpcyB1cGRhdGVkIG9uIHJlc2l6ZSBvZiB0aGUgcGFyZW50IG9yIGNoYW5nZXMgb2YgdGhlIHpvb20gZmFjdG9yLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblxyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGlvJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAjdmlydHVhbENhbnZhcz5cclxuICAgIDxjYW52YXMgI2RpdmlkZXIgKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiIChtb3VzZW92ZXIpPVwibW91c2VvdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZWxlYXZlKCRldmVudClcIiBoZWlnaHQ9XCIxMFwiPjwvY2FudmFzPlxyXG4gICAgPGF1ZGlvLXNpZ25hbCBbcG9pbnRlclBvc2l0aW9uXT1cInBvaW50ZXJcIiBbc2VsZWN0aW5nXT1cInNlbGVjdGluZ1wiIFtzZWxlY3Rpb25dPVwic2VsZWN0aW9uXCIgKHBvaW50ZXJQb3NpdGlvbkV2ZW50RW1pdHRlcik9XCJwb2ludGVyUG9zaXRpb25DaGFuZ2VkKCRldmVudClcIiAoc2VsZWN0aW5nRXZlbnRFbWl0dGVyKT1cInNlbGVjdGluZ0NoYW5nZWQoJGV2ZW50KVwiIChzZWxlY3RlZEV2ZW50RW1pdHRlcik9XCJzZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIj48L2F1ZGlvLXNpZ25hbD5cclxuICAgIDxhdWRpby1zb25hZ3JhbSBbcG9pbnRlclBvc2l0aW9uXT1cInBvaW50ZXJcIiBbc2VsZWN0aW5nXT1cInNlbGVjdGluZ1wiIFtzZWxlY3Rpb25dPVwic2VsZWN0aW9uXCIgKHBvaW50ZXJQb3NpdGlvbkV2ZW50RW1pdHRlcik9XCJwb2ludGVyUG9zaXRpb25DaGFuZ2VkKCRldmVudClcIiAoc2VsZWN0aW5nRXZlbnRFbWl0dGVyKT1cInNlbGVjdGluZ0NoYW5nZWQoJGV2ZW50KVwiIChzZWxlY3RlZEV2ZW50RW1pdHRlcik9XCJzZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIj48L2F1ZGlvLXNvbmFncmFtPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgZGl2IHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIFRPRE8gY29udGFpbmVyIGRpdiBwb3NpdGlvbiBtdXN0IG5vdCBiZSAnc3RhdGljJyAoZGVmYXVsdCkgdG8gYWN0IGFzIHJlZmVyZW5jZSBmb3IgdGhlIGNhbnZhc2VzICovXHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgdHJhbnNmb3JtOiBub25lO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9YCwgYGNhbnZhc3tcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMDtcclxuICAgIGhlaWdodDogMDtcclxuICAgIGN1cnNvcjogbnMtcmVzaXplO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICB9YCwgYGF1ZGlvLXNpZ25hbCB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICB9YCwgYGF1ZGlvLXNvbmFncmFtIHtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgdHJhbnNmb3JtOiBub25lO1xyXG4gIH1gXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGlvQ2xpcFVJQ29udGFpbmVyIGV4dGVuZHMgQmFzaWNBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXR7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIERJVklERVJfUElYRUxfU0laRSA9IDEwO1xyXG5cclxuICBwYXJlbnRFOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgLy8gRGl2aWRlciBjYW52YXNcclxuICBAVmlld0NoaWxkKCdkaXZpZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgY2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBkYyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG5cclxuICAvLyBWaXJ0dWFsIGNvbnRhaW5lclxyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjZVJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgY2UhOiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChBdWRpb1NpZ25hbCwgeyBzdGF0aWM6IHRydWUgfSkgYXMhOiBBdWRpb1NpZ25hbDtcclxuICBAVmlld0NoaWxkKFNvbmFncmFtLCB7IHN0YXRpYzogdHJ1ZSB9KSBzbyE6IFNvbmFncmFtO1xyXG5cclxuICBwcml2YXRlIF9hdWRpb0NsaXA6QXVkaW9DbGlwIHwgbnVsbD1udWxsO1xyXG4gIHBvaW50ZXI6IE1hcmtlcnxudWxsPW51bGw7XHJcbiAgc2VsZWN0aW5nOiBTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gIHNlbGVjdGlvbjogU2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb24+KCk7XHJcbiAgcHJpdmF0ZSBfcGxheUZyYW1lUG9zaXRpb246IG51bWJlcnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBkcmFnU3RhcnRNb3VzZVk6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZHJhZ1N0YXJ0WTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkaXZpZGVyUG9zaXRpb24gPSAwLjU7XHJcblxyXG4gIHVzZXJBY3Rpb249ZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3hab29tOiBudW1iZXIgfCBudWxsID0gbnVsbDsgLy8gcGl4ZWxzIHBlciBzZWNvbmRcclxuXHJcbiAgZ2V0IHhab29tKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3hab29tO1xyXG4gIH1cclxuXHJcbiAgc2V0IHhab29tKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XHJcbiAgICB0aGlzLnVzZXJBY3Rpb249dHJ1ZTtcclxuICAgIHRoaXMuX3hab29tID0gdmFsdWU7XHJcbiAgICB0aGlzLmxheW91dCgpXHJcbiAgICB0aGlzLnVzZXJBY3Rpb249ZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBpZiB0cnVlIHRoZSBjb21wbGV0ZSBhdWRpbyBmaWxlIGlzIHNob3duLCB0aGUgZGlzcGxheSBmaXRzIHRvIHRoZSB2aXNpYmxlIHBhbmVsLCB0aGUgeC16b29tIGZhY3RvciBpcyB2YXJpYWJsZSwgdGhpcyBpcyB0aGUgZGVmYXVsdFxyXG4gIHByaXZhdGUgX2ZpeEZpdFRvUGFuZWwgPSB0cnVlO1xyXG5cclxuICBzZXQgZml4Rml0VG9QYW5lbCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZml4Rml0VG9QYW5lbCA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIC8vIHdlIGRvbid0IG5lZWQgIGNsaXAgYm91bmRzXHJcbiAgICAgIHRoaXMuYm91bmRzPW51bGw7XHJcbiAgICAgIHRoaXMuX3hab29tID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGhvbGQgY3VycmVudCB6b29tIHZhbHVlXHJcbiAgICAgIC8vdGhpcy5feFpvb209dGhpcy5jZS5vZmZzZXRXaWR0aC90aGlzLl9hdWRpb0RhdGEuZHVyYXRpb247XHJcbiAgICB9XHJcbiAgICB0aGlzLmxheW91dCgpXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoKVxyXG4gICAgdGhpcy5wYXJlbnRFID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jZSA9IHRoaXMuY2VSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuZGMgPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIGNvbnN0IGhlaWdodExpc3RlbmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG1yczogQXJyYXk8TXV0YXRpb25SZWNvcmQ+LCBtbzogTXV0YXRpb25PYnNlcnZlcikgPT4ge1xyXG5cclxuICAgICAgbGV0IGxheW91dD1mYWxzZTtcclxuICAgICAgbXJzLmZvckVhY2goKG1yOiBNdXRhdGlvblJlY29yZCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy51c2VyQWN0aW9uICYmICdhdHRyaWJ1dGVzJyA9PT0gbXIudHlwZSAmJiAoJ2NsYXNzJyA9PT0gbXIuYXR0cmlidXRlTmFtZSB8fCAnc3R5bGUnID09PSBtci5hdHRyaWJ1dGVOYW1lKSkge1xyXG4gICAgICAgICAgbGF5b3V0PXRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYobGF5b3V0KXtcclxuICAgICAgICAvLyByZS1sYXlvdXQgcmVxdWlyZWRcclxuICAgICAgICB0aGlzLmxheW91dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGhlaWdodExpc3RlbmVyLm9ic2VydmUodGhpcy5jZSwge2F0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xyXG4gICAgaGVpZ2h0TGlzdGVuZXIub2JzZXJ2ZSh0aGlzLmRjLCB7YXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7XHJcblxyXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMsb2JzKSA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coXCJSZXNpemUgb2JzZXJ2ZWQ6XCIpO1xyXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGUpPT57XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhlLmNvbnRlbnRSZWN0LndpZHRoK1wieFwiK2UuY29udGVudFJlY3QuaGVpZ2h0KTtcclxuICAgICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlKTtcclxuXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgfVxyXG5cclxuICBtb3VzZW92ZXIobWU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuZGl2aWRlckN1cnNvclBvc2l0aW9uKG1lLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIG1vdXNlbGVhdmUobWU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuZGl2aWRlckN1cnNvclBvc2l0aW9uKG1lLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBtb3VzZWRvd24obWU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuZHJhZ1N0YXJ0TW91c2VZID0gbWUuY2xpZW50WTtcclxuICAgIHRoaXMuZHJhZ1N0YXJ0WSA9IHRoaXMuZGMub2Zmc2V0VG9wO1xyXG4gICAgdGhpcy5kcmFnU3RhcnRNb3VzZVkgPSBtZS5jbGllbnRZO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZXVwKG1lOiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kcmFnU3RhcnRZICE9IG51bGwpIHtcclxuICAgICAgdGhpcy51c2VyQWN0aW9uPXRydWU7XHJcbiAgICAgIHRoaXMuZGl2aWRlckRyYWcobWUpO1xyXG4gICAgICB0aGlzLmxheW91dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0WSA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlckFjdGlvbj1mYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZW1vdmUobWU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRyYWdTdGFydFkgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnVzZXJBY3Rpb249dHJ1ZTtcclxuICAgICAgdGhpcy5kaXZpZGVyRHJhZyhtZSk7XHJcbiAgICAgIHRoaXMubGF5b3V0U2NhbGVkKCk7XHJcbiAgICAgIHRoaXMudXNlckFjdGlvbj10cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9pbnRlclBvc2l0aW9uQ2hhbmdlZChwcDpNYXJrZXIpe1xyXG4gICAgdGhpcy5wb2ludGVyPXBwXHJcbiAgfVxyXG5cclxuICBzZWxlY3RpbmdDaGFuZ2VkKHM6U2VsZWN0aW9ufCBudWxsKXtcclxuICAgIHRoaXMuc2VsZWN0aW5nPXNcclxuICB9XHJcblxyXG4gIHNlbGVjdGlvbkNoYW5nZWQoczpTZWxlY3Rpb24pe1xyXG4gICAgdGhpcy5zZWxlY3Rpb249c1xyXG4gICAgaWYodGhpcy5fYXVkaW9DbGlwKXtcclxuICAgICAgdGhpcy5fYXVkaW9DbGlwLnNlbGVjdGlvbj1zXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGlvbkV2ZW50RW1pdHRlci5lbWl0KHRoaXMuc2VsZWN0aW9uKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW52YXNNb3VzZVBvcyhjOiBIVE1MQ2FudmFzRWxlbWVudCwgZTogTW91c2VFdmVudCk6IFBvaW50IHtcclxuICAgIGNvbnN0IGNyID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHggPSBlLnggLSBjci5sZWZ0O1xyXG4gICAgY29uc3QgeSA9IGUueSAtIGNyLnRvcDtcclxuICAgIHJldHVybiBuZXcgUG9pbnQoeCx5KTtcclxuICB9XHJcblxyXG4gIGRpdmlkZXJDdXJzb3JQb3NpdGlvbihlOiBNb3VzZUV2ZW50LCBzaG93OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5kYykge1xyXG4gICAgICB0aGlzLmNhbnZhc01vdXNlUG9zKHRoaXMuZGMsIGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGl2aWRlckRyYWcoZTogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGMgJiYgdGhpcy5kcmFnU3RhcnRNb3VzZVkgJiYgdGhpcy5kcmFnU3RhcnRZKSB7XHJcblxyXG4gICAgICBjb25zdCBkcmFnT2Zmc2V0ID0gZS5jbGllbnRZIC0gdGhpcy5kcmFnU3RhcnRNb3VzZVk7XHJcbiAgICAgIGNvbnN0IGNlSGVpZ2h0ID0gdGhpcy5jZS5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgbmV3VG9wID0gKHRoaXMuZHJhZ1N0YXJ0WSArIGRyYWdPZmZzZXQpO1xyXG4gICAgICBpZiAobmV3VG9wIDwgMCkge1xyXG4gICAgICAgIG5ld1RvcCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5ld1RvcCA+IGNlSGVpZ2h0IC0gQXVkaW9DbGlwVUlDb250YWluZXIuRElWSURFUl9QSVhFTF9TSVpFKSB7XHJcbiAgICAgICAgbmV3VG9wID0gY2VIZWlnaHQgLSBBdWRpb0NsaXBVSUNvbnRhaW5lci5ESVZJREVSX1BJWEVMX1NJWkU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kYy5zdHlsZS50b3AgPSBuZXdUb3AudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAgIHRoaXMuZGl2aWRlclBvc2l0aW9uID0gKHRoaXMuZGMub2Zmc2V0VG9wICsgQXVkaW9DbGlwVUlDb250YWluZXIuRElWSURFUl9QSVhFTF9TSVpFIC8gMikgLyBjZUhlaWdodDtcclxuICAgICAgaWYgKHRoaXMuZGl2aWRlclBvc2l0aW9uID4gMS4wKSB7XHJcbiAgICAgICAgdGhpcy5kaXZpZGVyUG9zaXRpb24gPSAxLjA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGl2aWRlclBvc2l0aW9uIDwgMC4wKSB7XHJcbiAgICAgICAgdGhpcy5kaXZpZGVyUG9zaXRpb24gPSAwLjA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcmF3RGl2aWRlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGRyYXdEaXZpZGVyKCkge1xyXG4gICAgY29uc3QgdyA9IHRoaXMuZGMud2lkdGg7XHJcbiAgICBjb25zdCBoID0gdGhpcy5kYy5oZWlnaHQ7XHJcbiAgICBjb25zdCBnID0gdGhpcy5kYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgaWYgKGcgJiYgdz4xMCAmJiBoPj0xKSB7XHJcbiAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcclxuICAgICAgZy5maWxsUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xyXG4gICAgICBnLmZpbGxSZWN0KDUsIDUsIHcgLSAxMCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGlwQm91bmRzKGNsaXBCb3VuZHM6IFJlY3RhbmdsZSkge1xyXG4gICAgdGhpcy5ib3VuZHMgPSBjbGlwQm91bmRzO1xyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRYWm9vbSgpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGxldCB4eiA9IHRoaXMuX3hab29tO1xyXG4gICAgaWYgKHh6PT1udWxsICYmIHRoaXMuX2F1ZGlvRGF0YUhvbGRlcikge1xyXG4gICAgICBsZXQgb3cgPSB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG4gICAgICBpZiAob3cgPCAxKSB7XHJcbiAgICAgICAgLy8gYXQgbGVhc3Qgb25lIHBpeGVsIHdpZHRoIHRvIGF2b2lkIHgtem9vbSB6ZXJvIHZhbHVlc1xyXG4gICAgICAgIG93ID0gMTtcclxuICAgICAgfVxyXG4gICAgICB4eiA9IG93IC8gdGhpcy5fYXVkaW9EYXRhSG9sZGVyLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHh6O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbGF5b3V0KGNsZWFyOiBib29sZWFuLCByZWRyYXc6IGJvb2xlYW4pIHtcclxuICAgIGxldCBjZUJjciA9IHRoaXMuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgY29uc3QgY2VCY3JJbnRXID0gTWF0aC5mbG9vcihjZUJjci53aWR0aCk7XHJcbiAgICBjb25zdCBjZUJjckludEggPSBNYXRoLmZsb29yKGNlQmNyLmhlaWdodCk7XHJcblxyXG4gICAgLy8gaGVpZ2h0IGF2YWlsYWJsZSBmb3IgcGx1Z2lucyAoYXVkaW9zaWduYWwgYW5kIHNvbmFncmFtKVxyXG4gICAgbGV0IHBzSCA9IGNlQmNySW50SCAtIEF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRTtcclxuICAgIGlmIChwc0ggPCAwKSB7XHJcbiAgICAgIHBzSCA9IDA7XHJcbiAgICB9XHJcbiAgICAvLyBhdWRpbyBzaWduYWwgaGVpZ2h0XHJcbiAgICBjb25zdCBhc0ggPSBNYXRoLnJvdW5kKHBzSCAqIHRoaXMuZGl2aWRlclBvc2l0aW9uKTtcclxuXHJcbiAgICAvLyBzb25hZ3JhbSBoZWlnaHQgKHJlc3Q6IGF2YWlsYWJsZSBoZWlnaHQgbWludXMgZGl2aWRlciBoZWlnaHQgbWludXMgYXVkaW9zaWduYWwgaGVpZ2h0KVxyXG4gICAgbGV0IHNvSCA9IGNlQmNySW50SCAtIEF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRSAtIGFzSDtcclxuICAgIGlmIChzb0ggPCAwKSB7XHJcbiAgICAgIHNvSCA9IDA7XHJcbiAgICB9XHJcblxyXG4gIC8vIHNvbmFncmFtIHRvcCBwb3NpdGlvblxyXG4gICAgY29uc3Qgc29Ub3AgPSBhc0ggKyBBdWRpb0NsaXBVSUNvbnRhaW5lci5ESVZJREVSX1BJWEVMX1NJWkU7XHJcblxyXG4gICAgLy8gVmlzaWJsZSBib3VuZHNcclxuICAgIC8vIGxlZnQgcG9zaXRpb25cclxuICAgIGxldCB2YkxlZnQgPSAwO1xyXG4gICAgLy8gd2lkdGhcclxuICAgIGxldCB2YldpZHRoID0gY2VCY3JJbnRXO1xyXG4gICAgaWYgKCF0aGlzLl9maXhGaXRUb1BhbmVsICYmIHRoaXMuYm91bmRzKSB7XHJcbiAgICAgIHZiTGVmdCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMucG9zaXRpb24ubGVmdCk7XHJcbiAgICAgIHZiV2lkdGggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi53aWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGl2aWRlclxyXG4gICAgLy8gbGVmdCBwb3NpdGlvblxyXG4gICAgbGV0IHZiTGVmdFN0eWwgPSB2YkxlZnQgKyAncHgnO1xyXG4gICAgaWYgKHRoaXMuZGMuc3R5bGUubGVmdCAhPSB2YkxlZnRTdHlsKSB7XHJcbiAgICAgIHRoaXMuZGMuc3R5bGUubGVmdCA9IHZiTGVmdFN0eWw7XHJcbiAgICB9XHJcbiAgICAvLyB0b3AgcG9zaXRpb25cclxuICAgIC8vY29uc3QgZFRvcCA9IGFzSDtcclxuICAgIGNvbnN0IGRUb3BTdHIgPSBhc0ggKyAncHgnO1xyXG4gICAgaWYgKHRoaXMuZGMuc3R5bGUudG9wICE9IGRUb3BTdHIpIHtcclxuICAgICAgdGhpcy5kYy5zdHlsZS50b3AgPSBkVG9wU3RyO1xyXG4gICAgfVxyXG4gICAgLy8gd2lkdGhcclxuICAgIGxldCB2YldpZHRoU3R5bGUgPSB2YldpZHRoICsgJ3B4JztcclxuICAgIGlmICh0aGlzLmRjLnN0eWxlLndpZHRoICE9IHZiV2lkdGhTdHlsZSkge1xyXG4gICAgICB0aGlzLmRjLnN0eWxlLndpZHRoID0gdmJXaWR0aFN0eWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGMud2lkdGggIT0gdmJXaWR0aCkge1xyXG4gICAgICB0aGlzLmRjLndpZHRoID0gdmJXaWR0aDtcclxuICAgIH1cclxuICAgIC8vIGhlaWdodFxyXG4gICAgaWYodGhpcy5kYy5oZWlnaHQhPUF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRSkge1xyXG4gICAgICB0aGlzLmRjLmhlaWdodCA9IEF1ZGlvQ2xpcFVJQ29udGFpbmVyLkRJVklERVJfUElYRUxfU0laRTtcclxuXHJcbiAgICB9XHJcbiAgICBsZXQgZGl2UGl4ZWxTaXplU3R5bGU9QXVkaW9DbGlwVUlDb250YWluZXIuRElWSURFUl9QSVhFTF9TSVpFLnRvU3RyaW5nKCkgKyAncHgnO1xyXG4gICAgaWYodGhpcy5kYy5zdHlsZS5oZWlnaHQhPWRpdlBpeGVsU2l6ZVN0eWxlKSB7XHJcbiAgICAgIHRoaXMuZGMuc3R5bGUuaGVpZ2h0ID0gZGl2UGl4ZWxTaXplU3R5bGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcmF3RGl2aWRlcigpO1xyXG5cclxuXHJcbiAgICAvLyBWaXJ0dWFsIGRpbWVuc2lvbiwgb25seSB3aWR0aCBpcyB1c2VkXHJcbiAgICBsZXQgdmlydHVhbERpbSA9IG5ldyBEaW1lbnNpb24oY2VCY3JJbnRXLCAwKVxyXG5cclxuICAgIC8vIFZpc2libGUgYm91bmRzIG9mIGNvbnRhaW5lclxyXG4gICAgbGV0IGJyID0gbmV3IFJlY3RhbmdsZShuZXcgUG9zaXRpb24odmJMZWZ0LCAwKSwgbmV3IERpbWVuc2lvbih2YldpZHRoLCBjZUJjckludEgpKTtcclxuXHJcbiAgICAvLyBTZXQgY29udGFpbmVyIGJvdW5kc1xyXG4gICAgdGhpcy5sYXlvdXRCb3VuZHMoYnIsIHZpcnR1YWxEaW0sIGZhbHNlKTtcclxuXHJcbiAgICAvLyBWaXNpYmxlIGJvdW5kcyBvZiBhdWRpb3NpZ25hbFxyXG4gICAgbGV0IGFzUiA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKHZiTGVmdCwgMCksIG5ldyBEaW1lbnNpb24odmJXaWR0aCwgYXNIKSk7XHJcblxyXG4gICAgLy8gU2V0IGF1ZGlvc2lnbmFsIGJvdW5kc1xyXG4gICAgdGhpcy5hcy5sYXlvdXRCb3VuZHMoYXNSLCB2aXJ0dWFsRGltLCByZWRyYXcsIGNsZWFyKTtcclxuXHJcbiAgICAvLyBWaXNpYmxlIGJvdW5kcyBvZiBzb25hZ3JhbVxyXG4gICAgbGV0IHNvUiA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKHZiTGVmdCwgc29Ub3ApLCBuZXcgRGltZW5zaW9uKHZiV2lkdGgsIHNvSCkpO1xyXG5cclxuICAgIC8vIFNldCBzb25hZ3JhbSBib3VuZHNcclxuICAgIHRoaXMuc28ubGF5b3V0Qm91bmRzKHNvUiwgdmlydHVhbERpbSwgcmVkcmF3LCBjbGVhcik7XHJcbiAgfVxyXG5cclxuICBsYXlvdXRTY2FsZWQoKSB7XHJcbiAgICB0aGlzLl9sYXlvdXQoZmFsc2UsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGxheW91dChjbGVhcj10cnVlKSB7XHJcblxyXG4gICAgaWYodGhpcy5jZSAmJiB0aGlzLmRjKSB7XHJcbiAgICAgIGNvbnN0IGNsaWVudFc9dGhpcy5jZS5jbGllbnRXaWR0aDtcclxuICAgICAgaWYodGhpcy5fYXVkaW9EYXRhSG9sZGVyKXtcclxuICAgICAgICBpZih0aGlzLl9maXhGaXRUb1BhbmVsKSB7XHJcbiAgICAgICAgICAvLyBTZXQgdGhlIHZpcnR1YWwgY2FudmFzIHdpZHRoIHRvIHRoZSB2aXNpYmxlIHdpZHRoXHJcbiAgICAgICAgICBpZih0aGlzLmNlLnN0eWxlLndpZHRoIT0nMTAwJScpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldCB3aWR0aCB0byAxMDAlXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNlLnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3hab29tKSB7XHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgdmlydHVhbCBjYW52YXMgd2lkdGggYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiB0aGUgdXNlciBzZWxlY3RlZCB4Wm9vbSB2YWx1ZVxyXG4gICAgICAgICAgICBjb25zdCBuZXdDbFcgPSBNYXRoLnJvdW5kKCB0aGlzLl94Wm9vbSp0aGlzLl9hdWRpb0RhdGFIb2xkZXI/LmR1cmF0aW9uICk7XHJcbiAgICAgICAgICAgIHRoaXMuY2Uuc3R5bGUud2lkdGggPSBuZXdDbFcgKyAncHgnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSB2aXJ0dWFsIGNhbnZhcyB3aWR0aCB0byB0aGUgdmlzaWJsZSB3aWR0aCBvbmx5XHJcbiAgICAgICAgICAgIHRoaXMuY2Uuc3R5bGUud2lkdGggPSBjbGllbnRXICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fbGF5b3V0KGNsZWFyLHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYXVkaW9EYXRhKGF1ZGlvRGF0YUhvbGRlcjogQXVkaW9EYXRhSG9sZGVyIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fYXVkaW9DbGlwPW51bGxcclxuICAgIHRoaXMuX2F1ZGlvRGF0YUhvbGRlcj1hdWRpb0RhdGFIb2xkZXI7XHJcbiAgICB0aGlzLmFzLnNldERhdGEoYXVkaW9EYXRhSG9sZGVyKTtcclxuICAgIHRoaXMuc28uc2V0RGF0YShhdWRpb0RhdGFIb2xkZXIpO1xyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBhdWRpb0RhdGEoKTpBdWRpb0RhdGFIb2xkZXJ8bnVsbHtcclxuICAgIHJldHVybiB0aGlzLl9hdWRpb0RhdGFIb2xkZXJcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhdWRpb0NsaXAoYXVkaW9DbGlwOiBBdWRpb0NsaXAgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9hdWRpb0NsaXA9YXVkaW9DbGlwXHJcbiAgICAgIGxldCBhdWRpb0RhdGE6QXVkaW9EYXRhSG9sZGVyfG51bGw9bnVsbDtcclxuICAgIGxldCBzZWw6U2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICAgICAgaWYoYXVkaW9DbGlwKSB7XHJcbiAgICAgICAgYXVkaW9EYXRhID0gYXVkaW9DbGlwLmF1ZGlvRGF0YUhvbGRlcjtcclxuICAgICAgICBpZiAodGhpcy5fYXVkaW9DbGlwKSB7XHJcbiAgICAgICAgICB0aGlzLl9hdWRpb0NsaXAuYWRkU2VsZWN0aW9uT2JzZXJ2ZXIoKGNsaXApID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBjbGlwLnNlbGVjdGlvblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlbD1hdWRpb0NsaXAuc2VsZWN0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2F1ZGlvRGF0YUhvbGRlciA9IGF1ZGlvRGF0YTtcclxuICAgICAgdGhpcy5hcy5zZXREYXRhKHRoaXMuX2F1ZGlvRGF0YUhvbGRlcik7XHJcbiAgICAgIHRoaXMuc28uc2V0RGF0YSh0aGlzLl9hdWRpb0RhdGFIb2xkZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGluZz1udWxsXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uPXNlbFxyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBwbGF5RnJhbWVQb3NpdGlvbigpOiBudW1iZXIgfG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0IHBsYXlGcmFtZVBvc2l0aW9uKHBsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbCkge1xyXG4gICAgdGhpcy5fcGxheUZyYW1lUG9zaXRpb24gPSBwbGF5RnJhbWVQb3NpdGlvbjtcclxuICAgIHRoaXMuYXMucGxheUZyYW1lUG9zaXRpb24gPSBwbGF5RnJhbWVQb3NpdGlvbjtcclxuICAgIHRoaXMuc28ucGxheUZyYW1lUG9zaXRpb24gPSBwbGF5RnJhbWVQb3NpdGlvbjtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -320,15 +320,15 @@ export class LevelBar {
|
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
324
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: LevelBar, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
324
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: LevelBar, selector: "audio-levelbar", inputs: { streamingMode: "streamingMode", displayLevelInfos: "displayLevelInfos", state: "state" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "virtualCanvasRef", first: true, predicate: ["virtualCanvas"], descendants: true, static: true }, { propertyName: "liveLevelCanvasRef", first: true, predicate: ["levelbar"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["markerCanvas"], descendants: true, static: true }], ngImport: i0, template: `
|
|
325
325
|
<div #virtualCanvas>
|
|
326
326
|
<canvas #levelbar></canvas>
|
|
327
327
|
<canvas #markerCanvas></canvas>
|
|
328
328
|
</div>
|
|
329
329
|
`, isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "div{top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n", "canvas{top:0;left:0;width:100%;height:100%;position:absolute}\n"] }); }
|
|
330
330
|
}
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
331
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: LevelBar, decorators: [{
|
|
332
332
|
type: Component,
|
|
333
333
|
args: [{ selector: 'audio-levelbar', template: `
|
|
334
334
|
<div #virtualCanvas>
|
|
@@ -358,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
358
358
|
type: HostListener,
|
|
359
359
|
args: ['window:resize', ['$event']]
|
|
360
360
|
}] } });
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2xpdmVsZXZlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1DLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQTs7QUFHckgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFlBQVksR0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFDLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDLE1BQU0sQ0FBTixJQUFZLEtBQStCO0FBQTNDLFdBQVksS0FBSztJQUFFLHVDQUFPLENBQUE7SUFBQywyQ0FBUyxDQUFBO0lBQUMsbUNBQUssQ0FBQTtBQUFBLENBQUMsRUFBL0IsS0FBSyxLQUFMLEtBQUssUUFBMEI7QUFxQzNDLE1BQU0sT0FBTyxRQUFRO0lBb0JuQixZQUFvQixHQUFlLEVBQVUsaUJBQW9DO1FBQTdELFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVnpFLG1CQUFjLEdBQVEsYUFBYSxHQUFDLFVBQVUsQ0FBQztRQUN2RCxjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ2pCLG1C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QUFDLFFBQVEsQ0FBQztnQkFpQjlCLGFBQWE7c0JBRGhCLEtBQUs7Z0JBVUYsaUJBQWlCO3NCQURwQixLQUFLO2dCQWVGLEtBQUs7c0JBRFIsS0FBSztnQkFnQk4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7TGV2ZWxJbmZvLCBMZXZlbEluZm9zLCBMZXZlbExpc3RlbmVyfSBmcm9tIFwiLi4vZHNwL2xldmVsX21lYXN1cmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBUk5fREJfTEVWRUwgPSAtMjtcclxuZXhwb3J0IGNvbnN0IE1JTl9EQl9MRVZFTCA9IC02MC4wO1xyXG5leHBvcnQgY29uc3QgQ09OU0lERVJFRF9TSUxFTkNFX0RCX0xFVkVMID0gTUlOX0RCX0xFVkVMKjI7XHJcbmV4cG9ydCBjb25zdCBMSU5FX1dJRFRIID0gMjtcclxuZXhwb3J0IGNvbnN0IExJTkVfRElTVEFOQ0UgPSAyO1xyXG5leHBvcnQgY29uc3QgTEVWRUxfSU5ESUNBVE9SX0hFSUdIVD0zO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9WRVJGTE9XX1RIUkVTSE9MRCA9IDAuMjU7XHJcbmV4cG9ydCBjb25zdCBPVkVSRkxPV19JTkNSX0ZBQ1RPUiA9IDAuNTtcclxuXHJcbmV4cG9ydCBlbnVtIFN0YXRlIHtMT0FESU5HLFJFTkRFUklORyxSRUFEWX1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2F1ZGlvLWxldmVsYmFyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAjdmlydHVhbENhbnZhcz5cclxuICAgICAgPGNhbnZhcyAjbGV2ZWxiYXI+PC9jYW52YXM+XHJcbiAgICAgIDxjYW52YXMgI21hcmtlckNhbnZhcz48L2NhbnZhcz5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IHtcclxuXHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJhY2tncm91bmQ6IGRhcmtncmF5O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgfWAsIGBkaXYge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIC8qcG9zaXRpb246IGFic29sdXRlOyovXHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1gLCBgY2FudmFzIHtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMZXZlbEJhciBpbXBsZW1lbnRzIExldmVsTGlzdGVuZXIsQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSB2aXJ0dWFsQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICB2aXJ0dWFsQ2FudmFzITogSFRNTERpdkVsZW1lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnbGV2ZWxiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXZlTGV2ZWxDYW52YXNSZWYhOiBFbGVtZW50UmVmO1xyXG4gIGxpdmVMZXZlbENhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ21hcmtlckNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIG1hcmtlckNhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgbWFya2VyQ2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgY2UhOiBIVE1MRGl2RWxlbWVudDtcclxuICBkYlZhbHVlczogQXJyYXk8QXJyYXk8bnVtYmVyPj47XHJcbiAgcHJpdmF0ZSBwaXhlbHNQZXJWYWx1ZTpudW1iZXI9TElORV9ESVNUQU5DRStMSU5FX1dJRFRIO1xyXG4gIHBlYWtEYkx2bCA9IE1JTl9EQl9MRVZFTDtcclxuICBwcml2YXRlIF9zdHJlYW1pbmdNb2RlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3RyZWFtaW5nRnJhbWVMZW5ndGg9MDtcclxuICBwcml2YXRlIF9zdGF0aWNMZXZlbEluZm9zOiBMZXZlbEluZm9zIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGxheUZyYW1lUG9zaXRpb246IG51bWJlcnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfc3RhdGU6U3RhdGV8bnVsbD1udWxsO1xyXG5cclxuICB3YXJuREJMZXZlbCA9IERFRkFVTFRfV0FSTl9EQl9MRVZFTDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLmRiVmFsdWVzID0gbmV3IEFycmF5PEFycmF5PG51bWJlcj4+KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNlID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubGl2ZUxldmVsQ2FudmFzID0gdGhpcy5saXZlTGV2ZWxDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubWFya2VyQ2FudmFzID0gdGhpcy5tYXJrZXJDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLnpJbmRleCA9ICc0JztcclxuICAgIHRoaXMudmlydHVhbENhbnZhcyA9IHRoaXMudmlydHVhbENhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pXHJcbiAgb25TY3JvbGwoc2U6IEV2ZW50KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0UG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gICAgICAgICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWV3cG9ydFBvc2l0aW9uKCl7XHJcbiAgICAvLyBNb3ZlIGNhbnZhc2VzIHRvIHZpc2libGUgdmlld3BvcnQgcG9zaXRpb25cclxuICAgIGxldCB2aWV3UG9ydFN0eWxlTGVmdD10aGlzLmNlLnNjcm9sbExlZnQgKyAncHgnO1xyXG4gICAgdGhpcy5saXZlTGV2ZWxDYW52YXMuc3R5bGUubGVmdCA9IHZpZXdQb3J0U3R5bGVMZWZ0O1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUubGVmdCA9IHZpZXdQb3J0U3R5bGVMZWZ0O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RyZWFtaW5nTW9kZShzdHJlYW1pbmdNb2RlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fc3RyZWFtaW5nTW9kZSAhPT0gc3RyZWFtaW5nTW9kZSkge1xyXG4gICAgICB0aGlzLl9zdHJlYW1pbmdNb2RlID0gc3RyZWFtaW5nTW9kZTtcclxuICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChsZXZlbEluZm9zKSB7XHJcbiAgICAgIHRoaXMuX3N0YXRpY0xldmVsSW5mb3MgPSBsZXZlbEluZm9zO1xyXG4gICAgICB0aGlzLmRiVmFsdWVzID0gbGV2ZWxJbmZvcy5idWZmZXJMZXZlbEluZm9zLm1hcCgobGkpID0+IHtcclxuICAgICAgICByZXR1cm4gbGkucG93ZXJMZXZlbHNEQigpXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc3RhdGljTGV2ZWxJbmZvcyA9bnVsbDtcclxuICAgICAgICB0aGlzLmRiVmFsdWVzID0gbmV3IEFycmF5PEFycmF5PG51bWJlcj4+KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RhdGUoc3RhdGU6U3RhdGUpe1xyXG4gICB0aGlzLl9zdGF0ZT1zdGF0ZTtcclxuICAgdGhpcy5sYXlvdXRTdGF0aWMoKTtcclxuICB9XHJcblxyXG4gIHNldCBjaGFubmVsQ291bnQoY2hhbm5lbENvdW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihwbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbiA9IHBsYXlGcmFtZVBvc2l0aW9uO1xyXG4gICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogRXZlbnQpIHtcclxuXHJcbiAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgfVxyXG5cclxuICBsYXlvdXQoKSB7XHJcblxyXG4gICAgLy8gc2V0IENhbnZhcyBzaXplIHRvIHZpZXdwb3J0IHNpemVcclxuICAgIHRoaXMubGl2ZUxldmVsQ2FudmFzLndpZHRoID0gdGhpcy5jZS5vZmZzZXRXaWR0aDtcclxuICAgIHRoaXMubGl2ZUxldmVsQ2FudmFzLmhlaWdodCA9IHRoaXMuY2Uub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgIHRoaXMubWFya2VyQ2FudmFzLndpZHRoID0gdGhpcy5jZS5vZmZzZXRXaWR0aDtcclxuICAgIHRoaXMubWFya2VyQ2FudmFzLmhlaWdodCA9IHRoaXMuY2Uub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgIC8vIGFuZCBtb3ZlIHRvIHZpZXdwb3J0IHBvc2l0aW9uXHJcbiAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0UG9zaXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmRyYXdBbGwoKTtcclxuICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKGxldmVsSW5mb3M6IExldmVsSW5mbykge1xyXG4gICAgaWYgKHRoaXMuX3N0cmVhbWluZ01vZGUpIHtcclxuICAgICAgbGV0IGRiVmFscyA9IGxldmVsSW5mb3MucG93ZXJMZXZlbHNEQigpO1xyXG4gICAgICBsZXQgcGVha0RCVmFsID0gbGV2ZWxJbmZvcy5wb3dlckxldmVsREIoKTtcclxuICAgICAgdGhpcy5fc3RyZWFtaW5nRnJhbWVMZW5ndGgrPWxldmVsSW5mb3MuZnJhbWVMZW5ndGg7XHJcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlVwZGF0ZSBsZXZlbCBpbmZvIGZyYW1lTGVuZ3RoOiBcIitsZXZlbEluZm9zLmZyYW1lTGVuZ3RoK1wiLCB0b3RhbCBzdHJlYW1pbmcgZnJhbWUgbGVuZ3RoOiBcIit0aGlzLl9zdHJlYW1pbmdGcmFtZUxlbmd0aCk7XHJcbiAgICAgIGlmICh0aGlzLnBlYWtEYkx2bCA8IHBlYWtEQlZhbCkge1xyXG4gICAgICAgIHRoaXMucGVha0RiTHZsID0gcGVha0RCVmFsO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGJWYWx1ZXMucHVzaChkYlZhbHMpO1xyXG4gICAgICBsZXQgaSA9IHRoaXMuZGJWYWx1ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgbGV0IHggPSBpICogdGhpcy5waXhlbHNQZXJWYWx1ZTtcclxuICAgICAgdGhpcy5kcmF3UHVzaFZhbHVlKHgsIGRiVmFscyk7XHJcbiAgICAgIHRoaXMuY2hlY2tXaWR0aCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RyZWFtRmluaXNoZWQoKSB7XHJcbiAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsYXlvdXRTdGF0aWMoKSB7XHJcblxyXG4gICAgbGV0IHJlcXVpcmVkV2lkdGggPSBNYXRoLnJvdW5kKHRoaXMuZGJWYWx1ZXMubGVuZ3RoICogdGhpcy5waXhlbHNQZXJWYWx1ZSk7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsQ2FudmFzICYmIHRoaXMuY2UpIHtcclxuXHJcbiAgICAgIHRoaXMudmlydHVhbENhbnZhcy5zdHlsZS53aWR0aCA9IHJlcXVpcmVkV2lkdGggKyAncHgnO1xyXG4gICAgICB0aGlzLmNlLnNjcm9sbExlZnQgPSByZXF1aXJlZFdpZHRoIC0gdGhpcy5jZS5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrV2lkdGgoKSB7XHJcbiAgICBsZXQgcmVxdWlyZWRXaWR0aCA9IHRoaXMuZGJWYWx1ZXMubGVuZ3RoKnRoaXMucGl4ZWxzUGVyVmFsdWU7XHJcbiAgICBpZiAodGhpcy52aXJ0dWFsQ2FudmFzLm9mZnNldFdpZHRoIC0gcmVxdWlyZWRXaWR0aCA8IHRoaXMuY2Uub2Zmc2V0V2lkdGggKiBPVkVSRkxPV19USFJFU0hPTEQpIHtcclxuICAgICAgbGV0IG5ld1dpZHRoID0gTWF0aC5mbG9vcih0aGlzLnZpcnR1YWxDYW52YXMub2Zmc2V0V2lkdGggKyAodGhpcy5jZS5vZmZzZXRXaWR0aCAqIE9WRVJGTE9XX0lOQ1JfRkFDVE9SKSk7XHJcbiAgICAgIHRoaXMudmlydHVhbENhbnZhcy5zdHlsZS53aWR0aCA9IG5ld1dpZHRoICsgJ3B4JztcclxuICAgICAgdGhpcy5jZS5zY3JvbGxMZWZ0ID0gbmV3V2lkdGggLSB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgIC8vIGRvIG5vdCBjYWxsIGxheW91dCBoZXJlIGl0IGlzIHRyaWdnZXJlZCBieSB0aGUgc2Nyb2xsIGV2ZW50XHJcbiAgICAgIC8vdGhpcy5sYXlvdXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KHN0YXQ9ZmFsc2UpIHtcclxuICAgIHRoaXMucGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG4gICAgdGhpcy5kYlZhbHVlcyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xyXG4gICAgdGhpcy5fc3RyZWFtaW5nRnJhbWVMZW5ndGg9MDtcclxuICAgIGlmKHN0YXQpe1xyXG4gICAgICB0aGlzLmxheW91dFN0YXRpYygpO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGRyYXdMZXZlbEJhY2tncm91bmQoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4OiBudW1iZXIsIGg6IG51bWJlcil7XHJcbiAgICBnLnN0cm9rZVN0eWxlID0gJ2JsYWNrJztcclxuICAgIGcuZmlsbFN0eWxlID0gJ2JsYWNrJztcclxuICAgIGcuZmlsbFJlY3QoeCwwLHRoaXMucGl4ZWxzUGVyVmFsdWUsaClcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZHJhd0xldmVsTGluZShnOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHg6IG51bWJlciwgaDogbnVtYmVyLCBkYlZhbDogbnVtYmVyKSB7XHJcbiAgLy8gICAvL3RyYW5zbGF0ZSB0byB2aWV3cG9ydFxyXG4gIC8vICAgbGV0IHhjID0geCAtIHRoaXMuY2Uuc2Nyb2xsTGVmdDtcclxuICAvL1xyXG4gIC8vICAgdGhpcy5kcmF3TGV2ZWxCYWNrZ3JvdW5kKGcseGMsaCk7XHJcbiAgLy8gICBnLmxpbmVXaWR0aCA9IExJTkVfV0lEVEg7XHJcbiAgLy8gICBpZiAoZGJWYWwgPj0gdGhpcy53YXJuREJMZXZlbCkge1xyXG4gIC8vICAgICBnLnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgLy8gICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgLy9cclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIGcuc3Ryb2tlU3R5bGUgPSAnIzAwYzg1Myc7XHJcbiAgLy8gICAgIGcuZmlsbFN0eWxlID0gJyMwMGM4NTMnO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgZy5iZWdpblBhdGgoKTtcclxuICAvLyAgIGcubW92ZVRvKHhjLCBoKTtcclxuICAvLyAgIGxldCBwVmFsID0gKChkYlZhbCAtIE1JTl9EQl9MRVZFTCkgLyAtTUlOX0RCX0xFVkVMKSAqIGg7XHJcbiAgLy9cclxuICAvLyAgIGcubGluZVRvKHhjLCBoIC0gcFZhbCk7XHJcbiAgLy8gICBnLmNsb3NlUGF0aCgpO1xyXG4gIC8vICAgZy5zdHJva2UoKTtcclxuICAvL1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3TGV2ZWxMaW5lcyhnOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHg6IG51bWJlciwgaDogbnVtYmVyLCBkYlZhbHM6IEFycmF5PG51bWJlcj4pIHtcclxuICAgIC8vdHJhbnNsYXRlIHRvIHZpZXdwb3J0XHJcbiAgICBsZXQgeGMgPSB4IC0gdGhpcy5jZS5zY3JvbGxMZWZ0O1xyXG4gICAgdGhpcy5kcmF3TGV2ZWxCYWNrZ3JvdW5kKGcseGMsaCk7XHJcblxyXG4gICAgbGV0IGNoSCA9IE1hdGguZmxvb3IoaCAvIGRiVmFscy5sZW5ndGgpO1xyXG4gICAgZy5saW5lV2lkdGggPSBMSU5FX1dJRFRIO1xyXG4gICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGRiVmFscy5sZW5ndGg7IGNoKyspIHtcclxuICAgICAgbGV0IGRiVmFsID0gZGJWYWxzW2NoXTtcclxuXHJcbiAgICAgIGxldCB5ID0gTWF0aC5mbG9vcihjaCAqIGNoSCk7XHJcbiAgICAgIGlmIChkYlZhbCA+PSB0aGlzLndhcm5EQkxldmVsKSB7XHJcbiAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgICAgIH0gZWxzZSBpZihkYlZhbCA8IENPTlNJREVSRURfU0lMRU5DRV9EQl9MRVZFTCkge1xyXG4gICAgICAgIGcuc3Ryb2tlU3R5bGU9J2dyZXknO1xyXG4gICAgICAgIGcuZmlsbFN0eWxlPSdncmV5J1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJyMwMGM4NTMnO1xyXG4gICAgICAgICAgZy5maWxsU3R5bGUgPSAnIzAwYzg1MydcclxuICAgICAgfVxyXG4gICAgICBnLmJlZ2luUGF0aCgpO1xyXG4gICAgICBnLm1vdmVUbyh4YywgeSArIGNoSCk7XHJcbiAgICAgIGcubGluZVRvKHhjLCB5ICsgY2hIIC0gTEVWRUxfSU5ESUNBVE9SX0hFSUdIVCk7XHJcbiAgICAgIGxldCBwblZhbD0oKGRiVmFsIC0gTUlOX0RCX0xFVkVMKSAvIC1NSU5fREJfTEVWRUwpO1xyXG4gICAgICBsZXQgbHZsSW5kaWNhdG9yU3BhY2U9TEVWRUxfSU5ESUNBVE9SX0hFSUdIVCtMSU5FX0RJU1RBTkNFO1xyXG4gICAgICBsZXQgbGV2ZWxIPWNoSC1sdmxJbmRpY2F0b3JTcGFjZTtcclxuICAgICAgbGV0IHBWYWwgPSBwblZhbCAqIGxldmVsSDtcclxuICAgICAgaWYocFZhbD5sZXZlbEgtMSl7XHJcbiAgICAgICAgcFZhbD1sZXZlbEgtMVxyXG4gICAgICB9ZWxzZSBpZihwVmFsPDApe1xyXG4gICAgICAgIHBWYWw9MFxyXG4gICAgICB9XHJcbiAgICAgIGcubW92ZVRvKHhjLCB5ICsgY2hIIC0gbHZsSW5kaWNhdG9yU3BhY2UgKTtcclxuICAgICAgZy5saW5lVG8oeGMsIHkgKyBjaEggLSBsdmxJbmRpY2F0b3JTcGFjZSAtIHBWYWwpO1xyXG4gICAgICBnLmNsb3NlUGF0aCgpO1xyXG4gICAgICBnLnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3UHVzaFZhbHVlKHg6IG51bWJlciwgZGJWYWxzOiBBcnJheTxudW1iZXI+KSB7XHJcblxyXG4gICAgaWYgKHRoaXMubGl2ZUxldmVsQ2FudmFzKSB7XHJcbiAgICAgIGxldCBoID0gdGhpcy5saXZlTGV2ZWxDYW52YXMuaGVpZ2h0O1xyXG4gICAgICBsZXQgZyA9IHRoaXMubGl2ZUxldmVsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgaWYgKGcpIHtcclxuICAgICAgICB0aGlzLmRyYXdMZXZlbExpbmVzKGcsIHgsIGgsIGRiVmFscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgIGRyYXdBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5saXZlTGV2ZWxDYW52YXMpIHtcclxuICAgICAgbGV0IHcgPSB0aGlzLmxpdmVMZXZlbENhbnZhcy53aWR0aDtcclxuICAgICAgbGV0IGggPSB0aGlzLmxpdmVMZXZlbENhbnZhcy5oZWlnaHQ7XHJcbiAgICAgIGxldCBnID0gdGhpcy5saXZlTGV2ZWxDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICBpZiAoZykge1xyXG4gICAgICAgIC8vIGNsZWFyIGNhbnZhc1xyXG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ2dyZXknO1xyXG4gICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgdywgaCk7XHJcblxyXG4gICAgICAgIGcubGluZVdpZHRoID0gTElORV9XSURUSDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGJWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgLy8gZHJhdyBvbmx5IHZpZXdwb3J0IHBhcnQ6XHJcblxyXG4gICAgICAgICAgLy8gZHJhdyBmcm9tIHgxIHRvIHgyXHJcbiAgICAgICAgICBsZXQgeDEgPSB0aGlzLmNlLnNjcm9sbExlZnQ7XHJcbiAgICAgICAgICBsZXQgeDIgPSB4MSArIHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhpcyBsZXZlbCB2YWx1ZXM6XHJcbiAgICAgICAgICBsZXQgaTEgPSBNYXRoLmZsb29yKHgxIC8gdGhpcy5waXhlbHNQZXJWYWx1ZSk7XHJcbiAgICAgICAgICBsZXQgaTIgPSBNYXRoLmNlaWwoeDIgL3RoaXMucGl4ZWxzUGVyVmFsdWUpO1xyXG4gICAgICAgICAgLy8gc29tZSB2YWx1ZXMgYXJvdW5kXHJcbiAgICAgICAgICBpMSAtPSAyO1xyXG4gICAgICAgICAgaTIgKz0gMjtcclxuICAgICAgICAgIC8vIGxpbWl0c1xyXG4gICAgICAgICAgaWYgKGkxIDwgMCkge1xyXG4gICAgICAgICAgICBpMSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaTIgPiB0aGlzLmRiVmFsdWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpMiA9IHRoaXMuZGJWYWx1ZXMubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBjPTA7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gaTE7IGkgPCBpMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHggPSBpICogdGhpcy5waXhlbHNQZXJWYWx1ZTtcclxuICAgICAgICAgICAgICBsZXQgZGJWYWxzID0gdGhpcy5kYlZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICBpZiAoZGJWYWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xldmVsTGluZXMoZywgeCwgaCwgZGJWYWxzKTtcclxuICAgICAgICAgICAgICAgICAgYysrO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2UgaWYodGhpcy5fc3RhdGUhPT1TdGF0ZS5SRUFEWSl7XHJcbiAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3doaXRlJztcclxuICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcclxuICAgICAgICAgIGcuZm9udCA9ICcyMHB4IHNhbnMtc2VyaWYnO1xyXG5cclxuICAgICAgICAgIGxldCBzdGF0ZVR4dD0nJztcclxuXHJcbiAgICAgICAgICBpZih0aGlzLl9zdGF0ZT09PVN0YXRlLkxPQURJTkcpe1xyXG4gICAgICAgICAgICBzdGF0ZVR4dD1cIkxvYWRpbmcuLi5cIjtcclxuICAgICAgICAgIH1lbHNlIGlmKHRoaXMuX3N0YXRlPT09U3RhdGUuUkVOREVSSU5HKXtcclxuICAgICAgICAgICAgc3RhdGVUeHQ9XCJSZW5kZXJpbmcuLi5cIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGcuZmlsbFRleHQoc3RhdGVUeHQsIDEwLCAyNSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZnJhbWVzUGVyUGl4ZWwoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBsZXQgZnBwOm51bWJlcnxudWxsPW51bGw7XHJcbiAgICAvLyBvbmUgYnVmZmVyXHJcbiAgICBpZiAodGhpcy5fc3RhdGljTGV2ZWxJbmZvcykge1xyXG4gICAgICBsZXQgZnJhbWVzUGVyQnVmZmVyID0gdGhpcy5fc3RhdGljTGV2ZWxJbmZvcy5mcmFtZXNQZXJCdWZmZXIoKTtcclxuICAgICAgZnBwPWZyYW1lc1BlckJ1ZmZlciAvIHRoaXMucGl4ZWxzUGVyVmFsdWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYodGhpcy5kYlZhbHVlcyAmJiB0aGlzLmRiVmFsdWVzLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgZnBwPXRoaXMuX3N0cmVhbWluZ0ZyYW1lTGVuZ3RoIC8gKHRoaXMuZGJWYWx1ZXMubGVuZ3RoKnRoaXMucGl4ZWxzUGVyVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnBwO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZHJhd1BsYXlQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLm1hcmtlckNhbnZhcykge1xyXG4gICAgICBsZXQgdyA9IHRoaXMubWFya2VyQ2FudmFzLndpZHRoO1xyXG4gICAgICBsZXQgaCA9IHRoaXMubWFya2VyQ2FudmFzLmhlaWdodDtcclxuICAgICAgbGV0IGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgbGV0IGZyYW1lc1BlclBpeGVsID0gdGhpcy5mcmFtZXNQZXJQaXhlbCgpO1xyXG4gICAgICAgIGlmIChmcmFtZXNQZXJQaXhlbCAmJiB0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbikge1xyXG4gICAgICAgICAgbGV0IHggPSB0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbiAvIGZyYW1lc1BlclBpeGVsO1xyXG5cclxuICAgICAgICAgIC8vIEdldCBwb3NpdGlvbiBpbiB2aWV3cG9ydFxyXG4gICAgICAgICAgbGV0IHhjID0geCAtIHRoaXMuY2Uuc2Nyb2xsTGVmdDtcclxuICAgICAgICAgIC8vIE9ubHkgZHJhdyBpZiBpbnNpZGUgbWFya2VyICh2aWV3cG9ydCkgY2FudmFzXHJcbiAgICAgICAgICBpZih4Yz49MCAmJiB4Yzw9dykge1xyXG4gICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgICAgICAgICAgIGcubGluZVdpZHRoID0gTElORV9XSURUSDtcclxuICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgLy8gcGFpbnQgb3ZlciBhbGwgY2hhbm5lbHNcclxuICAgICAgICAgICAgZy5tb3ZlVG8oeGMsIDApO1xyXG4gICAgICAgICAgICBnLmxpbmVUbyh4YywgaCk7XHJcbiAgICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGcuc3Ryb2tlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2xpdmVsZXZlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1DLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQTs7QUFHckgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFlBQVksR0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFDLENBQUMsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDLE1BQU0sQ0FBTixJQUFZLEtBQStCO0FBQTNDLFdBQVksS0FBSztJQUFFLHVDQUFPLENBQUE7SUFBQywyQ0FBUyxDQUFBO0lBQUMsbUNBQUssQ0FBQTtBQUFBLENBQUMsRUFBL0IsS0FBSyxLQUFMLEtBQUssUUFBMEI7QUFxQzNDLE1BQU0sT0FBTyxRQUFRO0lBb0JuQixZQUFvQixHQUFlLEVBQVUsaUJBQW9DO1FBQTdELFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVnpFLG1CQUFjLEdBQVEsYUFBYSxHQUFDLFVBQVUsQ0FBQztRQUN2RCxjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ2pCLG1C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SUFFSCxDQUFDOzhHQXhXVSxRQUFRO2tHQUFSLFFBQVEsc2xCQWhDVDs7Ozs7R0FLVDs7MkZBMkJVLFFBQVE7a0JBbkNwQixTQUFTOytCQUVFLGdCQUFnQixZQUNoQjs7Ozs7R0FLVDsrR0E2QjZDLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVILGtCQUFrQjtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVNLGVBQWU7c0JBQTNELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE4QjNDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUI5QixhQUFhO3NCQURoQixLQUFLO2dCQVVGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFlRixLQUFLO3NCQURSLEtBQUs7Z0JBZ0JOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxyXG5pbXBvcnQge0xldmVsSW5mbywgTGV2ZWxJbmZvcywgTGV2ZWxMaXN0ZW5lcn0gZnJvbSBcIi4uL2RzcC9sZXZlbF9tZWFzdXJlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9XQVJOX0RCX0xFVkVMID0gLTI7XHJcbmV4cG9ydCBjb25zdCBNSU5fREJfTEVWRUwgPSAtNjAuMDtcclxuZXhwb3J0IGNvbnN0IENPTlNJREVSRURfU0lMRU5DRV9EQl9MRVZFTCA9IE1JTl9EQl9MRVZFTCoyO1xyXG5leHBvcnQgY29uc3QgTElORV9XSURUSCA9IDI7XHJcbmV4cG9ydCBjb25zdCBMSU5FX0RJU1RBTkNFID0gMjtcclxuZXhwb3J0IGNvbnN0IExFVkVMX0lORElDQVRPUl9IRUlHSFQ9MztcclxuXHJcbmV4cG9ydCBjb25zdCBPVkVSRkxPV19USFJFU0hPTEQgPSAwLjI1O1xyXG5leHBvcnQgY29uc3QgT1ZFUkZMT1dfSU5DUl9GQUNUT1IgPSAwLjU7XHJcblxyXG5leHBvcnQgZW51bSBTdGF0ZSB7TE9BRElORyxSRU5ERVJJTkcsUkVBRFl9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHJcbiAgc2VsZWN0b3I6ICdhdWRpby1sZXZlbGJhcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgI3ZpcnR1YWxDYW52YXM+XHJcbiAgICAgIDxjYW52YXMgI2xldmVsYmFyPjwvY2FudmFzPlxyXG4gICAgICA8Y2FudmFzICNtYXJrZXJDYW52YXM+PC9jYW52YXM+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcblxyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiBkYXJrZ3JheTtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gIH1gLCBgZGl2IHtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAvKnBvc2l0aW9uOiBhYnNvbHV0ZTsqL1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB9YCwgYGNhbnZhcyB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGV2ZWxCYXIgaW1wbGVtZW50cyBMZXZlbExpc3RlbmVyLEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCd2aXJ0dWFsQ2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgdmlydHVhbENhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgdmlydHVhbENhbnZhcyE6IEhUTUxEaXZFbGVtZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2xldmVsYmFyJywgeyBzdGF0aWM6IHRydWUgfSkgbGl2ZUxldmVsQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBsaXZlTGV2ZWxDYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdtYXJrZXJDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtYXJrZXJDYW52YXNSZWYhOiBFbGVtZW50UmVmO1xyXG4gIG1hcmtlckNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIGNlITogSFRNTERpdkVsZW1lbnQ7XHJcbiAgZGJWYWx1ZXM6IEFycmF5PEFycmF5PG51bWJlcj4+O1xyXG4gIHByaXZhdGUgcGl4ZWxzUGVyVmFsdWU6bnVtYmVyPUxJTkVfRElTVEFOQ0UrTElORV9XSURUSDtcclxuICBwZWFrRGJMdmwgPSBNSU5fREJfTEVWRUw7XHJcbiAgcHJpdmF0ZSBfc3RyZWFtaW5nTW9kZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N0cmVhbWluZ0ZyYW1lTGVuZ3RoPTA7XHJcbiAgcHJpdmF0ZSBfc3RhdGljTGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX3BsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgX3N0YXRlOlN0YXRlfG51bGw9bnVsbDtcclxuXHJcbiAgd2FybkRCTGV2ZWwgPSBERUZBVUxUX1dBUk5fREJfTEVWRUw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5kYlZhbHVlcyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZSA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmxpdmVMZXZlbENhbnZhcyA9IHRoaXMubGl2ZUxldmVsQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcyA9IHRoaXMubWFya2VyQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcy5zdHlsZS56SW5kZXggPSAnNCc7XHJcbiAgICB0aGlzLnZpcnR1YWxDYW52YXMgPSB0aGlzLnZpcnR1YWxDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICB0aGlzLmRyYXdBbGwoKTtcclxuICB9XHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKVxyXG4gIG9uU2Nyb2xsKHNlOiBFdmVudCkge1xyXG4gICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLmRyYXdBbGwoKTtcclxuICAgICAgICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlld3BvcnRQb3NpdGlvbigpe1xyXG4gICAgLy8gTW92ZSBjYW52YXNlcyB0byB2aXNpYmxlIHZpZXdwb3J0IHBvc2l0aW9uXHJcbiAgICBsZXQgdmlld1BvcnRTdHlsZUxlZnQ9dGhpcy5jZS5zY3JvbGxMZWZ0ICsgJ3B4JztcclxuICAgIHRoaXMubGl2ZUxldmVsQ2FudmFzLnN0eWxlLmxlZnQgPSB2aWV3UG9ydFN0eWxlTGVmdDtcclxuICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLmxlZnQgPSB2aWV3UG9ydFN0eWxlTGVmdDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHN0cmVhbWluZ01vZGUoc3RyZWFtaW5nTW9kZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuX3N0cmVhbWluZ01vZGUgIT09IHN0cmVhbWluZ01vZGUpIHtcclxuICAgICAgdGhpcy5fc3RyZWFtaW5nTW9kZSA9IHN0cmVhbWluZ01vZGU7XHJcbiAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgdGhpcy5sYXlvdXRTdGF0aWMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc3BsYXlMZXZlbEluZm9zKGxldmVsSW5mb3M6IExldmVsSW5mb3MgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAobGV2ZWxJbmZvcykge1xyXG4gICAgICB0aGlzLl9zdGF0aWNMZXZlbEluZm9zID0gbGV2ZWxJbmZvcztcclxuICAgICAgdGhpcy5kYlZhbHVlcyA9IGxldmVsSW5mb3MuYnVmZmVyTGV2ZWxJbmZvcy5tYXAoKGxpKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGxpLnBvd2VyTGV2ZWxzREIoKVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3N0YXRpY0xldmVsSW5mb3MgPW51bGw7XHJcbiAgICAgICAgdGhpcy5kYlZhbHVlcyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+PigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXlvdXRTdGF0aWMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHN0YXRlKHN0YXRlOlN0YXRlKXtcclxuICAgdGhpcy5fc3RhdGU9c3RhdGU7XHJcbiAgIHRoaXMubGF5b3V0U3RhdGljKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgY2hhbm5lbENvdW50KGNoYW5uZWxDb3VudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBzZXQgcGxheUZyYW1lUG9zaXRpb24ocGxheUZyYW1lUG9zaXRpb246IG51bWJlcikge1xyXG4gICAgdGhpcy5fcGxheUZyYW1lUG9zaXRpb24gPSBwbGF5RnJhbWVQb3NpdGlvbjtcclxuICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KSB7XHJcblxyXG4gICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgbGF5b3V0KCkge1xyXG5cclxuICAgIC8vIHNldCBDYW52YXMgc2l6ZSB0byB2aWV3cG9ydCBzaXplXHJcbiAgICB0aGlzLmxpdmVMZXZlbENhbnZhcy53aWR0aCA9IHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmxpdmVMZXZlbENhbnZhcy5oZWlnaHQgPSB0aGlzLmNlLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcy53aWR0aCA9IHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcy5oZWlnaHQgPSB0aGlzLmNlLm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAvLyBhbmQgbW92ZSB0byB2aWV3cG9ydCBwb3NpdGlvblxyXG4gICAgdGhpcy51cGRhdGVWaWV3cG9ydFBvc2l0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5kcmF3QWxsKCk7XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZShsZXZlbEluZm9zOiBMZXZlbEluZm8pIHtcclxuICAgIGlmICh0aGlzLl9zdHJlYW1pbmdNb2RlKSB7XHJcbiAgICAgIGxldCBkYlZhbHMgPSBsZXZlbEluZm9zLnBvd2VyTGV2ZWxzREIoKTtcclxuICAgICAgbGV0IHBlYWtEQlZhbCA9IGxldmVsSW5mb3MucG93ZXJMZXZlbERCKCk7XHJcbiAgICAgIHRoaXMuX3N0cmVhbWluZ0ZyYW1lTGVuZ3RoKz1sZXZlbEluZm9zLmZyYW1lTGVuZ3RoO1xyXG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJVcGRhdGUgbGV2ZWwgaW5mbyBmcmFtZUxlbmd0aDogXCIrbGV2ZWxJbmZvcy5mcmFtZUxlbmd0aCtcIiwgdG90YWwgc3RyZWFtaW5nIGZyYW1lIGxlbmd0aDogXCIrdGhpcy5fc3RyZWFtaW5nRnJhbWVMZW5ndGgpO1xyXG4gICAgICBpZiAodGhpcy5wZWFrRGJMdmwgPCBwZWFrREJWYWwpIHtcclxuICAgICAgICB0aGlzLnBlYWtEYkx2bCA9IHBlYWtEQlZhbDtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRiVmFsdWVzLnB1c2goZGJWYWxzKTtcclxuICAgICAgbGV0IGkgPSB0aGlzLmRiVmFsdWVzLmxlbmd0aCAtIDE7XHJcbiAgICAgIGxldCB4ID0gaSAqIHRoaXMucGl4ZWxzUGVyVmFsdWU7XHJcbiAgICAgIHRoaXMuZHJhd1B1c2hWYWx1ZSh4LCBkYlZhbHMpO1xyXG4gICAgICB0aGlzLmNoZWNrV2lkdGgoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0cmVhbUZpbmlzaGVkKCkge1xyXG4gICAgdGhpcy5sYXlvdXRTdGF0aWMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGF5b3V0U3RhdGljKCkge1xyXG5cclxuICAgIGxldCByZXF1aXJlZFdpZHRoID0gTWF0aC5yb3VuZCh0aGlzLmRiVmFsdWVzLmxlbmd0aCAqIHRoaXMucGl4ZWxzUGVyVmFsdWUpO1xyXG4gICAgaWYgKHRoaXMudmlydHVhbENhbnZhcyAmJiB0aGlzLmNlKSB7XHJcblxyXG4gICAgICB0aGlzLnZpcnR1YWxDYW52YXMuc3R5bGUud2lkdGggPSByZXF1aXJlZFdpZHRoICsgJ3B4JztcclxuICAgICAgdGhpcy5jZS5zY3JvbGxMZWZ0ID0gcmVxdWlyZWRXaWR0aCAtIHRoaXMuY2Uub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMubGF5b3V0KCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1dpZHRoKCkge1xyXG4gICAgbGV0IHJlcXVpcmVkV2lkdGggPSB0aGlzLmRiVmFsdWVzLmxlbmd0aCp0aGlzLnBpeGVsc1BlclZhbHVlO1xyXG4gICAgaWYgKHRoaXMudmlydHVhbENhbnZhcy5vZmZzZXRXaWR0aCAtIHJlcXVpcmVkV2lkdGggPCB0aGlzLmNlLm9mZnNldFdpZHRoICogT1ZFUkZMT1dfVEhSRVNIT0xEKSB7XHJcbiAgICAgIGxldCBuZXdXaWR0aCA9IE1hdGguZmxvb3IodGhpcy52aXJ0dWFsQ2FudmFzLm9mZnNldFdpZHRoICsgKHRoaXMuY2Uub2Zmc2V0V2lkdGggKiBPVkVSRkxPV19JTkNSX0ZBQ1RPUikpO1xyXG4gICAgICB0aGlzLnZpcnR1YWxDYW52YXMuc3R5bGUud2lkdGggPSBuZXdXaWR0aCArICdweCc7XHJcbiAgICAgIHRoaXMuY2Uuc2Nyb2xsTGVmdCA9IG5ld1dpZHRoIC0gdGhpcy5jZS5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAvLyBkbyBub3QgY2FsbCBsYXlvdXQgaGVyZSBpdCBpcyB0cmlnZ2VyZWQgYnkgdGhlIHNjcm9sbCBldmVudFxyXG4gICAgICAvL3RoaXMubGF5b3V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldChzdGF0PWZhbHNlKSB7XHJcbiAgICB0aGlzLnBlYWtEYkx2bCA9IE1JTl9EQl9MRVZFTDtcclxuICAgIHRoaXMuZGJWYWx1ZXMgPSBuZXcgQXJyYXk8QXJyYXk8bnVtYmVyPj4oKTtcclxuICAgIHRoaXMuX3N0cmVhbWluZ0ZyYW1lTGVuZ3RoPTA7XHJcbiAgICBpZihzdGF0KXtcclxuICAgICAgdGhpcy5sYXlvdXRTdGF0aWMoKTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgdGhpcy5sYXlvdXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZHJhd0FsbCgpO1xyXG4gICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBkcmF3TGV2ZWxCYWNrZ3JvdW5kKGc6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgeDogbnVtYmVyLCBoOiBudW1iZXIpe1xyXG4gICAgZy5zdHJva2VTdHlsZSA9ICdibGFjayc7XHJcbiAgICBnLmZpbGxTdHlsZSA9ICdibGFjayc7XHJcbiAgICBnLmZpbGxSZWN0KHgsMCx0aGlzLnBpeGVsc1BlclZhbHVlLGgpXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGRyYXdMZXZlbExpbmUoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4OiBudW1iZXIsIGg6IG51bWJlciwgZGJWYWw6IG51bWJlcikge1xyXG4gIC8vICAgLy90cmFuc2xhdGUgdG8gdmlld3BvcnRcclxuICAvLyAgIGxldCB4YyA9IHggLSB0aGlzLmNlLnNjcm9sbExlZnQ7XHJcbiAgLy9cclxuICAvLyAgIHRoaXMuZHJhd0xldmVsQmFja2dyb3VuZChnLHhjLGgpO1xyXG4gIC8vICAgZy5saW5lV2lkdGggPSBMSU5FX1dJRFRIO1xyXG4gIC8vICAgaWYgKGRiVmFsID49IHRoaXMud2FybkRCTGV2ZWwpIHtcclxuICAvLyAgICAgZy5zdHJva2VTdHlsZSA9ICdyZWQnO1xyXG4gIC8vICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gIC8vXHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICBnLnN0cm9rZVN0eWxlID0gJyMwMGM4NTMnO1xyXG4gIC8vICAgICBnLmZpbGxTdHlsZSA9ICcjMDBjODUzJztcclxuICAvLyAgIH1cclxuICAvLyAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgLy8gICBnLm1vdmVUbyh4YywgaCk7XHJcbiAgLy8gICBsZXQgcFZhbCA9ICgoZGJWYWwgLSBNSU5fREJfTEVWRUwpIC8gLU1JTl9EQl9MRVZFTCkgKiBoO1xyXG4gIC8vXHJcbiAgLy8gICBnLmxpbmVUbyh4YywgaCAtIHBWYWwpO1xyXG4gIC8vICAgZy5jbG9zZVBhdGgoKTtcclxuICAvLyAgIGcuc3Ryb2tlKCk7XHJcbiAgLy9cclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgZHJhd0xldmVsTGluZXMoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4OiBudW1iZXIsIGg6IG51bWJlciwgZGJWYWxzOiBBcnJheTxudW1iZXI+KSB7XHJcbiAgICAvL3RyYW5zbGF0ZSB0byB2aWV3cG9ydFxyXG4gICAgbGV0IHhjID0geCAtIHRoaXMuY2Uuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuZHJhd0xldmVsQmFja2dyb3VuZChnLHhjLGgpO1xyXG5cclxuICAgIGxldCBjaEggPSBNYXRoLmZsb29yKGggLyBkYlZhbHMubGVuZ3RoKTtcclxuICAgIGcubGluZVdpZHRoID0gTElORV9XSURUSDtcclxuICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBkYlZhbHMubGVuZ3RoOyBjaCsrKSB7XHJcbiAgICAgIGxldCBkYlZhbCA9IGRiVmFsc1tjaF07XHJcblxyXG4gICAgICBsZXQgeSA9IE1hdGguZmxvb3IoY2ggKiBjaEgpO1xyXG4gICAgICBpZiAoZGJWYWwgPj0gdGhpcy53YXJuREJMZXZlbCkge1xyXG4gICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAncmVkJztcclxuICAgICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICB9IGVsc2UgaWYoZGJWYWwgPCBDT05TSURFUkVEX1NJTEVOQ0VfREJfTEVWRUwpIHtcclxuICAgICAgICBnLnN0cm9rZVN0eWxlPSdncmV5JztcclxuICAgICAgICBnLmZpbGxTdHlsZT0nZ3JleSdcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICcjMDBjODUzJztcclxuICAgICAgICAgIGcuZmlsbFN0eWxlID0gJyMwMGM4NTMnXHJcbiAgICAgIH1cclxuICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgZy5tb3ZlVG8oeGMsIHkgKyBjaEgpO1xyXG4gICAgICBnLmxpbmVUbyh4YywgeSArIGNoSCAtIExFVkVMX0lORElDQVRPUl9IRUlHSFQpO1xyXG4gICAgICBsZXQgcG5WYWw9KChkYlZhbCAtIE1JTl9EQl9MRVZFTCkgLyAtTUlOX0RCX0xFVkVMKTtcclxuICAgICAgbGV0IGx2bEluZGljYXRvclNwYWNlPUxFVkVMX0lORElDQVRPUl9IRUlHSFQrTElORV9ESVNUQU5DRTtcclxuICAgICAgbGV0IGxldmVsSD1jaEgtbHZsSW5kaWNhdG9yU3BhY2U7XHJcbiAgICAgIGxldCBwVmFsID0gcG5WYWwgKiBsZXZlbEg7XHJcbiAgICAgIGlmKHBWYWw+bGV2ZWxILTEpe1xyXG4gICAgICAgIHBWYWw9bGV2ZWxILTFcclxuICAgICAgfWVsc2UgaWYocFZhbDwwKXtcclxuICAgICAgICBwVmFsPTBcclxuICAgICAgfVxyXG4gICAgICBnLm1vdmVUbyh4YywgeSArIGNoSCAtIGx2bEluZGljYXRvclNwYWNlICk7XHJcbiAgICAgIGcubGluZVRvKHhjLCB5ICsgY2hIIC0gbHZsSW5kaWNhdG9yU3BhY2UgLSBwVmFsKTtcclxuICAgICAgZy5jbG9zZVBhdGgoKTtcclxuICAgICAgZy5zdHJva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZHJhd1B1c2hWYWx1ZSh4OiBudW1iZXIsIGRiVmFsczogQXJyYXk8bnVtYmVyPikge1xyXG5cclxuICAgIGlmICh0aGlzLmxpdmVMZXZlbENhbnZhcykge1xyXG4gICAgICBsZXQgaCA9IHRoaXMubGl2ZUxldmVsQ2FudmFzLmhlaWdodDtcclxuICAgICAgbGV0IGcgPSB0aGlzLmxpdmVMZXZlbENhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgdGhpcy5kcmF3TGV2ZWxMaW5lcyhnLCB4LCBoLCBkYlZhbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlICBkcmF3QWxsKCkge1xyXG4gICAgaWYgKHRoaXMubGl2ZUxldmVsQ2FudmFzKSB7XHJcbiAgICAgIGxldCB3ID0gdGhpcy5saXZlTGV2ZWxDYW52YXMud2lkdGg7XHJcbiAgICAgIGxldCBoID0gdGhpcy5saXZlTGV2ZWxDYW52YXMuaGVpZ2h0O1xyXG4gICAgICBsZXQgZyA9IHRoaXMubGl2ZUxldmVsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgaWYgKGcpIHtcclxuICAgICAgICAvLyBjbGVhciBjYW52YXNcclxuICAgICAgICBnLmZpbGxTdHlsZSA9ICdncmV5JztcclxuICAgICAgICBnLmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xyXG5cclxuICAgICAgICBnLmxpbmVXaWR0aCA9IExJTkVfV0lEVEg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRiVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIC8vIGRyYXcgb25seSB2aWV3cG9ydCBwYXJ0OlxyXG5cclxuICAgICAgICAgIC8vIGRyYXcgZnJvbSB4MSB0byB4MlxyXG4gICAgICAgICAgbGV0IHgxID0gdGhpcy5jZS5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgbGV0IHgyID0geDEgKyB0aGlzLmNlLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgIC8vIGNvcnJlc3BvbmRzIHRvIHRoaXMgbGV2ZWwgdmFsdWVzOlxyXG4gICAgICAgICAgbGV0IGkxID0gTWF0aC5mbG9vcih4MSAvIHRoaXMucGl4ZWxzUGVyVmFsdWUpO1xyXG4gICAgICAgICAgbGV0IGkyID0gTWF0aC5jZWlsKHgyIC90aGlzLnBpeGVsc1BlclZhbHVlKTtcclxuICAgICAgICAgIC8vIHNvbWUgdmFsdWVzIGFyb3VuZFxyXG4gICAgICAgICAgaTEgLT0gMjtcclxuICAgICAgICAgIGkyICs9IDI7XHJcbiAgICAgICAgICAvLyBsaW1pdHNcclxuICAgICAgICAgIGlmIChpMSA8IDApIHtcclxuICAgICAgICAgICAgaTEgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGkyID4gdGhpcy5kYlZhbHVlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaTIgPSB0aGlzLmRiVmFsdWVzLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgYz0wO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IGkxOyBpIDwgaTI7IGkrKykge1xyXG4gICAgICAgICAgICAgIGxldCB4ID0gaSAqIHRoaXMucGl4ZWxzUGVyVmFsdWU7XHJcbiAgICAgICAgICAgICAgbGV0IGRiVmFscyA9IHRoaXMuZGJWYWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgaWYgKGRiVmFscykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMZXZlbExpbmVzKGcsIHgsIGgsIGRiVmFscyk7XHJcbiAgICAgICAgICAgICAgICAgIGMrKztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuX3N0YXRlIT09U3RhdGUuUkVBRFkpe1xyXG4gICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7XHJcbiAgICAgICAgICBnLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XHJcbiAgICAgICAgICBnLmZvbnQgPSAnMjBweCBzYW5zLXNlcmlmJztcclxuXHJcbiAgICAgICAgICBsZXQgc3RhdGVUeHQ9Jyc7XHJcblxyXG4gICAgICAgICAgaWYodGhpcy5fc3RhdGU9PT1TdGF0ZS5MT0FESU5HKXtcclxuICAgICAgICAgICAgc3RhdGVUeHQ9XCJMb2FkaW5nLi4uXCI7XHJcbiAgICAgICAgICB9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PVN0YXRlLlJFTkRFUklORyl7XHJcbiAgICAgICAgICAgIHN0YXRlVHh0PVwiUmVuZGVyaW5nLi4uXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBnLmZpbGxUZXh0KHN0YXRlVHh0LCAxMCwgMjUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGZyYW1lc1BlclBpeGVsKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgbGV0IGZwcDpudW1iZXJ8bnVsbD1udWxsO1xyXG4gICAgLy8gb25lIGJ1ZmZlclxyXG4gICAgaWYgKHRoaXMuX3N0YXRpY0xldmVsSW5mb3MpIHtcclxuICAgICAgbGV0IGZyYW1lc1BlckJ1ZmZlciA9IHRoaXMuX3N0YXRpY0xldmVsSW5mb3MuZnJhbWVzUGVyQnVmZmVyKCk7XHJcbiAgICAgIGZwcD1mcmFtZXNQZXJCdWZmZXIgLyB0aGlzLnBpeGVsc1BlclZhbHVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmKHRoaXMuZGJWYWx1ZXMgJiYgdGhpcy5kYlZhbHVlcy5sZW5ndGg+MCkge1xyXG4gICAgICAgIGZwcD10aGlzLl9zdHJlYW1pbmdGcmFtZUxlbmd0aCAvICh0aGlzLmRiVmFsdWVzLmxlbmd0aCp0aGlzLnBpeGVsc1BlclZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZwcDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGRyYXdQbGF5UG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5tYXJrZXJDYW52YXMpIHtcclxuICAgICAgbGV0IHcgPSB0aGlzLm1hcmtlckNhbnZhcy53aWR0aDtcclxuICAgICAgbGV0IGggPSB0aGlzLm1hcmtlckNhbnZhcy5oZWlnaHQ7XHJcbiAgICAgIGxldCBnID0gdGhpcy5tYXJrZXJDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICBpZiAoZykge1xyXG4gICAgICAgIGcuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICAgIGxldCBmcmFtZXNQZXJQaXhlbCA9IHRoaXMuZnJhbWVzUGVyUGl4ZWwoKTtcclxuICAgICAgICBpZiAoZnJhbWVzUGVyUGl4ZWwgJiYgdGhpcy5fcGxheUZyYW1lUG9zaXRpb24pIHtcclxuICAgICAgICAgIGxldCB4ID0gdGhpcy5fcGxheUZyYW1lUG9zaXRpb24gLyBmcmFtZXNQZXJQaXhlbDtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgcG9zaXRpb24gaW4gdmlld3BvcnRcclxuICAgICAgICAgIGxldCB4YyA9IHggLSB0aGlzLmNlLnNjcm9sbExlZnQ7XHJcbiAgICAgICAgICAvLyBPbmx5IGRyYXcgaWYgaW5zaWRlIG1hcmtlciAodmlld3BvcnQpIGNhbnZhc1xyXG4gICAgICAgICAgaWYoeGM+PTAgJiYgeGM8PXcpIHtcclxuICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAncmVkJztcclxuICAgICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgICAgICBnLmxpbmVXaWR0aCA9IExJTkVfV0lEVEg7XHJcbiAgICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIC8vIHBhaW50IG92ZXIgYWxsIGNoYW5uZWxzXHJcbiAgICAgICAgICAgIGcubW92ZVRvKHhjLCAwKTtcclxuICAgICAgICAgICAgZy5saW5lVG8oeGMsIGgpO1xyXG4gICAgICAgICAgICBnLmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Component } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class ScrollPaneHorizontal {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ScrollPaneHorizontal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ScrollPaneHorizontal, selector: "scroll-pane-horizontal", ngImport: i0, template: '', isInline: true, styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }); }
|
|
6
6
|
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ScrollPaneHorizontal, decorators: [{
|
|
8
8
|
type: Component,
|
|
9
9
|
args: [{ selector: 'scroll-pane-horizontal', template: '', styles: [":host{width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n"] }]
|
|
10
10
|
}] });
|