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
|
@@ -164,4 +164,4 @@ export class IndexedDbAudioBufferSourceNode extends AudioSourceNode {
|
|
|
164
164
|
this.onended?.call(this);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGJfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BsYXliYWNrL2luZGRiX2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0NBQWdDLEVBQStCLE1BQU0saUJBQWlCLENBQUM7QUFDL0YsT0FBTyxFQUF1Qix5QkFBeUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsTUFBTSxPQUFPLDhCQUErQixTQUFRLGVBQWU7SUFZakUsWUFBWSxPQUFxQjtRQUUvQixLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFaakMsdUJBQWtCLEdBQUcsZUFBZSxDQUFDLDJCQUEyQixDQUFDO1FBQ2pFLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQix3QkFBbUIsR0FBQyxlQUFlLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDLENBQUUsa0ZBQWtGO1FBQzFKLHNCQUFpQixHQUEyQixJQUFJLENBQUM7UUFDakQsc0JBQWlCLEdBQW1DLElBQUksQ0FBQztRQUN6RCxhQUFRLEdBQXFCLElBQUksQ0FBQztRQUNsQyxZQUFPLEdBQUMsS0FBSyxDQUFDO1FBQ2QsaUJBQVksR0FBQyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFLdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFD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OlsiaW1wb3J0IHtBc3luY0VkaXRGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSwgQXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbX0gZnJvbSBcIi4uLy4uL2lvL3N0cmVhbVwiO1xyXG5pbXBvcnQge0luZGV4ZWREYkF1ZGlvQnVmZmVyLCBJbmRleGVkRGJBdWRpb0lucHV0U3RyZWFtfSBmcm9tIFwiLi4vaW5kZGJfYXVkaW9fYnVmZmVyXCI7XHJcbmltcG9ydCB7QXJyYXlBdWRpb0J1ZmZlclNvdXJjZU5vZGV9IGZyb20gXCIuL2FycmF5X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZVwiO1xyXG5pbXBvcnQge0VNUFRZLCBleHBhbmQsIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXVkaW9Tb3VyY2VOb2RlfSBmcm9tIFwiLi9hdWRpb19zb3VyY2Vfbm9kZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZSBleHRlbmRzIEF1ZGlvU291cmNlTm9kZSB7XHJcblxyXG4gIHByaXZhdGUgX2J1ZmZlckZpbGxTZWNvbmRzID0gQXVkaW9Tb3VyY2VOb2RlLkRFRkFVTFRfQlVGRkVSX0ZJTExfU0VDT05EUztcclxuICBwcml2YXRlIGJ1ZmZlckZpbGxGcmFtZXMgPSAwO1xyXG4gIHByaXZhdGUgX3N0cmVhbVJlYWRGcmFtZUxlbj1BdWRpb1NvdXJjZU5vZGUuREVGQVVMVF9TVFJFQU1fUkVBRF9GUkFNRV9MRU4gKiA4OyAgLy8gTXVjaCBvdmVyaGVhZCBmZXRjaGluZyBzbWFsbCBidWZmZXJzIGZyb20gaW5kZXhlZCBkYiwgdXNlIGxhcmdlciBidWZmZXIgKDgxOTIpLlxyXG4gIHByaXZhdGUgX2luZGRiQXVkaW9CdWZmZXI6SW5kZXhlZERiQXVkaW9CdWZmZXJ8bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgX2F1ZGlvSW5wdXRTdHJlYW06QXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbXxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfYWlzQnVmczpGbG9hdDMyQXJyYXlbXXxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlPWZhbHNlO1xyXG4gIHByaXZhdGUgX2VuZE9mU3RyZWFtPWZhbHNlO1xyXG4gIHByaXZhdGUgZmlsbGVkRnJhbWVzID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoY29udGV4dDogQXVkaW9Db250ZXh0KSB7XHJcblxyXG4gICAgc3VwZXIoY29udGV4dCwgJ2F1ZGlvLXNvdXJjZS13b3JrbGV0Jyk7XHJcbiAgICB0aGlzLmNoYW5uZWxDb3VudE1vZGUgPSAnZXhwbGljaXQnO1xyXG4gICAgdGhpcy5wb3J0Lm9ubWVzc2FnZSA9IChtc2dFdjogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChtc2dFdi5kYXRhKSB7XHJcbiAgICAgICAgbGV0IGV2VHlwZSA9IG1zZ0V2LmRhdGEuZXZlbnRUeXBlO1xyXG4gICAgICAgIGlmIChldlR5cGUpIHtcclxuICAgICAgICAgIGlmICgnYnVmZmVyTm90aWZpY2F0aW9uJyA9PT0gZXZUeXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsbGVkRnJhbWVzID0gbXNnRXYuZGF0YS5maWxsZWRGcmFtZXM7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLl9lbmRPZlN0cmVhbSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsbEJ1ZmZlck9icygpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCdlbmRlZCcgPT09IGV2VHlwZSkge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRkYiBhdWRpbyBzb3VyY2UgZW5kZWQgcGxheWJhY2suXCIpO1xyXG4gICAgICAgICAgICBsZXQgZHJhaW5UaW1lID0gMDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2luZGRiQXVkaW9CdWZmZXI/LnNhbXBsZVJhdGUpIHtcclxuICAgICAgICAgICAgICBkcmFpblRpbWUgPSBBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZS5RVUFOVFVNX0ZSQU1FX0xFTiAvIHRoaXMuX2luZGRiQXVkaW9CdWZmZXIuc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2xldCBkc3RBbnk6YW55PXRoaXMuY29udGV4dC5kZXN0aW5hdGlvbjtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdEZXN0aW5hdGlvbiBub2RlIHRhaWwtdGltZTogJytkc3RBbnlbJ3RhaWwtdGltZSddKTtcclxuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub25lbmRlZD8uY2FsbCh0aGlzKTtcclxuICAgICAgICAgICAgfSwgZHJhaW5UaW1lICogMTAwMCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsQnVmZmVyT2JzKGZyYW1lT2Zmc2V0PzpudW1iZXIpOk9ic2VydmFibGU8bnVtYmVyfG51bGw+IHtcclxuXHJcbiAgICAgIGxldCBvYnMgPSBuZXcgT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgICBpZihmcmFtZU9mZnNldCl7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcihcIlN0YXJ0aW5nIHBsYXliYWNrIGZyb20gcG9zaXRpb24gbm90IGVxdWFsIHplcm8gbm90IHN1cHBvcnRlZCB5ZXQuXCIpKTtcclxuICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICBsZXQgZmlsbGVkID0gdGhpcy5maWxsZWRGcmFtZXM7XHJcbiAgICAgICAgICBsZXQgYnVmTGVuID0gMDtcclxuICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0lucHV0U3RyZWFtICYmIHRoaXMuX2Fpc0J1ZnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fYXVkaW9JbnB1dFN0cmVhbS5yZWFkT2JzKHRoaXMuX2Fpc0J1ZnMpLnBpcGUoXHJcbiAgICAgICAgICAgICAgZXhwYW5kKChyZWFkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZWFkICYmIHRoaXMuX2Fpc0J1ZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdHJCdWZmZXJzID0gbmV3IEFycmF5PGFueT4odGhpcy5jaGFubmVsQ291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGFkQ2ggPSB0aGlzLl9haXNCdWZzW2NoXTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhZENoQ29weSA9IG5ldyBGbG9hdDMyQXJyYXkocmVhZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBidWZMZW4gPSBhZENoQ29weS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZihyZWFkPT09YWRDaC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRDaENvcHkuc2V0KGFkQ2gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IHNsaWNlKCkgZG9lcyBub3Qgd29yayBoZXJlLCBzaW5jZSBpdCByZXR1cm5zIGEgc2hhbGxvdyBjb3B5LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHJlYWQ7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZENoQ29weVtpXT1hZENoW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB0ckJ1ZmZlcnNbY2hdID0gYWRDaENvcHkuYnVmZmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgY21kOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaHM6IHRoaXMuY2hhbm5lbENvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiB0ckJ1ZmZlcnNcclxuICAgICAgICAgICAgICAgICAgICB9LCB0ckJ1ZmZlcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZCArPSByZWFkO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6ZmlsbEJ1ZmZlck9iczogU2VudCBcIityZWFkK1wiIGZyYW1lcyB0byBhdWRpbyBzb3VyY2Ugd29ya2xldC4gRmlsbGVkOiBcIitmaWxsZWQrXCIsIHRvIGZpbGw6IFwiK3RoaXMuYnVmZmVyRmlsbEZyYW1lcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0gJiYgZmlsbGVkIDwgdGhpcy5idWZmZXJGaWxsRnJhbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmZpbGxCdWZmZXJPYnM6IE5leHQgaW5kZGIgYXVkaW8gaW5wdXQgc3RyZWFtIHJlYWRPYnNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYXVkaW9JbnB1dFN0cmVhbS5yZWFkT2JzKHRoaXMuX2Fpc0J1ZnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJSZXR1cm4gRU1QVFlcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6ZmlsbEJ1ZmZlck9iczogUmV0dXJuIEVNUFRZIChyZWFkOiBcIityZWFkK1wiKVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmRPZlN0cmVhbT10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbWQ6ICdlbmRPZlN0cmVhbSdcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBvYnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGluZGRiQXVkaW9CdWZmZXIoKTogSW5kZXhlZERiQXVkaW9CdWZmZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyXHJcbiAgfVxyXG5cclxuICBzZXQgaW5kZGJBdWRpb0J1ZmZlcih2YWx1ZTogSW5kZXhlZERiQXVkaW9CdWZmZXIgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5faW5kZGJBdWRpb0J1ZmZlcj8uY2hhbm5lbENvdW50KSB7XHJcbiAgICAgIHRoaXMuY2hhbm5lbENvdW50ID0gdGhpcy5faW5kZGJBdWRpb0J1ZmZlcj8uY2hhbm5lbENvdW50O1xyXG4gICAgICB0aGlzLmJ1ZmZlckZpbGxGcmFtZXMgPSB0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUgKiB0aGlzLl9idWZmZXJGaWxsU2Vjb25kcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBidWZmZXJGaWxsU2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGJ1ZmZlckZpbGxTZWNvbmRzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzdGFydCh3aGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkLG9mZnNldD86IG51bWJlciB8IHVuZGVmaW5lZCxkdXJhdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKHdoZW4pIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXCJ3aGVuIHBhcmFtZXRlciBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBieSBJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY2xhc3NcIilcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5faW5kZGJBdWRpb0J1ZmZlcikge1xyXG4gICAgICBsZXQgYXJyQWlzPW5ldyBJbmRleGVkRGJBdWRpb0lucHV0U3RyZWFtKHRoaXMuX2luZGRiQXVkaW9CdWZmZXIpO1xyXG4gICAgICBpZihvZmZzZXQ9PT11bmRlZmluZWQgJiYgZHVyYXRpb249PT11bmRlZmluZWQpe1xyXG4gICAgICAgIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0gPSBhcnJBaXM7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxldCBvZmZzZXRGcmFtZXM9MDtcclxuICAgICAgICBsZXQgZHVyYXRpb25GcmFtZXM9dW5kZWZpbmVkO1xyXG4gICAgICAgIGlmKG9mZnNldCE9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgb2Zmc2V0RnJhbWVzPU1hdGguZmxvb3Iob2Zmc2V0ICogdGhpcy5faW5kZGJBdWRpb0J1ZmZlci5zYW1wbGVSYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZHVyYXRpb24hPT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgZHVyYXRpb25GcmFtZXM9TWF0aC5mbG9vcihkdXJhdGlvbiAqIHRoaXMuX2luZGRiQXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkNyZWF0ZSBBc3luY0VkaXRGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbTogb2Zmc2V0RnJhbWVzOlwiK29mZnNldEZyYW1lcytcIiwgZHVyYXRpb25GcmFtZXM6XCIrZHVyYXRpb25GcmFtZXMpO1xyXG4gICAgICAgIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW09bmV3IEFzeW5jRWRpdEZsb2F0MzJBcnJheUlucHV0U3RyZWFtKGFyckFpcyxvZmZzZXRGcmFtZXMsZHVyYXRpb25GcmFtZXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY2hzPXRoaXMuX2luZGRiQXVkaW9CdWZmZXIuY2hhbm5lbENvdW50O1xyXG4gICAgICB0aGlzLl9haXNCdWZzPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KGNocyk7XHJcbiAgICAgIGZvcihsZXQgY2g9MDtjaDxjaHM7Y2grKyl7XHJcbiAgICAgICAgdGhpcy5fYWlzQnVmc1tjaF09bmV3IEZsb2F0MzJBcnJheSh0aGlzLl9zdHJlYW1SZWFkRnJhbWVMZW4pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZpbGxCdWZmZXJPYnMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIGNvbXBsZXRlOiAoKT0+e1xyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydDogQXN5bmMgcGxheSBidWZmZXIgZmlsbCBjb21wbGV0ZWQuIFNlbmRpbmcgc3RhcnQgY29tbWFuZCB0byBhdWRpbyB3b3JrbGV0LlwiKTtcclxuICAgICAgICAgIGlmKHRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2NtZDogJ3N0YXJ0J30pO1xyXG4gICAgICAgICAgICBpZiAob2Zmc2V0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fcGxheVN0YXJ0VGltZSA9IHRoaXMuY29udGV4dC5jdXJyZW50VGltZSAtIG9mZnNldDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl9wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgdGhpcy5fYWN0aXZlPXRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wKCkge1xyXG4gICAgdGhpcy5fYWN0aXZlPWZhbHNlO1xyXG4gICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtjbWQ6ICdzdG9wJ30pO1xyXG4gICAgdGhpcy5vbmVuZGVkPy5jYWxsKHRoaXMpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGJfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BsYXliYWNrL2luZGRiX2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0NBQWdDLEVBQStCLE1BQU0saUJBQWlCLENBQUM7QUFDL0YsT0FBTyxFQUF1Qix5QkFBeUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsTUFBTSxPQUFPLDhCQUErQixTQUFRLGVBQWU7SUFZakUsWUFBWSxPQUFxQjtRQUUvQixLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFaakMsdUJBQWtCLEdBQUcsZUFBZSxDQUFDLDJCQUEyQixDQUFDO1FBQ2pFLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQix3QkFBbUIsR0FBQyxlQUFlLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDLENBQUUsa0ZBQWtGO1FBQzFKLHNCQUFpQixHQUEyQixJQUFJLENBQUM7UUFDakQsc0JBQWlCLEdBQW1DLElBQUksQ0FBQztRQUN6RCxhQUFRLEdBQXFCLElBQUksQ0FBQztRQUNsQyxZQUFPLEdBQUMsS0FBSyxDQUFDO1FBQ2QsaUJBQVksR0FBQyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFLdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFD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QkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBQyxJQUFJLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBQyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jRWRpdEZsb2F0MzJBcnJheUlucHV0U3RyZWFtLCBBc3luY0Zsb2F0MzJBcnJheUlucHV0U3RyZWFtfSBmcm9tIFwiLi4vLi4vaW8vc3RyZWFtXCI7XHJcbmltcG9ydCB7SW5kZXhlZERiQXVkaW9CdWZmZXIsIEluZGV4ZWREYkF1ZGlvSW5wdXRTdHJlYW19IGZyb20gXCIuLi9pbmRkYl9hdWRpb19idWZmZXJcIjtcclxuaW1wb3J0IHtBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZX0gZnJvbSBcIi4vYXJyYXlfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlXCI7XHJcbmltcG9ydCB7RU1QVFksIGV4cGFuZCwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZU5vZGV9IGZyb20gXCIuL2F1ZGlvX3NvdXJjZV9ub2RlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGV4dGVuZHMgQXVkaW9Tb3VyY2VOb2RlIHtcclxuXHJcbiAgcHJpdmF0ZSBfYnVmZmVyRmlsbFNlY29uZHMgPSBBdWRpb1NvdXJjZU5vZGUuREVGQVVMVF9CVUZGRVJfRklMTF9TRUNPTkRTO1xyXG4gIHByaXZhdGUgYnVmZmVyRmlsbEZyYW1lcyA9IDA7XHJcbiAgcHJpdmF0ZSBfc3RyZWFtUmVhZEZyYW1lTGVuPUF1ZGlvU291cmNlTm9kZS5ERUZBVUxUX1NUUkVBTV9SRUFEX0ZSQU1FX0xFTiAqIDg7ICAvLyBNdWNoIG92ZXJoZWFkIGZldGNoaW5nIHNtYWxsIGJ1ZmZlcnMgZnJvbSBpbmRleGVkIGRiLCB1c2UgbGFyZ2VyIGJ1ZmZlciAoODE5MikuXHJcbiAgcHJpdmF0ZSBfaW5kZGJBdWRpb0J1ZmZlcjpJbmRleGVkRGJBdWRpb0J1ZmZlcnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfYXVkaW9JbnB1dFN0cmVhbTpBc3luY0Zsb2F0MzJBcnJheUlucHV0U3RyZWFtfG51bGw9bnVsbDtcclxuICBwcml2YXRlIF9haXNCdWZzOkZsb2F0MzJBcnJheVtdfG51bGw9bnVsbDtcclxuICBwcml2YXRlIF9hY3RpdmU9ZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZW5kT2ZTdHJlYW09ZmFsc2U7XHJcbiAgcHJpdmF0ZSBmaWxsZWRGcmFtZXMgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBBdWRpb0NvbnRleHQpIHtcclxuXHJcbiAgICBzdXBlcihjb250ZXh0LCAnYXVkaW8tc291cmNlLXdvcmtsZXQnKTtcclxuICAgIHRoaXMuY2hhbm5lbENvdW50TW9kZSA9ICdleHBsaWNpdCc7XHJcbiAgICB0aGlzLnBvcnQub25tZXNzYWdlID0gKG1zZ0V2OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKG1zZ0V2LmRhdGEpIHtcclxuICAgICAgICBsZXQgZXZUeXBlID0gbXNnRXYuZGF0YS5ldmVudFR5cGU7XHJcbiAgICAgICAgaWYgKGV2VHlwZSkge1xyXG4gICAgICAgICAgaWYgKCdidWZmZXJOb3RpZmljYXRpb24nID09PSBldlR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxsZWRGcmFtZXMgPSBtc2dFdi5kYXRhLmZpbGxlZEZyYW1lcztcclxuICAgICAgICAgICAgaWYoIXRoaXMuX2VuZE9mU3RyZWFtKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxsQnVmZmVyT2JzKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoJ2VuZGVkJyA9PT0gZXZUeXBlKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkluZGRiIGF1ZGlvIHNvdXJjZSBlbmRlZCBwbGF5YmFjay5cIik7XHJcbiAgICAgICAgICAgIGxldCBkcmFpblRpbWUgPSAwO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faW5kZGJBdWRpb0J1ZmZlcj8uc2FtcGxlUmF0ZSkge1xyXG4gICAgICAgICAgICAgIGRyYWluVGltZSA9IEFycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlLlFVQU5UVU1fRlJBTUVfTEVOIC8gdGhpcy5faW5kZGJBdWRpb0J1ZmZlci5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vbGV0IGRzdEFueTphbnk9dGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0Rlc3RpbmF0aW9uIG5vZGUgdGFpbC10aW1lOiAnK2RzdEFueVsndGFpbC10aW1lJ10pO1xyXG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmVuZGVkPy5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICB9LCBkcmFpblRpbWUgKiAxMDAwKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGxCdWZmZXJPYnMoZnJhbWVPZmZzZXQ/Om51bWJlcik6T2JzZXJ2YWJsZTxudW1iZXJ8bnVsbD4ge1xyXG5cclxuICAgICAgbGV0IG9icyA9IG5ldyBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+KHN1YnNjcmliZXIgPT4ge1xyXG4gICAgICAgIGlmKGZyYW1lT2Zmc2V0KXtcclxuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IobmV3IEVycm9yKFwiU3RhcnRpbmcgcGxheWJhY2sgZnJvbSBwb3NpdGlvbiBub3QgZXF1YWwgemVybyBub3Qgc3VwcG9ydGVkIHlldC5cIikpO1xyXG4gICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgIGxldCBmaWxsZWQgPSB0aGlzLmZpbGxlZEZyYW1lcztcclxuICAgICAgICAgIGxldCBidWZMZW4gPSAwO1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0gJiYgdGhpcy5fYWlzQnVmcykge1xyXG4gICAgICAgICAgICB0aGlzLl9hdWRpb0lucHV0U3RyZWFtLnJlYWRPYnModGhpcy5fYWlzQnVmcykucGlwZShcclxuICAgICAgICAgICAgICBleHBhbmQoKHJlYWQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgdGhpcy5fYWlzQnVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ckJ1ZmZlcnMgPSBuZXcgQXJyYXk8YW55Pih0aGlzLmNoYW5uZWxDb3VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuY2hhbm5lbENvdW50OyBjaCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYWRDaCA9IHRoaXMuX2Fpc0J1ZnNbY2hdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGFkQ2hDb3B5ID0gbmV3IEZsb2F0MzJBcnJheShyZWFkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJ1ZkxlbiA9IGFkQ2hDb3B5Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHJlYWQ9PT1hZENoLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZENoQ29weS5zZXQoYWRDaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogc2xpY2UoKSBkb2VzIG5vdCB3b3JrIGhlcmUsIHNpbmNlIGl0IHJldHVybnMgYSBzaGFsbG93IGNvcHkuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8cmVhZDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkQ2hDb3B5W2ldPWFkQ2hbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHRyQnVmZmVyc1tjaF0gPSBhZENoQ29weS5idWZmZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbWQ6ICdkYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGNoczogdGhpcy5jaGFubmVsQ291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RhdGE6IHRyQnVmZmVyc1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRyQnVmZmVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVkICs9IHJlYWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaWxsQnVmZmVyT2JzOiBTZW50IFwiK3JlYWQrXCIgZnJhbWVzIHRvIGF1ZGlvIHNvdXJjZSB3b3JrbGV0LiBGaWxsZWQ6IFwiK2ZpbGxlZCtcIiwgdG8gZmlsbDogXCIrdGhpcy5idWZmZXJGaWxsRnJhbWVzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYXVkaW9JbnB1dFN0cmVhbSAmJiBmaWxsZWQgPCB0aGlzLmJ1ZmZlckZpbGxGcmFtZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6ZmlsbEJ1ZmZlck9iczogTmV4dCBpbmRkYiBhdWRpbyBpbnB1dCBzdHJlYW0gcmVhZE9ic1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hdWRpb0lucHV0U3RyZWFtLnJlYWRPYnModGhpcy5fYWlzQnVmcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlJldHVybiBFTVBUWVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaWxsQnVmZmVyT2JzOiBSZXR1cm4gRU1QVFkgKHJlYWQ6IFwiK3JlYWQrXCIpXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuZE9mU3RyZWFtPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNtZDogJ2VuZE9mU3RyZWFtJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG9icztcclxuICB9XHJcblxyXG5cclxuICBnZXQgaW5kZGJBdWRpb0J1ZmZlcigpOiBJbmRleGVkRGJBdWRpb0J1ZmZlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGRiQXVkaW9CdWZmZXJcclxuICB9XHJcblxyXG4gIHNldCBpbmRkYkF1ZGlvQnVmZmVyKHZhbHVlOiBJbmRleGVkRGJBdWRpb0J1ZmZlciB8IG51bGwpIHtcclxuICAgIHRoaXMuX2luZGRiQXVkaW9CdWZmZXIgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyPy5jaGFubmVsQ291bnQpIHtcclxuICAgICAgdGhpcy5jaGFubmVsQ291bnQgPSB0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyPy5jaGFubmVsQ291bnQ7XHJcbiAgICAgIHRoaXMuYnVmZmVyRmlsbEZyYW1lcyA9IHRoaXMuX2luZGRiQXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSAqIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJ1ZmZlckZpbGxTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyRmlsbFNlY29uZHM7XHJcbiAgfVxyXG5cclxuICBzZXQgYnVmZmVyRmlsbFNlY29uZHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYnVmZmVyRmlsbFNlY29uZHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHN0YXJ0KHdoZW4/OiBudW1iZXIgfCB1bmRlZmluZWQsb2Zmc2V0PzogbnVtYmVyIHwgdW5kZWZpbmVkLGR1cmF0aW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAod2hlbikge1xyXG4gICAgICB0aHJvdyBFcnJvcihcIndoZW4gcGFyYW1ldGVyIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGJ5IEluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZSBjbGFzc1wiKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgIGxldCBhcnJBaXM9bmV3IEluZGV4ZWREYkF1ZGlvSW5wdXRTdHJlYW0odGhpcy5faW5kZGJBdWRpb0J1ZmZlcik7XHJcbiAgICAgIGlmKG9mZnNldD09PXVuZGVmaW5lZCAmJiBkdXJhdGlvbj09PXVuZGVmaW5lZCl7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9JbnB1dFN0cmVhbSA9IGFyckFpcztcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgbGV0IG9mZnNldEZyYW1lcz0wO1xyXG4gICAgICAgIGxldCBkdXJhdGlvbkZyYW1lcz11bmRlZmluZWQ7XHJcbiAgICAgICAgaWYob2Zmc2V0IT09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBvZmZzZXRGcmFtZXM9TWF0aC5mbG9vcihvZmZzZXQgKiB0aGlzLl9pbmRkYkF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkdXJhdGlvbiE9PXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICBkdXJhdGlvbkZyYW1lcz1NYXRoLmZsb29yKGR1cmF0aW9uICogdGhpcy5faW5kZGJBdWRpb0J1ZmZlci5zYW1wbGVSYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQ3JlYXRlIEFzeW5jRWRpdEZsb2F0MzJBcnJheUlucHV0U3RyZWFtOiBvZmZzZXRGcmFtZXM6XCIrb2Zmc2V0RnJhbWVzK1wiLCBkdXJhdGlvbkZyYW1lczpcIitkdXJhdGlvbkZyYW1lcyk7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9JbnB1dFN0cmVhbT1uZXcgQXN5bmNFZGl0RmxvYXQzMkFycmF5SW5wdXRTdHJlYW0oYXJyQWlzLG9mZnNldEZyYW1lcyxkdXJhdGlvbkZyYW1lcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjaHM9dGhpcy5faW5kZGJBdWRpb0J1ZmZlci5jaGFubmVsQ291bnQ7XHJcbiAgICAgIHRoaXMuX2Fpc0J1ZnM9bmV3IEFycmF5PEZsb2F0MzJBcnJheT4oY2hzKTtcclxuICAgICAgZm9yKGxldCBjaD0wO2NoPGNocztjaCsrKXtcclxuICAgICAgICB0aGlzLl9haXNCdWZzW2NoXT1uZXcgRmxvYXQzMkFycmF5KHRoaXMuX3N0cmVhbVJlYWRGcmFtZUxlbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmlsbEJ1ZmZlck9icygpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgY29tcGxldGU6ICgpPT57XHJcbiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0OiBBc3luYyBwbGF5IGJ1ZmZlciBmaWxsIGNvbXBsZXRlZC4gU2VuZGluZyBzdGFydCBjb21tYW5kIHRvIGF1ZGlvIHdvcmtsZXQuXCIpO1xyXG4gICAgICAgICAgaWYodGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7Y21kOiAnc3RhcnQnfSk7XHJcbiAgICAgICAgICAgIGlmIChvZmZzZXQpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3BsYXlTdGFydFRpbWUgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB0aGlzLl9hY3RpdmU9dHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3AoKSB7XHJcbiAgICB0aGlzLl9hY3RpdmU9ZmFsc2U7XHJcbiAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2NtZDogJ3N0b3AnfSk7XHJcbiAgICB0aGlzLm9uZW5kZWQ/LmNhbGwodGhpcyk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
|
|
@@ -215,4 +215,4 @@ export class NetAudioBufferSourceNode extends AudioSourceNode {
|
|
|
215
215
|
return ppt;
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9wbGF5YmFjay9uZXRfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBK0IsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQW1CM0QsWUFBWSxPQUFxQjtRQUUvQixLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFuQmpDLHVCQUFrQixHQUFHLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsd0JBQW1CLEdBQUMsZUFBZSxDQUFDLDZCQUE2QixHQUFHLENBQUMsQ0FBQyxDQUFFLGtGQUFrRjtRQUMxSixvQkFBZSxHQUFxQixJQUFJLENBQUM7UUFDekMsc0JBQWlCLEdBQW1DLElBQUksQ0FBQztRQUN6RCxhQUFRLEdBQXFCLElBQUksQ0FBQztRQUNsQyxZQUFPLEdBQUMsS0FBSyxDQUFDO1FBQ2QsWUFBTyxHQUFDLEtBQUssQ0FBQztRQUNkLGlCQUFZLEdBQUMsS0FBSyxDQUFDO1FBQ25CLHlCQUFvQixHQUFtQixJQUFJLENBQUM7UUFDNUMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFFakIscUJBQWdC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QUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLEdBQUcsR0FBYSxJQUFJLENBQUM7UUFDekIsSUFBRyxJQUFJLENBQUMsY0FBYyxLQUFHLElBQUksRUFBRTtZQUM3QixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFFO29CQUNqQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUN6RTtxQkFBTTtvQkFDTCxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDdEU7YUFDRjtpQkFBSTtnQkFDSCxJQUFHLElBQUksQ0FBQyxXQUFXLElBQUUsSUFBSSxFQUFDO29CQUN4QixpRkFBaUY7b0JBQ2pGLDZFQUE2RTtvQkFDN0UsU0FBUztvQkFDUCxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ2xFLEdBQUc7aUJBQ0o7YUFDRjtTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jRWRpdEZsb2F0MzJBcnJheUlucHV0U3RyZWFtLCBBc3luY0Zsb2F0MzJBcnJheUlucHV0U3RyZWFtfSBmcm9tIFwiLi4vLi4vaW8vc3RyZWFtXCI7XHJcbmltcG9ydCB7QXJyYXlBdWRpb0J1ZmZlclNvdXJjZU5vZGV9IGZyb20gXCIuL2FycmF5X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZVwiO1xyXG5pbXBvcnQge0VNUFRZLCBleHBhbmQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZU5vZGV9IGZyb20gXCIuL2F1ZGlvX3NvdXJjZV9ub2RlXCI7XHJcbmltcG9ydCB7TmV0QXVkaW9CdWZmZXIsIE5ldEF1ZGlvSW5wdXRTdHJlYW19IGZyb20gXCIuLi9uZXRfYXVkaW9fYnVmZmVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTmV0QXVkaW9CdWZmZXJTb3VyY2VOb2RlIGV4dGVuZHMgQXVkaW9Tb3VyY2VOb2RlIHtcclxuXHJcbiAgcHJpdmF0ZSBfYnVmZmVyRmlsbFNlY29uZHMgPSBBdWRpb1NvdXJjZU5vZGUuREVGQVVMVF9CVUZGRVJfRklMTF9TRUNPTkRTO1xyXG4gIHByaXZhdGUgYnVmZmVyRmlsbEZyYW1lcyA9IDA7XHJcbiAgcHJpdmF0ZSBfc3RyZWFtUmVhZEZyYW1lTGVuPUF1ZGlvU291cmNlTm9kZS5ERUZBVUxUX1NUUkVBTV9SRUFEX0ZSQU1FX0xFTiAqIDg7ICAvLyBNdWNoIG92ZXJoZWFkIGZldGNoaW5nIHNtYWxsIGJ1ZmZlcnMgZnJvbSBpbmRleGVkIGRiLCB1c2UgbGFyZ2VyIGJ1ZmZlciAoODE5MikuXHJcbiAgcHJpdmF0ZSBfbmV0QXVkaW9CdWZmZXI6TmV0QXVkaW9CdWZmZXJ8bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgX2F1ZGlvSW5wdXRTdHJlYW06QXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbXxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfYWlzQnVmczpGbG9hdDMyQXJyYXlbXXxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlPWZhbHNlO1xyXG4gIHByaXZhdGUgc3RhbGxlZD1mYWxzZTtcclxuICBwcml2YXRlIF9lbmRPZlN0cmVhbT1mYWxzZTtcclxuICBwcml2YXRlIHJlYWREYXRhU3Vic2NyaXB0aW9uOlN1YnNjcmlwdGlvbnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBmaWxsZWRGcmFtZXMgPSAwO1xyXG5cclxuICBwcml2YXRlIHN0YWxsZWRTdGFydFRpbWU6bnVtYmVyfG51bGw9bnVsbDtcclxuICBwcml2YXRlIHN0YWxsZWRUaW1lOm51bWJlcj0wO1xyXG5cclxuICBwcml2YXRlIHN0b3BFbmRUaW1lOm51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IEF1ZGlvQ29udGV4dCkge1xyXG5cclxuICAgIHN1cGVyKGNvbnRleHQsICdhdWRpby1zb3VyY2Utd29ya2xldCcpO1xyXG4gICAgdGhpcy5jaGFubmVsQ291bnRNb2RlID0gJ2V4cGxpY2l0JztcclxuICAgIHRoaXMucG9ydC5vbm1lc3NhZ2UgPSAobXNnRXY6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICBpZiAobXNnRXYuZGF0YSkge1xyXG4gICAgICAgIGxldCBldlR5cGUgPSBtc2dFdi5kYXRhLmV2ZW50VHlwZTtcclxuICAgICAgICBpZiAoZXZUeXBlKSB7XHJcbiAgICAgICAgICBpZiAoJ2J1ZmZlck5vdGlmaWNhdGlvbicgPT09IGV2VHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGxlZEZyYW1lcyA9IG1zZ0V2LmRhdGEuZmlsbGVkRnJhbWVzO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGU6IEJ1ZmZlciBub3RpZmljYXRpb246IGZpbGxlZCBmcmFtZXM6IFwiICsgdGhpcy5maWxsZWRGcmFtZXMpO1xyXG4gICAgICAgICAgICBpZighdGhpcy5fZW5kT2ZTdHJlYW0pIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGxCdWZmZXJPYnMoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICgnZW5kZWQnID09PSBldlR5cGUpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZGIgYXVkaW8gc291cmNlIGVuZGVkIHBsYXliYWNrLlwiKTtcclxuICAgICAgICAgICAgbGV0IGRyYWluVGltZSA9IDA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9uZXRBdWRpb0J1ZmZlcj8uc2FtcGxlUmF0ZSkge1xyXG4gICAgICAgICAgICAgIGRyYWluVGltZSA9IEFycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlLlFVQU5UVU1fRlJBTUVfTEVOIC8gdGhpcy5fbmV0QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2xldCBkc3RBbnk6YW55PXRoaXMuY29udGV4dC5kZXN0aW5hdGlvbjtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdEZXN0aW5hdGlvbiBub2RlIHRhaWwtdGltZTogJytkc3RBbnlbJ3RhaWwtdGltZSddKTtcclxuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcEVuZFRpbWU9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZT1mYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLm9uZW5kZWQ/LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgIH0sIGRyYWluVGltZSAqIDEwMDApO1xyXG5cclxuICAgICAgICAgIH1lbHNlIGlmICgnc3RhbGxlZCcgPT09IGV2VHlwZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdQbGF5YmFjayBzdGFsbGVkLi4uJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhbGxlZD10cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YWxsZWRTdGFydFRpbWU9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xyXG4gICAgICAgICAgfWVsc2UgaWYgKCdyZXN1bWVkJyA9PT0gZXZUeXBlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1BsYXliYWNrIHJlc3VtZWQgYWZ0ZXIgc3RhbGwuJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhbGxlZD1mYWxzZTtcclxuICAgICAgICAgICAgaWYodGhpcy5zdGFsbGVkU3RhcnRUaW1lIT1udWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdGFsbGVkVGltZSArPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgLSB0aGlzLnN0YWxsZWRTdGFydFRpbWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdGFsbGVkU3RhcnRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsQnVmZmVyT2JzKGZyYW1lT2Zmc2V0PzpudW1iZXIpOk9ic2VydmFibGU8bnVtYmVyfG51bGw+IHtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgICBpZihmcmFtZU9mZnNldCl7XHJcbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcihcIlN0YXJ0aW5nIHBsYXliYWNrIGZyb20gcG9zaXRpb24gbm90IGVxdWFsIHplcm8gbm90IHN1cHBvcnRlZCB5ZXQuXCIpKTtcclxuICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICBsZXQgZmlsbGVkID0gdGhpcy5maWxsZWRGcmFtZXM7XHJcbiAgICAgICAgICBsZXQgYnVmTGVuID0gMDtcclxuICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0lucHV0U3RyZWFtICYmIHRoaXMuX2Fpc0J1ZnMgJiYgKHRoaXMucmVhZERhdGFTdWJzY3JpcHRpb249PW51bGwgfHwgdGhpcy5yZWFkRGF0YVN1YnNjcmlwdGlvbj8uY2xvc2VkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlYWREYXRhU3Vic2NyaXB0aW9uPXRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0ucmVhZE9icyh0aGlzLl9haXNCdWZzKS5waXBlKFxyXG4gICAgICAgICAgICAgIGV4cGFuZCgocmVhZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVhZCAmJiB0aGlzLl9haXNCdWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRyQnVmZmVycyA9IG5ldyBBcnJheTxhbnk+KHRoaXMuY2hhbm5lbENvdW50KTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgdGhpcy5jaGFubmVsQ291bnQ7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhZENoID0gdGhpcy5fYWlzQnVmc1tjaF07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYWRDaENvcHkgPSBuZXcgRmxvYXQzMkFycmF5KHJlYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgYnVmTGVuID0gYWRDaENvcHkubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYocmVhZD09PWFkQ2gubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkQ2hDb3B5LnNldChhZENoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBzbGljZSgpIGRvZXMgbm90IHdvcmsgaGVyZSwgc2luY2UgaXQgcmV0dXJucyBhIHNoYWxsb3cgY29weS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7aTxyZWFkO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRDaENvcHlbaV09YWRDaFtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgdHJCdWZmZXJzW2NoXSA9IGFkQ2hDb3B5LmJ1ZmZlcjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNtZDogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hzOiB0aGlzLmNoYW5uZWxDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGF0YTogdHJCdWZmZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgdHJCdWZmZXJzKTtcclxuICAgICAgICAgICAgICAgICAgICBmaWxsZWQgKz0gcmVhZDtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmZpbGxCdWZmZXJPYnM6IFNlbnQgXCIrcmVhZCtcIiBmcmFtZXMgdG8gYXVkaW8gc291cmNlIHdvcmtsZXQuIEZpbGxlZDogXCIrZmlsbGVkK1wiLCB0byBmaWxsOiBcIit0aGlzLmJ1ZmZlckZpbGxGcmFtZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0lucHV0U3RyZWFtICYmIGZpbGxlZCA8IHRoaXMuYnVmZmVyRmlsbEZyYW1lcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaWxsQnVmZmVyT2JzOiBOZXh0IGluZGRiIGF1ZGlvIGlucHV0IHN0cmVhbSByZWFkT2JzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0ucmVhZE9icyh0aGlzLl9haXNCdWZzKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zdGFsbGVkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQ6ICdjb250aW51ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmZpbGxCdWZmZXJPYnM6IFJldHVybiBFTVBUWSAocmVhZDogXCIrcmVhZCtcIilcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5kT2ZTdHJlYW09dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgY21kOiAnZW5kT2ZTdHJlYW0nXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuZXRBdWRpb0J1ZmZlcigpOiBOZXRBdWRpb0J1ZmZlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX25ldEF1ZGlvQnVmZmVyXHJcbiAgfVxyXG5cclxuICBzZXQgbmV0QXVkaW9CdWZmZXIodmFsdWU6IE5ldEF1ZGlvQnVmZmVyIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fbmV0QXVkaW9CdWZmZXIgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9uZXRBdWRpb0J1ZmZlcj8uY2hhbm5lbENvdW50KSB7XHJcbiAgICAgIHRoaXMuY2hhbm5lbENvdW50ID0gdGhpcy5fbmV0QXVkaW9CdWZmZXI/LmNoYW5uZWxDb3VudDtcclxuICAgICAgdGhpcy5idWZmZXJGaWxsRnJhbWVzID0gdGhpcy5fbmV0QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSAqIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJ1ZmZlckZpbGxTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyRmlsbFNlY29uZHM7XHJcbiAgfVxyXG5cclxuICBzZXQgYnVmZmVyRmlsbFNlY29uZHModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYnVmZmVyRmlsbFNlY29uZHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHN0YXJ0KHdoZW4/OiBudW1iZXIgfCB1bmRlZmluZWQsb2Zmc2V0PzogbnVtYmVyIHwgdW5kZWZpbmVkLGR1cmF0aW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAod2hlbikge1xyXG4gICAgICB0aHJvdyBFcnJvcihcIndoZW4gcGFyYW1ldGVyIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGJ5IEluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZSBjbGFzc1wiKVxyXG4gICAgfVxyXG4gICAgdGhpcy5fcGxheVN0YXJ0VGltZT1udWxsO1xyXG4gICAgdGhpcy5zdG9wRW5kVGltZT1udWxsO1xyXG4gICAgdGhpcy5zdGFsbGVkVGltZT0wO1xyXG4gICAgdGhpcy5zdGFsbGVkU3RhcnRUaW1lPW51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX25ldEF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgIGxldCBhcnJBaXM9bmV3IE5ldEF1ZGlvSW5wdXRTdHJlYW0odGhpcy5fbmV0QXVkaW9CdWZmZXIpO1xyXG4gICAgICBpZihvZmZzZXQ9PT11bmRlZmluZWQgJiYgZHVyYXRpb249PT11bmRlZmluZWQpe1xyXG4gICAgICAgIHRoaXMuX2F1ZGlvSW5wdXRTdHJlYW0gPSBhcnJBaXM7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxldCBvZmZzZXRGcmFtZXM9MDtcclxuICAgICAgICBsZXQgZHVyYXRpb25GcmFtZXM9dW5kZWZpbmVkO1xyXG4gICAgICAgIGlmKG9mZnNldCE9PXVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgb2Zmc2V0RnJhbWVzPU1hdGguZmxvb3Iob2Zmc2V0ICogdGhpcy5fbmV0QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGR1cmF0aW9uIT09dW5kZWZpbmVkKXtcclxuICAgICAgICAgIGR1cmF0aW9uRnJhbWVzPU1hdGguZmxvb3IoZHVyYXRpb24gKiB0aGlzLl9uZXRBdWRpb0J1ZmZlci5zYW1wbGVSYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9jb25zb2xlLmVycm9yKFwiUGxheWJhY2sgc2VsZWN0aW9uIG5vdCBzdXBwb3J0ZWQgeWV0IVwiKTtcclxuICAgICAgICB0aGlzLl9hdWRpb0lucHV0U3RyZWFtPW5ldyBBc3luY0VkaXRGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbShhcnJBaXMsb2Zmc2V0RnJhbWVzLGR1cmF0aW9uRnJhbWVzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGNocz10aGlzLl9uZXRBdWRpb0J1ZmZlci5jaGFubmVsQ291bnQ7XHJcbiAgICAgIHRoaXMuX2Fpc0J1ZnM9bmV3IEFycmF5PEZsb2F0MzJBcnJheT4oY2hzKTtcclxuICAgICAgZm9yKGxldCBjaD0wO2NoPGNocztjaCsrKXtcclxuICAgICAgICB0aGlzLl9haXNCdWZzW2NoXT1uZXcgRmxvYXQzMkFycmF5KHRoaXMuX3N0cmVhbVJlYWRGcmFtZUxlbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmlsbEJ1ZmZlck9icygpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgY29tcGxldGU6ICgpPT57XHJcbiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0OiBBc3luYyBwbGF5IGJ1ZmZlciBmaWxsIGNvbXBsZXRlZC4gU2VuZGluZyBzdGFydCBjb21tYW5kIHRvIGF1ZGlvIHdvcmtsZXQuXCIpO1xyXG4gICAgICAgICAgaWYodGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7Y21kOiAnc3RhcnQnfSk7XHJcbiAgICAgICAgICAgIGlmKG9mZnNldCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3BsYXlTdGFydFRpbWUgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMuX3BsYXlTdGFydFRpbWUgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2FjdGl2ZT10cnVlO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3AoKSB7XHJcbiAgICB0aGlzLl9hY3RpdmU9ZmFsc2U7XHJcbiAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2NtZDogJ3N0b3AnfSk7XHJcbiAgICB0aGlzLm9uZW5kZWQ/LmNhbGwodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxheVBvc2l0aW9uVGltZSgpOm51bWJlcnxudWxsIHtcclxuICAgIGxldCBwcHQ6bnVtYmVyfG51bGw9bnVsbDtcclxuICAgIGlmKHRoaXMuX3BsYXlTdGFydFRpbWUhPT1udWxsKSB7XHJcbiAgICAgIGlmKHRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YWxsZWRTdGFydFRpbWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgcHB0ID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gdGhpcy5fcGxheVN0YXJ0VGltZSAtIHRoaXMuc3RhbGxlZFRpbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBwdCA9IHRoaXMuc3RhbGxlZFN0YXJ0VGltZSAtIHRoaXMuX3BsYXlTdGFydFRpbWUgLSB0aGlzLnN0YWxsZWRUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYodGhpcy5zdG9wRW5kVGltZSE9bnVsbCl7XHJcbiAgICAgICAgICAvLyBpZih0aGlzLl9uZXRBdWRpb0J1ZmZlcj8uZnJhbWVMZW4gIT1udWxsICYmIHRoaXMuX25ldEF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUpIHtcclxuICAgICAgICAgIC8vICAgcHB0ID0gdGhpcy5fbmV0QXVkaW9CdWZmZXI/LmZyYW1lTGVuIC8gdGhpcy5fbmV0QXVkaW9CdWZmZXI/LnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAvLyB9ZWxzZXtcclxuICAgICAgICAgICAgcHB0ID0gdGhpcy5zdG9wRW5kVGltZSAtIHRoaXMuX3BsYXlTdGFydFRpbWUgLSB0aGlzLnN0YWxsZWRUaW1lO1xyXG4gICAgICAgICAgLy99XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHB0O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby9wbGF5YmFjay9uZXRfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBK0IsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQW1CM0QsWUFBWSxPQUFxQjtRQUUvQixLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFuQmpDLHVCQUFrQixHQUFHLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsd0JBQW1CLEdBQUMsZUFBZSxDQUFDLDZCQUE2QixHQUFHLENBQUMsQ0FBQyxDQUFFLGtGQUFrRjtRQUMxSixvQkFBZSxHQUFxQixJQUFJLENBQUM7UUFDekMsc0JBQWlCLEdBQW1DLElBQUksQ0FBQztRQUN6RCxhQUFRLEdBQXFCLElBQUksQ0FBQztRQUNsQyxZQUFPLEdBQUMsS0FBSyxDQUFDO1FBQ2QsWUFBTyxHQUFDLEtBQUssQ0FBQztRQUNkLGlCQUFZLEdBQUMsS0FBSyxDQUFDO1FBQ25CLHlCQUFvQixHQUFtQixJQUFJLENBQUM7UUFDNUMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFFakIscUJBQWdC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QUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO29CQUNsRSxHQUFHO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY0VkaXRGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbSwgQXN5bmNGbG9hdDMyQXJyYXlJbnB1dFN0cmVhbX0gZnJvbSBcIi4uLy4uL2lvL3N0cmVhbVwiO1xyXG5pbXBvcnQge0FycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlfSBmcm9tIFwiLi9hcnJheV9hdWRpb19idWZmZXJfc291cmNlX25vZGVcIjtcclxuaW1wb3J0IHtFTVBUWSwgZXhwYW5kLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXVkaW9Tb3VyY2VOb2RlfSBmcm9tIFwiLi9hdWRpb19zb3VyY2Vfbm9kZVwiO1xyXG5pbXBvcnQge05ldEF1ZGlvQnVmZmVyLCBOZXRBdWRpb0lucHV0U3RyZWFtfSBmcm9tIFwiLi4vbmV0X2F1ZGlvX2J1ZmZlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE5ldEF1ZGlvQnVmZmVyU291cmNlTm9kZSBleHRlbmRzIEF1ZGlvU291cmNlTm9kZSB7XHJcblxyXG4gIHByaXZhdGUgX2J1ZmZlckZpbGxTZWNvbmRzID0gQXVkaW9Tb3VyY2VOb2RlLkRFRkFVTFRfQlVGRkVSX0ZJTExfU0VDT05EUztcclxuICBwcml2YXRlIGJ1ZmZlckZpbGxGcmFtZXMgPSAwO1xyXG4gIHByaXZhdGUgX3N0cmVhbVJlYWRGcmFtZUxlbj1BdWRpb1NvdXJjZU5vZGUuREVGQVVMVF9TVFJFQU1fUkVBRF9GUkFNRV9MRU4gKiA4OyAgLy8gTXVjaCBvdmVyaGVhZCBmZXRjaGluZyBzbWFsbCBidWZmZXJzIGZyb20gaW5kZXhlZCBkYiwgdXNlIGxhcmdlciBidWZmZXIgKDgxOTIpLlxyXG4gIHByaXZhdGUgX25ldEF1ZGlvQnVmZmVyOk5ldEF1ZGlvQnVmZmVyfG51bGw9bnVsbDtcclxuICBwcml2YXRlIF9hdWRpb0lucHV0U3RyZWFtOkFzeW5jRmxvYXQzMkFycmF5SW5wdXRTdHJlYW18bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgX2Fpc0J1ZnM6RmxvYXQzMkFycmF5W118bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgX2FjdGl2ZT1mYWxzZTtcclxuICBwcml2YXRlIHN0YWxsZWQ9ZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZW5kT2ZTdHJlYW09ZmFsc2U7XHJcbiAgcHJpdmF0ZSByZWFkRGF0YVN1YnNjcmlwdGlvbjpTdWJzY3JpcHRpb258bnVsbD1udWxsO1xyXG4gIHByaXZhdGUgZmlsbGVkRnJhbWVzID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBzdGFsbGVkU3RhcnRUaW1lOm51bWJlcnxudWxsPW51bGw7XHJcbiAgcHJpdmF0ZSBzdGFsbGVkVGltZTpudW1iZXI9MDtcclxuXHJcbiAgcHJpdmF0ZSBzdG9wRW5kVGltZTpudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBBdWRpb0NvbnRleHQpIHtcclxuXHJcbiAgICBzdXBlcihjb250ZXh0LCAnYXVkaW8tc291cmNlLXdvcmtsZXQnKTtcclxuICAgIHRoaXMuY2hhbm5lbENvdW50TW9kZSA9ICdleHBsaWNpdCc7XHJcbiAgICB0aGlzLnBvcnQub25tZXNzYWdlID0gKG1zZ0V2OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKG1zZ0V2LmRhdGEpIHtcclxuICAgICAgICBsZXQgZXZUeXBlID0gbXNnRXYuZGF0YS5ldmVudFR5cGU7XHJcbiAgICAgICAgaWYgKGV2VHlwZSkge1xyXG4gICAgICAgICAgaWYgKCdidWZmZXJOb3RpZmljYXRpb24nID09PSBldlR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxsZWRGcmFtZXMgPSBtc2dFdi5kYXRhLmZpbGxlZEZyYW1lcztcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOiBCdWZmZXIgbm90aWZpY2F0aW9uOiBmaWxsZWQgZnJhbWVzOiBcIiArIHRoaXMuZmlsbGVkRnJhbWVzKTtcclxuICAgICAgICAgICAgaWYoIXRoaXMuX2VuZE9mU3RyZWFtKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWxsQnVmZmVyT2JzKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoJ2VuZGVkJyA9PT0gZXZUeXBlKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkluZGRiIGF1ZGlvIHNvdXJjZSBlbmRlZCBwbGF5YmFjay5cIik7XHJcbiAgICAgICAgICAgIGxldCBkcmFpblRpbWUgPSAwO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbmV0QXVkaW9CdWZmZXI/LnNhbXBsZVJhdGUpIHtcclxuICAgICAgICAgICAgICBkcmFpblRpbWUgPSBBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZS5RVUFOVFVNX0ZSQU1FX0xFTiAvIHRoaXMuX25ldEF1ZGlvQnVmZmVyLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9sZXQgZHN0QW55OmFueT10aGlzLmNvbnRleHQuZGVzdGluYXRpb247XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnRGVzdGluYXRpb24gbm9kZSB0YWlsLXRpbWU6ICcrZHN0QW55Wyd0YWlsLXRpbWUnXSk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnN0b3BFbmRUaW1lPXRoaXMuY29udGV4dC5jdXJyZW50VGltZTtcclxuICAgICAgICAgICAgICB0aGlzLl9hY3RpdmU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmVuZGVkPy5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICB9LCBkcmFpblRpbWUgKiAxMDAwKTtcclxuXHJcbiAgICAgICAgICB9ZWxzZSBpZiAoJ3N0YWxsZWQnID09PSBldlR5cGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnUGxheWJhY2sgc3RhbGxlZC4uLicpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YWxsZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zdGFsbGVkU3RhcnRUaW1lPXRoaXMuY29udGV4dC5jdXJyZW50VGltZTtcclxuICAgICAgICAgIH1lbHNlIGlmICgncmVzdW1lZCcgPT09IGV2VHlwZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdQbGF5YmFjayByZXN1bWVkIGFmdGVyIHN0YWxsLicpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YWxsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuc3RhbGxlZFN0YXJ0VGltZSE9bnVsbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhbGxlZFRpbWUgKz0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gdGhpcy5zdGFsbGVkU3RhcnRUaW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhbGxlZFN0YXJ0VGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsbEJ1ZmZlck9icyhmcmFtZU9mZnNldD86bnVtYmVyKTpPYnNlcnZhYmxlPG51bWJlcnxudWxsPiB7XHJcblxyXG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4oc3Vic2NyaWJlciA9PiB7XHJcbiAgICAgICAgaWYoZnJhbWVPZmZzZXQpe1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoXCJTdGFydGluZyBwbGF5YmFjayBmcm9tIHBvc2l0aW9uIG5vdCBlcXVhbCB6ZXJvIG5vdCBzdXBwb3J0ZWQgeWV0LlwiKSk7XHJcbiAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgbGV0IGZpbGxlZCA9IHRoaXMuZmlsbGVkRnJhbWVzO1xyXG4gICAgICAgICAgbGV0IGJ1ZkxlbiA9IDA7XHJcbiAgICAgICAgICBpZiAodGhpcy5fYXVkaW9JbnB1dFN0cmVhbSAmJiB0aGlzLl9haXNCdWZzICYmICh0aGlzLnJlYWREYXRhU3Vic2NyaXB0aW9uPT1udWxsIHx8IHRoaXMucmVhZERhdGFTdWJzY3JpcHRpb24/LmNsb3NlZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWFkRGF0YVN1YnNjcmlwdGlvbj10aGlzLl9hdWRpb0lucHV0U3RyZWFtLnJlYWRPYnModGhpcy5fYWlzQnVmcykucGlwZShcclxuICAgICAgICAgICAgICBleHBhbmQoKHJlYWQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgdGhpcy5fYWlzQnVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ckJ1ZmZlcnMgPSBuZXcgQXJyYXk8YW55Pih0aGlzLmNoYW5uZWxDb3VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuY2hhbm5lbENvdW50OyBjaCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYWRDaCA9IHRoaXMuX2Fpc0J1ZnNbY2hdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGFkQ2hDb3B5ID0gbmV3IEZsb2F0MzJBcnJheShyZWFkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJ1ZkxlbiA9IGFkQ2hDb3B5Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHJlYWQ9PT1hZENoLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZENoQ29weS5zZXQoYWRDaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogc2xpY2UoKSBkb2VzIG5vdCB3b3JrIGhlcmUsIHNpbmNlIGl0IHJldHVybnMgYSBzaGFsbG93IGNvcHkuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8cmVhZDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkQ2hDb3B5W2ldPWFkQ2hbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHRyQnVmZmVyc1tjaF0gPSBhZENoQ29weS5idWZmZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbWQ6ICdkYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGNoczogdGhpcy5jaGFubmVsQ291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RhdGE6IHRyQnVmZmVyc1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRyQnVmZmVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVkICs9IHJlYWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaWxsQnVmZmVyT2JzOiBTZW50IFwiK3JlYWQrXCIgZnJhbWVzIHRvIGF1ZGlvIHNvdXJjZSB3b3JrbGV0LiBGaWxsZWQ6IFwiK2ZpbGxlZCtcIiwgdG8gZmlsbDogXCIrdGhpcy5idWZmZXJGaWxsRnJhbWVzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYXVkaW9JbnB1dFN0cmVhbSAmJiBmaWxsZWQgPCB0aGlzLmJ1ZmZlckZpbGxGcmFtZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkluZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6ZmlsbEJ1ZmZlck9iczogTmV4dCBpbmRkYiBhdWRpbyBpbnB1dCBzdHJlYW0gcmVhZE9ic1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hdWRpb0lucHV0U3RyZWFtLnJlYWRPYnModGhpcy5fYWlzQnVmcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuc3RhbGxlZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY21kOiAnY29udGludWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaWxsQnVmZmVyT2JzOiBSZXR1cm4gRU1QVFkgKHJlYWQ6IFwiK3JlYWQrXCIpXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuZE9mU3RyZWFtPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNtZDogJ2VuZE9mU3RyZWFtJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmV0QXVkaW9CdWZmZXIoKTogTmV0QXVkaW9CdWZmZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9uZXRBdWRpb0J1ZmZlclxyXG4gIH1cclxuXHJcbiAgc2V0IG5ldEF1ZGlvQnVmZmVyKHZhbHVlOiBOZXRBdWRpb0J1ZmZlciB8IG51bGwpIHtcclxuICAgIHRoaXMuX25ldEF1ZGlvQnVmZmVyID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5fbmV0QXVkaW9CdWZmZXI/LmNoYW5uZWxDb3VudCkge1xyXG4gICAgICB0aGlzLmNoYW5uZWxDb3VudCA9IHRoaXMuX25ldEF1ZGlvQnVmZmVyPy5jaGFubmVsQ291bnQ7XHJcbiAgICAgIHRoaXMuYnVmZmVyRmlsbEZyYW1lcyA9IHRoaXMuX25ldEF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUgKiB0aGlzLl9idWZmZXJGaWxsU2Vjb25kcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBidWZmZXJGaWxsU2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGJ1ZmZlckZpbGxTZWNvbmRzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2J1ZmZlckZpbGxTZWNvbmRzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzdGFydCh3aGVuPzogbnVtYmVyIHwgdW5kZWZpbmVkLG9mZnNldD86IG51bWJlciB8IHVuZGVmaW5lZCxkdXJhdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKHdoZW4pIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXCJ3aGVuIHBhcmFtZXRlciBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBieSBJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY2xhc3NcIilcclxuICAgIH1cclxuICAgIHRoaXMuX3BsYXlTdGFydFRpbWU9bnVsbDtcclxuICAgIHRoaXMuc3RvcEVuZFRpbWU9bnVsbDtcclxuICAgIHRoaXMuc3RhbGxlZFRpbWU9MDtcclxuICAgIHRoaXMuc3RhbGxlZFN0YXJ0VGltZT1udWxsO1xyXG5cclxuICAgIGlmICh0aGlzLl9uZXRBdWRpb0J1ZmZlcikge1xyXG4gICAgICBsZXQgYXJyQWlzPW5ldyBOZXRBdWRpb0lucHV0U3RyZWFtKHRoaXMuX25ldEF1ZGlvQnVmZmVyKTtcclxuICAgICAgaWYob2Zmc2V0PT09dW5kZWZpbmVkICYmIGR1cmF0aW9uPT09dW5kZWZpbmVkKXtcclxuICAgICAgICB0aGlzLl9hdWRpb0lucHV0U3RyZWFtID0gYXJyQWlzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBsZXQgb2Zmc2V0RnJhbWVzPTA7XHJcbiAgICAgICAgbGV0IGR1cmF0aW9uRnJhbWVzPXVuZGVmaW5lZDtcclxuICAgICAgICBpZihvZmZzZXQhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgIG9mZnNldEZyYW1lcz1NYXRoLmZsb29yKG9mZnNldCAqIHRoaXMuX25ldEF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkdXJhdGlvbiE9PXVuZGVmaW5lZCl7XHJcbiAgICAgICAgICBkdXJhdGlvbkZyYW1lcz1NYXRoLmZsb29yKGR1cmF0aW9uICogdGhpcy5fbmV0QXVkaW9CdWZmZXIuc2FtcGxlUmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vY29uc29sZS5lcnJvcihcIlBsYXliYWNrIHNlbGVjdGlvbiBub3Qgc3VwcG9ydGVkIHlldCFcIik7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9JbnB1dFN0cmVhbT1uZXcgQXN5bmNFZGl0RmxvYXQzMkFycmF5SW5wdXRTdHJlYW0oYXJyQWlzLG9mZnNldEZyYW1lcyxkdXJhdGlvbkZyYW1lcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjaHM9dGhpcy5fbmV0QXVkaW9CdWZmZXIuY2hhbm5lbENvdW50O1xyXG4gICAgICB0aGlzLl9haXNCdWZzPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KGNocyk7XHJcbiAgICAgIGZvcihsZXQgY2g9MDtjaDxjaHM7Y2grKyl7XHJcbiAgICAgICAgdGhpcy5fYWlzQnVmc1tjaF09bmV3IEZsb2F0MzJBcnJheSh0aGlzLl9zdHJlYW1SZWFkRnJhbWVMZW4pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZpbGxCdWZmZXJPYnMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIGNvbXBsZXRlOiAoKT0+e1xyXG4gICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydDogQXN5bmMgcGxheSBidWZmZXIgZmlsbCBjb21wbGV0ZWQuIFNlbmRpbmcgc3RhcnQgY29tbWFuZCB0byBhdWRpbyB3b3JrbGV0LlwiKTtcclxuICAgICAgICAgIGlmKHRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe2NtZDogJ3N0YXJ0J30pO1xyXG4gICAgICAgICAgICBpZihvZmZzZXQpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLl9wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl9hY3RpdmU9dHJ1ZTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wKCkge1xyXG4gICAgdGhpcy5fYWN0aXZlPWZhbHNlO1xyXG4gICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtjbWQ6ICdzdG9wJ30pO1xyXG4gICAgdGhpcy5vbmVuZGVkPy5jYWxsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXlQb3NpdGlvblRpbWUoKTpudW1iZXJ8bnVsbCB7XHJcbiAgICBsZXQgcHB0Om51bWJlcnxudWxsPW51bGw7XHJcbiAgICBpZih0aGlzLl9wbGF5U3RhcnRUaW1lIT09bnVsbCkge1xyXG4gICAgICBpZih0aGlzLl9hY3RpdmUpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGFsbGVkU3RhcnRUaW1lID09IG51bGwpIHtcclxuICAgICAgICAgIHBwdCA9IHRoaXMuY29udGV4dC5jdXJyZW50VGltZSAtIHRoaXMuX3BsYXlTdGFydFRpbWUgLSB0aGlzLnN0YWxsZWRUaW1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcHQgPSB0aGlzLnN0YWxsZWRTdGFydFRpbWUgLSB0aGlzLl9wbGF5U3RhcnRUaW1lIC0gdGhpcy5zdGFsbGVkVGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmKHRoaXMuc3RvcEVuZFRpbWUhPW51bGwpe1xyXG4gICAgICAgICAgLy8gaWYodGhpcy5fbmV0QXVkaW9CdWZmZXI/LmZyYW1lTGVuICE9bnVsbCAmJiB0aGlzLl9uZXRBdWRpb0J1ZmZlci5zYW1wbGVSYXRlKSB7XHJcbiAgICAgICAgICAvLyAgIHBwdCA9IHRoaXMuX25ldEF1ZGlvQnVmZmVyPy5mcmFtZUxlbiAvIHRoaXMuX25ldEF1ZGlvQnVmZmVyPy5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgLy8gfWVsc2V7XHJcbiAgICAgICAgICAgIHBwdCA9IHRoaXMuc3RvcEVuZFRpbWUgLSB0aGlzLl9wbGF5U3RhcnRUaW1lIC0gdGhpcy5zdGFsbGVkVGltZTtcclxuICAgICAgICAgIC8vfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBwdDtcclxuICB9XHJcblxyXG59XHJcblxyXG4iXX0=
|
|
@@ -399,4 +399,4 @@ export class AudioPlayer {
|
|
|
399
399
|
return ppFrs;
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BsYXliYWNrL3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFNUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDcEYsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFaEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUk1QyxNQUFNLENBQU4sSUFBYSxTQUFpRTtBQUE5RSxXQUFhLFNBQVM7SUFBRSw2Q0FBTSxDQUFBO0lBQUMsMkNBQUssQ0FBQTtJQUFDLCtDQUFPLENBQUE7SUFBQyxxREFBVSxDQUFBO0lBQUUsK0NBQU8sQ0FBQTtJQUFFLDJDQUFLLENBQUE7SUFBQywyQ0FBSyxDQUFBO0FBQUEsQ0FBQyxFQUFqRSxTQUFTLEtBQVQsU0FBUyxRQUF3RDtBQUU5RSxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksSUFBYyxFQUFFLFlBQW9CO1FBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxh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XHJcbmltcG9ydCB7IEF1ZGlvQ2xpcCB9IGZyb20gJy4uL3BlcnNpc3RvcidcclxuaW1wb3J0IHtBcnJheUF1ZGlvQnVmZmVyfSBmcm9tIFwiLi4vYXJyYXlfYXVkaW9fYnVmZmVyXCI7XHJcbmltcG9ydCB7QXJyYXlBdWRpb0J1ZmZlclNvdXJjZU5vZGV9IGZyb20gXCIuL2FycmF5X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZVwiO1xyXG5pbXBvcnQge0luZGV4ZWREYkF1ZGlvQnVmZmVyfSBmcm9tIFwiLi4vaW5kZGJfYXVkaW9fYnVmZmVyXCI7XHJcbmltcG9ydCB7QXVkaW9Tb3VyY2VXb3JrbGV0TW9kdWxlTG9hZGVyfSBmcm9tIFwiLi9hdWRpb19zb3VyY2Vfd29ya2xldF9tb2R1bGVfbG9hZGVyXCI7XHJcbmltcG9ydCB7SW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlfSBmcm9tIFwiLi9pbmRkYl9hdWRpb19idWZmZXJfc291cmNlX25vZGVcIjtcclxuaW1wb3J0IHtBdWRpb1NvdXJjZU5vZGV9IGZyb20gXCIuL2F1ZGlvX3NvdXJjZV9ub2RlXCI7XHJcbmltcG9ydCB7TmV0QXVkaW9CdWZmZXJ9IGZyb20gXCIuLi9uZXRfYXVkaW9fYnVmZmVyXCI7XHJcbmltcG9ydCB7TmV0QXVkaW9CdWZmZXJTb3VyY2VOb2RlfSBmcm9tIFwiLi9uZXRfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlXCI7XHJcbmltcG9ydCB7QXVkaW9CdWZmZXJTb3VyY2UsIEF1ZGlvU291cmNlfSBmcm9tIFwiLi4vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuaW1wb3J0IHtBdWRpb0NvbnRleHRQcm92aWRlcn0gZnJvbSBcIi4uL2NvbnRleHRcIjtcclxuXHJcblxyXG5cclxuICAgIGV4cG9ydCBlbnVtICBFdmVudFR5cGUge0NMT1NFRCxSRUFEWSxTVEFSVEVELFBPU19VUERBVEUsIFNUT1BQRUQsIEVOREVELEVSUk9SfVxyXG5cclxuICAgIGV4cG9ydCBjbGFzcyBBdWRpb1BsYXllckV2ZW50e1xyXG5cclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90eXBlOkV2ZW50VHlwZTtcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90aW1lUG9zaXRpb246bnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3Rvcih0eXBlOkV2ZW50VHlwZSwgdGltZVBvc2l0aW9uPzpudW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVQb3NpdGlvbiA9IHRpbWVQb3NpdGlvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCB0eXBlKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCB0aW1lUG9zaXRpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aW1lUG9zaXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBBdWRpb1BsYXllckxpc3RlbmVyIHtcclxuICAgICAgICBhdWRpb1BsYXllclVwZGF0ZShlOkF1ZGlvUGxheWVyRXZlbnQpOnZvaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEF1ZGlvUGxheWVyIHtcclxuXHJcbiAgICAgICAgZ2V0IGF1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb24oKTogQWN0aW9uPGJvb2xlYW4+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9CVUZTSVpFOm51bWJlciA9IDgxOTI7XHJcbiAgICAgICAgcHJpdmF0ZSBydW5uaW5nPWZhbHNlO1xyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0YXJ0QWN0aW9uOkFjdGlvbjx2b2lkPjtcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFNlbGVjdGlvbkFjdGlvbjpBY3Rpb248dm9pZD47XHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbjpBY3Rpb248Ym9vbGVhbj47XHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfc3RvcEFjdGlvbjpBY3Rpb248dm9pZD47XHJcbiAgICAgICAgYnVmU2l6ZTpudW1iZXI7XHJcbiAgICAgICAgY29udGV4dDpBdWRpb0NvbnRleHR8bnVsbD1udWxsO1xyXG4gICAgICAgIHJlYWR5PWZhbHNlO1xyXG4gICAgICAgIGxpc3RlbmVyOkF1ZGlvUGxheWVyTGlzdGVuZXI7XHJcbiAgICAgICAgX2F1ZGlvQ2xpcDpBdWRpb0NsaXB8bnVsbD1udWxsO1xyXG4gICAgICAgIHByaXZhdGUgX2F1ZGlvU291cmNlOkF1ZGlvU291cmNlfG51bGw9bnVsbDtcclxuICAgICAgICBzb3VyY2VCdWZmZXJOb2RlOkF1ZGlvQnVmZmVyU291cmNlTm9kZXxudWxsPW51bGw7XHJcbiAgICAgICAgc291cmNlQXVkaW9Xb3JrbGV0Tm9kZTpBdWRpb1NvdXJjZU5vZGV8bnVsbD1udWxsO1xyXG5cclxuICAgICAgICBidWZmUG9zOm51bWJlcjtcclxuICAgICAgICBwcml2YXRlIHplcm9CdWZDbnQ6bnVtYmVyO1xyXG4gICAgICAgIG46YW55O1xyXG4gICAgICAgIHpiOkZsb2F0MzJBcnJheTtcclxuICAgICAgICBwcml2YXRlIHBsYXlTdGFydFRpbWU6bnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgICAgICAgcHJpdmF0ZSB0aW1lclZhcjpudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcihsaXN0ZW5lcjpBdWRpb1BsYXllckxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXI9bGlzdGVuZXI7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmU2l6ZSA9IEF1ZGlvUGxheWVyLkRFRkFVTFRfQlVGU0laRTtcclxuICAgICAgICAgICAgdGhpcy5uPW5hdmlnYXRvcjtcclxuICAgICAgICAgICAgdGhpcy5idWZmUG9zPTA7XHJcbiAgICAgICAgICAgIHRoaXMuemVyb0J1ZkNudD0wO1xyXG4gICAgICAgICAgICB0aGlzLnpiID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmJ1ZlNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydEFjdGlvbiA9IG5ldyBBY3Rpb24oJ1N0YXJ0Jyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24ub25BY3Rpb24gPSAoKT0+dGhpcy5zdGFydCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbj1uZXcgQWN0aW9uKCdTdGFydCBzZWxlY3RlZCcpXHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRydWVcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb24ub25BY3Rpb24gPSAoKT0+dGhpcy5zdGFydFNlbGVjdGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb249bmV3IEFjdGlvbjxib29sZWFuPihcIkF1dG9wbGF5IG9uIHNlbGVjdFwiLGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcEFjdGlvbiA9IG5ldyBBY3Rpb24oJ1N0b3AnKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcEFjdGlvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3BBY3Rpb24ub25BY3Rpb24gPSAoKT0+dGhpcy5zdG9wKCk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBfYXVkaW9Db250ZXh0KCk6QXVkaW9Db250ZXh0fG51bGx7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmNvbnRleHQpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0PUF1ZGlvQ29udGV4dFByb3ZpZGVyLmF1ZGlvQ29udGV4dEluc3RhbmNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuc3RhdGUhPT0ncnVubmluZycpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHN0YXJ0QWN0aW9uKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgc3RhcnRTZWxlY3Rpb25BY3Rpb24oKXtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHN0b3BBY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdG9wQWN0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0IGF1ZGlvQ2xpcChhdWRpb0NsaXA6QXVkaW9DbGlwfCBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLl9hdWRpb0NsaXA9YXVkaW9DbGlwXHJcbiAgICAgICAgICAgIGxldCBsZW5ndGggPSAwO1xyXG4gICAgICAgICAgICBsZXQgY2hzID0gMDtcclxuICAgICAgICAgICAgaWYgKGF1ZGlvQ2xpcCAmJiBhdWRpb0NsaXAuYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXVkaW9EYXRhSG9sZGVyPWF1ZGlvQ2xpcC5hdWRpb0RhdGFIb2xkZXI7XHJcbiAgICAgICAgICAgICAgICBjaHMgPSBhdWRpb0RhdGFIb2xkZXIubnVtYmVyT2ZDaGFubmVsc1xyXG4gICAgICAgICAgICAgICAgaWYgKGNocyA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBhdWRpb0RhdGFIb2xkZXIuZnJhbWVMZW47XHJcbiAgICAgICAgICAgICAgICAgICAgLy9pZiAoY2hzID4gdGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uLm1heENoYW5uZWxDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgIC8vIFRPRE8gZXhjZXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1ZGlvU291cmNlPWF1ZGlvRGF0YUhvbGRlci5hdWRpb1NvdXJjZTtcclxuXHJcbiAgICAgICAgICAgICAgICBhdWRpb0NsaXAuYWRkU2VsZWN0aW9uT2JzZXJ2ZXIoKGFjKT0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZCA9IHRoaXMuc3RhcnRTZWxlY3Rpb25EaXNhYmxlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZCAmJiB0aGlzLl9hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0U2VsZWN0ZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1ZGlvU291cmNlPW51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICBnZXQgYXVkaW9Tb3VyY2UoKTogQXVkaW9Tb3VyY2UgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXVkaW9Tb3VyY2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldCBhdWRpb1NvdXJjZSh2YWx1ZTogQXVkaW9Tb3VyY2UgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wKCk7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9Tb3VyY2UgPSB2YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvU291cmNlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXJ0QWN0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5SRUFEWSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhcnRBY3Rpb25zKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoRXZlbnRUeXBlLkNMT1NFRCkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgX2xvYWRTb3VyY2VXb3JrbGV0QW5kSW5pdFN0YXJ0KCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgQXVkaW9Tb3VyY2VXb3JrbGV0TW9kdWxlTG9hZGVyLmxvYWRNb2R1bGUodGhpcy5jb250ZXh0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJQbGF5ZXIgcmVhZHkuICggYnkgUGxheWVyOjpfbG9hZFNvdXJjZVdvcmtsZXRBbmRJbml0U3RhcnQoKVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXJ0QWN0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoRXZlbnRUeXBlLlJFQURZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGFydEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5DTE9TRUQpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGFkZCBtb2R1bGUgJyArIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfc3RhcnRBdWRpb1NvdXJjZVdvcmtsZXROb2RlKCl7XHJcbiAgICAgIHRoaXMuX2xvYWRTb3VyY2VXb3JrbGV0QW5kSW5pdFN0YXJ0KCk7XHJcbiAgICAgICAgICBpZih0aGlzLmNvbnRleHQgJiYgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5vbnByb2Nlc3NvcmVycm9yID0gKGV2OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBtc2cgPSAnVW5rbndvbiBlcnJvcic7XHJcbiAgICAgICAgICAgICAgaWYgKGV2IGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgbXNnID0gZXYubWVzc2FnZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1ZGlvIHNvdXJjZSB3b3JrbGV0IGVycm9yOiBcIiArIG1zZyk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE9cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubGlzdGVuZXIuZXJyb3IobXNnKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKTsgLy8gdGhpcyBhbHJlYWR5IHN0YXJ0cyBwbGF5aW5nXHJcbiAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5vbmVuZGVkID0gKCkgPT4gdGhpcy5vbmVuZGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMucnVubmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5zdGFydCgpO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJQbGF5YmFjayBzdGFydCBhY3Rpb24gZW5hYmxlZC4gKCBieSBQbGF5ZXI6Ol9zdGFydEF1ZGlvU291cmNlV29ya2xldE5vZGUoKVwiKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5fc3RvcEFjdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5TVEFSVEVEKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAgICAgICBzdGFydCgpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2F1ZGlvQ29udGV4dCgpO1xyXG5cclxuICAgICAgICAgICAgaWYodGhpcy5jb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkICYmICF0aGlzLnJ1bm5pbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0YXRlID09PSAnc3VzcGVuZGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQucmVzdW1lKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgocmVhc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlYXNvbi5tZXNzYWdlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVhc29uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZXh0LnN0YXRlID09PSAnY2xvc2VkJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSAnRXJyb3I6IENhbm5vdCBzdGFydCBwbGF5YmFjay4gQXVkaW8gY29udGV4dCBpcyBhbHJlYWR5IGNsb3NlZCEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB1cGRhdGVTdGFydEFjdGlvbnMoKXtcclxuXHJcbiAgICAgICAgICBpZih0aGlzLnJlYWR5KXtcclxuICAgICAgICAgICAgaWYodGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBdWRpb0J1ZmZlclNvdXJjZSB8fCB0aGlzLl9hdWRpb1NvdXJjZSBpbnN0YW5jZW9mIEFycmF5QXVkaW9CdWZmZXIgfHwgdGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBJbmRleGVkRGJBdWRpb0J1ZmZlcil7XHJcbiAgICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQ9dGhpcy5zdGFydFNlbGVjdGlvbkRpc2FibGVkKCk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMuX2F1ZGlvU291cmNlIGluc3RhbmNlb2YgTmV0QXVkaW9CdWZmZXIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYXVkaW9Tb3VyY2UuYWRkT25SZWFkeUxpc3RlbmVyKCgpPT57XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZD10aGlzLnN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdGFydFNlbGVjdGlvbkRpc2FibGVkKCl7XHJcbiAgICAgICAgICByZXR1cm4gISh0aGlzLl9hdWRpb0NsaXAgJiYgIXRoaXMuc3RhcnRBY3Rpb24uZGlzYWJsZWQgJiYgdGhpcy5fYXVkaW9DbGlwLnNlbGVjdGlvbiApXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RhcnQocGxheVNlbGVjdGlvbj1mYWxzZSl7XHJcbiAgICAgICAgICAgICAgICBpZighdGhpcy5jb250ZXh0KXtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IGF1ZGlvIGNvbnRleHQhXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLl9hdWRpb1NvdXJjZSBpbnN0YW5jZW9mIEF1ZGlvQnVmZmVyU291cmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc291cmNlQnVmZmVyTm9kZSA9IHRoaXMuY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcclxuICAgICAgICAgICAgdGhpcy5zb3VyY2VCdWZmZXJOb2RlLmJ1ZmZlciA9IHRoaXMuX2F1ZGlvU291cmNlLmF1ZGlvQnVmZmVyO1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZUJ1ZmZlck5vZGUuY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pO1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZUJ1ZmZlck5vZGUub25lbmRlZCA9ICgpID0+IHRoaXMub25lbmRlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLnBsYXlTdGFydFRpbWUgPSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMucnVubmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIHVuZm9ydHVuYXRlbHkgV2ViIEF1ZGlvIEFQSSB1c2VzIHRpbWUgdmFsdWVzIG5vdCBmcmFtZXNcclxuICAgICAgICAgICAgY29uc3QgYWMgPSB0aGlzLl9hdWRpb0NsaXBcclxuICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XHJcbiAgICAgICAgICAgIGlmIChwbGF5U2VsZWN0aW9uICYmIGFjICYmIGFjLnNlbGVjdGlvbikge1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBzID0gYWMuc2VsZWN0aW9uO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHNyID0gYWMuYXVkaW9EYXRhSG9sZGVyLnNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgICAgb2Zmc2V0ID0gcy5sZWZ0RnJhbWUgLyBzcjtcclxuICAgICAgICAgICAgICBjb25zdCBzdG9wUG9zSW5zZWNzID0gcy5yaWdodEZyYW1lIC8gc3I7XHJcbiAgICAgICAgICAgICAgY29uc3QgZHVyID0gc3RvcFBvc0luc2VjcyAtIG9mZnNldDtcclxuICAgICAgICAgICAgICB0aGlzLnNvdXJjZUJ1ZmZlck5vZGUuc3RhcnQoMCwgb2Zmc2V0LCBkdXIpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zb3VyY2VCdWZmZXJOb2RlLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydEFjdGlvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLl9zdG9wQWN0aW9uLmRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoRXZlbnRUeXBlLlNUQVJURUQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hdWRpb1NvdXJjZSBpbnN0YW5jZW9mIEFycmF5QXVkaW9CdWZmZXIgfHwgdGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBJbmRleGVkRGJBdWRpb0J1ZmZlciB8fCB0aGlzLl9hdWRpb1NvdXJjZSBpbnN0YW5jZW9mIE5ldEF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgQXVkaW9Tb3VyY2VXb3JrbGV0TW9kdWxlTG9hZGVyLmxvYWRNb2R1bGUodGhpcy5jb250ZXh0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5U3RhcnRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBcnJheUF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhYWJzbiA9IG5ldyBBcnJheUF1ZGlvQnVmZmVyU291cmNlTm9kZSh0aGlzLmNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgYWFic24uYXJyYXlBdWRpb0J1ZmZlciA9IHRoaXMuX2F1ZGlvU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlID0gYWFic247XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBJbmRleGVkRGJBdWRpb0J1ZmZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWFzbiA9IG5ldyBJbmRleGVkRGJBdWRpb0J1ZmZlclNvdXJjZU5vZGUodGhpcy5jb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlhc24uaW5kZGJBdWRpb0J1ZmZlciA9IHRoaXMuX2F1ZGlvU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlID0gaWFzbjtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hdWRpb1NvdXJjZSBpbnN0YW5jZW9mIE5ldEF1ZGlvQnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYWJzbiA9IG5ldyBOZXRBdWRpb0J1ZmZlclNvdXJjZU5vZGUodGhpcy5jb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5hYnNuLm5ldEF1ZGlvQnVmZmVyID0gdGhpcy5fYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUgPSBuYWJzbjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUub25wcm9jZXNzb3JlcnJvciA9IChldjogRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXNnID0gJ1Vua253b24gZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldiBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gZXYubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1ZGlvIHNvdXJjZSB3b3JrbGV0IGVycm9yOiBcIiArIG1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuRVJST1IpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbik7IC8vIHRoaXMgYWxyZWFkeSBzdGFydHMgcGxheWluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlLm9uZW5kZWQgPSAoKSA9PiB0aGlzLm9uZW5kZWQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjID0gdGhpcy5fYXVkaW9DbGlwXHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gMFxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBsYXlTZWxlY3Rpb24gJiYgYWMgJiYgYWMuc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IGFjLnNlbGVjdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzciA9IGFjLmF1ZGlvRGF0YUhvbGRlci5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHMubGVmdEZyYW1lIC8gc3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcFBvc0luc2VjcyA9IHMucmlnaHRGcmFtZSAvIHNyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGR1ciA9IHN0b3BQb3NJbnNlY3MgLSBvZmZzZXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUuc3RhcnQoMCwgb2Zmc2V0LCBkdXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdG9wQWN0aW9uLmRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5TVEFSVEVEKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXJ0QWN0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuQ0xPU0VEKSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICBzdGFydFNlbGVjdGVkKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hdWRpb0NvbnRleHQoKTtcclxuICAgICAgICAgIGlmKCF0aGlzLmNvbnRleHQpe1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBnZXQgYXVkaW8gY29udGV4dCFcIik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYoIXRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkICYmICF0aGlzLnJ1bm5pbmcpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RhdGUgPT09ICdzdXNwZW5kZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5yZXN1bWUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9zdGFydCh0cnVlKTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVhc29uLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRocm93IHJlYXNvbjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1lbHNlIGlmKHRoaXMuY29udGV4dC5zdGF0ZT09PSdjbG9zZWQnKXtcclxuICAgICAgICAgICAgY29uc3QgbXNnPSdFcnJvcjogQ2Fubm90IHN0YXJ0IHBsYXliYWNrIG9mIHNlbGVjdGlvbi4gQXVkaW8gY29udGV4dCBpcyBhbHJlYWR5IGNsb3NlZCEnO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0KHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgICBzdG9wKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucnVubmluZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlQnVmZmVyTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlQnVmZmVyTm9kZS5zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUpe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUuc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lclZhciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXJWYXIpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoRXZlbnRUeXBlLlNUT1BQRUQpKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb25lbmRlZCgpIHtcclxuICAgICAgICAgICAgaWYodGhpcy50aW1lclZhciE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy50aW1lclZhcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24uZGlzYWJsZWQgPSAhdGhpcy5fYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRoaXMuc3RhcnRTZWxlY3Rpb25EaXNhYmxlZCgpXHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3BBY3Rpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJ1bm5pbmc9ZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5FTkRFRCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgcGxheVBvc2l0aW9uVGltZSgpOm51bWJlcnxudWxsIHtcclxuICAgICAgICAgICAgbGV0IHBwdD1udWxsO1xyXG4gICAgICAgICAgICBpZih0aGlzLmNvbnRleHQgJiYgdGhpcy5wbGF5U3RhcnRUaW1lIT09bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcHB0PSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgLSB0aGlzLnBsYXlTdGFydFRpbWU7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZSl7XHJcbiAgICAgICAgICAgICAgcHB0PXRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5wbGF5UG9zaXRpb25UaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwcHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgZ2V0IHBsYXlQb3NpdGlvbkZyYW1lcygpOm51bWJlcnxudWxsIHtcclxuICAgICAgICBsZXQgcHBGcnM6bnVtYmVyfG51bGw9bnVsbDtcclxuICAgICAgIGlmKHRoaXMuX2F1ZGlvU291cmNlKSB7XHJcbiAgICAgICAgIGxldCBzcj10aGlzLl9hdWRpb1NvdXJjZS5zYW1wbGVSYXRlO1xyXG4gICAgICAgICBpZiAoc3IpIHtcclxuICAgICAgICAgICBsZXQgcHBUaW1lID0gdGhpcy5wbGF5UG9zaXRpb25UaW1lO1xyXG4gICAgICAgICAgIGlmIChwcFRpbWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgIHBwRnJzID0gc3IgKiBwcFRpbWU7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBwRnJzO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuIl19
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3BsYXliYWNrL3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFNUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDcEYsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFaEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUk1QyxNQUFNLENBQU4sSUFBYSxTQUFpRTtBQUE5RSxXQUFhLFNBQVM7SUFBRSw2Q0FBTSxDQUFBO0lBQUMsMkNBQUssQ0FBQTtJQUFDLCtDQUFPLENBQUE7SUFBQyxxREFBVSxDQUFBO0lBQUUsK0NBQU8sQ0FBQTtJQUFFLDJDQUFLLENBQUE7SUFBQywyQ0FBSyxDQUFBO0FBQUEsQ0FBQyxFQUFqRSxTQUFTLEtBQVQsU0FBUyxRQUF3RDtBQUU5RSxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksSUFBYyxFQUFFLFlBQW9CO1FBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxh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QUFHLElBQUksRUFBRSxDQUFDO1lBQzNDLEdBQUcsR0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3ZELENBQUM7YUFBSyxJQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBQyxDQUFDO1lBQ3BDLEdBQUcsR0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVILElBQUksa0JBQWtCO1FBQ3BCLElBQUksS0FBSyxHQUFhLElBQUksQ0FBQztRQUM1QixJQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixJQUFJLEVBQUUsR0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztZQUNwQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNQLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDbkMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3BCLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDQSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9hY3Rpb24vYWN0aW9uJ1xyXG5pbXBvcnQgeyBBdWRpb0NsaXAgfSBmcm9tICcuLi9wZXJzaXN0b3InXHJcbmltcG9ydCB7QXJyYXlBdWRpb0J1ZmZlcn0gZnJvbSBcIi4uL2FycmF5X2F1ZGlvX2J1ZmZlclwiO1xyXG5pbXBvcnQge0FycmF5QXVkaW9CdWZmZXJTb3VyY2VOb2RlfSBmcm9tIFwiLi9hcnJheV9hdWRpb19idWZmZXJfc291cmNlX25vZGVcIjtcclxuaW1wb3J0IHtJbmRleGVkRGJBdWRpb0J1ZmZlcn0gZnJvbSBcIi4uL2luZGRiX2F1ZGlvX2J1ZmZlclwiO1xyXG5pbXBvcnQge0F1ZGlvU291cmNlV29ya2xldE1vZHVsZUxvYWRlcn0gZnJvbSBcIi4vYXVkaW9fc291cmNlX3dvcmtsZXRfbW9kdWxlX2xvYWRlclwiO1xyXG5pbXBvcnQge0luZGV4ZWREYkF1ZGlvQnVmZmVyU291cmNlTm9kZX0gZnJvbSBcIi4vaW5kZGJfYXVkaW9fYnVmZmVyX3NvdXJjZV9ub2RlXCI7XHJcbmltcG9ydCB7QXVkaW9Tb3VyY2VOb2RlfSBmcm9tIFwiLi9hdWRpb19zb3VyY2Vfbm9kZVwiO1xyXG5pbXBvcnQge05ldEF1ZGlvQnVmZmVyfSBmcm9tIFwiLi4vbmV0X2F1ZGlvX2J1ZmZlclwiO1xyXG5pbXBvcnQge05ldEF1ZGlvQnVmZmVyU291cmNlTm9kZX0gZnJvbSBcIi4vbmV0X2F1ZGlvX2J1ZmZlcl9zb3VyY2Vfbm9kZVwiO1xyXG5pbXBvcnQge0F1ZGlvQnVmZmVyU291cmNlLCBBdWRpb1NvdXJjZX0gZnJvbSBcIi4uL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcbmltcG9ydCB7QXVkaW9Db250ZXh0UHJvdmlkZXJ9IGZyb20gXCIuLi9jb250ZXh0XCI7XHJcblxyXG5cclxuXHJcbiAgICBleHBvcnQgZW51bSAgRXZlbnRUeXBlIHtDTE9TRUQsUkVBRFksU1RBUlRFRCxQT1NfVVBEQVRFLCBTVE9QUEVELCBFTkRFRCxFUlJPUn1cclxuXHJcbiAgICBleHBvcnQgY2xhc3MgQXVkaW9QbGF5ZXJFdmVudHtcclxuXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdHlwZTpFdmVudFR5cGU7XHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGltZVBvc2l0aW9uOm51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IodHlwZTpFdmVudFR5cGUsIHRpbWVQb3NpdGlvbj86bnVtYmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xyXG4gICAgICAgICAgICB0aGlzLl90aW1lUG9zaXRpb24gPSB0aW1lUG9zaXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgdHlwZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgdGltZVBvc2l0aW9uKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdGltZVBvc2l0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgQXVkaW9QbGF5ZXJMaXN0ZW5lciB7XHJcbiAgICAgICAgYXVkaW9QbGF5ZXJVcGRhdGUoZTpBdWRpb1BsYXllckV2ZW50KTp2b2lkO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBjbGFzcyBBdWRpb1BsYXllciB7XHJcblxyXG4gICAgICAgIGdldCBhdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uKCk6IEFjdGlvbjxib29sZWFuPiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwdWJsaWMgc3RhdGljIERFRkFVTFRfQlVGU0laRTpudW1iZXIgPSA4MTkyO1xyXG4gICAgICAgIHByaXZhdGUgcnVubmluZz1mYWxzZTtcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydEFjdGlvbjpBY3Rpb248dm9pZD47XHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRTZWxlY3Rpb25BY3Rpb246QWN0aW9uPHZvaWQ+O1xyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9QbGF5T25TZWxlY3RUb2dnbGVBY3Rpb246QWN0aW9uPGJvb2xlYW4+O1xyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0b3BBY3Rpb246QWN0aW9uPHZvaWQ+O1xyXG4gICAgICAgIGJ1ZlNpemU6bnVtYmVyO1xyXG4gICAgICAgIGNvbnRleHQ6QXVkaW9Db250ZXh0fG51bGw9bnVsbDtcclxuICAgICAgICByZWFkeT1mYWxzZTtcclxuICAgICAgICBsaXN0ZW5lcjpBdWRpb1BsYXllckxpc3RlbmVyO1xyXG4gICAgICAgIF9hdWRpb0NsaXA6QXVkaW9DbGlwfG51bGw9bnVsbDtcclxuICAgICAgICBwcml2YXRlIF9hdWRpb1NvdXJjZTpBdWRpb1NvdXJjZXxudWxsPW51bGw7XHJcbiAgICAgICAgc291cmNlQnVmZmVyTm9kZTpBdWRpb0J1ZmZlclNvdXJjZU5vZGV8bnVsbD1udWxsO1xyXG4gICAgICAgIHNvdXJjZUF1ZGlvV29ya2xldE5vZGU6QXVkaW9Tb3VyY2VOb2RlfG51bGw9bnVsbDtcclxuXHJcbiAgICAgICAgYnVmZlBvczpudW1iZXI7XHJcbiAgICAgICAgcHJpdmF0ZSB6ZXJvQnVmQ250Om51bWJlcjtcclxuICAgICAgICBuOmFueTtcclxuICAgICAgICB6YjpGbG9hdDMyQXJyYXk7XHJcbiAgICAgICAgcHJpdmF0ZSBwbGF5U3RhcnRUaW1lOm51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gICAgICAgIHByaXZhdGUgdGltZXJWYXI6bnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IobGlzdGVuZXI6QXVkaW9QbGF5ZXJMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyPWxpc3RlbmVyO1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZlNpemUgPSBBdWRpb1BsYXllci5ERUZBVUxUX0JVRlNJWkU7XHJcbiAgICAgICAgICAgIHRoaXMubj1uYXZpZ2F0b3I7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmZlBvcz0wO1xyXG4gICAgICAgICAgICB0aGlzLnplcm9CdWZDbnQ9MDtcclxuICAgICAgICAgICAgdGhpcy56YiA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5idWZTaXplKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24gPSBuZXcgQWN0aW9uKCdTdGFydCcpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydEFjdGlvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLm9uQWN0aW9uID0gKCk9PnRoaXMuc3RhcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb249bmV3IEFjdGlvbignU3RhcnQgc2VsZWN0ZWQnKVxyXG4gICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZD10cnVlXHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLm9uQWN0aW9uID0gKCk9PnRoaXMuc3RhcnRTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uPW5ldyBBY3Rpb248Ym9vbGVhbj4oXCJBdXRvcGxheSBvbiBzZWxlY3RcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3BBY3Rpb24gPSBuZXcgQWN0aW9uKCdTdG9wJyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3BBY3Rpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9wQWN0aW9uLm9uQWN0aW9uID0gKCk9PnRoaXMuc3RvcCgpO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgX2F1ZGlvQ29udGV4dCgpOkF1ZGlvQ29udGV4dHxudWxse1xyXG4gICAgICAgICAgICBpZighdGhpcy5jb250ZXh0KXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dD1BdWRpb0NvbnRleHRQcm92aWRlci5hdWRpb0NvbnRleHRJbnN0YW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNvbnRleHQgJiYgdGhpcy5jb250ZXh0LnN0YXRlIT09J3J1bm5pbmcnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCBzdGFydEFjdGlvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0QWN0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHN0YXJ0U2VsZWN0aW9uQWN0aW9uKCl7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb25cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCBzdG9wQWN0aW9uKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RvcEFjdGlvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldCBhdWRpb0NsaXAoYXVkaW9DbGlwOkF1ZGlvQ2xpcHwgbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fYXVkaW9DbGlwPWF1ZGlvQ2xpcFxyXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgbGV0IGNocyA9IDA7XHJcbiAgICAgICAgICAgIGlmIChhdWRpb0NsaXAgJiYgYXVkaW9DbGlwLmF1ZGlvRGF0YUhvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF1ZGlvRGF0YUhvbGRlcj1hdWRpb0NsaXAuYXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgY2hzID0gYXVkaW9EYXRhSG9sZGVyLm51bWJlck9mQ2hhbm5lbHNcclxuICAgICAgICAgICAgICAgIGlmIChjaHMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYXVkaW9EYXRhSG9sZGVyLmZyYW1lTGVuO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgKGNocyA+IHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbi5tYXhDaGFubmVsQ291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAvLyBUT0RPIGV4Y2VwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hdWRpb1NvdXJjZT1hdWRpb0RhdGFIb2xkZXIuYXVkaW9Tb3VyY2U7XHJcblxyXG4gICAgICAgICAgICAgICAgYXVkaW9DbGlwLmFkZFNlbGVjdGlvbk9ic2VydmVyKChhYyk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQgPSB0aGlzLnN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhcnRTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQgJiYgdGhpcy5fYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbi52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFNlbGVjdGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdWRpb1NvdXJjZT1udWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgZ2V0IGF1ZGlvU291cmNlKCk6IEF1ZGlvU291cmNlIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1ZGlvU291cmNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzZXQgYXVkaW9Tb3VyY2UodmFsdWU6IEF1ZGlvU291cmNlIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgIHRoaXMuX2F1ZGlvU291cmNlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9hdWRpb1NvdXJjZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGFydEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuUkVBRFkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVhZHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXJ0QWN0aW9ucygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5DTE9TRUQpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF9sb2FkU291cmNlV29ya2xldEFuZEluaXRTdGFydCgpe1xyXG4gICAgICAgICAgICBpZih0aGlzLmNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIEF1ZGlvU291cmNlV29ya2xldE1vZHVsZUxvYWRlci5sb2FkTW9kdWxlKHRoaXMuY29udGV4dCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiUGxheWVyIHJlYWR5LiAoIGJ5IFBsYXllcjo6X2xvYWRTb3VyY2VXb3JrbGV0QW5kSW5pdFN0YXJ0KClcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGFydEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5SRUFEWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhcnRBY3Rpb25zKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuQ0xPU0VEKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBhZGQgbW9kdWxlICcgKyBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX3N0YXJ0QXVkaW9Tb3VyY2VXb3JrbGV0Tm9kZSgpe1xyXG4gICAgICB0aGlzLl9sb2FkU291cmNlV29ya2xldEFuZEluaXRTdGFydCgpO1xyXG4gICAgICAgICAgaWYodGhpcy5jb250ZXh0ICYmIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUub25wcm9jZXNzb3JlcnJvciA9IChldjogRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbXNnID0gJ1Vua253b24gZXJyb3InO1xyXG4gICAgICAgICAgICAgIGlmIChldiBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIG1zZyA9IGV2Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBdWRpbyBzb3VyY2Ugd29ya2xldCBlcnJvcjogXCIgKyBtc2cpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmxpc3RlbmVyLmVycm9yKG1zZyk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KCkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbik7IC8vIHRoaXMgYWxyZWFkeSBzdGFydHMgcGxheWluZ1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUub25lbmRlZCA9ICgpID0+IHRoaXMub25lbmRlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUuc3RhcnQoKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiUGxheWJhY2sgc3RhcnQgYWN0aW9uIGVuYWJsZWQuICggYnkgUGxheWVyOjpfc3RhcnRBdWRpb1NvdXJjZVdvcmtsZXROb2RlKClcIik7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3BBY3Rpb24uZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuU1RBUlRFRCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgICAgICAgc3RhcnQoKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hdWRpb0NvbnRleHQoKTtcclxuXHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9zdGFydEFjdGlvbi5kaXNhYmxlZCAmJiAhdGhpcy5ydW5uaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdGF0ZSA9PT0gJ3N1c3BlbmRlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LnJlc3VtZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKHJlYXNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZWFzb24ubWVzc2FnZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlYXNvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29udGV4dC5zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gJ0Vycm9yOiBDYW5ub3Qgc3RhcnQgcGxheWJhY2suIEF1ZGlvIGNvbnRleHQgaXMgYWxyZWFkeSBjbG9zZWQhJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdXBkYXRlU3RhcnRBY3Rpb25zKCl7XHJcblxyXG4gICAgICAgICAgaWYodGhpcy5yZWFkeSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuX2F1ZGlvU291cmNlIGluc3RhbmNlb2YgQXVkaW9CdWZmZXJTb3VyY2UgfHwgdGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBcnJheUF1ZGlvQnVmZmVyIHx8IHRoaXMuX2F1ZGlvU291cmNlIGluc3RhbmNlb2YgSW5kZXhlZERiQXVkaW9CdWZmZXIpe1xyXG4gICAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkPXRoaXMuc3RhcnRTZWxlY3Rpb25EaXNhYmxlZCgpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBpZih0aGlzLl9hdWRpb1NvdXJjZSBpbnN0YW5jZW9mIE5ldEF1ZGlvQnVmZmVyKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2F1ZGlvU291cmNlLmFkZE9uUmVhZHlMaXN0ZW5lcigoKT0+e1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydEFjdGlvbi5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRTZWxlY3Rpb25BY3Rpb24uZGlzYWJsZWQ9dGhpcy5zdGFydFNlbGVjdGlvbkRpc2FibGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydEFjdGlvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhcnRTZWxlY3Rpb25EaXNhYmxlZCgpe1xyXG4gICAgICAgICAgcmV0dXJuICEodGhpcy5fYXVkaW9DbGlwICYmICF0aGlzLnN0YXJ0QWN0aW9uLmRpc2FibGVkICYmIHRoaXMuX2F1ZGlvQ2xpcC5zZWxlY3Rpb24gKVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHByaXZhdGUgX3N0YXJ0KHBsYXlTZWxlY3Rpb249ZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuY29udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGdldCBhdWRpbyBjb250ZXh0IVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBdWRpb0J1ZmZlclNvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZUJ1ZmZlck5vZGUgPSB0aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc291cmNlQnVmZmVyTm9kZS5idWZmZXIgPSB0aGlzLl9hdWRpb1NvdXJjZS5hdWRpb0J1ZmZlcjtcclxuICAgICAgICAgICAgdGhpcy5zb3VyY2VCdWZmZXJOb2RlLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy5zb3VyY2VCdWZmZXJOb2RlLm9uZW5kZWQgPSAoKSA9PiB0aGlzLm9uZW5kZWQoKTtcclxuICAgICAgICAgICAgdGhpcy5wbGF5U3RhcnRUaW1lID0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO1xyXG4gICAgICAgICAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB1bmZvcnR1bmF0ZWx5IFdlYiBBdWRpbyBBUEkgdXNlcyB0aW1lIHZhbHVlcyBub3QgZnJhbWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGFjID0gdGhpcy5fYXVkaW9DbGlwXHJcbiAgICAgICAgICAgIGxldCBvZmZzZXQgPSAwO1xyXG4gICAgICAgICAgICBpZiAocGxheVNlbGVjdGlvbiAmJiBhYyAmJiBhYy5zZWxlY3Rpb24pIHtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgcyA9IGFjLnNlbGVjdGlvbjtcclxuICAgICAgICAgICAgICBjb25zdCBzciA9IGFjLmF1ZGlvRGF0YUhvbGRlci5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgICAgIG9mZnNldCA9IHMubGVmdEZyYW1lIC8gc3I7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc3RvcFBvc0luc2VjcyA9IHMucmlnaHRGcmFtZSAvIHNyO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGR1ciA9IHN0b3BQb3NJbnNlY3MgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5zb3VyY2VCdWZmZXJOb2RlLnN0YXJ0KDAsIG9mZnNldCwgZHVyKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc291cmNlQnVmZmVyTm9kZS5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucGxheVN0YXJ0VGltZSA9IHRoaXMuY29udGV4dC5jdXJyZW50VGltZSAtIG9mZnNldDtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRBY3Rpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5fc3RvcEFjdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5TVEFSVEVEKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBcnJheUF1ZGlvQnVmZmVyIHx8IHRoaXMuX2F1ZGlvU291cmNlIGluc3RhbmNlb2YgSW5kZXhlZERiQXVkaW9CdWZmZXIgfHwgdGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBOZXRBdWRpb0J1ZmZlcikge1xyXG4gICAgICAgICAgICAgIEF1ZGlvU291cmNlV29ya2xldE1vZHVsZUxvYWRlci5sb2FkTW9kdWxlKHRoaXMuY29udGV4dCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucGxheVN0YXJ0VGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvU291cmNlIGluc3RhbmNlb2YgQXJyYXlBdWRpb0J1ZmZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWFic24gPSBuZXcgQXJyYXlBdWRpb0J1ZmZlclNvdXJjZU5vZGUodGhpcy5jb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGFhYnNuLmFycmF5QXVkaW9CdWZmZXIgPSB0aGlzLl9hdWRpb1NvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZSA9IGFhYnNuO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2F1ZGlvU291cmNlIGluc3RhbmNlb2YgSW5kZXhlZERiQXVkaW9CdWZmZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlhc24gPSBuZXcgSW5kZXhlZERiQXVkaW9CdWZmZXJTb3VyY2VOb2RlKHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpYXNuLmluZGRiQXVkaW9CdWZmZXIgPSB0aGlzLl9hdWRpb1NvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZSA9IGlhc247XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBOZXRBdWRpb0J1ZmZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFic24gPSBuZXcgTmV0QXVkaW9CdWZmZXJTb3VyY2VOb2RlKHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuYWJzbi5uZXRBdWRpb0J1ZmZlciA9IHRoaXMuX2F1ZGlvU291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlID0gbmFic247XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlLm9ucHJvY2Vzc29yZXJyb3IgPSAoZXY6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9ICdVbmtud29uIGVycm9yJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXYgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IGV2Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBdWRpbyBzb3VyY2Ugd29ya2xldCBlcnJvcjogXCIgKyBtc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoRXZlbnRUeXBlLkVSUk9SKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUuY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pOyAvLyB0aGlzIGFscmVhZHkgc3RhcnRzIHBsYXlpbmdcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlQXVkaW9Xb3JrbGV0Tm9kZS5vbmVuZGVkID0gKCkgPT4gdGhpcy5vbmVuZGVkKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5ydW5uaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhYyA9IHRoaXMuX2F1ZGlvQ2xpcFxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IDBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGF5U2VsZWN0aW9uICYmIGFjICYmIGFjLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBhYy5zZWxlY3Rpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3IgPSBhYy5hdWRpb0RhdGFIb2xkZXIuc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBzLmxlZnRGcmFtZSAvIHNyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3BQb3NJbnNlY3MgPSBzLnJpZ2h0RnJhbWUgLyBzcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkdXIgPSBzdG9wUG9zSW5zZWNzIC0gb2Zmc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlLnN0YXJ0KDAsIG9mZnNldCwgZHVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMucGxheVN0YXJ0VGltZSA9IHRoaXMuY29udGV4dC5jdXJyZW50VGltZSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2VsZWN0aW9uQWN0aW9uLmRpc2FibGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RvcEFjdGlvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuU1RBUlRFRCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGFydEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIuYXVkaW9QbGF5ZXJVcGRhdGUobmV3IEF1ZGlvUGxheWVyRXZlbnQoRXZlbnRUeXBlLkNMT1NFRCkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgc3RhcnRTZWxlY3RlZCgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYXVkaW9Db250ZXh0KCk7XHJcbiAgICAgICAgICBpZighdGhpcy5jb250ZXh0KXtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IGF1ZGlvIGNvbnRleHQhXCIpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmKCF0aGlzLl9zdGFydEFjdGlvbi5kaXNhYmxlZCAmJiAhdGhpcy5ydW5uaW5nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0YXRlID09PSAnc3VzcGVuZGVkJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQucmVzdW1lKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fc3RhcnQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKChyZWFzb24pID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlYXNvbi5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aHJvdyByZWFzb247XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9ZWxzZSBpZih0aGlzLmNvbnRleHQuc3RhdGU9PT0nY2xvc2VkJyl7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZz0nRXJyb3I6IENhbm5vdCBzdGFydCBwbGF5YmFjayBvZiBzZWxlY3Rpb24uIEF1ZGlvIGNvbnRleHQgaXMgYWxyZWFkeSBjbG9zZWQhJztcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgc3RvcCgpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnJ1bm5pbmcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvdXJjZUJ1ZmZlck5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUJ1ZmZlck5vZGUuc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VBdWRpb1dvcmtsZXROb2RlLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXJWYXIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyVmFyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyLmF1ZGlvUGxheWVyVXBkYXRlKG5ldyBBdWRpb1BsYXllckV2ZW50KEV2ZW50VHlwZS5TVE9QUEVEKSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9uZW5kZWQoKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGltZXJWYXIhPW51bGwpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXJWYXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0QWN0aW9uLmRpc2FibGVkID0gIXRoaXMuX2F1ZGlvU291cmNlO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydFNlbGVjdGlvbkFjdGlvbi5kaXNhYmxlZD10aGlzLnN0YXJ0U2VsZWN0aW9uRGlzYWJsZWQoKVxyXG4gICAgICAgICAgICB0aGlzLl9zdG9wQWN0aW9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ydW5uaW5nPWZhbHNlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5hdWRpb1BsYXllclVwZGF0ZShuZXcgQXVkaW9QbGF5ZXJFdmVudChFdmVudFR5cGUuRU5ERUQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHBsYXlQb3NpdGlvblRpbWUoKTpudW1iZXJ8bnVsbCB7XHJcbiAgICAgICAgICAgIGxldCBwcHQ9bnVsbDtcclxuICAgICAgICAgICAgaWYodGhpcy5jb250ZXh0ICYmIHRoaXMucGxheVN0YXJ0VGltZSE9PW51bGwpIHtcclxuICAgICAgICAgICAgICAgIHBwdD0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gdGhpcy5wbGF5U3RhcnRUaW1lO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZih0aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUpe1xyXG4gICAgICAgICAgICAgIHBwdD10aGlzLnNvdXJjZUF1ZGlvV29ya2xldE5vZGUucGxheVBvc2l0aW9uVGltZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHB0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIGdldCBwbGF5UG9zaXRpb25GcmFtZXMoKTpudW1iZXJ8bnVsbCB7XHJcbiAgICAgICAgbGV0IHBwRnJzOm51bWJlcnxudWxsPW51bGw7XHJcbiAgICAgICBpZih0aGlzLl9hdWRpb1NvdXJjZSkge1xyXG4gICAgICAgICBsZXQgc3I9dGhpcy5fYXVkaW9Tb3VyY2Uuc2FtcGxlUmF0ZTtcclxuICAgICAgICAgaWYgKHNyKSB7XHJcbiAgICAgICAgICAgbGV0IHBwVGltZSA9IHRoaXMucGxheVBvc2l0aW9uVGltZTtcclxuICAgICAgICAgICBpZiAocHBUaW1lICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICBwcEZycyA9IHNyICogcHBUaW1lO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcEZycztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiJdfQ==
|
|
@@ -138,10 +138,10 @@ export class BasicAudioCanvasLayerComponent extends CanvasLayerComponent {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
142
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BasicAudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
142
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: BasicAudioCanvasLayerComponent, usesInheritance: true, ngImport: i0 }); }
|
|
143
143
|
}
|
|
144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BasicAudioCanvasLayerComponent, decorators: [{
|
|
145
145
|
type: Directive
|
|
146
146
|
}] });
|
|
147
147
|
export class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
|
|
@@ -317,10 +317,10 @@ export class AudioCanvasLayerComponent extends BasicAudioCanvasLayerComponent {
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
321
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioCanvasLayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
321
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: AudioCanvasLayerComponent, inputs: { pointerPosition: "pointerPosition", selecting: "selecting", selection: "selection" }, outputs: { pointerPositionEventEmitter: "pointerPositionEventEmitter", selectingEventEmitter: "selectingEventEmitter", selectedEventEmitter: "selectedEventEmitter" }, host: { listeners: { "document:mouseup": "onMouseup($event)" } }, viewQueries: [{ propertyName: "bgCanvasRef", first: true, predicate: ["bg"], descendants: true, static: true }, { propertyName: "cursorCanvasRef", first: true, predicate: ["cursor"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 }); }
|
|
322
322
|
}
|
|
323
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioCanvasLayerComponent, decorators: [{
|
|
324
324
|
type: Directive
|
|
325
325
|
}], propDecorators: { bgCanvasRef: [{
|
|
326
326
|
type: ViewChild,
|
|
@@ -344,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
344
344
|
}], selectedEventEmitter: [{
|
|
345
345
|
type: Output
|
|
346
346
|
}] } });
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fY2FudmFzX2xheWVyX2NvbXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vdWkvYXVkaW9fY2FudmFzX2xheWVyX2NvbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQzs7QUFLaEMsTUFBTSxPQUFPLGFBQWE7SUFDeEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNoQyxDQUFDO0lBRUQsWUFBb0IsT0FBYyxFQUFVLEtBQVk7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBTztRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRSxDQUFDO0NBQzVEO0FBR0QsTUFBTSxPQUFnQiw4QkFBK0IsU0FBUSxvQkFBb0I7SUFEakY7O1FBRVkscUJBQWdCLEdBQXVCLElBQUksQ0FBQztRQUM1QyxhQUFRLEdBQWEsT0FBTyxDQUFDO1FBQzdCLGlCQUFZLEdBQUMsc0JBQXNCLENBQUM7S0FzSC9DO0lBcEhDOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLFFBQWdCO1FBQ3BDLElBQUksUUFBUSxHQUFDLElBQUks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QUM7NkJBQzlEO3lCQUNKO3FCQUNKO2lCQUNKO2FBQ0o7U0FDSjtJQUNMLENBQUM7OEdBeE1pQix5QkFBeUI7a0dBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEOUMsU0FBUzs4QkFTNkIsV0FBVztzQkFBN0MsU0FBUzt1QkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdNLGVBQWU7c0JBQXJELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJdkMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVk3QixlQUFlO3NCQUEzQixLQUFLO2dCQU1PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBV08sU0FBUztzQkFBckIsS0FBSztnQkEyQ0ksMkJBQTJCO3NCQUFwQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NhbnZhc0xheWVyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vdWkvY2FudmFzX2xheWVyX2NvbXBcIjtcclxuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gJy4uL3BlcnNpc3RvcidcclxuaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNYXJrZXJ9IGZyb20gXCIuL2NvbW1vblwiO1xyXG5pbXBvcnQge0RpbWVuc2lvbiwgUmVjdGFuZ2xlfSBmcm9tIFwiLi4vLi4vbWF0aC8yZC9nZW9tZXRyeVwiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdTZWxlY3Rpb257XHJcbiAgZ2V0IHN0YXJ0WCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0WDtcclxuICB9XHJcblxyXG4gIGdldCBlbmRYKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW5kWDtcclxuICB9XHJcblxyXG4gIHdpZHRoKCk6bnVtYmVye1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFgtdGhpcy5fc3RhcnRYXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdGFydFg6bnVtYmVyLCBwcml2YXRlIF9lbmRYOm51bWJlcil7fVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljQXVkaW9DYW52YXNMYXllckNvbXBvbmVudCBleHRlbmRzIENhbnZhc0xheWVyQ29tcG9uZW50IHtcclxuICBwcm90ZWN0ZWQgX2F1ZGlvRGF0YUhvbGRlcjpBdWRpb0RhdGFIb2xkZXJ8IG51bGw9bnVsbDtcclxuICBwcm90ZWN0ZWQgX2JnQ29sb3I6c3RyaW5nfG51bGw9J3doaXRlJztcclxuICBwcm90ZWN0ZWQgX3NlbGVjdENvbG9yPSdyZ2JhKDAlLDAlLDEwMCUsMjUlKSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgcGl4ZWwgcG9zaXRpb24gZGVwZW5kaW5nIG9uIGN1cnJlbnQgem9vbSBzZXR0aW5nLlxyXG4gICAqIEBwYXJhbSBmcmFtZVBvcyBhdWRpbyBmcmFtZSAoc2FtcGxlKSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIGZyYW1lVG9YUGl4ZWxQb3NpdGlvbihmcmFtZVBvczogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBsZXQgcGl4ZWxQb3M9bnVsbDtcclxuICAgIGxldCBmcmFtZUxlbmd0aCA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlcj8uZnJhbWVMZW47XHJcblxyXG4gICAgaWYoZnJhbWVMZW5ndGghPT11bmRlZmluZWQpIHtcclxuICAgICAgbGV0IHZ3O1xyXG4gICAgICBpZiAodGhpcy5ib3VuZHMpIHtcclxuICAgICAgICB2dyA9IHRoaXMuYm91bmRzLmRpbWVuc2lvbi53aWR0aDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsRGltZW5zaW9uKSB7XHJcbiAgICAgICAgdncgPSB0aGlzLnZpcnR1YWxEaW1lbnNpb24ud2lkdGg7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHZ3ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBwaXhlbFBvcyA9IGZyYW1lUG9zICogdncgLyBmcmFtZUxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBpeGVsUG9zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBwaXhlbCBwb3NpdGlvbiBpbiB2aWV3IHBvcnQgKHZpc2libGUgd2luZG93IG9mIHNjcm9sbCBwYW5lKS5cclxuICAgKiBAcGFyYW0gZnJhbWVQb3MgYXVkaW8gZnJhbWUgKHNhbXBsZSkgcG9zaXRpb25cclxuICAgKi9cclxuICBmcmFtZVRvVmlld1BvcnRYUGl4ZWxQb3NpdGlvbihmcmFtZVBvczogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBsZXQgcGl4ZWxQb3M9dGhpcy5mcmFtZVRvWFBpeGVsUG9zaXRpb24oZnJhbWVQb3MpO1xyXG4gICAgaWYocGl4ZWxQb3MhPW51bGwpe1xyXG4gICAgICByZXR1cm4gdGhpcy50b1hWaWV3UG9ydFBpeGVsUG9zaXRpb24ocGl4ZWxQb3MpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2aWV3UG9ydFhQaXhlbFRvRnJhbWVQb3NpdGlvbih4Vmlld1BvcnRQaXhlbFBvczogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBsZXQgdnBYZnJhbWVQb3M9bnVsbDtcclxuICAgIGNvbnN0IGZyYW1lTGVuZ3RoID0gdGhpcy5fYXVkaW9EYXRhSG9sZGVyPy5mcmFtZUxlbjtcclxuICAgIGlmKGZyYW1lTGVuZ3RoIT09dW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCB2dzpudW1iZXJ8dW5kZWZpbmVkPXVuZGVmaW5lZDtcclxuICAgICAgaWYgKHRoaXMuYm91bmRzKSB7XHJcbiAgICAgICAgdnc9IHRoaXMuYm91bmRzLmRpbWVuc2lvbi53aWR0aDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsRGltZW5zaW9uKSB7XHJcbiAgICAgICAgdncgPSB0aGlzLnZpcnR1YWxEaW1lbnNpb24ud2lkdGg7XHJcbiAgICAgIH1cclxuICAgICAgaWYodnchPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3QgeFZpcnR1YWxQaXhlbFBvcyA9IHRoaXMudG9YVmlydHVhbFBpeGVsUG9zaXRpb24oeFZpZXdQb3J0UGl4ZWxQb3MpXHJcbiAgICAgICAgY29uc3QgZnJhbWVzUGVyUGl4ZWwgPSBmcmFtZUxlbmd0aCAvIHZ3O1xyXG4gICAgICAgIGxldCBmcmFtZVBvcyA9IGZyYW1lc1BlclBpeGVsICogeFZpcnR1YWxQaXhlbFBvcztcclxuICAgICAgICBpZiAoZnJhbWVQb3MgPCAwKSB7XHJcbiAgICAgICAgICBmcmFtZVBvcyA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZyYW1lUG9zID49IGZyYW1lTGVuZ3RoKSB7XHJcbiAgICAgICAgICBmcmFtZVBvcyA9IGZyYW1lTGVuZ3RoIC0gMVxyXG4gICAgICAgIH1cclxuICAgICAgICB2cFhmcmFtZVBvcyA9IE1hdGgucm91bmQoZnJhbWVQb3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdnBYZnJhbWVQb3M7XHJcbiAgfVxyXG5cclxuICAgIGxheW91dEJvdW5kcyhib3VuZHM6UmVjdGFuZ2xlLCB2aXJ0dWFsRGltZW5zaW9uOkRpbWVuc2lvbixyZWRyYXc6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmJvdW5kcz1ib3VuZHM7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsRGltZW5zaW9uPXZpcnR1YWxEaW1lbnNpb247XHJcbiAgICAgICAgZm9yKGxldCBjaT0wO2NpPHRoaXMuY2FudmFzTGF5ZXJzLmxlbmd0aDtjaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsID0gdGhpcy5jYW52YXNMYXllcnNbY2ldO1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0U3R5bGU9Ym91bmRzLnBvc2l0aW9uLmxlZnQrICdweCc7XHJcbiAgICAgICAgICAgIGlmKGNsLnN0eWxlLmxlZnQhPWxlZnRTdHlsZSkge1xyXG4gICAgICAgICAgICAgIGNsLnN0eWxlLmxlZnQgPSBsZWZ0U3R5bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgdG9wU3R5bGU9Ym91bmRzLnBvc2l0aW9uLnRvcCArICdweCc7XHJcbiAgICAgICAgICAgIGlmKGNsLnN0eWxlLnRvcCE9dG9wU3R5bGUpIHtcclxuICAgICAgICAgICAgICBjbC5zdHlsZS50b3AgPSB0b3BTdHlsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYm91bmRzLmRpbWVuc2lvbi53aWR0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRXPU1hdGguZmxvb3IoYm91bmRzLmRpbWVuc2lvbi53aWR0aCk7XHJcbiAgICAgICAgICAgIGlmIChyZWRyYXcpIHtcclxuICAgICAgICAgICAgICAgIC8vIERvIG5vdCBzZXQgd2lkdGggb2YgYmFja2dyb3VuZCBjYW52YXMgKGNhdXNlcyBmbGlja2VyIG9uIHN0YXJ0IHJlbmRlcilcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgY2k9MTtjaTx0aGlzLmNhbnZhc0xheWVycy5sZW5ndGg7Y2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjbCA9IHRoaXMuY2FudmFzTGF5ZXJzW2NpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjbC53aWR0aCE9aW50Vykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2wud2lkdGggPSBpbnRXO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB3U3RyID0gaW50Vy50b1N0cmluZygpICsgJ3B4JztcclxuICAgICAgICAgICAgZm9yKGxldCBjaT0wO2NpPHRoaXMuY2FudmFzTGF5ZXJzLmxlbmd0aDtjaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2wgPSB0aGlzLmNhbnZhc0xheWVyc1tjaV07XHJcbiAgICAgICAgICAgICAgICBpZihjbC5zdHlsZS53aWR0aCE9d1N0cikge1xyXG4gICAgICAgICAgICAgICAgICBjbC5zdHlsZS53aWR0aCA9IHdTdHI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJvdW5kcy5kaW1lbnNpb24uaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludEg9TWF0aC5mbG9vcihib3VuZHMuZGltZW5zaW9uLmhlaWdodClcclxuICAgICAgICAgICAgaWYgKHJlZHJhdykge1xyXG4gICAgICAgICAgICAgICAgLy8gRG8gbm90IHNldCBoZWlnaHQgb2YgYmFja2dyb3VuZCBjYW52YXMgKGNhdXNlcyBmbGlja2VyIG9uIHN0YXJ0IHJlbmRlcilcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgY2k9MTtjaTx0aGlzLmNhbnZhc0xheWVycy5sZW5ndGg7Y2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjbCA9IHRoaXMuY2FudmFzTGF5ZXJzW2NpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjbC5oZWlnaHQhPWludEgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNsLmhlaWdodCA9IGludEg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGhTdHIgPSBpbnRIICsgJ3B4JztcclxuICAgICAgICAgICAgZm9yKGxldCBjaT0wO2NpPHRoaXMuY2FudmFzTGF5ZXJzLmxlbmd0aDtjaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2wgPSB0aGlzLmNhbnZhc0xheWVyc1tjaV07XHJcbiAgICAgICAgICAgICAgICBpZihjbC5zdHlsZS5oZWlnaHQhPWhTdHIpe1xyXG4gICAgICAgICAgICAgICAgICBjbC5zdHlsZS5oZWlnaHQgPSBoU3RyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1ZGlvQ2FudmFzTGF5ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNpY0F1ZGlvQ2FudmFzTGF5ZXJDb21wb25lbnQge1xyXG5cclxuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFX1NUUkVBTUlOR19OVU1CRVJfT0ZfU0FNUExFU19USFJFU0hPTEQ9MTAqNjAqNDgwMDA7ICAvLyBVc2Ugc3RyZWFtaW5nL2NodW5raW5nIGlmIGF1ZGlvIGNsaXAgaGFzIG1vcmUgdGhhbiB0aGlzIG51bWJlciBvZiBzYW1wbGVzXHJcblxyXG4gICAgX3BvaW50ZXJQb3NpdGlvbjpNYXJrZXJ8bnVsbD1udWxsO1xyXG5cclxuICAgIHByb3RlY3RlZCBzZWxlY3RTdGFydFg6bnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdiZycsIHsgc3RhdGljOiB0cnVlIH0pIGJnQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICAgIGJnQ2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY3Vyc29yJywgeyBzdGF0aWM6IHRydWUgfSkgY3Vyc29yQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICAgIGN1cnNvckNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSlcclxuICBvbk1vdXNldXAobWU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29tbWl0KG1lKVxyXG4gIH1cclxuXHJcbiAgICBsYXlvdXRCb3VuZHMoYm91bmRzOlJlY3RhbmdsZSwgdmlydHVhbERpbWVuc2lvbjpEaW1lbnNpb24scmVkcmF3OiBib29sZWFuLGNsZWFyOmJvb2xlYW49dHJ1ZSkge1xyXG4gICAgICAgIHN1cGVyLmxheW91dEJvdW5kcyhib3VuZHMsdmlydHVhbERpbWVuc2lvbixyZWRyYXcpXHJcbiAgICAgICAgaWYgKHJlZHJhdykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RHJhdyhjbGVhcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIHNldCBwb2ludGVyUG9zaXRpb24ocG9pbnRlclBvc2l0aW9uOk1hcmtlcnxudWxsKXtcclxuICAgICAgICB0aGlzLl9wb2ludGVyUG9zaXRpb249cG9pbnRlclBvc2l0aW9uXHJcbiAgICAgICAgdGhpcy5kcmF3Q3Vyc29yTGF5ZXIoKVxyXG4gICAgfVxyXG5cclxuICAgIF9zZWxlY3Rpbmc6IFNlbGVjdGlvbnxudWxsID1udWxsO1xyXG4gICAgQElucHV0KCkgc2V0IHNlbGVjdGluZyhzZWxlY3Rpbmc6U2VsZWN0aW9ufCBudWxsKXtcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpbmc9c2VsZWN0aW5nXHJcbiAgICAgICAgdGhpcy5kcmF3QmcoKVxyXG4gICAgICAgIHRoaXMuZHJhd0N1cnNvckxheWVyKClcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2VsZWN0aW5nKCk6U2VsZWN0aW9ufG51bGx7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGluZ1xyXG4gICAgfVxyXG5cclxuICAgIF9zZWxlY3Rpb246IFNlbGVjdGlvbnxudWxsID1udWxsXHJcbiAgICBASW5wdXQoKSBzZXQgc2VsZWN0aW9uKHNlbGVjdGlvbjpTZWxlY3Rpb258bnVsbCl7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uPXNlbGVjdGlvbjtcclxuICAgICAgICB0aGlzLnNlbGVjdGluZz1udWxsO1xyXG4gICAgICAgIHRoaXMuZHJhd0JnKClcclxuICAgICAgICB0aGlzLmRyYXdDdXJzb3JMYXllcigpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGlvbigpOlNlbGVjdGlvbnxudWxse1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3Rpb25TdGFydChtZTpNb3VzZUV2ZW50KXtcclxuICAgICAgICB0aGlzLnNlbGVjdFN0YXJ0WD1tZS5vZmZzZXRYO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGlvbkNvbW1pdChtZTpNb3VzZUV2ZW50KXtcclxuICAgICAgICBsZXQgdnM6Vmlld1NlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgICAgICAgaWYodGhpcy5zZWxlY3RTdGFydFghPW51bGwpIHtcclxuICAgICAgICAgIHZzPW5ldyBWaWV3U2VsZWN0aW9uKHRoaXMuc2VsZWN0U3RhcnRYLG1lLm9mZnNldFgpXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdFN0YXJ0WD1udWxsO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3QodnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCBzdGFydERyYXcoY2xlYXI6Ym9vbGVhbik6dm9pZDtcclxuXHJcbiAgICB1cGRhdGVDdXJzb3JDYW52YXMobWU6TW91c2VFdmVudCxzaG93Q3Vyc29yUG9zaXRpb249dHJ1ZSl7XHJcbiAgICAgICAgaWYgKHRoaXMuY3Vyc29yQ2FudmFzKSB7XHJcbiAgICAgICAgICAgIGlmIChtZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0U3RhcnRYKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyUG9zaXRpb25DaGFuZ2VkKG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RpbmdDaGFuZ2UobmV3IFZpZXdTZWxlY3Rpb24odGhpcy5zZWxlY3RTdGFydFgsIG1lLm9mZnNldFgpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dDdXJzb3JQb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkNoYW5nZWQobWUub2Zmc2V0WClcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyUG9zaXRpb25DaGFuZ2VkKG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBwb2ludGVyUG9zaXRpb25FdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1hcmtlcj4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RpbmdFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uPigpO1xyXG5cclxuXHJcbiAgICBwb2ludGVyUG9zaXRpb25DaGFuZ2VkKHhQb3NpdGlvbjpudW1iZXJ8IG51bGwpe1xyXG4gICAgICAgIGxldCBwb2ludGVyUG9zaXRpb246TWFya2VyfHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgICAgICAgaWYoeFBvc2l0aW9uKXtcclxuICAgICAgICAgICAgcG9pbnRlclBvc2l0aW9uPW5ldyBNYXJrZXIoKTtcclxuICAgICAgICAgICAgbGV0IHZwWFBvcz10aGlzLnZpZXdQb3J0WFBpeGVsVG9GcmFtZVBvc2l0aW9uKHhQb3NpdGlvbik7XHJcbiAgICAgICAgICAgIGlmKHZwWFBvcyE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcG9pbnRlclBvc2l0aW9uLmZyYW1lUG9zaXRpb24gPXZwWFBvcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkV2ZW50RW1pdHRlci5lbWl0KHBvaW50ZXJQb3NpdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW5nQ2hhbmdlKHZpZXdTZWw6Vmlld1NlbGVjdGlvbnwgbnVsbCk6U2VsZWN0aW9ufHVuZGVmaW5lZCB7XHJcbiAgICAgIGxldCBuczogU2VsZWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodmlld1NlbCkge1xyXG4gICAgICAgIGxldCBmcmFtZVN0YXJ0ID0gdGhpcy52aWV3UG9ydFhQaXhlbFRvRnJhbWVQb3NpdGlvbih2aWV3U2VsLnN0YXJ0WClcclxuICAgICAgICBsZXQgZnJhbWVFbmQgPSB0aGlzLnZpZXdQb3J0WFBpeGVsVG9GcmFtZVBvc2l0aW9uKHZpZXdTZWwuZW5kWClcclxuICAgICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyICYmIGZyYW1lU3RhcnQgIT0gbnVsbCAmJiBmcmFtZUVuZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICBucyA9IG5ldyBTZWxlY3Rpb24odGhpcy5fYXVkaW9EYXRhSG9sZGVyLnNhbXBsZVJhdGUsIGZyYW1lU3RhcnQsIGZyYW1lRW5kKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5zO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGluZ0NoYW5nZSh2aWV3U2VsOlZpZXdTZWxlY3Rpb258IG51bGwpe1xyXG4gICAgICAgIGNvbnN0IG5zPXRoaXMuX3NlbGVjdGluZ0NoYW5nZSh2aWV3U2VsKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGluZ0V2ZW50RW1pdHRlci5lbWl0KG5zKVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdCh2aWV3U2VsOlZpZXdTZWxlY3Rpb258IG51bGwpe1xyXG4gICAgICAgIGNvbnN0IG5zPXRoaXMuX3NlbGVjdGluZ0NoYW5nZSh2aWV3U2VsKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnRFbWl0dGVyLmVtaXQobnMpXHJcbiAgICB9XHJcblxyXG4gICAgdmlld1NlbGVjdGlvbigpOlZpZXdTZWxlY3Rpb258bnVsbHtcclxuICAgICAgbGV0IHZzOlZpZXdTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgICBsZXQgczpTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgICBpZih0aGlzLl9zZWxlY3Rpbmcpe1xyXG4gICAgICAgIHM9dGhpcy5fc2VsZWN0aW5nXHJcbiAgICAgIH1lbHNlIGlmKHRoaXMuX3NlbGVjdGlvbil7XHJcbiAgICAgICAgcz10aGlzLl9zZWxlY3Rpb25cclxuICAgICAgfVxyXG4gICAgICBpZihzKXtcclxuICAgICAgICBjb25zdCBzZj1zLnN0YXJ0RnJhbWU7XHJcbiAgICAgICAgY29uc3QgZWY9cy5lbmRGcmFtZTtcclxuICAgICAgICBjb25zdCB4cz10aGlzLmZyYW1lVG9WaWV3UG9ydFhQaXhlbFBvc2l0aW9uKHNmKVxyXG4gICAgICAgIGNvbnN0IHhlPXRoaXMuZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24oZWYpXHJcbiAgICAgICAgICBpZih4cyE9bnVsbCAmJiB4ZSE9bnVsbCkge1xyXG4gICAgICAgICAgICAgIHZzID0gbmV3IFZpZXdTZWxlY3Rpb24oeHMsIHhlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2cztcclxuICAgIH1cclxuXHJcblxyXG4gIGRyYXdCZygpe1xyXG4gICAgICBpZih0aGlzLmJnQ2FudmFzICYmIHRoaXMuYm91bmRzKSB7XHJcbiAgICAgICAgICB0aGlzLmJnQ2FudmFzLnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLnBvc2l0aW9uLmxlZnQpLnRvU3RyaW5nKCkgKyAncHgnO1xyXG4gICAgICAgICAgdGhpcy5iZ0NhbnZhcy53aWR0aCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLndpZHRoKTtcclxuICAgICAgICAgIHRoaXMuYmdDYW52YXMuaGVpZ2h0ID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24uaGVpZ2h0KTtcclxuICAgICAgICBsZXQgZzEgPSB0aGlzLmJnQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICBpZiAoZzEpIHtcclxuICAgICAgICAgIGNvbnN0IHcgPSB0aGlzLmJnQ2FudmFzLndpZHRoO1xyXG4gICAgICAgICAgY29uc3QgaCA9IHRoaXMuYmdDYW52YXMuaGVpZ2h0O1xyXG4gICAgICAgICAgZzEuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICAgICAgaWYodGhpcy5fYmdDb2xvcikge1xyXG4gICAgICAgICAgICBnMS5maWxsU3R5bGUgPSB0aGlzLl9iZ0NvbG9yO1xyXG4gICAgICAgICAgICBnMS5maWxsUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB2cyA9IHRoaXMudmlld1NlbGVjdGlvbigpXHJcbiAgICAgICAgICBpZiAodnMpIHtcclxuICAgICAgICAgICAgZzEuZmlsbFN0eWxlID0gdGhpcy5fc2VsZWN0Q29sb3I7XHJcbiAgICAgICAgICAgIGcxLmZpbGxSZWN0KHZzLnN0YXJ0WCwgMCwgdnMud2lkdGgoKSwgaCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgfVxyXG4gICAgZHJhd0N1cnNvckxheWVyKCl7XHJcbiAgICAgICAgaWYgKHRoaXMuY3Vyc29yQ2FudmFzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHcgPSB0aGlzLmN1cnNvckNhbnZhcy53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaCA9IHRoaXMuY3Vyc29yQ2FudmFzLmhlaWdodDtcclxuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMuY3Vyc29yQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICAgICAgaWYoZykge1xyXG4gICAgICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLl9wb2ludGVyUG9zaXRpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmcmFtZVBvcz10aGlzLl9wb2ludGVyUG9zaXRpb24uZnJhbWVQb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGZyYW1lUG9zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4Vmlld1BvcnRQaXhlbHBvcyA9IHRoaXMuZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24oZnJhbWVQb3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Vmlld1BvcnRQaXhlbHBvcykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3llbGxvdyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3llbGxvdyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5tb3ZlVG8oeFZpZXdQb3J0UGl4ZWxwb3MsIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5saW5lVG8oeFZpZXdQb3J0UGl4ZWxwb3MsIGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5jbG9zZVBhdGgoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0RhdGFIb2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLmZvbnQgPSAnMTRweCBzYW5zLXNlcmlmJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICd5ZWxsb3cnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcuZmlsbFRleHQoZnJhbWVQb3MudG9TdHJpbmcoKSwgeFZpZXdQb3J0UGl4ZWxwb3MgKyAyLCA1MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fY2FudmFzX2xheWVyX2NvbXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vdWkvYXVkaW9fY2FudmFzX2xheWVyX2NvbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQzs7QUFLaEMsTUFBTSxPQUFPLGFBQWE7SUFDeEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNoQyxDQUFDO0lBRUQsWUFBb0IsT0FBYyxFQUFVLEtBQVk7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBTztRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRSxDQUFDO0NBQzVEO0FBR0QsTUFBTSxPQUFnQiw4QkFBK0IsU0FBUSxvQkFBb0I7SUFEakY7O1FBRVkscUJBQWdCLEdBQXVCLElBQUksQ0FBQztRQUM1QyxhQUFRLEdBQWEsT0FBTyxDQUFDO1FBQzdCLGlCQUFZLEdBQUMsc0JBQXNCLENBQUM7S0FzSC9DO0lBcEhDOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLFFBQWdCO1FBQ3BDLElBQUksUUFBUSxHQUFDLElBQUks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QUEyQjtzQkFBcEMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYW52YXNMYXllckNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL3VpL2NhbnZhc19sYXllcl9jb21wXCI7XHJcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICcuLi9wZXJzaXN0b3InXHJcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIERpcmVjdGl2ZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TWFya2VyfSBmcm9tIFwiLi9jb21tb25cIjtcclxuaW1wb3J0IHtEaW1lbnNpb24sIFJlY3RhbmdsZX0gZnJvbSBcIi4uLy4uL21hdGgvMmQvZ2VvbWV0cnlcIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBWaWV3U2VsZWN0aW9ue1xyXG4gIGdldCBzdGFydFgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGFydFg7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kWCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFg7XHJcbiAgfVxyXG5cclxuICB3aWR0aCgpOm51bWJlcntcclxuICAgIHJldHVybiB0aGlzLl9lbmRYLXRoaXMuX3N0YXJ0WFxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RhcnRYOm51bWJlciwgcHJpdmF0ZSBfZW5kWDpudW1iZXIpe31cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNpY0F1ZGlvQ2FudmFzTGF5ZXJDb21wb25lbnQgZXh0ZW5kcyBDYW52YXNMYXllckNvbXBvbmVudCB7XHJcbiAgcHJvdGVjdGVkIF9hdWRpb0RhdGFIb2xkZXI6QXVkaW9EYXRhSG9sZGVyfCBudWxsPW51bGw7XHJcbiAgcHJvdGVjdGVkIF9iZ0NvbG9yOnN0cmluZ3xudWxsPSd3aGl0ZSc7XHJcbiAgcHJvdGVjdGVkIF9zZWxlY3RDb2xvcj0ncmdiYSgwJSwwJSwxMDAlLDI1JSknO1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHBpeGVsIHBvc2l0aW9uIGRlcGVuZGluZyBvbiBjdXJyZW50IHpvb20gc2V0dGluZy5cclxuICAgKiBAcGFyYW0gZnJhbWVQb3MgYXVkaW8gZnJhbWUgKHNhbXBsZSkgcG9zaXRpb25cclxuICAgKi9cclxuICBmcmFtZVRvWFBpeGVsUG9zaXRpb24oZnJhbWVQb3M6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xyXG4gICAgbGV0IHBpeGVsUG9zPW51bGw7XHJcbiAgICBsZXQgZnJhbWVMZW5ndGggPSB0aGlzLl9hdWRpb0RhdGFIb2xkZXI/LmZyYW1lTGVuO1xyXG5cclxuICAgIGlmKGZyYW1lTGVuZ3RoIT09dW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCB2dztcclxuICAgICAgaWYgKHRoaXMuYm91bmRzKSB7XHJcbiAgICAgICAgdncgPSB0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGg7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudmlydHVhbERpbWVuc2lvbikge1xyXG4gICAgICAgIHZ3ID0gdGhpcy52aXJ0dWFsRGltZW5zaW9uLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2dyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcGl4ZWxQb3MgPSBmcmFtZVBvcyAqIHZ3IC8gZnJhbWVMZW5ndGg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwaXhlbFBvcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgcGl4ZWwgcG9zaXRpb24gaW4gdmlldyBwb3J0ICh2aXNpYmxlIHdpbmRvdyBvZiBzY3JvbGwgcGFuZSkuXHJcbiAgICogQHBhcmFtIGZyYW1lUG9zIGF1ZGlvIGZyYW1lIChzYW1wbGUpIHBvc2l0aW9uXHJcbiAgICovXHJcbiAgZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24oZnJhbWVQb3M6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xyXG4gICAgbGV0IHBpeGVsUG9zPXRoaXMuZnJhbWVUb1hQaXhlbFBvc2l0aW9uKGZyYW1lUG9zKTtcclxuICAgIGlmKHBpeGVsUG9zIT1udWxsKXtcclxuICAgICAgcmV0dXJuIHRoaXMudG9YVmlld1BvcnRQaXhlbFBvc2l0aW9uKHBpeGVsUG9zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlld1BvcnRYUGl4ZWxUb0ZyYW1lUG9zaXRpb24oeFZpZXdQb3J0UGl4ZWxQb3M6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xyXG4gICAgbGV0IHZwWGZyYW1lUG9zPW51bGw7XHJcbiAgICBjb25zdCBmcmFtZUxlbmd0aCA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlcj8uZnJhbWVMZW47XHJcbiAgICBpZihmcmFtZUxlbmd0aCE9PXVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgdnc6bnVtYmVyfHVuZGVmaW5lZD11bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0aGlzLmJvdW5kcykge1xyXG4gICAgICAgIHZ3PSB0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGg7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudmlydHVhbERpbWVuc2lvbikge1xyXG4gICAgICAgIHZ3ID0gdGhpcy52aXJ0dWFsRGltZW5zaW9uLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHZ3IT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IHhWaXJ0dWFsUGl4ZWxQb3MgPSB0aGlzLnRvWFZpcnR1YWxQaXhlbFBvc2l0aW9uKHhWaWV3UG9ydFBpeGVsUG9zKVxyXG4gICAgICAgIGNvbnN0IGZyYW1lc1BlclBpeGVsID0gZnJhbWVMZW5ndGggLyB2dztcclxuICAgICAgICBsZXQgZnJhbWVQb3MgPSBmcmFtZXNQZXJQaXhlbCAqIHhWaXJ0dWFsUGl4ZWxQb3M7XHJcbiAgICAgICAgaWYgKGZyYW1lUG9zIDwgMCkge1xyXG4gICAgICAgICAgZnJhbWVQb3MgPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmcmFtZVBvcyA+PSBmcmFtZUxlbmd0aCkge1xyXG4gICAgICAgICAgZnJhbWVQb3MgPSBmcmFtZUxlbmd0aCAtIDFcclxuICAgICAgICB9XHJcbiAgICAgICAgdnBYZnJhbWVQb3MgPSBNYXRoLnJvdW5kKGZyYW1lUG9zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZwWGZyYW1lUG9zO1xyXG4gIH1cclxuXHJcbiAgICBsYXlvdXRCb3VuZHMoYm91bmRzOlJlY3RhbmdsZSwgdmlydHVhbERpbWVuc2lvbjpEaW1lbnNpb24scmVkcmF3OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5ib3VuZHM9Ym91bmRzO1xyXG4gICAgICAgIHRoaXMudmlydHVhbERpbWVuc2lvbj12aXJ0dWFsRGltZW5zaW9uO1xyXG4gICAgICAgIGZvcihsZXQgY2k9MDtjaTx0aGlzLmNhbnZhc0xheWVycy5sZW5ndGg7Y2krKykge1xyXG4gICAgICAgICAgICBjb25zdCBjbCA9IHRoaXMuY2FudmFzTGF5ZXJzW2NpXTtcclxuICAgICAgICAgICAgY29uc3QgbGVmdFN0eWxlPWJvdW5kcy5wb3NpdGlvbi5sZWZ0KyAncHgnO1xyXG4gICAgICAgICAgICBpZihjbC5zdHlsZS5sZWZ0IT1sZWZ0U3R5bGUpIHtcclxuICAgICAgICAgICAgICBjbC5zdHlsZS5sZWZ0ID0gbGVmdFN0eWxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHRvcFN0eWxlPWJvdW5kcy5wb3NpdGlvbi50b3AgKyAncHgnO1xyXG4gICAgICAgICAgICBpZihjbC5zdHlsZS50b3AhPXRvcFN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgY2wuc3R5bGUudG9wID0gdG9wU3R5bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJvdW5kcy5kaW1lbnNpb24ud2lkdGgpIHtcclxuICAgICAgICAgICAgY29uc3QgaW50Vz1NYXRoLmZsb29yKGJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgICAgICBpZiAocmVkcmF3KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEbyBub3Qgc2V0IHdpZHRoIG9mIGJhY2tncm91bmQgY2FudmFzIChjYXVzZXMgZmxpY2tlciBvbiBzdGFydCByZW5kZXIpXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGNpPTE7Y2k8dGhpcy5jYW52YXNMYXllcnMubGVuZ3RoO2NpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2wgPSB0aGlzLmNhbnZhc0xheWVyc1tjaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2wud2lkdGghPWludFcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNsLndpZHRoID0gaW50VztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgd1N0ciA9IGludFcudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAgICAgICAgIGZvcihsZXQgY2k9MDtjaTx0aGlzLmNhbnZhc0xheWVycy5sZW5ndGg7Y2krKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsID0gdGhpcy5jYW52YXNMYXllcnNbY2ldO1xyXG4gICAgICAgICAgICAgICAgaWYoY2wuc3R5bGUud2lkdGghPXdTdHIpIHtcclxuICAgICAgICAgICAgICAgICAgY2wuc3R5bGUud2lkdGggPSB3U3RyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChib3VuZHMuZGltZW5zaW9uLmhlaWdodCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnRIPU1hdGguZmxvb3IoYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpXHJcbiAgICAgICAgICAgIGlmIChyZWRyYXcpIHtcclxuICAgICAgICAgICAgICAgIC8vIERvIG5vdCBzZXQgaGVpZ2h0IG9mIGJhY2tncm91bmQgY2FudmFzIChjYXVzZXMgZmxpY2tlciBvbiBzdGFydCByZW5kZXIpXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGNpPTE7Y2k8dGhpcy5jYW52YXNMYXllcnMubGVuZ3RoO2NpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2wgPSB0aGlzLmNhbnZhc0xheWVyc1tjaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2wuaGVpZ2h0IT1pbnRIKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbC5oZWlnaHQgPSBpbnRIO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBoU3RyID0gaW50SCArICdweCc7XHJcbiAgICAgICAgICAgIGZvcihsZXQgY2k9MDtjaTx0aGlzLmNhbnZhc0xheWVycy5sZW5ndGg7Y2krKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsID0gdGhpcy5jYW52YXNMYXllcnNbY2ldO1xyXG4gICAgICAgICAgICAgICAgaWYoY2wuc3R5bGUuaGVpZ2h0IT1oU3RyKXtcclxuICAgICAgICAgICAgICAgICAgY2wuc3R5bGUuaGVpZ2h0ID0gaFN0cjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50IGV4dGVuZHMgQmFzaWNBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IEVOQUJMRV9TVFJFQU1JTkdfTlVNQkVSX09GX1NBTVBMRVNfVEhSRVNIT0xEPTEwKjYwKjQ4MDAwOyAgLy8gVXNlIHN0cmVhbWluZy9jaHVua2luZyBpZiBhdWRpbyBjbGlwIGhhcyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2FtcGxlc1xyXG5cclxuICAgIF9wb2ludGVyUG9zaXRpb246TWFya2VyfG51bGw9bnVsbDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc2VsZWN0U3RhcnRYOm51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYmcnLCB7IHN0YXRpYzogdHJ1ZSB9KSBiZ0NhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgICBiZ0NhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2N1cnNvcicsIHsgc3RhdGljOiB0cnVlIH0pIGN1cnNvckNhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcbiAgICBjdXJzb3JDYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZXVwKG1lOiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbW1pdChtZSlcclxuICB9XHJcblxyXG4gICAgbGF5b3V0Qm91bmRzKGJvdW5kczpSZWN0YW5nbGUsIHZpcnR1YWxEaW1lbnNpb246RGltZW5zaW9uLHJlZHJhdzogYm9vbGVhbixjbGVhcjpib29sZWFuPXRydWUpIHtcclxuICAgICAgICBzdXBlci5sYXlvdXRCb3VuZHMoYm91bmRzLHZpcnR1YWxEaW1lbnNpb24scmVkcmF3KVxyXG4gICAgICAgIGlmIChyZWRyYXcpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydERyYXcoY2xlYXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBzZXQgcG9pbnRlclBvc2l0aW9uKHBvaW50ZXJQb3NpdGlvbjpNYXJrZXJ8bnVsbCl7XHJcbiAgICAgICAgdGhpcy5fcG9pbnRlclBvc2l0aW9uPXBvaW50ZXJQb3NpdGlvblxyXG4gICAgICAgIHRoaXMuZHJhd0N1cnNvckxheWVyKClcclxuICAgIH1cclxuXHJcbiAgICBfc2VsZWN0aW5nOiBTZWxlY3Rpb258bnVsbCA9bnVsbDtcclxuICAgIEBJbnB1dCgpIHNldCBzZWxlY3Rpbmcoc2VsZWN0aW5nOlNlbGVjdGlvbnwgbnVsbCl7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW5nPXNlbGVjdGluZ1xyXG4gICAgICAgIHRoaXMuZHJhd0JnKClcclxuICAgICAgICB0aGlzLmRyYXdDdXJzb3JMYXllcigpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGluZygpOlNlbGVjdGlvbnxudWxse1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RpbmdcclxuICAgIH1cclxuXHJcbiAgICBfc2VsZWN0aW9uOiBTZWxlY3Rpb258bnVsbCA9bnVsbFxyXG4gICAgQElucHV0KCkgc2V0IHNlbGVjdGlvbihzZWxlY3Rpb246U2VsZWN0aW9ufG51bGwpe1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbj1zZWxlY3Rpb247XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpbmc9bnVsbDtcclxuICAgICAgICB0aGlzLmRyYXdCZygpXHJcbiAgICAgICAgdGhpcy5kcmF3Q3Vyc29yTGF5ZXIoKVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBzZWxlY3Rpb24oKTpTZWxlY3Rpb258bnVsbHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uXHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0aW9uU3RhcnQobWU6TW91c2VFdmVudCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RTdGFydFg9bWUub2Zmc2V0WDtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3Rpb25Db21taXQobWU6TW91c2VFdmVudCl7XHJcbiAgICAgICAgbGV0IHZzOlZpZXdTZWxlY3Rpb258bnVsbD1udWxsO1xyXG4gICAgICAgIGlmKHRoaXMuc2VsZWN0U3RhcnRYIT1udWxsKSB7XHJcbiAgICAgICAgICB2cz1uZXcgVmlld1NlbGVjdGlvbih0aGlzLnNlbGVjdFN0YXJ0WCxtZS5vZmZzZXRYKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RTdGFydFg9bnVsbDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0KHZzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWJzdHJhY3Qgc3RhcnREcmF3KGNsZWFyOmJvb2xlYW4pOnZvaWQ7XHJcblxyXG4gICAgdXBkYXRlQ3Vyc29yQ2FudmFzKG1lOk1vdXNlRXZlbnQsc2hvd0N1cnNvclBvc2l0aW9uPXRydWUpe1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnNvckNhbnZhcykge1xyXG4gICAgICAgICAgICBpZiAobWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdFN0YXJ0WCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRlclBvc2l0aW9uQ2hhbmdlZChudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW5nQ2hhbmdlKG5ldyBWaWV3U2VsZWN0aW9uKHRoaXMuc2VsZWN0U3RhcnRYLCBtZS5vZmZzZXRYKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93Q3Vyc29yUG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyUG9zaXRpb25DaGFuZ2VkKG1lLm9mZnNldFgpXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRlclBvc2l0aW9uQ2hhbmdlZChudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgcG9pbnRlclBvc2l0aW9uRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxNYXJrZXI+KCk7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW5nRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbj4oKTtcclxuXHJcblxyXG4gICAgcG9pbnRlclBvc2l0aW9uQ2hhbmdlZCh4UG9zaXRpb246bnVtYmVyfCBudWxsKXtcclxuICAgICAgICBsZXQgcG9pbnRlclBvc2l0aW9uOk1hcmtlcnx1bmRlZmluZWQ9dW5kZWZpbmVkO1xyXG4gICAgICAgIGlmKHhQb3NpdGlvbil7XHJcbiAgICAgICAgICAgIHBvaW50ZXJQb3NpdGlvbj1uZXcgTWFya2VyKCk7XHJcbiAgICAgICAgICAgIGxldCB2cFhQb3M9dGhpcy52aWV3UG9ydFhQaXhlbFRvRnJhbWVQb3NpdGlvbih4UG9zaXRpb24pO1xyXG4gICAgICAgICAgICBpZih2cFhQb3MhPW51bGwpIHtcclxuICAgICAgICAgICAgICAgIHBvaW50ZXJQb3NpdGlvbi5mcmFtZVBvc2l0aW9uID12cFhQb3M7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb2ludGVyUG9zaXRpb25FdmVudEVtaXR0ZXIuZW1pdChwb2ludGVyUG9zaXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NlbGVjdGluZ0NoYW5nZSh2aWV3U2VsOlZpZXdTZWxlY3Rpb258IG51bGwpOlNlbGVjdGlvbnx1bmRlZmluZWQge1xyXG4gICAgICBsZXQgbnM6IFNlbGVjdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKHZpZXdTZWwpIHtcclxuICAgICAgICBsZXQgZnJhbWVTdGFydCA9IHRoaXMudmlld1BvcnRYUGl4ZWxUb0ZyYW1lUG9zaXRpb24odmlld1NlbC5zdGFydFgpXHJcbiAgICAgICAgbGV0IGZyYW1lRW5kID0gdGhpcy52aWV3UG9ydFhQaXhlbFRvRnJhbWVQb3NpdGlvbih2aWV3U2VsLmVuZFgpXHJcbiAgICAgICAgaWYgKHRoaXMuX2F1ZGlvRGF0YUhvbGRlciAmJiBmcmFtZVN0YXJ0ICE9IG51bGwgJiYgZnJhbWVFbmQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbnMgPSBuZXcgU2VsZWN0aW9uKHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5zYW1wbGVSYXRlLCBmcmFtZVN0YXJ0LCBmcmFtZUVuZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBucztcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RpbmdDaGFuZ2Uodmlld1NlbDpWaWV3U2VsZWN0aW9ufCBudWxsKXtcclxuICAgICAgICBjb25zdCBucz10aGlzLl9zZWxlY3RpbmdDaGFuZ2Uodmlld1NlbCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RpbmdFdmVudEVtaXR0ZXIuZW1pdChucylcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3Qodmlld1NlbDpWaWV3U2VsZWN0aW9ufCBudWxsKXtcclxuICAgICAgICBjb25zdCBucz10aGlzLl9zZWxlY3RpbmdDaGFuZ2Uodmlld1NlbCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RW1pdHRlci5lbWl0KG5zKVxyXG4gICAgfVxyXG5cclxuICAgIHZpZXdTZWxlY3Rpb24oKTpWaWV3U2VsZWN0aW9ufG51bGx7XHJcbiAgICAgIGxldCB2czpWaWV3U2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICAgICAgbGV0IHM6U2VsZWN0aW9ufG51bGw9bnVsbDtcclxuICAgICAgaWYodGhpcy5fc2VsZWN0aW5nKXtcclxuICAgICAgICBzPXRoaXMuX3NlbGVjdGluZ1xyXG4gICAgICB9ZWxzZSBpZih0aGlzLl9zZWxlY3Rpb24pe1xyXG4gICAgICAgIHM9dGhpcy5fc2VsZWN0aW9uXHJcbiAgICAgIH1cclxuICAgICAgaWYocyl7XHJcbiAgICAgICAgY29uc3Qgc2Y9cy5zdGFydEZyYW1lO1xyXG4gICAgICAgIGNvbnN0IGVmPXMuZW5kRnJhbWU7XHJcbiAgICAgICAgY29uc3QgeHM9dGhpcy5mcmFtZVRvVmlld1BvcnRYUGl4ZWxQb3NpdGlvbihzZilcclxuICAgICAgICBjb25zdCB4ZT10aGlzLmZyYW1lVG9WaWV3UG9ydFhQaXhlbFBvc2l0aW9uKGVmKVxyXG4gICAgICAgICAgaWYoeHMhPW51bGwgJiYgeGUhPW51bGwpIHtcclxuICAgICAgICAgICAgICB2cyA9IG5ldyBWaWV3U2VsZWN0aW9uKHhzLCB4ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdnM7XHJcbiAgICB9XHJcblxyXG5cclxuICBkcmF3QmcoKXtcclxuICAgICAgaWYodGhpcy5iZ0NhbnZhcyAmJiB0aGlzLmJvdW5kcykge1xyXG4gICAgICAgICAgdGhpcy5iZ0NhbnZhcy5zdHlsZS5sZWZ0ID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5wb3NpdGlvbi5sZWZ0KS50b1N0cmluZygpICsgJ3B4JztcclxuICAgICAgICAgIHRoaXMuYmdDYW52YXMud2lkdGggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi53aWR0aCk7XHJcbiAgICAgICAgICB0aGlzLmJnQ2FudmFzLmhlaWdodCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLmhlaWdodCk7XHJcbiAgICAgICAgbGV0IGcxID0gdGhpcy5iZ0NhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgaWYgKGcxKSB7XHJcbiAgICAgICAgICBjb25zdCB3ID0gdGhpcy5iZ0NhbnZhcy53aWR0aDtcclxuICAgICAgICAgIGNvbnN0IGggPSB0aGlzLmJnQ2FudmFzLmhlaWdodDtcclxuICAgICAgICAgIGcxLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICAgIGlmKHRoaXMuX2JnQ29sb3IpIHtcclxuICAgICAgICAgICAgZzEuZmlsbFN0eWxlID0gdGhpcy5fYmdDb2xvcjtcclxuICAgICAgICAgICAgZzEuZmlsbFJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgdnMgPSB0aGlzLnZpZXdTZWxlY3Rpb24oKVxyXG4gICAgICAgICAgaWYgKHZzKSB7XHJcbiAgICAgICAgICAgIGcxLmZpbGxTdHlsZSA9IHRoaXMuX3NlbGVjdENvbG9yO1xyXG4gICAgICAgICAgICBnMS5maWxsUmVjdCh2cy5zdGFydFgsIDAsIHZzLndpZHRoKCksIGgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gIH1cclxuICAgIGRyYXdDdXJzb3JMYXllcigpe1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnNvckNhbnZhcykge1xyXG4gICAgICAgICAgICBjb25zdCB3ID0gdGhpcy5jdXJzb3JDYW52YXMud2lkdGg7XHJcbiAgICAgICAgICAgIGNvbnN0IGggPSB0aGlzLmN1cnNvckNhbnZhcy5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGcgPSB0aGlzLmN1cnNvckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgIGlmKGcpIHtcclxuICAgICAgICAgICAgICAgIGcuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5fcG9pbnRlclBvc2l0aW9uKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZnJhbWVQb3M9dGhpcy5fcG9pbnRlclBvc2l0aW9uLmZyYW1lUG9zaXRpb25cclxuICAgICAgICAgICAgICAgICAgICBpZihmcmFtZVBvcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeFZpZXdQb3J0UGl4ZWxwb3MgPSB0aGlzLmZyYW1lVG9WaWV3UG9ydFhQaXhlbFBvc2l0aW9uKGZyYW1lUG9zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeFZpZXdQb3J0UGl4ZWxwb3MpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICd5ZWxsb3cnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICd5ZWxsb3cnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcubW92ZVRvKHhWaWV3UG9ydFBpeGVscG9zLCAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcubGluZVRvKHhWaWV3UG9ydFBpeGVscG9zLCBoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5zdHJva2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5mb250ID0gJzE0cHggc2Fucy1zZXJpZic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAneWVsbG93JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLmZpbGxUZXh0KGZyYW1lUG9zLnRvU3RyaW5nKCksIHhWaWV3UG9ydFBpeGVscG9zICsgMiwgNTApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4iXX0=
|