speechrecorderng 3.6.0 → 3.8.0
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/esm2022/lib/action/action.mjs +73 -0
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer.mjs +163 -163
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_input_stream.mjs +85 -85
- package/{esm2020 → esm2022}/lib/audio/array_audio_buffer_random_access_stream.mjs +15 -15
- package/esm2022/lib/audio/audio_data_holder.mjs +264 -0
- package/{esm2020 → esm2022}/lib/audio/audio_display.mjs +93 -93
- package/{esm2020 → esm2022}/lib/audio/audio_player.mjs +213 -213
- package/esm2022/lib/audio/capture/capture.mjs +855 -0
- package/esm2022/lib/audio/context.mjs +79 -0
- package/{esm2020 → esm2022}/lib/audio/dsp/level_measure.mjs +515 -515
- package/{esm2020 → esm2022}/lib/audio/format.mjs +16 -16
- package/esm2022/lib/audio/impl/wavformat.mjs +6 -0
- package/{esm2020 → esm2022}/lib/audio/impl/wavreader.mjs +133 -133
- package/esm2022/lib/audio/impl/wavwriter.mjs +105 -0
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +508 -0
- package/{esm2020 → esm2022}/lib/audio/io/stream.mjs +58 -58
- package/esm2022/lib/audio/net_audio_buffer.mjs +293 -0
- package/{esm2020 → esm2022}/lib/audio/persistor.mjs +80 -80
- package/{esm2020 → esm2022}/lib/audio/playback/array_audio_buffer_source_node.mjs +125 -125
- package/esm2022/lib/audio/playback/audio_source_node.mjs +18 -0
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +167 -0
- package/{esm2020 → esm2022}/lib/audio/playback/inddb_audio_buffer_source_node.mjs +166 -166
- package/{esm2020 → esm2022}/lib/audio/playback/net_audio_buffer_source_node.mjs +217 -217
- package/esm2022/lib/audio/playback/player.mjs +402 -0
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +347 -0
- package/{esm2020 → esm2022}/lib/audio/ui/audio_display_control.mjs +65 -65
- package/{esm2020 → esm2022}/lib/audio/ui/audio_display_scroll_pane.mjs +139 -139
- package/{esm2020 → esm2022}/lib/audio/ui/audiosignal.mjs +524 -524
- package/{esm2020 → esm2022}/lib/audio/ui/common.mjs +18 -18
- package/esm2022/lib/audio/ui/container.mjs +414 -0
- package/{esm2020 → esm2022}/lib/audio/ui/livelevel.mjs +352 -352
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +11 -0
- package/esm2022/lib/audio/ui/sonagram.mjs +900 -0
- package/esm2022/lib/db/inddb.mjs +120 -0
- package/esm2022/lib/dsp/utils.mjs +48 -0
- package/{esm2020 → esm2022}/lib/io/BinaryReader.mjs +84 -84
- package/esm2022/lib/io/BinaryWriter.mjs +74 -0
- package/{esm2020 → esm2022}/lib/io/stream.mjs +258 -258
- package/{esm2020 → esm2022}/lib/math/2d/geometry.mjs +27 -27
- package/esm2022/lib/math/complex.mjs +58 -0
- package/{esm2020 → esm2022}/lib/math/dft.mjs +195 -195
- package/{esm2020 → esm2022}/lib/media/utils.mjs +13 -13
- package/esm2022/lib/net/uploader.mjs +367 -0
- package/{esm2020 → esm2022}/lib/recorder_component.mjs +64 -64
- package/esm2022/lib/speechrecorder/project/project.mjs +49 -0
- package/esm2022/lib/speechrecorder/project/project.service.mjs +64 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/recording.mjs +123 -123
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +218 -0
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +1014 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/script/script.mjs +114 -114
- package/{esm2020 → esm2022}/lib/speechrecorder/script/script.service.mjs +47 -47
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +1179 -0
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +668 -0
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +416 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/item.mjs +29 -29
- package/{esm2020 → esm2022}/lib/speechrecorder/session/progress.mjs +69 -69
- package/{esm2020 → esm2022}/lib/speechrecorder/session/prompting.mjs +571 -571
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recorder_combi_pane.mjs +65 -65
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +195 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recording_list.mjs +103 -103
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +63 -63
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +51 -51
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +104 -104
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +381 -381
- package/{esm2020 → esm2022}/lib/speechrecorder/session/recordingfile/recording-file.mjs +67 -67
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +288 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/session.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/session.service.mjs +69 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/session_finished_dialog.mjs +29 -29
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +1386 -0
- package/{esm2020 → esm2022}/lib/speechrecorder/session/warning_bar.mjs +28 -28
- package/{esm2020 → esm2022}/lib/speechrecorder/spruploader.mjs +22 -22
- package/{esm2020 → esm2022}/lib/speechrecorder/startstopsignal/startstopsignal.mjs +1 -1
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +57 -0
- package/{esm2020 → esm2022}/lib/speechrecorderng.component.mjs +388 -388
- package/{esm2020 → esm2022}/lib/speechrecorderng.module.mjs +100 -100
- package/{esm2020 → esm2022}/lib/spr.config.mjs +26 -26
- package/{esm2020 → esm2022}/lib/spr.module.version.mjs +2 -2
- package/{esm2020 → esm2022}/lib/ui/canvas_layer_comp.mjs +38 -38
- package/{esm2020 → esm2022}/lib/ui/message_dialog.mjs +30 -30
- package/esm2022/lib/ui/recordingitem_display.mjs +253 -0
- package/{esm2020 → esm2022}/lib/ui/responsive_component.mjs +24 -24
- package/{esm2020 → esm2022}/lib/utils/scrollIntoViewToBottom.mjs +23 -23
- package/esm2022/lib/utils/ua-parser.mjs +190 -0
- package/esm2022/lib/utils/utils.mjs +105 -0
- package/esm2022/lib/utils/wake_lock.mjs +114 -0
- package/{esm2020 → esm2022}/lib/utils/wake_lock_media.mjs +1 -1
- package/{esm2020 → esm2022}/public-api.mjs +33 -33
- package/{esm2020 → esm2022}/speechrecorderng.mjs +4 -4
- package/{fesm2020 → fesm2022}/speechrecorderng.mjs +16518 -16454
- package/fesm2022/speechrecorderng.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/action/action.d.ts +27 -27
- package/lib/audio/array_audio_buffer.d.ts +31 -31
- package/lib/audio/array_audio_buffer_input_stream.d.ts +14 -14
- package/lib/audio/array_audio_buffer_random_access_stream.d.ts +9 -9
- package/lib/audio/audio_data_holder.d.ts +84 -84
- package/lib/audio/audio_display.d.ts +36 -36
- package/lib/audio/audio_player.d.ts +47 -47
- package/lib/audio/capture/capture.d.ts +67 -67
- package/lib/audio/context.d.ts +6 -6
- package/lib/audio/dsp/level_measure.d.ts +60 -60
- package/lib/audio/format.d.ts +11 -11
- package/lib/audio/impl/wavformat.d.ts +5 -5
- package/lib/audio/impl/wavreader.d.ts +16 -16
- package/lib/audio/impl/wavwriter.d.ts +13 -13
- package/lib/audio/inddb_audio_buffer.d.ts +68 -68
- package/lib/audio/io/stream.d.ts +28 -28
- package/lib/audio/net_audio_buffer.d.ts +57 -57
- package/lib/audio/persistor.d.ts +29 -29
- package/lib/audio/playback/array_audio_buffer_source_node.d.ts +18 -18
- package/lib/audio/playback/audio_source_node.d.ts +10 -10
- package/lib/audio/playback/audio_source_worklet_module_loader.d.ts +4 -4
- package/lib/audio/playback/inddb_audio_buffer_source_node.d.ts +21 -21
- package/lib/audio/playback/net_audio_buffer_source_node.d.ts +27 -27
- package/lib/audio/playback/player.d.ts +65 -65
- package/lib/audio/ui/audio_canvas_layer_comp.d.ts +68 -68
- package/lib/audio/ui/audio_display_control.d.ts +25 -25
- package/lib/audio/ui/audio_display_scroll_pane.d.ts +26 -26
- package/lib/audio/ui/audiosignal.d.ts +30 -30
- package/lib/audio/ui/common.d.ts +11 -11
- package/lib/audio/ui/container.d.ts +63 -63
- package/lib/audio/ui/livelevel.d.ts +60 -60
- package/lib/audio/ui/scroll_pane_horizontal.d.ts +5 -5
- package/lib/audio/ui/sonagram.d.ts +37 -37
- package/lib/db/inddb.d.ts +21 -21
- package/lib/dsp/utils.d.ts +19 -19
- package/lib/io/BinaryReader.d.ts +18 -18
- package/lib/io/BinaryWriter.d.ts +15 -15
- package/lib/io/stream.d.ts +59 -59
- package/lib/math/2d/geometry.d.ts +18 -18
- package/lib/math/complex.d.ts +17 -17
- package/lib/math/dft.d.ts +22 -22
- package/lib/media/utils.d.ts +3 -3
- package/lib/net/uploader.d.ts +81 -81
- package/lib/recorder_component.d.ts +16 -16
- package/lib/speechrecorder/project/project.d.ts +59 -59
- package/lib/speechrecorder/project/project.service.d.ts +21 -21
- package/lib/speechrecorder/recording.d.ts +51 -51
- package/lib/speechrecorder/recordings/basic_recording.service.d.ts +27 -27
- package/lib/speechrecorder/recordings/recordings.service.d.ts +48 -48
- package/lib/speechrecorder/script/script.d.ts +80 -79
- package/lib/speechrecorder/script/script.service.d.ts +16 -16
- package/lib/speechrecorder/session/audiorecorder.d.ts +122 -122
- package/lib/speechrecorder/session/basicrecorder.d.ts +139 -139
- package/lib/speechrecorder/session/controlpanel.d.ts +109 -107
- package/lib/speechrecorder/session/item.d.ts +12 -12
- package/lib/speechrecorder/session/progress.d.ts +17 -17
- package/lib/speechrecorder/session/prompting.d.ts +121 -121
- package/lib/speechrecorder/session/recorder_combi_pane.d.ts +32 -32
- package/lib/speechrecorder/session/recording_file_cache.d.ts +33 -33
- package/lib/speechrecorder/session/recording_list.d.ts +24 -24
- package/lib/speechrecorder/session/recordingfile/recording-file-meta.component.d.ts +15 -15
- package/lib/speechrecorder/session/recordingfile/recording-file-navi.component.d.ts +20 -20
- package/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.d.ts +31 -31
- package/lib/speechrecorder/session/recordingfile/recording-file-view.component.d.ts +55 -55
- package/lib/speechrecorder/session/recordingfile/recording-file.d.ts +7 -7
- package/lib/speechrecorder/session/recordingfile/recordingfile-service.d.ts +24 -24
- package/lib/speechrecorder/session/session.d.ts +15 -15
- package/lib/speechrecorder/session/session.service.d.ts +20 -20
- package/lib/speechrecorder/session/session_finished_dialog.d.ts +10 -10
- package/lib/speechrecorder/session/sessionmanager.d.ts +129 -123
- package/lib/speechrecorder/session/warning_bar.d.ts +8 -8
- package/lib/speechrecorder/spruploader.d.ts +11 -11
- package/lib/speechrecorder/startstopsignal/startstopsignal.d.ts +10 -10
- package/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.d.ts +11 -11
- package/lib/speechrecorderng.component.d.ts +61 -61
- package/lib/speechrecorderng.module.d.ts +56 -56
- package/lib/spr.config.d.ts +17 -17
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/canvas_layer_comp.d.ts +13 -13
- package/lib/ui/message_dialog.d.ts +10 -10
- package/lib/ui/recordingitem_display.d.ts +84 -84
- package/lib/ui/responsive_component.d.ts +9 -9
- package/lib/utils/scrollIntoViewToBottom.d.ts +9 -9
- package/lib/utils/ua-parser.d.ts +43 -43
- package/lib/utils/utils.d.ts +19 -19
- package/lib/utils/wake_lock.d.ts +23 -23
- package/lib/utils/wake_lock_media.d.ts +1 -1
- package/package.json +17 -23
- package/public-api.d.ts +33 -33
- package/esm2020/lib/action/action.mjs +0 -73
- package/esm2020/lib/audio/audio_data_holder.mjs +0 -264
- package/esm2020/lib/audio/capture/capture.mjs +0 -855
- package/esm2020/lib/audio/context.mjs +0 -79
- package/esm2020/lib/audio/impl/wavformat.mjs +0 -6
- package/esm2020/lib/audio/impl/wavwriter.mjs +0 -105
- package/esm2020/lib/audio/inddb_audio_buffer.mjs +0 -508
- package/esm2020/lib/audio/net_audio_buffer.mjs +0 -293
- package/esm2020/lib/audio/playback/audio_source_node.mjs +0 -18
- package/esm2020/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
- package/esm2020/lib/audio/playback/player.mjs +0 -402
- package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
- package/esm2020/lib/audio/ui/container.mjs +0 -414
- package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
- package/esm2020/lib/audio/ui/sonagram.mjs +0 -900
- package/esm2020/lib/db/inddb.mjs +0 -120
- package/esm2020/lib/dsp/utils.mjs +0 -48
- package/esm2020/lib/io/BinaryWriter.mjs +0 -74
- package/esm2020/lib/math/complex.mjs +0 -58
- package/esm2020/lib/net/uploader.mjs +0 -367
- package/esm2020/lib/speechrecorder/project/project.mjs +0 -49
- package/esm2020/lib/speechrecorder/project/project.service.mjs +0 -64
- package/esm2020/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -216
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
- package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
- package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +0 -666
- package/esm2020/lib/speechrecorder/session/controlpanel.mjs +0 -409
- package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
- package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
- package/esm2020/lib/speechrecorder/session/session.service.mjs +0 -69
- package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +0 -1333
- package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
- package/esm2020/lib/ui/recordingitem_display.mjs +0 -253
- package/esm2020/lib/utils/ua-parser.mjs +0 -190
- package/esm2020/lib/utils/utils.mjs +0 -105
- package/esm2020/lib/utils/wake_lock.mjs +0 -114
- package/fesm2015/speechrecorderng.mjs +0 -17708
- package/fesm2015/speechrecorderng.mjs.map +0 -1
- package/fesm2020/speechrecorderng.mjs.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class Sync {
|
|
5
|
+
constructor(objectStoreName, objectId) {
|
|
6
|
+
this._objectStoreName = objectStoreName;
|
|
7
|
+
this._objectId = objectId;
|
|
8
|
+
}
|
|
9
|
+
get objectStoreName() {
|
|
10
|
+
return this._objectStoreName;
|
|
11
|
+
}
|
|
12
|
+
get objectId() {
|
|
13
|
+
return this._objectId;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class SprDb {
|
|
17
|
+
static { this.dbName = 'speechrecorder'; }
|
|
18
|
+
static { this.RECORDING_FILE_CACHE_OBJECT_STORE_NAME = '_recording_file_cache'; }
|
|
19
|
+
//public static RECORDING_FILE_CHUNKS_OBJECT_STORE_NAME='rec_file_chunks';
|
|
20
|
+
static { this.dbVersion = 1; }
|
|
21
|
+
constructor() {
|
|
22
|
+
this._store = null;
|
|
23
|
+
}
|
|
24
|
+
static sprDbFactory() {
|
|
25
|
+
let sprDb = new SprDb();
|
|
26
|
+
return sprDb;
|
|
27
|
+
}
|
|
28
|
+
static prepare() {
|
|
29
|
+
let obs = new Observable((subscriber) => {
|
|
30
|
+
console.info("Prepare indexed database...");
|
|
31
|
+
if (indexedDB) {
|
|
32
|
+
let or;
|
|
33
|
+
or = indexedDB.open(SprDb.dbName, SprDb.dbVersion);
|
|
34
|
+
or.onupgradeneeded = (ev) => {
|
|
35
|
+
let db = or.result;
|
|
36
|
+
let tr = or.transaction;
|
|
37
|
+
// if (!db.objectStoreNames.contains(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME)) {
|
|
38
|
+
// db.createObjectStore(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME);
|
|
39
|
+
// }
|
|
40
|
+
// Future work towards a complete PWA which stores all clien data in indexed db and synchronizes to the server: See experimental Git branch "progressive_web_app"
|
|
41
|
+
// if (!db.objectStoreNames.contains('_sync')) {
|
|
42
|
+
// db.createObjectStore('_sync', {keyPath: 'id', autoIncrement:true});
|
|
43
|
+
// }
|
|
44
|
+
// if (!db.objectStoreNames.contains('project')) {
|
|
45
|
+
// db.createObjectStore('project', {keyPath: 'name'});
|
|
46
|
+
// }
|
|
47
|
+
// if (!db.objectStoreNames.contains('session')) {
|
|
48
|
+
// let sessStore=db.createObjectStore('session', {keyPath: 'sessionId'});
|
|
49
|
+
// sessStore.createIndex('projectIdx', ['project'], {unique:false});
|
|
50
|
+
// }else if(ev.oldVersion<5){
|
|
51
|
+
//
|
|
52
|
+
// let sessStore=tr.objectStore('session')
|
|
53
|
+
// sessStore.createIndex('projectIdx', ['project'], {unique:false});
|
|
54
|
+
// }
|
|
55
|
+
//
|
|
56
|
+
// if (!db.objectStoreNames.contains('script')) {
|
|
57
|
+
// let scrStore=db.createObjectStore('script', {keyPath: 'scriptId'});
|
|
58
|
+
// scrStore.createIndex('projectIdx', ['project'], {unique:false});
|
|
59
|
+
// }
|
|
60
|
+
//
|
|
61
|
+
// if (!db.objectStoreNames.contains('recfile')) {
|
|
62
|
+
// let rfStore=db.createObjectStore('recfile', {keyPath: 'uuid'});
|
|
63
|
+
// rfStore.createIndex('sessIdIdx', ['sessionId'], {unique:false});
|
|
64
|
+
// rfStore.createIndex('sessIdItemcodeIdx', ['sessionId','itemCode'], {unique:false});
|
|
65
|
+
// }
|
|
66
|
+
if (!db.objectStoreNames.contains(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME)) {
|
|
67
|
+
let rfStore = db.createObjectStore(SprDb.RECORDING_FILE_CACHE_OBJECT_STORE_NAME);
|
|
68
|
+
}
|
|
69
|
+
if (ev.oldVersion) {
|
|
70
|
+
console.info("Upgraded indexed database " + SprDb.dbName + " schema from version " + ev.oldVersion + " to " + ev.newVersion);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.info("Created indexed database " + SprDb.dbName + " schema version " + ev.newVersion);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
or.onsuccess = (ev) => {
|
|
77
|
+
console.info("Opened indexed database");
|
|
78
|
+
let db = or.result;
|
|
79
|
+
// // iPad WEbKit workaround
|
|
80
|
+
// does not help!
|
|
81
|
+
// db.onclose=(ev)=>{
|
|
82
|
+
// console.debug("DB closed...");
|
|
83
|
+
//
|
|
84
|
+
// }
|
|
85
|
+
// console.debug("Close db.");
|
|
86
|
+
// db.close();
|
|
87
|
+
// let opaRq=indexedDB.open(SprDb.dbName, SprDb.dbVersion);
|
|
88
|
+
// opaRq.onupgradeneeded=(ev)=>{}
|
|
89
|
+
//
|
|
90
|
+
// opaRq.onsuccess=(ev)=>{
|
|
91
|
+
// console.debug("and opened again");
|
|
92
|
+
// subscriber.next(opaRq.result);
|
|
93
|
+
// subscriber.complete();
|
|
94
|
+
// }
|
|
95
|
+
// opaRq.onerror = (err) => {
|
|
96
|
+
// console.error("Could not open indexed database: " + SprDb.dbName + ": " + err)
|
|
97
|
+
// subscriber.error(err)
|
|
98
|
+
// }
|
|
99
|
+
subscriber.next(db);
|
|
100
|
+
subscriber.complete();
|
|
101
|
+
};
|
|
102
|
+
or.onerror = (err) => {
|
|
103
|
+
console.error("Could not open indexed database: " + SprDb.dbName + ": " + err);
|
|
104
|
+
subscriber.error(err);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.info("Browser does not support indexed databases");
|
|
109
|
+
subscriber.error();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return obs;
|
|
113
|
+
}
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SprDb, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
115
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SprDb }); }
|
|
116
|
+
}
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SprDb, decorators: [{
|
|
118
|
+
type: Injectable
|
|
119
|
+
}], ctorParameters: () => [] });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZGIvaW5kZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUdoQyxNQUFNLE9BQU8sSUFBSTtJQUtiLFlBQVksZUFBc0IsRUFBQyxRQUFzQjtRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUMsZUFBZSxDQUFBO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUMsUUFBUSxDQUFBO0lBQzNCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDaEIsT0FBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUN6QixDQUFDO0NBQ0o7QUFHRCxNQUFNLE9BQU8sS0FBSzthQUVBLFdBQU0sR0FBQyxnQkFBZ0IsQUFBakIsQ0FBaUI7YUFFdkIsMkNBQXNDLEdBQUMsdUJBQXVCLEFBQXhCLENBQXlCO0lBQzVFLDBFQUEwRTthQUM3RCxjQUFTLEdBQUMsQ0FBQyxBQUFGLENBQUc7SUFHMUI7UUFEUSxXQUFNLEdBQWtCLElBQUksQ0FBQTtJQUVwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDaEIsSUFBSSxLQUFLLEdBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVyQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBSUQsTUFBTSxDQUFDLE9BQU87UUFDVixJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBRTdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtZQUMzQyxJQUFJLFNBQVMsRUFBRTtnQkFDWCxJQUFJLEVBQW9CLENBQUM7Z0JBQ3pCLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuRCxFQUFFLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQ3hCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUE7b0JBQ2xCLElBQUksRUFBRSxHQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUE7b0JBRXJCLHFGQUFxRjtvQkFDckYseUVBQXlFO29CQUN6RSxJQUFJO29CQUVKLGlLQUFpSztvQkFFakssZ0RBQWdEO29CQUNoRCwwRUFBMEU7b0JBQzFFLElBQUk7b0JBQ0osa0RBQWtEO29CQUNsRCwwREFBMEQ7b0JBQzFELElBQUk7b0JBQ0osa0RBQWtEO29CQUNsRCw2RUFBNkU7b0JBQzdFLHdFQUF3RTtvQkFDeEUsNkJBQTZCO29CQUM3QixFQUFFO29CQUNGLDhDQUE4QztvQkFDOUMsdUVBQXVFO29CQUN2RSxJQUFJO29CQUNKLEVBQUU7b0JBQ0YsaURBQWlEO29CQUNqRCwwRUFBMEU7b0JBQzFFLHVFQUF1RTtvQkFDdkUsSUFBSTtvQkFDSixFQUFFO29CQUNGLGtEQUFrRDtvQkFDbEQsc0VBQXNFO29CQUN0RSx1RUFBdUU7b0JBQ3ZFLDBGQUEwRjtvQkFDMUYsSUFBSTtvQkFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsRUFBRTt3QkFDM0UsSUFBSSxPQUFPLEdBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3FCQUNsRjtvQkFDRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7d0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLHVCQUF1QixHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtxQkFDL0g7eUJBQU07d0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtxQkFDaEc7Z0JBQ0wsQ0FBQyxDQUFBO2dCQUNELEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO29CQUV6QyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO29CQUNqQiw4QkFBOEI7b0JBQzlCLGlCQUFpQjtvQkFDakIsdUJBQXVCO29CQUN2QixxQ0FBcUM7b0JBQ3JDLEVBQUU7b0JBQ0YsTUFBTTtvQkFDTiw4QkFBOEI7b0JBQzlCLGdCQUFnQjtvQkFDaEIsMkRBQTJEO29CQUMzRCxpQ0FBaUM7b0JBQ2pDLEVBQUU7b0JBQ0YsMEJBQTBCO29CQUMxQix1Q0FBdUM7b0JBQ3ZDLG1DQUFtQztvQkFDbkMsMkJBQTJCO29CQUMzQixJQUFJO29CQUNKLDZCQUE2QjtvQkFDN0IsbUZBQW1GO29CQUNuRiwwQkFBMEI7b0JBQzFCLElBQUk7b0JBRUosVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixDQUFDLENBQUE7Z0JBRUQsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO29CQUM5RSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN6QixDQUFDLENBQUE7YUFDSjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUE7Z0JBQzFELFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN0QjtRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOzhHQTlHUSxLQUFLO2tIQUFMLEtBQUs7OzJGQUFMLEtBQUs7a0JBRGpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3luY3tcclxuICAgIGlkPzpudW1iZXI7XHJcbiAgICBfb2JqZWN0U3RvcmVOYW1lOnN0cmluZztcclxuICAgIF9vYmplY3RJZDpzdHJpbmd8bnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG9iamVjdFN0b3JlTmFtZTpzdHJpbmcsb2JqZWN0SWQ6c3RyaW5nfG51bWJlcil7XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVOYW1lPW9iamVjdFN0b3JlTmFtZVxyXG4gICAgICAgIHRoaXMuX29iamVjdElkPW9iamVjdElkXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9iamVjdFN0b3JlTmFtZSgpOnN0cmluZ3tcclxuICAgICAgIHJldHVybiAgdGhpcy5fb2JqZWN0U3RvcmVOYW1lXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9iamVjdElkKCk6c3RyaW5nfG51bWJlcntcclxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0SWRcclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3ByRGIge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZGJOYW1lPSdzcGVlY2hyZWNvcmRlcidcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJFQ09SRElOR19GSUxFX0NBQ0hFX09CSkVDVF9TVE9SRV9OQU1FPSdfcmVjb3JkaW5nX2ZpbGVfY2FjaGUnO1xyXG4gICAgIC8vcHVibGljIHN0YXRpYyBSRUNPUkRJTkdfRklMRV9DSFVOS1NfT0JKRUNUX1NUT1JFX05BTUU9J3JlY19maWxlX2NodW5rcyc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGRiVmVyc2lvbj0xO1xyXG5cclxuICAgIHByaXZhdGUgX3N0b3JlOklEQkRhdGFiYXNlfG51bGw9bnVsbFxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3ByRGJGYWN0b3J5KCk6U3ByRGJ7XHJcbiAgICAgICBsZXQgc3ByRGI9bmV3IFNwckRiKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBzcHJEYjtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBwcmVwYXJlKCk6T2JzZXJ2YWJsZTxJREJEYXRhYmFzZT4ge1xyXG4gICAgICAgIGxldCBvYnMgPSBuZXcgT2JzZXJ2YWJsZTxJREJEYXRhYmFzZT4oKHN1YnNjcmliZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJQcmVwYXJlIGluZGV4ZWQgZGF0YWJhc2UuLi5cIilcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleGVkREIpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb3I6IElEQk9wZW5EQlJlcXVlc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgb3IgPSBpbmRleGVkREIub3BlbihTcHJEYi5kYk5hbWUsIFNwckRiLmRiVmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgb3Iub251cGdyYWRlbmVlZGVkID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYiA9IG9yLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHI9b3IudHJhbnNhY3Rpb25cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTcHJEYi5SRUNPUkRJTkdfRklMRV9DQUNIRV9PQkpFQ1RfU1RPUkVfTkFNRSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU3ByRGIuUkVDT1JESU5HX0ZJTEVfQ0FDSEVfT0JKRUNUX1NUT1JFX05BTUUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGdXR1cmUgd29yayB0b3dhcmRzIGEgY29tcGxldGUgUFdBIHdoaWNoIHN0b3JlcyBhbGwgY2xpZW4gZGF0YSBpbiBpbmRleGVkIGRiIGFuZCBzeW5jaHJvbml6ZXMgdG8gdGhlIHNlcnZlcjogU2VlIGV4cGVyaW1lbnRhbCBHaXQgYnJhbmNoIFwicHJvZ3Jlc3NpdmVfd2ViX2FwcFwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ19zeW5jJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdfc3luYycsIHtrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OnRydWV9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Byb2plY3QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Byb2plY3QnLCB7a2V5UGF0aDogJ25hbWUnfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBzZXNzU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nlc3Npb24nLCB7a2V5UGF0aDogJ3Nlc3Npb25JZCd9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNlc3NTdG9yZS5jcmVhdGVJbmRleCgncHJvamVjdElkeCcsIFsncHJvamVjdCddLCB7dW5pcXVlOmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1lbHNlIGlmKGV2Lm9sZFZlcnNpb248NSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2Vzc1N0b3JlPXRyLm9iamVjdFN0b3JlKCdzZXNzaW9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgc2Vzc1N0b3JlLmNyZWF0ZUluZGV4KCdwcm9qZWN0SWR4JywgWydwcm9qZWN0J10sIHt1bmlxdWU6ZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3NjcmlwdCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2NyU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NjcmlwdCcsIHtrZXlQYXRoOiAnc2NyaXB0SWQnfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzY3JTdG9yZS5jcmVhdGVJbmRleCgncHJvamVjdElkeCcsIFsncHJvamVjdCddLCB7dW5pcXVlOmZhbHNlfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdyZWNmaWxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCByZlN0b3JlPWRiLmNyZWF0ZU9iamVjdFN0b3JlKCdyZWNmaWxlJywge2tleVBhdGg6ICd1dWlkJ30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmZTdG9yZS5jcmVhdGVJbmRleCgnc2Vzc0lkSWR4JywgWydzZXNzaW9uSWQnXSwge3VuaXF1ZTpmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmZTdG9yZS5jcmVhdGVJbmRleCgnc2Vzc0lkSXRlbWNvZGVJZHgnLCBbJ3Nlc3Npb25JZCcsJ2l0ZW1Db2RlJ10sIHt1bmlxdWU6ZmFsc2V9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNwckRiLlJFQ09SRElOR19GSUxFX0NBQ0hFX09CSkVDVF9TVE9SRV9OQU1FKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJmU3RvcmU9ZGIuY3JlYXRlT2JqZWN0U3RvcmUoU3ByRGIuUkVDT1JESU5HX0ZJTEVfQ0FDSEVfT0JKRUNUX1NUT1JFX05BTUUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldi5vbGRWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJVcGdyYWRlZCBpbmRleGVkIGRhdGFiYXNlIFwiICsgU3ByRGIuZGJOYW1lICsgXCIgc2NoZW1hIGZyb20gdmVyc2lvbiBcIiArIGV2Lm9sZFZlcnNpb24gKyBcIiB0byBcIiArIGV2Lm5ld1ZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXCJDcmVhdGVkIGluZGV4ZWQgZGF0YWJhc2UgXCIgKyBTcHJEYi5kYk5hbWUgKyBcIiBzY2hlbWEgdmVyc2lvbiBcIiArIGV2Lm5ld1ZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgb3Iub25zdWNjZXNzID0gKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIk9wZW5lZCBpbmRleGVkIGRhdGFiYXNlXCIpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGRiPW9yLnJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgLy8gaVBhZCBXRWJLaXQgd29ya2Fyb3VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gZG9lcyBub3QgaGVscCFcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGIub25jbG9zZT0oZXYpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29uc29sZS5kZWJ1ZyhcIkRCIGNsb3NlZC4uLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZGVidWcoXCJDbG9zZSBkYi5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIGRiLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBsZXQgb3BhUnE9aW5kZXhlZERCLm9wZW4oU3ByRGIuZGJOYW1lLCBTcHJEYi5kYlZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb3BhUnEub251cGdyYWRlbmVlZGVkPShldik9Pnt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb3BhUnEub25zdWNjZXNzPShldik9PntcclxuICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhcImFuZCBvcGVuZWQgYWdhaW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN1YnNjcmliZXIubmV4dChvcGFScS5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBvcGFScS5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IG9wZW4gaW5kZXhlZCBkYXRhYmFzZTogXCIgKyBTcHJEYi5kYk5hbWUgKyBcIjogXCIgKyBlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChkYik7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBvci5vbmVycm9yID0gKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IG9wZW4gaW5kZXhlZCBkYXRhYmFzZTogXCIgKyBTcHJEYi5kYk5hbWUgKyBcIjogXCIgKyBlcnIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGluZGV4ZWQgZGF0YWJhc2VzXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBvYnM7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export class DSPUtils {
|
|
2
|
+
static { this.OCTAVE_FACTOR = 1.0 / (Math.log(2) / Math.log(10)); }
|
|
3
|
+
/**
|
|
4
|
+
* Get normalized amplitude level in dB
|
|
5
|
+
* @param linearLevel a normalized positive linear level (1.0 corresponds to 0dB)
|
|
6
|
+
* @return level in dB
|
|
7
|
+
*/
|
|
8
|
+
static toLevelInDB(linearLevel) {
|
|
9
|
+
if (linearLevel < 0) {
|
|
10
|
+
throw new RangeError('Linear level argument must be positive.');
|
|
11
|
+
}
|
|
12
|
+
return 10 * Math.log(linearLevel) / Math.log(10);
|
|
13
|
+
}
|
|
14
|
+
static toLinearLevel(dbLevel) {
|
|
15
|
+
return Math.pow(10, (dbLevel / 10));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get normalized amplitude power level in dB
|
|
19
|
+
* @param linearLevel a normalized positive linear level (1.0 corresponds to 0dB)
|
|
20
|
+
* @return power level in dB
|
|
21
|
+
*/
|
|
22
|
+
static toPowerLevelInDB(linearLevel) {
|
|
23
|
+
if (linearLevel < 0) {
|
|
24
|
+
throw new RangeError('Linear level argument must be positive.');
|
|
25
|
+
}
|
|
26
|
+
return 20 * Math.log(linearLevel) / Math.log(10);
|
|
27
|
+
}
|
|
28
|
+
static toPowerLinearLevel(dbLevel) {
|
|
29
|
+
return Math.pow(10, (dbLevel / 20));
|
|
30
|
+
}
|
|
31
|
+
static toOctaves(fq) {
|
|
32
|
+
return DSPUtils.OCTAVE_FACTOR * Math.log(fq) / Math.log(10);
|
|
33
|
+
}
|
|
34
|
+
static maxLevel(audioBuffer) {
|
|
35
|
+
let ml = 0.0;
|
|
36
|
+
for (let ch = 0; ch < audioBuffer.numberOfChannels; ch++) {
|
|
37
|
+
const chArr = audioBuffer.getChannelData(ch);
|
|
38
|
+
for (let s = 0; s < chArr.length; s++) {
|
|
39
|
+
const l = Math.abs(chArr[s]);
|
|
40
|
+
if (l > ml) {
|
|
41
|
+
ml = l;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return ml;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvZHNwL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNJLE1BQU0sT0FBTyxRQUFRO2FBRUYsa0JBQWEsR0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUxRTs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFtQjtRQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDakIsTUFBTSxJQUFJLFVBQVUsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFHTSxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWU7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQW1CO1FBQzlDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksVUFBVSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDbkU7UUFDRCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFlO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFVO1FBQzlCLE9BQU8sUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBd0I7UUFDM0MsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2IsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUN4RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ1YsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDUjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuICAgIGV4cG9ydCBjbGFzcyBEU1BVdGlscyB7XHJcblxyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIE9DVEFWRV9GQUNUT1I6IG51bWJlciA9IDEuMCAvIChNYXRoLmxvZygyKSAvIE1hdGgubG9nKDEwKSk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEdldCBub3JtYWxpemVkIGFtcGxpdHVkZSBsZXZlbCBpbiBkQlxyXG4gICAgICAgICAqIEBwYXJhbSBsaW5lYXJMZXZlbCBhIG5vcm1hbGl6ZWQgcG9zaXRpdmUgbGluZWFyIGxldmVsICgxLjAgY29ycmVzcG9uZHMgdG8gMGRCKVxyXG4gICAgICAgICAqIEByZXR1cm4gbGV2ZWwgaW4gZEJcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc3RhdGljIHRvTGV2ZWxJbkRCKGxpbmVhckxldmVsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgICAgICBpZiAobGluZWFyTGV2ZWwgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTGluZWFyIGxldmVsIGFyZ3VtZW50IG11c3QgYmUgcG9zaXRpdmUuJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiAxMCAqIE1hdGgubG9nKGxpbmVhckxldmVsKSAvIE1hdGgubG9nKDEwKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBwdWJsaWMgc3RhdGljIHRvTGluZWFyTGV2ZWwoZGJMZXZlbDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgucG93KDEwLCAoZGJMZXZlbCAvIDEwKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBHZXQgbm9ybWFsaXplZCBhbXBsaXR1ZGUgcG93ZXIgbGV2ZWwgaW4gZEJcclxuICAgICAgICAgKiBAcGFyYW0gbGluZWFyTGV2ZWwgYSBub3JtYWxpemVkIHBvc2l0aXZlIGxpbmVhciBsZXZlbCAoMS4wIGNvcnJlc3BvbmRzIHRvIDBkQilcclxuICAgICAgICAgKiBAcmV0dXJuIHBvd2VyIGxldmVsIGluIGRCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHN0YXRpYyB0b1Bvd2VyTGV2ZWxJbkRCKGxpbmVhckxldmVsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgICAgICBpZiAobGluZWFyTGV2ZWwgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTGluZWFyIGxldmVsIGFyZ3VtZW50IG11c3QgYmUgcG9zaXRpdmUuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDIwICogTWF0aC5sb2cobGluZWFyTGV2ZWwpIC8gTWF0aC5sb2coMTApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHVibGljIHN0YXRpYyB0b1Bvd2VyTGluZWFyTGV2ZWwoZGJMZXZlbDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGgucG93KDEwLCAoZGJMZXZlbCAvIDIwKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwdWJsaWMgc3RhdGljIHRvT2N0YXZlcyhmcTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIERTUFV0aWxzLk9DVEFWRV9GQUNUT1IgKiBNYXRoLmxvZyhmcSkgLyBNYXRoLmxvZygxMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwdWJsaWMgc3RhdGljIG1heExldmVsKGF1ZGlvQnVmZmVyOiBBdWRpb0J1ZmZlcik6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGxldCBtbCA9IDAuMDtcclxuICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICBjb25zdCBjaEFyciA9IGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKGNoKTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNoQXJyLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsID0gTWF0aC5hYnMoY2hBcnJbc10pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGwgPiBtbCkge1xyXG4gICAgICAgICAgICAgICAgICBtbCA9IGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBtbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4iXX0=
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
export class BinaryByteReader {
|
|
2
|
-
constructor(buf) {
|
|
3
|
-
this.buf = new Uint8Array(buf);
|
|
4
|
-
this.sbuf = new Int8Array(buf);
|
|
5
|
-
this._pos = 0;
|
|
6
|
-
}
|
|
7
|
-
get pos() {
|
|
8
|
-
return this._pos;
|
|
9
|
-
}
|
|
10
|
-
set pos(pos) {
|
|
11
|
-
this._pos = pos;
|
|
12
|
-
}
|
|
13
|
-
length() {
|
|
14
|
-
return this.buf.byteLength;
|
|
15
|
-
}
|
|
16
|
-
eof() {
|
|
17
|
-
return (this._pos >= this.buf.byteLength);
|
|
18
|
-
}
|
|
19
|
-
skip(byteCound) {
|
|
20
|
-
this.pos += 4;
|
|
21
|
-
}
|
|
22
|
-
readAscii(size) {
|
|
23
|
-
let i;
|
|
24
|
-
let txt = '';
|
|
25
|
-
for (i = 0; i < size; i++) {
|
|
26
|
-
txt += String.fromCharCode(this.buf[this._pos++]);
|
|
27
|
-
}
|
|
28
|
-
return txt;
|
|
29
|
-
}
|
|
30
|
-
readInt8() {
|
|
31
|
-
return (this.buf[this._pos++]);
|
|
32
|
-
}
|
|
33
|
-
readInt16BE() {
|
|
34
|
-
const b0 = this.sbuf[this._pos++];
|
|
35
|
-
const b1 = this.buf[this._pos++];
|
|
36
|
-
const val = (b0 << 8) | b1;
|
|
37
|
-
return val;
|
|
38
|
-
}
|
|
39
|
-
readInt16LE() {
|
|
40
|
-
const b0 = this.buf[this._pos++];
|
|
41
|
-
const b1 = this.sbuf[this._pos++];
|
|
42
|
-
const val = (b1 << 8) | b0;
|
|
43
|
-
return val;
|
|
44
|
-
}
|
|
45
|
-
readUint16LE() {
|
|
46
|
-
const seg = new Uint8Array(2);
|
|
47
|
-
let i;
|
|
48
|
-
for (i = 0; i < 2; i++) {
|
|
49
|
-
seg[i] = this.buf[this._pos++];
|
|
50
|
-
}
|
|
51
|
-
let val = 0;
|
|
52
|
-
val |= seg[1] << 8;
|
|
53
|
-
val |= seg[0];
|
|
54
|
-
return val;
|
|
55
|
-
}
|
|
56
|
-
readInt32BE() {
|
|
57
|
-
const seg = new Uint8Array(4);
|
|
58
|
-
let i;
|
|
59
|
-
for (i = 0; i < 4; i++) {
|
|
60
|
-
seg[i] = this.buf[this._pos++];
|
|
61
|
-
}
|
|
62
|
-
const val = seg[0] << 24 | seg[1] << 16 | seg[2] << 8 | seg[3];
|
|
63
|
-
return val;
|
|
64
|
-
}
|
|
65
|
-
readUint32LE() {
|
|
66
|
-
// this dircet data view does not work with nodejs: all avlues are zero
|
|
67
|
-
// var seg=new Uint8Array(this.buf,this._pos,4);
|
|
68
|
-
// ... copy value by value
|
|
69
|
-
const seg = new Uint8Array(4);
|
|
70
|
-
let i;
|
|
71
|
-
for (i = 0; i < 4; i++) {
|
|
72
|
-
seg[i] = this.buf[this._pos++];
|
|
73
|
-
}
|
|
74
|
-
// console.log("len:", seg.length, " ", seg.byteLength, " ", seg[0], " ", seg[1], " ", seg[2], " ", seg[3]);
|
|
75
|
-
let val = 0;
|
|
76
|
-
val |= seg[3] << 24;
|
|
77
|
-
val |= seg[2] << 16;
|
|
78
|
-
val |= seg[1] << 8;
|
|
79
|
-
val |= seg[0];
|
|
80
|
-
// var val = < 24(seg[3] <) | (seg[2] << 16) | (seg[1] << 8) | seg[0];
|
|
81
|
-
// this._pos=this._pos+4;
|
|
82
|
-
return val;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
1
|
+
export class BinaryByteReader {
|
|
2
|
+
constructor(buf) {
|
|
3
|
+
this.buf = new Uint8Array(buf);
|
|
4
|
+
this.sbuf = new Int8Array(buf);
|
|
5
|
+
this._pos = 0;
|
|
6
|
+
}
|
|
7
|
+
get pos() {
|
|
8
|
+
return this._pos;
|
|
9
|
+
}
|
|
10
|
+
set pos(pos) {
|
|
11
|
+
this._pos = pos;
|
|
12
|
+
}
|
|
13
|
+
length() {
|
|
14
|
+
return this.buf.byteLength;
|
|
15
|
+
}
|
|
16
|
+
eof() {
|
|
17
|
+
return (this._pos >= this.buf.byteLength);
|
|
18
|
+
}
|
|
19
|
+
skip(byteCound) {
|
|
20
|
+
this.pos += 4;
|
|
21
|
+
}
|
|
22
|
+
readAscii(size) {
|
|
23
|
+
let i;
|
|
24
|
+
let txt = '';
|
|
25
|
+
for (i = 0; i < size; i++) {
|
|
26
|
+
txt += String.fromCharCode(this.buf[this._pos++]);
|
|
27
|
+
}
|
|
28
|
+
return txt;
|
|
29
|
+
}
|
|
30
|
+
readInt8() {
|
|
31
|
+
return (this.buf[this._pos++]);
|
|
32
|
+
}
|
|
33
|
+
readInt16BE() {
|
|
34
|
+
const b0 = this.sbuf[this._pos++];
|
|
35
|
+
const b1 = this.buf[this._pos++];
|
|
36
|
+
const val = (b0 << 8) | b1;
|
|
37
|
+
return val;
|
|
38
|
+
}
|
|
39
|
+
readInt16LE() {
|
|
40
|
+
const b0 = this.buf[this._pos++];
|
|
41
|
+
const b1 = this.sbuf[this._pos++];
|
|
42
|
+
const val = (b1 << 8) | b0;
|
|
43
|
+
return val;
|
|
44
|
+
}
|
|
45
|
+
readUint16LE() {
|
|
46
|
+
const seg = new Uint8Array(2);
|
|
47
|
+
let i;
|
|
48
|
+
for (i = 0; i < 2; i++) {
|
|
49
|
+
seg[i] = this.buf[this._pos++];
|
|
50
|
+
}
|
|
51
|
+
let val = 0;
|
|
52
|
+
val |= seg[1] << 8;
|
|
53
|
+
val |= seg[0];
|
|
54
|
+
return val;
|
|
55
|
+
}
|
|
56
|
+
readInt32BE() {
|
|
57
|
+
const seg = new Uint8Array(4);
|
|
58
|
+
let i;
|
|
59
|
+
for (i = 0; i < 4; i++) {
|
|
60
|
+
seg[i] = this.buf[this._pos++];
|
|
61
|
+
}
|
|
62
|
+
const val = seg[0] << 24 | seg[1] << 16 | seg[2] << 8 | seg[3];
|
|
63
|
+
return val;
|
|
64
|
+
}
|
|
65
|
+
readUint32LE() {
|
|
66
|
+
// this dircet data view does not work with nodejs: all avlues are zero
|
|
67
|
+
// var seg=new Uint8Array(this.buf,this._pos,4);
|
|
68
|
+
// ... copy value by value
|
|
69
|
+
const seg = new Uint8Array(4);
|
|
70
|
+
let i;
|
|
71
|
+
for (i = 0; i < 4; i++) {
|
|
72
|
+
seg[i] = this.buf[this._pos++];
|
|
73
|
+
}
|
|
74
|
+
// console.log("len:", seg.length, " ", seg.byteLength, " ", seg[0], " ", seg[1], " ", seg[2], " ", seg[3]);
|
|
75
|
+
let val = 0;
|
|
76
|
+
val |= seg[3] << 24;
|
|
77
|
+
val |= seg[2] << 16;
|
|
78
|
+
val |= seg[1] << 8;
|
|
79
|
+
val |= seg[0];
|
|
80
|
+
// var val = < 24(seg[3] <) | (seg[2] << 16) | (seg[1] << 8) | seg[0];
|
|
81
|
+
// this._pos=this._pos+4;
|
|
82
|
+
return val;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
85
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5UmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksR0FBZ0I7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLEdBQVc7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBaUI7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxDQUFDO1FBQ04sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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RSxDQUFDO1FBQ3BCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxzRUFBc0U7UUFDdEUseUJBQXlCO1FBQ3pCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUdKIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbiAgICBleHBvcnQgY2xhc3MgQmluYXJ5Qnl0ZVJlYWRlciB7XHJcbiAgICAgICAgYnVmOiBVaW50OEFycmF5O1xyXG4gICAgICAgIHNidWY6IEludDhBcnJheTtcclxuICAgICAgICBwcml2YXRlIF9wb3M6IG51bWJlcjtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoYnVmOiBBcnJheUJ1ZmZlcikge1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZiA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XHJcbiAgICAgICAgICAgIHRoaXMuc2J1ZiA9IG5ldyBJbnQ4QXJyYXkoYnVmKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9zID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCBwb3MoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldCBwb3MocG9zOiBudW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fcG9zID0gcG9zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1Zi5ieXRlTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZW9mKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuX3BvcyA+PSB0aGlzLmJ1Zi5ieXRlTGVuZ3RoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNraXAoYnl0ZUNvdW5kOiBudW1iZXIpe1xyXG4gICAgICAgICAgICB0aGlzLnBvcyArPSA0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEFzY2lpKHNpemU6IG51bWJlcik6IFN0cmluZyB7XHJcbiAgICAgICAgICAgIGxldCBpO1xyXG4gICAgICAgICAgICBsZXQgdHh0ID0gJyc7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHR4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuYnVmW3RoaXMuX3BvcysrXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHR4dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRJbnQ4KCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5idWZbdGhpcy5fcG9zKytdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRJbnQxNkJFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGNvbnN0IGIwID0gdGhpcy5zYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgY29uc3QgYjEgPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICggYjAgPDwgOCApIHwgYjE7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlYWRJbnQxNkxFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGNvbnN0IGIwID0gdGhpcy5idWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICBjb25zdCBiMSA9IHRoaXMuc2J1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICggYjEgPDwgOCApIHwgYjA7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlYWRVaW50MTZMRSgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICBjb25zdCBzZWcgPSBuZXcgVWludDhBcnJheSgyKTtcclxuICAgICAgICAgICAgbGV0IGk6IG51bWJlcjtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc2VnW2ldID0gdGhpcy5idWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB2YWwgPSAwO1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzFdIDw8IDg7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbMF07XHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkSW50MzJCRSgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICBjb25zdCBzZWcgPSBuZXcgVWludDhBcnJheSg0KTtcclxuICAgICAgICAgICAgbGV0IGk6IG51bWJlcjtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc2VnW2ldID0gdGhpcy5idWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHNlZ1swXSA8PCAyNCB8IHNlZ1sxXSA8PCAxNiB8IHNlZ1syXSA8PCA4IHwgc2VnWzNdO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZFVpbnQzMkxFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgICAvLyB0aGlzIGRpcmNldCBkYXRhIHZpZXcgZG9lcyBub3Qgd29yayB3aXRoIG5vZGVqczogYWxsIGF2bHVlcyBhcmUgemVyb1xyXG4gICAgICAgICAgICAvLyB2YXIgc2VnPW5ldyBVaW50OEFycmF5KHRoaXMuYnVmLHRoaXMuX3Bvcyw0KTtcclxuICAgICAgICAgICAgLy8gLi4uIGNvcHkgdmFsdWUgYnkgdmFsdWVcclxuICAgICAgICAgICAgY29uc3Qgc2VnID0gbmV3IFVpbnQ4QXJyYXkoNCk7XHJcbiAgICAgICAgICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHNlZ1tpXSA9IHRoaXMuYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxlbjpcIiwgc2VnLmxlbmd0aCwgXCIgXCIsIHNlZy5ieXRlTGVuZ3RoLCBcIiBcIiwgc2VnWzBdLCBcIiBcIiwgc2VnWzFdLCBcIiBcIiwgc2VnWzJdLCBcIiBcIiwgc2VnWzNdKTtcclxuICAgICAgICAgICAgbGV0IHZhbCA9IDA7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbM10gPDwgMjQ7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbMl0gPDwgMTY7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbMV0gPDwgODtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1swXTtcclxuICAgICAgICAgICAgLy8gdmFyIHZhbCA9IDwgMjQoc2VnWzNdIDwpIHwgKHNlZ1syXSA8PCAxNikgfCAoc2VnWzFdIDw8IDgpIHwgc2VnWzBdO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9wb3M9dGhpcy5fcG9zKzQ7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export class BinaryByteWriter {
|
|
2
|
+
static { this.DEFAULT_SIZE_INC = 1024; }
|
|
3
|
+
constructor() {
|
|
4
|
+
const size = BinaryByteWriter.DEFAULT_SIZE_INC;
|
|
5
|
+
this.buf = new ArrayBuffer(size);
|
|
6
|
+
this._pos = 0;
|
|
7
|
+
}
|
|
8
|
+
get pos() {
|
|
9
|
+
return this._pos;
|
|
10
|
+
}
|
|
11
|
+
ensureCapacity(numBytes) {
|
|
12
|
+
while (this._pos + numBytes >= this.buf.byteLength) {
|
|
13
|
+
// buffer increment
|
|
14
|
+
let inc = BinaryByteWriter.DEFAULT_SIZE_INC;
|
|
15
|
+
if (inc < numBytes) {
|
|
16
|
+
inc = numBytes;
|
|
17
|
+
}
|
|
18
|
+
const newSize = this.buf.byteLength + inc;
|
|
19
|
+
const arrOld = new Uint8Array(this.buf, 0, this._pos);
|
|
20
|
+
const arrNew = new Uint8Array(newSize);
|
|
21
|
+
arrNew.set(arrOld);
|
|
22
|
+
this.buf = arrNew.buffer;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
writeUint8(val) {
|
|
26
|
+
this.ensureCapacity(1);
|
|
27
|
+
const valView = new DataView(this.buf, this._pos, 1);
|
|
28
|
+
valView.setUint8(0, val);
|
|
29
|
+
this._pos++;
|
|
30
|
+
}
|
|
31
|
+
writeUint16(val, le) {
|
|
32
|
+
this.ensureCapacity(2);
|
|
33
|
+
const valView = new DataView(this.buf, this._pos, 2);
|
|
34
|
+
valView.setUint16(0, val, le);
|
|
35
|
+
this._pos += 2;
|
|
36
|
+
}
|
|
37
|
+
writeInt16(val, le) {
|
|
38
|
+
this.ensureCapacity(2);
|
|
39
|
+
const valView = new DataView(this.buf, this._pos, 2);
|
|
40
|
+
valView.setInt16(0, val, le);
|
|
41
|
+
this._pos += 2;
|
|
42
|
+
}
|
|
43
|
+
writeUint32(val, le) {
|
|
44
|
+
this.ensureCapacity(4);
|
|
45
|
+
const valView = new DataView(this.buf, this._pos, 4);
|
|
46
|
+
valView.setUint32(0, val, le);
|
|
47
|
+
this._pos += 4;
|
|
48
|
+
}
|
|
49
|
+
writeInt32(val, le) {
|
|
50
|
+
this.ensureCapacity(4);
|
|
51
|
+
const valView = new DataView(this.buf, this._pos, 4);
|
|
52
|
+
valView.setInt32(0, val, le);
|
|
53
|
+
this._pos += 4;
|
|
54
|
+
}
|
|
55
|
+
finish() {
|
|
56
|
+
const finalArr = new Uint8Array(this._pos);
|
|
57
|
+
const dv = new DataView(this.buf, 0, this._pos);
|
|
58
|
+
for (let i = 0; i < this._pos; i++) {
|
|
59
|
+
finalArr[i] = dv.getUint8(i);
|
|
60
|
+
}
|
|
61
|
+
return finalArr;
|
|
62
|
+
}
|
|
63
|
+
writeAscii(text) {
|
|
64
|
+
let i;
|
|
65
|
+
for (i = 0; i < text.length; i++) {
|
|
66
|
+
const asciiCode = text.charCodeAt(i);
|
|
67
|
+
if (asciiCode < 0 || asciiCode > 255) {
|
|
68
|
+
throw new Error('Not an ASCII character at char ' + i + ' in ' + text);
|
|
69
|
+
}
|
|
70
|
+
this.writeUint8(asciiCode);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5V3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVdyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO2FBQ2xCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQUkvQjtRQUNJLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBRTdCLE9BQVEsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUc7WUFDcEQsbUJBQW1CO1lBQ2pCLElBQUksR0FBRyxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQzVDLElBQUksR0FBRyxHQUFHLFFBQVEsRUFBRTtnQkFDaEIsR0FBRyxHQUFHLFFBQVEsQ0FBQzthQUNsQjtZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFH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TSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQzthQUN4RTtZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbiAgICBleHBvcnQgY2xhc3MgQmluYXJ5Qnl0ZVdyaXRlciB7XHJcbiAgICAgICAgc3RhdGljIERFRkFVTFRfU0laRV9JTkMgPSAxMDI0O1xyXG4gICAgICAgIGJ1ZjogQXJyYXlCdWZmZXI7XHJcbiAgICAgICAgcHJpdmF0ZSBfcG9zOiBudW1iZXI7XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgICAgICBjb25zdCBzaXplID0gQmluYXJ5Qnl0ZVdyaXRlci5ERUZBVUxUX1NJWkVfSU5DO1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9zID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldCBwb3MoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVuc3VyZUNhcGFjaXR5KG51bUJ5dGVzOiBudW1iZXIpIHtcclxuXHJcbiAgICAgICAgICB3aGlsZSAoIHRoaXMuX3BvcyArIG51bUJ5dGVzID49IHRoaXMuYnVmLmJ5dGVMZW5ndGggKSB7XHJcbiAgICAgICAgICAgIC8vIGJ1ZmZlciBpbmNyZW1lbnRcclxuICAgICAgICAgICAgICBsZXQgaW5jID0gQmluYXJ5Qnl0ZVdyaXRlci5ERUZBVUxUX1NJWkVfSU5DO1xyXG4gICAgICAgICAgICAgIGlmIChpbmMgPCBudW1CeXRlcykge1xyXG4gICAgICAgICAgICAgICAgICBpbmMgPSBudW1CeXRlcztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgbmV3U2l6ZSA9IHRoaXMuYnVmLmJ5dGVMZW5ndGggKyBpbmM7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBhcnJPbGQgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZiwgMCwgdGhpcy5fcG9zKTtcclxuICAgICAgICAgICAgY29uc3QgYXJyTmV3ID0gbmV3IFVpbnQ4QXJyYXkobmV3U2l6ZSk7XHJcbiAgICAgICAgICAgIGFyck5ldy5zZXQoYXJyT2xkKTtcclxuICAgICAgICAgICAgdGhpcy5idWYgPSBhcnJOZXcuYnVmZmVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgd3JpdGVVaW50OCh2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSgxKTtcclxuICAgICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgMSk7XHJcbiAgICAgICAgICB2YWxWaWV3LnNldFVpbnQ4KDAsIHZhbCk7XHJcbiAgICAgICAgICB0aGlzLl9wb3MrKztcclxuICAgICAgICB9XHJcblxyXG4gICAgICB3cml0ZVVpbnQxNih2YWw6IG51bWJlciwgbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDIpO1xyXG4gICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgMik7XHJcbiAgICAgICAgdmFsVmlldy5zZXRVaW50MTYoMCwgdmFsLCBsZSk7XHJcbiAgICAgICAgdGhpcy5fcG9zICs9IDI7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHdyaXRlSW50MTYodmFsOiBudW1iZXIsIGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSgyKTtcclxuICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDIpO1xyXG4gICAgICAgIHZhbFZpZXcuc2V0SW50MTYoMCwgdmFsLCBsZSk7XHJcbiAgICAgICAgdGhpcy5fcG9zICs9IDI7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICB3cml0ZVVpbnQzMih2YWw6IG51bWJlciwgbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDQpO1xyXG4gICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgNCk7XHJcbiAgICAgICAgdmFsVmlldy5zZXRVaW50MzIoMCwgdmFsLCBsZSk7XHJcbiAgICAgICAgdGhpcy5fcG9zICs9IDQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdyaXRlSW50MzIodmFsOiBudW1iZXIsIGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg0KTtcclxuICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDQpO1xyXG4gICAgICAgIHZhbFZpZXcuc2V0SW50MzIoMCwgdmFsLCBsZSk7XHJcbiAgICAgICAgdGhpcy5fcG9zICs9IDQ7XHJcbiAgICAgIH1cclxuICAgICAgICBmaW5pc2goKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgICBjb25zdCBmaW5hbEFyciA9IG5ldyBVaW50OEFycmF5KHRoaXMuX3Bvcyk7XHJcbiAgICAgICAgICBjb25zdCBkdiA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgMCwgdGhpcy5fcG9zKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fcG9zOyBpKyspIHtcclxuICAgICAgICAgICAgZmluYWxBcnJbaV0gPSBkdi5nZXRVaW50OChpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmaW5hbEFycjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdyaXRlQXNjaWkodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBpO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzY2lpQ29kZSA9IHRleHQuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgICBpZiAoYXNjaWlDb2RlIDwgMCB8fCBhc2NpaUNvZGUgPiAyNTUpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGFuIEFTQ0lJIGNoYXJhY3RlciBhdCBjaGFyICcgKyBpICsgJyBpbiAnICsgdGV4dCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMud3JpdGVVaW50OChhc2NpaUNvZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiJdfQ==
|