speechflow 1.3.2 → 1.4.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.
Files changed (154) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/etc/stx.conf +54 -58
  3. package/package.json +25 -106
  4. package/speechflow-cli/etc/stx.conf +77 -0
  5. package/speechflow-cli/package.json +116 -0
  6. package/speechflow-cli/src/speechflow-node-a2a-meter.ts +217 -0
  7. package/{src → speechflow-cli/src}/speechflow-node-a2a-vad.ts +14 -21
  8. package/{src → speechflow-cli/src}/speechflow-node-a2t-deepgram.ts +21 -38
  9. package/{src → speechflow-cli/src}/speechflow-node-t2a-elevenlabs.ts +10 -16
  10. package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +276 -0
  11. package/{src → speechflow-cli/src}/speechflow-node-x2x-filter.ts +5 -1
  12. package/{src → speechflow-cli/src}/speechflow-node-x2x-trace.ts +15 -7
  13. package/{src → speechflow-cli/src}/speechflow-node.ts +7 -0
  14. package/{src → speechflow-cli/src}/speechflow.ts +81 -25
  15. package/speechflow-ui-db/etc/eslint.mjs +106 -0
  16. package/speechflow-ui-db/etc/htmllint.json +55 -0
  17. package/speechflow-ui-db/etc/stx.conf +79 -0
  18. package/speechflow-ui-db/etc/stylelint.js +46 -0
  19. package/speechflow-ui-db/etc/stylelint.yaml +33 -0
  20. package/speechflow-ui-db/etc/tsc-client.json +30 -0
  21. package/speechflow-ui-db/etc/tsc.node.json +9 -0
  22. package/speechflow-ui-db/etc/vite-client.mts +63 -0
  23. package/speechflow-ui-db/package.d/htmllint-cli+0.0.7.patch +20 -0
  24. package/speechflow-ui-db/package.json +75 -0
  25. package/speechflow-ui-db/src/app-icon.ai +1989 -4
  26. package/speechflow-ui-db/src/app-icon.svg +26 -0
  27. package/speechflow-ui-db/src/app.styl +64 -0
  28. package/speechflow-ui-db/src/app.vue +221 -0
  29. package/speechflow-ui-db/src/index.html +23 -0
  30. package/speechflow-ui-db/src/index.ts +26 -0
  31. package/{dst/speechflow.d.ts → speechflow-ui-db/src/lib.d.ts} +5 -3
  32. package/speechflow-ui-db/src/tsconfig.json +3 -0
  33. package/speechflow-ui-st/etc/eslint.mjs +106 -0
  34. package/speechflow-ui-st/etc/htmllint.json +55 -0
  35. package/speechflow-ui-st/etc/stx.conf +79 -0
  36. package/speechflow-ui-st/etc/stylelint.js +46 -0
  37. package/speechflow-ui-st/etc/stylelint.yaml +33 -0
  38. package/speechflow-ui-st/etc/tsc-client.json +30 -0
  39. package/speechflow-ui-st/etc/tsc.node.json +9 -0
  40. package/speechflow-ui-st/etc/vite-client.mts +63 -0
  41. package/speechflow-ui-st/package.d/htmllint-cli+0.0.7.patch +20 -0
  42. package/speechflow-ui-st/package.json +79 -0
  43. package/speechflow-ui-st/src/app-icon.ai +1989 -4
  44. package/speechflow-ui-st/src/app-icon.svg +26 -0
  45. package/speechflow-ui-st/src/app.styl +64 -0
  46. package/speechflow-ui-st/src/app.vue +142 -0
  47. package/speechflow-ui-st/src/index.html +23 -0
  48. package/speechflow-ui-st/src/index.ts +26 -0
  49. package/speechflow-ui-st/src/lib.d.ts +9 -0
  50. package/speechflow-ui-st/src/tsconfig.json +3 -0
  51. package/dst/speechflow-node-a2a-ffmpeg.d.ts +0 -13
  52. package/dst/speechflow-node-a2a-ffmpeg.js +0 -153
  53. package/dst/speechflow-node-a2a-ffmpeg.js.map +0 -1
  54. package/dst/speechflow-node-a2a-gender.d.ts +0 -20
  55. package/dst/speechflow-node-a2a-gender.js +0 -349
  56. package/dst/speechflow-node-a2a-gender.js.map +0 -1
  57. package/dst/speechflow-node-a2a-meter.d.ts +0 -14
  58. package/dst/speechflow-node-a2a-meter.js +0 -196
  59. package/dst/speechflow-node-a2a-meter.js.map +0 -1
  60. package/dst/speechflow-node-a2a-mute.d.ts +0 -17
  61. package/dst/speechflow-node-a2a-mute.js +0 -117
  62. package/dst/speechflow-node-a2a-mute.js.map +0 -1
  63. package/dst/speechflow-node-a2a-vad.d.ts +0 -19
  64. package/dst/speechflow-node-a2a-vad.js +0 -383
  65. package/dst/speechflow-node-a2a-vad.js.map +0 -1
  66. package/dst/speechflow-node-a2a-wav.d.ts +0 -11
  67. package/dst/speechflow-node-a2a-wav.js +0 -211
  68. package/dst/speechflow-node-a2a-wav.js.map +0 -1
  69. package/dst/speechflow-node-a2t-deepgram.d.ts +0 -19
  70. package/dst/speechflow-node-a2t-deepgram.js +0 -345
  71. package/dst/speechflow-node-a2t-deepgram.js.map +0 -1
  72. package/dst/speechflow-node-t2a-elevenlabs.d.ts +0 -18
  73. package/dst/speechflow-node-t2a-elevenlabs.js +0 -244
  74. package/dst/speechflow-node-t2a-elevenlabs.js.map +0 -1
  75. package/dst/speechflow-node-t2a-kokoro.d.ts +0 -14
  76. package/dst/speechflow-node-t2a-kokoro.js +0 -155
  77. package/dst/speechflow-node-t2a-kokoro.js.map +0 -1
  78. package/dst/speechflow-node-t2t-deepl.d.ts +0 -15
  79. package/dst/speechflow-node-t2t-deepl.js +0 -146
  80. package/dst/speechflow-node-t2t-deepl.js.map +0 -1
  81. package/dst/speechflow-node-t2t-format.d.ts +0 -11
  82. package/dst/speechflow-node-t2t-format.js +0 -82
  83. package/dst/speechflow-node-t2t-format.js.map +0 -1
  84. package/dst/speechflow-node-t2t-ollama.d.ts +0 -13
  85. package/dst/speechflow-node-t2t-ollama.js +0 -247
  86. package/dst/speechflow-node-t2t-ollama.js.map +0 -1
  87. package/dst/speechflow-node-t2t-openai.d.ts +0 -13
  88. package/dst/speechflow-node-t2t-openai.js +0 -227
  89. package/dst/speechflow-node-t2t-openai.js.map +0 -1
  90. package/dst/speechflow-node-t2t-sentence.d.ts +0 -17
  91. package/dst/speechflow-node-t2t-sentence.js +0 -250
  92. package/dst/speechflow-node-t2t-sentence.js.map +0 -1
  93. package/dst/speechflow-node-t2t-subtitle.d.ts +0 -12
  94. package/dst/speechflow-node-t2t-subtitle.js +0 -166
  95. package/dst/speechflow-node-t2t-subtitle.js.map +0 -1
  96. package/dst/speechflow-node-t2t-transformers.d.ts +0 -14
  97. package/dst/speechflow-node-t2t-transformers.js +0 -265
  98. package/dst/speechflow-node-t2t-transformers.js.map +0 -1
  99. package/dst/speechflow-node-x2x-filter.d.ts +0 -11
  100. package/dst/speechflow-node-x2x-filter.js +0 -117
  101. package/dst/speechflow-node-x2x-filter.js.map +0 -1
  102. package/dst/speechflow-node-x2x-trace.d.ts +0 -11
  103. package/dst/speechflow-node-x2x-trace.js +0 -104
  104. package/dst/speechflow-node-x2x-trace.js.map +0 -1
  105. package/dst/speechflow-node-xio-device.d.ts +0 -13
  106. package/dst/speechflow-node-xio-device.js +0 -230
  107. package/dst/speechflow-node-xio-device.js.map +0 -1
  108. package/dst/speechflow-node-xio-file.d.ts +0 -11
  109. package/dst/speechflow-node-xio-file.js +0 -216
  110. package/dst/speechflow-node-xio-file.js.map +0 -1
  111. package/dst/speechflow-node-xio-mqtt.d.ts +0 -13
  112. package/dst/speechflow-node-xio-mqtt.js +0 -188
  113. package/dst/speechflow-node-xio-mqtt.js.map +0 -1
  114. package/dst/speechflow-node-xio-websocket.d.ts +0 -13
  115. package/dst/speechflow-node-xio-websocket.js +0 -278
  116. package/dst/speechflow-node-xio-websocket.js.map +0 -1
  117. package/dst/speechflow-node.d.ts +0 -63
  118. package/dst/speechflow-node.js +0 -177
  119. package/dst/speechflow-node.js.map +0 -1
  120. package/dst/speechflow-utils.d.ts +0 -74
  121. package/dst/speechflow-utils.js +0 -519
  122. package/dst/speechflow-utils.js.map +0 -1
  123. package/dst/speechflow.js +0 -787
  124. package/dst/speechflow.js.map +0 -1
  125. package/src/speechflow-node-a2a-meter.ts +0 -177
  126. package/src/speechflow-node-t2t-subtitle.ts +0 -149
  127. /package/{etc → speechflow-cli/etc}/biome.jsonc +0 -0
  128. /package/{etc → speechflow-cli/etc}/eslint.mjs +0 -0
  129. /package/{etc → speechflow-cli/etc}/oxlint.jsonc +0 -0
  130. /package/{etc → speechflow-cli/etc}/speechflow.bat +0 -0
  131. /package/{etc → speechflow-cli/etc}/speechflow.sh +0 -0
  132. /package/{etc → speechflow-cli/etc}/speechflow.yaml +0 -0
  133. /package/{etc → speechflow-cli/etc}/tsconfig.json +0 -0
  134. /package/{package.d → speechflow-cli/package.d}/@ericedouard+vad-node-realtime+0.2.0.patch +0 -0
  135. /package/{src → speechflow-cli/src}/lib.d.ts +0 -0
  136. /package/{src → speechflow-cli/src}/speechflow-logo.ai +0 -0
  137. /package/{src → speechflow-cli/src}/speechflow-logo.svg +0 -0
  138. /package/{src → speechflow-cli/src}/speechflow-node-a2a-ffmpeg.ts +0 -0
  139. /package/{src → speechflow-cli/src}/speechflow-node-a2a-gender.ts +0 -0
  140. /package/{src → speechflow-cli/src}/speechflow-node-a2a-mute.ts +0 -0
  141. /package/{src → speechflow-cli/src}/speechflow-node-a2a-wav.ts +0 -0
  142. /package/{src → speechflow-cli/src}/speechflow-node-t2a-kokoro.ts +0 -0
  143. /package/{src → speechflow-cli/src}/speechflow-node-t2t-deepl.ts +0 -0
  144. /package/{src → speechflow-cli/src}/speechflow-node-t2t-format.ts +0 -0
  145. /package/{src → speechflow-cli/src}/speechflow-node-t2t-ollama.ts +0 -0
  146. /package/{src → speechflow-cli/src}/speechflow-node-t2t-openai.ts +0 -0
  147. /package/{src → speechflow-cli/src}/speechflow-node-t2t-sentence.ts +0 -0
  148. /package/{src → speechflow-cli/src}/speechflow-node-t2t-transformers.ts +0 -0
  149. /package/{src → speechflow-cli/src}/speechflow-node-xio-device.ts +0 -0
  150. /package/{src → speechflow-cli/src}/speechflow-node-xio-file.ts +0 -0
  151. /package/{src → speechflow-cli/src}/speechflow-node-xio-mqtt.ts +0 -0
  152. /package/{src → speechflow-cli/src}/speechflow-node-xio-websocket.ts +0 -0
  153. /package/{src → speechflow-cli/src}/speechflow-utils.ts +0 -0
  154. /package/{tsconfig.json → speechflow-cli/tsconfig.json} +0 -0
@@ -1,519 +0,0 @@
1
- "use strict";
2
- /*
3
- ** SpeechFlow - Speech Processing Flow Graph
4
- ** Copyright (c) 2024-2025 Dr. Ralf S. Engelschall <rse@engelschall.com>
5
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- var __importDefault = (this && this.__importDefault) || function (mod) {
41
- return (mod && mod.__esModule) ? mod : { "default": mod };
42
- };
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.TimeStore = exports.StreamWrapper = exports.Queue = exports.QueuePointer = exports.DoubleQueue = exports.SingleQueue = void 0;
45
- exports.audioBufferDuration = audioBufferDuration;
46
- exports.audioArrayDuration = audioArrayDuration;
47
- exports.convertBufToF32 = convertBufToF32;
48
- exports.convertF32ToBuf = convertF32ToBuf;
49
- exports.createTransformStreamForWritableSide = createTransformStreamForWritableSide;
50
- exports.createTransformStreamForReadableSide = createTransformStreamForReadableSide;
51
- exports.ensureStreamChunk = ensureStreamChunk;
52
- exports.streamChunkEncode = streamChunkEncode;
53
- exports.streamChunkDecode = streamChunkDecode;
54
- /* standard dependencies */
55
- const node_stream_1 = __importDefault(require("node:stream"));
56
- const node_events_1 = require("node:events");
57
- /* external dependencies */
58
- const luxon_1 = require("luxon");
59
- const cbor2_1 = __importDefault(require("cbor2"));
60
- const IntervalTree = __importStar(require("node-interval-tree"));
61
- /* internal dependencies */
62
- const speechflow_node_1 = require("./speechflow-node");
63
- /* calculate duration of an audio buffer */
64
- function audioBufferDuration(buffer, sampleRate = 48000, bitDepth = 16, channels = 1, littleEndian = true) {
65
- /* sanity check parameters */
66
- if (!Buffer.isBuffer(buffer))
67
- throw new Error("invalid input (Buffer expected)");
68
- if (littleEndian !== true)
69
- throw new Error("only Little Endian supported");
70
- if (sampleRate <= 0)
71
- throw new Error("sample rate must be positive");
72
- if (bitDepth <= 0 || bitDepth % 8 !== 0)
73
- throw new Error("bit depth must be positive and multiple of 8");
74
- if (channels <= 0)
75
- throw new Error("channels must be positive");
76
- /* calculate duration */
77
- const bytesPerSample = bitDepth / 8;
78
- const totalSamples = buffer.length / (bytesPerSample * channels);
79
- return totalSamples / sampleRate;
80
- }
81
- /* calculate duration of an audio array */
82
- function audioArrayDuration(arr, sampleRate = 48000, channels = 1) {
83
- /* sanity check parameters */
84
- if (arr.length === 0)
85
- return 0;
86
- if (sampleRate <= 0)
87
- throw new Error("sample rate must be positive");
88
- if (channels <= 0)
89
- throw new Error("channels must be positive");
90
- /* calculate duration */
91
- const totalSamples = arr.length / channels;
92
- return totalSamples / sampleRate;
93
- }
94
- /* helper function: convert Buffer in PCM/I16 to Float32Array in PCM/F32 format */
95
- function convertBufToF32(buf, littleEndian = true) {
96
- if (buf.length % 2 !== 0)
97
- throw new Error("buffer length must be even for 16-bit samples");
98
- const dataView = new DataView(buf.buffer);
99
- const arr = new Float32Array(buf.length / 2);
100
- for (let i = 0; i < arr.length; i++)
101
- arr[i] = dataView.getInt16(i * 2, littleEndian) / 32768;
102
- return arr;
103
- }
104
- /* helper function: convert Float32Array in PCM/F32 to Buffer in PCM/I16 format */
105
- function convertF32ToBuf(arr) {
106
- if (arr.length === 0)
107
- return Buffer.alloc(0);
108
- const int16Array = new Int16Array(arr.length);
109
- for (let i = 0; i < arr.length; i++) {
110
- let sample = arr[i];
111
- if (Number.isNaN(sample))
112
- sample = 0;
113
- int16Array[i] = Math.max(-32768, Math.min(32767, Math.round(sample * 32768)));
114
- }
115
- return Buffer.from(int16Array.buffer);
116
- }
117
- /* create a Duplex/Transform stream which has
118
- object-mode on Writable side and buffer/string-mode on Readable side */
119
- function createTransformStreamForWritableSide() {
120
- return new node_stream_1.default.Transform({
121
- readableObjectMode: true,
122
- writableObjectMode: true,
123
- decodeStrings: false,
124
- highWaterMark: 1,
125
- transform(chunk, encoding, callback) {
126
- this.push(chunk.payload);
127
- callback();
128
- },
129
- final(callback) {
130
- this.push(null);
131
- callback();
132
- }
133
- });
134
- }
135
- /* create a Duplex/Transform stream which has
136
- object-mode on Readable side and buffer/string-mode on Writable side */
137
- function createTransformStreamForReadableSide(type, getTimeZero) {
138
- return new node_stream_1.default.Transform({
139
- readableObjectMode: true,
140
- writableObjectMode: true,
141
- decodeStrings: false,
142
- highWaterMark: (type === "audio" ? 19200 : 65536),
143
- transform(chunk, encoding, callback) {
144
- const timeZero = getTimeZero();
145
- const start = luxon_1.DateTime.now().diff(timeZero);
146
- let end = start;
147
- if (type === "audio") {
148
- const duration = audioBufferDuration(chunk);
149
- end = start.plus(duration * 1000);
150
- }
151
- const obj = new speechflow_node_1.SpeechFlowChunk(start, end, "final", type, chunk);
152
- this.push(obj);
153
- callback();
154
- },
155
- final(callback) {
156
- this.push(null);
157
- callback();
158
- }
159
- });
160
- }
161
- /* ensure a chunk is of a certain type and format */
162
- function ensureStreamChunk(type, chunk) {
163
- if (chunk instanceof speechflow_node_1.SpeechFlowChunk) {
164
- if (chunk.type !== type)
165
- throw new Error(`invalid payload chunk (expected ${type} type, received ${chunk.type} type)`);
166
- }
167
- else {
168
- if (type === "text" && Buffer.isBuffer(chunk))
169
- chunk = chunk.toString("utf8");
170
- else if (type === "audio" && !Buffer.isBuffer(chunk))
171
- chunk = Buffer.from(chunk);
172
- }
173
- return chunk;
174
- }
175
- /* encode/serialize chunk of data */
176
- function streamChunkEncode(chunk) {
177
- let payload;
178
- if (Buffer.isBuffer(chunk.payload))
179
- payload = new Uint8Array(chunk.payload);
180
- else {
181
- const encoder = new TextEncoder();
182
- payload = encoder.encode(chunk.payload);
183
- }
184
- const data = {
185
- timestampStart: chunk.timestampStart.toMillis(),
186
- timestampEnd: chunk.timestampEnd.toMillis(),
187
- kind: chunk.kind,
188
- type: chunk.type,
189
- payload
190
- };
191
- const _data = cbor2_1.default.encode(data);
192
- return _data;
193
- }
194
- /* decode/unserialize chunk of data */
195
- function streamChunkDecode(_data) {
196
- let data;
197
- try {
198
- data = cbor2_1.default.decode(_data);
199
- }
200
- catch (err) {
201
- throw new Error(`CBOR decoding failed: ${err}`);
202
- }
203
- let payload;
204
- if (data.type === "audio")
205
- payload = Buffer.from(data.payload);
206
- else
207
- payload = (new TextDecoder()).decode(data.payload);
208
- const chunk = new speechflow_node_1.SpeechFlowChunk(luxon_1.Duration.fromMillis(data.timestampStart), luxon_1.Duration.fromMillis(data.timestampEnd), data.kind, data.type, payload);
209
- return chunk;
210
- }
211
- /* helper class for single item queue */
212
- class SingleQueue extends node_events_1.EventEmitter {
213
- queue = new Array();
214
- write(item) {
215
- this.queue.unshift(item);
216
- this.emit("dequeue");
217
- }
218
- read() {
219
- return new Promise((resolve, reject) => {
220
- const consume = () => {
221
- if (this.queue.length > 0)
222
- return this.queue.pop();
223
- else
224
- return null;
225
- };
226
- let item = consume();
227
- if (item !== null)
228
- resolve(item);
229
- else {
230
- const tryToConsume = () => {
231
- item = consume();
232
- if (item !== null)
233
- resolve(item);
234
- else
235
- this.once("dequeue", tryToConsume);
236
- };
237
- this.once("dequeue", tryToConsume);
238
- }
239
- });
240
- }
241
- }
242
- exports.SingleQueue = SingleQueue;
243
- /* helper class for double-item queue */
244
- class DoubleQueue extends node_events_1.EventEmitter {
245
- queue0 = new Array();
246
- queue1 = new Array();
247
- notify() {
248
- if (this.queue0.length > 0 && this.queue1.length > 0)
249
- this.emit("dequeue");
250
- }
251
- write0(item) {
252
- this.queue0.unshift(item);
253
- this.notify();
254
- }
255
- write1(item) {
256
- this.queue1.unshift(item);
257
- this.notify();
258
- }
259
- read() {
260
- return new Promise((resolve, reject) => {
261
- const consume = () => {
262
- if (this.queue0.length > 0 && this.queue1.length > 0) {
263
- const item0 = this.queue0.pop();
264
- const item1 = this.queue1.pop();
265
- return [item0, item1];
266
- }
267
- else
268
- return null;
269
- };
270
- let items = consume();
271
- if (items !== null)
272
- resolve(items);
273
- else {
274
- const tryToConsume = () => {
275
- items = consume();
276
- if (items !== null)
277
- resolve(items);
278
- else
279
- this.once("dequeue", tryToConsume);
280
- };
281
- this.once("dequeue", tryToConsume);
282
- }
283
- });
284
- }
285
- }
286
- exports.DoubleQueue = DoubleQueue;
287
- /* queue pointer */
288
- class QueuePointer extends node_events_1.EventEmitter {
289
- name;
290
- queue;
291
- /* internal state */
292
- index = 0;
293
- /* construction */
294
- constructor(name, queue) {
295
- super();
296
- this.name = name;
297
- this.queue = queue;
298
- this.setMaxListeners(100);
299
- }
300
- /* positioning operations */
301
- maxPosition() {
302
- return this.queue.elements.length;
303
- }
304
- position(index) {
305
- if (index !== undefined) {
306
- this.index = Math.max(0, Math.min(index, this.queue.elements.length));
307
- this.emit("position", this.index);
308
- }
309
- return this.index;
310
- }
311
- walk(num) {
312
- const indexOld = this.index;
313
- if (num > 0)
314
- this.index = Math.min(this.index + num, this.queue.elements.length);
315
- else if (num < 0)
316
- this.index = Math.max(this.index + num, 0);
317
- if (this.index !== indexOld)
318
- this.emit("position", { start: this.index });
319
- }
320
- walkForwardUntil(type) {
321
- while (this.index < this.queue.elements.length
322
- && this.queue.elements[this.index].type !== type)
323
- this.index++;
324
- this.emit("position", { start: this.index });
325
- }
326
- walkBackwardUntil(type) {
327
- while (this.index > 0
328
- && this.queue.elements[this.index].type !== type)
329
- this.index--;
330
- this.emit("position", { start: this.index });
331
- }
332
- /* search operations */
333
- searchForward(type) {
334
- let position = this.index;
335
- while (position < this.queue.elements.length
336
- && this.queue.elements[position].type !== type)
337
- position++;
338
- this.emit("search", { start: this.index, end: position });
339
- return position;
340
- }
341
- searchBackward(type) {
342
- let position = this.index;
343
- while (position > 0
344
- && this.queue.elements[position].type !== type)
345
- position--;
346
- this.emit("search", { start: position, end: this.index });
347
- return position;
348
- }
349
- /* reading operations */
350
- peek(position) {
351
- if (position === undefined)
352
- position = this.index;
353
- position = Math.max(0, Math.min(position, this.queue.elements.length));
354
- const element = this.queue.elements[position];
355
- this.queue.emit("read", { start: position, end: position });
356
- return element;
357
- }
358
- read() {
359
- const element = this.queue.elements[this.index];
360
- if (this.index < this.queue.elements.length)
361
- this.index++;
362
- this.queue.emit("read", { start: this.index - 1, end: this.index - 1 });
363
- return element;
364
- }
365
- slice(size) {
366
- let slice;
367
- const start = this.index;
368
- if (size !== undefined) {
369
- size = Math.max(0, Math.min(size, this.queue.elements.length - this.index));
370
- slice = this.queue.elements.slice(this.index, this.index + size);
371
- this.index += size;
372
- }
373
- else {
374
- slice = this.queue.elements.slice(this.index);
375
- this.index = this.queue.elements.length;
376
- }
377
- this.queue.emit("read", { start, end: this.index });
378
- return slice;
379
- }
380
- /* writing operations */
381
- touch() {
382
- if (this.index >= this.queue.elements.length)
383
- throw new Error("cannot touch after last element");
384
- this.queue.emit("write", { start: this.index, end: this.index + 1 });
385
- }
386
- append(element) {
387
- this.queue.elements.push(element);
388
- this.index = this.queue.elements.length;
389
- this.queue.emit("write", { start: this.index - 1, end: this.index - 1 });
390
- }
391
- insert(element) {
392
- this.queue.elements.splice(this.index, 0, element);
393
- this.queue.emit("write", { start: this.index - 1, end: this.index });
394
- }
395
- delete() {
396
- if (this.index >= this.queue.elements.length)
397
- throw new Error("cannot delete after last element");
398
- this.queue.elements.splice(this.index, 1);
399
- this.queue.emit("write", { start: this.index, end: this.index });
400
- }
401
- }
402
- exports.QueuePointer = QueuePointer;
403
- /* queue */
404
- class Queue extends node_events_1.EventEmitter {
405
- elements = [];
406
- pointers = new Map();
407
- constructor() {
408
- super();
409
- this.setMaxListeners(100);
410
- }
411
- pointerUse(name) {
412
- if (!this.pointers.has(name))
413
- this.pointers.set(name, new QueuePointer(name, this));
414
- return this.pointers.get(name);
415
- }
416
- pointerDelete(name) {
417
- if (!this.pointers.has(name))
418
- throw new Error("pointer not exists");
419
- this.pointers.delete(name);
420
- }
421
- trim() {
422
- /* determine minimum pointer position */
423
- let min = this.elements.length;
424
- for (const pointer of this.pointers.values())
425
- if (min > pointer.position())
426
- min = pointer.position();
427
- /* trim the maximum amount of first elements */
428
- if (min > 0) {
429
- this.elements.splice(0, min);
430
- /* shift all pointers */
431
- for (const pointer of this.pointers.values())
432
- pointer.position(pointer.position() - min);
433
- }
434
- }
435
- }
436
- exports.Queue = Queue;
437
- /* utility class for wrapping a custom stream into a regular Transform stream */
438
- class StreamWrapper extends node_stream_1.default.Transform {
439
- foreignStream;
440
- onData = (chunk) => { this.push(chunk); };
441
- onError = (err) => { this.emit("error", err); };
442
- onEnd = () => { this.push(null); };
443
- constructor(foreignStream, options = {}) {
444
- options.readableObjectMode = true;
445
- options.writableObjectMode = true;
446
- super(options);
447
- this.foreignStream = foreignStream;
448
- if (typeof this.foreignStream.on === "function") {
449
- this.foreignStream.on("data", this.onData);
450
- this.foreignStream.on("error", this.onError);
451
- this.foreignStream.on("end", this.onEnd);
452
- }
453
- }
454
- _transform(chunk, encoding, callback) {
455
- if (this.destroyed) {
456
- callback(new Error("stream already destroyed"));
457
- return;
458
- }
459
- try {
460
- if (typeof this.foreignStream.write === "function") {
461
- const canContinue = this.foreignStream.write(chunk);
462
- if (canContinue)
463
- callback();
464
- else
465
- this.foreignStream.once("drain", callback);
466
- }
467
- else
468
- throw new Error("foreign stream lacks write method");
469
- }
470
- catch (err) {
471
- callback(err);
472
- }
473
- }
474
- _flush(callback) {
475
- if (this.destroyed) {
476
- callback(new Error("stream already destroyed"));
477
- return;
478
- }
479
- try {
480
- if (typeof this.foreignStream.end === "function")
481
- this.foreignStream.end();
482
- callback();
483
- }
484
- catch (err) {
485
- callback(err);
486
- }
487
- }
488
- _destroy(error, callback) {
489
- if (typeof this.foreignStream.removeListener === "function") {
490
- this.foreignStream.removeListener("data", this.onData);
491
- this.foreignStream.removeListener("error", this.onError);
492
- this.foreignStream.removeListener("end", this.onEnd);
493
- }
494
- super._destroy(error, callback);
495
- }
496
- }
497
- exports.StreamWrapper = StreamWrapper;
498
- class TimeStore extends node_events_1.EventEmitter {
499
- tree = new IntervalTree.IntervalTree();
500
- store(start, end, item) {
501
- this.tree.insert({ low: start.toMillis(), high: end.toMillis(), item });
502
- }
503
- fetch(start, end) {
504
- const intervals = this.tree.search(start.toMillis(), end.toMillis());
505
- return intervals.map((interval) => interval.item);
506
- }
507
- prune(_before) {
508
- const before = _before.toMillis();
509
- const intervals = this.tree.search(0, before - 1);
510
- for (const interval of intervals)
511
- if (interval.low < before && interval.high < before)
512
- this.tree.remove(interval);
513
- }
514
- clear() {
515
- this.tree = new IntervalTree.IntervalTree();
516
- }
517
- }
518
- exports.TimeStore = TimeStore;
519
- //# sourceMappingURL=speechflow-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"speechflow-utils.js","sourceRoot":"","sources":["../src/speechflow-utils.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeF,kDAuBC;AAGD,gDAgBC;AAGD,0CAQC;AAGD,0CAWC;AAID,oFAeC;AAID,oFAuBC;AAGD,8CAYC;AAYD,8CAiBC;AAGD,8CAqBC;AAlMD,6BAA6B;AAC7B,8DAAgD;AAChD,6CAAgD;AAEhD,6BAA6B;AAC7B,iCAA0C;AAC1C,kDAA0C;AAC1C,iEAAuD;AAEvD,6BAA6B;AAC7B,uDAAsD;AAEtD,6CAA6C;AAC7C,SAAgB,mBAAmB,CAC/B,MAAc,EACd,UAAU,GAAK,KAAK,EACpB,QAAQ,GAAO,EAAE,EACjB,QAAQ,GAAO,CAAC,EAChB,YAAY,GAAG,IAAI;IAEnB,+BAA+B;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACtD,IAAI,YAAY,KAAK,IAAI;QACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,IAAI,UAAU,IAAI,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACnE,IAAI,QAAQ,IAAI,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAEhD,0BAA0B;IAC1B,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAA;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAA;IAChE,OAAO,YAAY,GAAG,UAAU,CAAA;AACpC,CAAC;AAED,4CAA4C;AAC5C,SAAgB,kBAAkB,CAC9B,GAAiB,EACjB,UAAU,GAAK,KAAK,EACpB,QAAQ,GAAO,CAAC;IAEhB,+BAA+B;IAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAChB,OAAO,CAAC,CAAA;IACZ,IAAI,UAAU,IAAI,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACnD,IAAI,QAAQ,IAAI,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAEhD,0BAA0B;IAC1B,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAA;IAC1C,OAAO,YAAY,GAAG,UAAU,CAAA;AACpC,CAAC;AAED,oFAAoF;AACpF,SAAgB,eAAe,CAAE,GAAW,EAAE,YAAY,GAAG,IAAI;IAC7D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,CAAA;IAC3D,OAAO,GAAG,CAAA;AACd,CAAC;AAED,oFAAoF;AACpF,SAAgB,eAAe,CAAE,GAAiB;IAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAChB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACpB,MAAM,GAAG,CAAC,CAAA;QACd,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACjF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AACzC,CAAC;AAED;4EAC4E;AAC5E,SAAgB,oCAAoC;IAChD,OAAO,IAAI,qBAAM,CAAC,SAAS,CAAC;QACxB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,CAAC;QAChB,SAAS,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;YACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACxB,QAAQ,EAAE,CAAA;QACd,CAAC;QACD,KAAK,CAAE,QAAQ;YACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,QAAQ,EAAE,CAAA;QACd,CAAC;KACJ,CAAC,CAAA;AACN,CAAC;AAED;4EAC4E;AAC5E,SAAgB,oCAAoC,CAAE,IAAsB,EAAE,WAA2B;IACrG,OAAO,IAAI,qBAAM,CAAC,SAAS,CAAC;QACxB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,SAAS,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;YACjD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;YAC9B,MAAM,KAAK,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC3C,IAAI,GAAG,GAAG,KAAK,CAAA;YACf,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAe,CAAC,CAAA;gBACrD,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,iCAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,QAAQ,EAAE,CAAA;QACd,CAAC;QACD,KAAK,CAAE,QAAQ;YACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,QAAQ,EAAE,CAAA;QACd,CAAC;KACJ,CAAC,CAAA;AACN,CAAC;AAED,sDAAsD;AACtD,SAAgB,iBAAiB,CAAE,IAAsB,EAAE,KAAwC;IAC/F,IAAI,KAAK,YAAY,iCAAe,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,mBAAmB,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAA;IACrG,CAAC;SACI,CAAC;QACF,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;aAC7B,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAWD,sCAAsC;AACtC,SAAgB,iBAAiB,CAAE,KAAsB;IACrD,IAAI,OAAmB,CAAA;IACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QAC9B,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SACtC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,IAAI,GAAG;QACT,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE;QAC/C,YAAY,EAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC7C,IAAI,EAAY,KAAK,CAAC,IAAI;QAC1B,IAAI,EAAY,KAAK,CAAC,IAAI;QAC1B,OAAO;KAC0B,CAAA;IACrC,MAAM,KAAK,GAAG,eAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/B,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,wCAAwC;AACxC,SAAgB,iBAAiB,CAAE,KAAiB;IAChD,IAAI,IAA+B,CAAA;IACnC,IAAI,CAAC;QACD,IAAI,GAAG,eAAI,CAAC,MAAM,CAA4B,KAAK,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,GAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,OAAwB,CAAA;IAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;;QAEnC,OAAO,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,iCAAe,CAC7B,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EACxC,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EACtC,IAAI,CAAC,IAAgC,EACrC,IAAI,CAAC,IAAwB,EAC7B,OAAO,CACV,CAAA;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,0CAA0C;AAC1C,MAAa,WAAe,SAAQ,0BAAY;IACpC,KAAK,GAAG,IAAI,KAAK,EAAK,CAAA;IAC9B,KAAK,CAAE,IAAO;QACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC;IACD,IAAI;QACA,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAG,CAAA;;oBAExB,OAAO,IAAI,CAAA;YACnB,CAAC,CAAA;YACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAA;YACpB,IAAI,IAAI,KAAK,IAAI;gBACb,OAAO,CAAC,IAAI,CAAC,CAAA;iBACZ,CAAC;gBACF,MAAM,YAAY,GAAG,GAAG,EAAE;oBACtB,IAAI,GAAG,OAAO,EAAE,CAAA;oBAChB,IAAI,IAAI,KAAK,IAAI;wBACb,OAAO,CAAC,IAAI,CAAC,CAAA;;wBAEb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;gBAC1C,CAAC,CAAA;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YACtC,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA7BD,kCA6BC;AAED,0CAA0C;AAC1C,MAAa,WAAoB,SAAQ,0BAAY;IACzC,MAAM,GAAG,IAAI,KAAK,EAAM,CAAA;IACxB,MAAM,GAAG,IAAI,KAAK,EAAM,CAAA;IACxB,MAAM;QACV,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,CAAE,IAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,EAAE,CAAA;IACjB,CAAC;IACD,MAAM,CAAE,IAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,EAAE,CAAA;IACjB,CAAC;IACD,IAAI;QACA,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,GAAsB,EAAE;gBACpC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAQ,CAAA;oBACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAQ,CAAA;oBACrC,OAAO,CAAE,KAAK,EAAE,KAAK,CAAE,CAAA;gBAC3B,CAAC;;oBAEG,OAAO,IAAI,CAAA;YACnB,CAAC,CAAA;YACD,IAAI,KAAK,GAAG,OAAO,EAAE,CAAA;YACrB,IAAI,KAAK,KAAK,IAAI;gBACd,OAAO,CAAC,KAAK,CAAC,CAAA;iBACb,CAAC;gBACF,MAAM,YAAY,GAAG,GAAG,EAAE;oBACtB,KAAK,GAAG,OAAO,EAAE,CAAA;oBACjB,IAAI,KAAK,KAAK,IAAI;wBACd,OAAO,CAAC,KAAK,CAAC,CAAA;;wBAEd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;gBAC1C,CAAC,CAAA;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YACtC,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AAzCD,kCAyCC;AAKD,qBAAqB;AACrB,MAAa,YAAqC,SAAQ,0BAAY;IAMtD;IACA;IANZ,sBAAsB;IACd,KAAK,GAAG,CAAC,CAAA;IAEjB,oBAAoB;IACpB,YACY,IAAY,EACZ,KAAe;QAEvB,KAAK,EAAE,CAAA;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAU;QAGvB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,8BAA8B;IAC9B,WAAW;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA;IACrC,CAAC;IACD,QAAQ,CAAE,KAAc;QACpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;YACrE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IACD,IAAI,CAAE,GAAW;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;QAC3B,IAAI,GAAG,GAAG,CAAC;YACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;aAClE,IAAI,GAAG,GAAG,CAAC;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;YACvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,gBAAgB,CAAE,IAAe;QAC7B,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;eACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI;YAChD,IAAI,CAAC,KAAK,EAAE,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,iBAAiB,CAAE,IAAe;QAC9B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC;eACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI;YAChD,IAAI,CAAC,KAAK,EAAE,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,yBAAyB;IACzB,aAAa,CAAE,IAAe;QAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;eACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,IAAI;YAC9C,QAAQ,EAAE,CAAA;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QACzD,OAAO,QAAQ,CAAA;IACnB,CAAC;IACD,cAAc,CAAE,IAAe;QAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,OAAO,QAAQ,GAAG,CAAC;eACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,IAAI;YAC9C,QAAQ,EAAE,CAAA;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACzD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAE,QAAiB;QACnB,IAAI,QAAQ,KAAK,SAAS;YACtB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACtE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC3D,OAAO,OAAO,CAAA;IAClB,CAAC;IACD,IAAI;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACvC,IAAI,CAAC,KAAK,EAAE,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;QACvE,OAAO,OAAO,CAAA;IAClB,CAAC;IACD,KAAK,CAAE,IAAa;QAChB,IAAI,KAAU,CAAA;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;YAChE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAA;QACtB,CAAC;aACI,CAAC;YACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA;QAC3C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,0BAA0B;IAC1B,KAAK;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,CAAE,OAAU;QACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,MAAM,CAAE,OAAU;QACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,MAAM;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;CACJ;AArHD,oCAqHC;AAED,aAAa;AACb,MAAa,KAA8B,SAAQ,0BAAY;IACpD,QAAQ,GAAQ,EAAE,CAAA;IACjB,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAA;IACrD;QACI,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IACD,UAAU,CAAE,IAAY;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,YAAY,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;IACnC,CAAC;IACD,aAAa,CAAE,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IACD,IAAI;QACA,0CAA0C;QAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;QAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxC,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE;gBACxB,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAEhC,iDAAiD;QACjD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAE5B,0BAA0B;YAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAA;QAClD,CAAC;IACL,CAAC;CACJ;AAjCD,sBAiCC;AAED,kFAAkF;AAClF,MAAa,aAAc,SAAQ,qBAAM,CAAC,SAAS;IACvC,aAAa,CAAK;IAClB,MAAM,GAAI,CAAC,KAAU,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAA;IAC9C,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAA;IACrD,KAAK,GAAK,GAAa,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAA;IACrD,YAAa,aAAkB,EAAE,UAAmC,EAAE;QAClE,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAA;QACjC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAA;QACjC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;IACL,CAAC;IACD,UAAU,CAAE,KAAU,EAAE,QAAwB,EAAE,QAAkC;QAChF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;YAC/C,OAAM;QACV,CAAC;QACD,IAAI,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBACnD,IAAI,WAAW;oBACX,QAAQ,EAAE,CAAA;;oBAEV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAClD,CAAC;;gBAEG,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,GAAY,CAAC,CAAA;QAC1B,CAAC;IACL,CAAC;IACD,MAAM,CAAE,QAAkC;QACtC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;YAC/C,OAAM;QACV,CAAC;QACD,IAAI,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,UAAU;gBAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC5B,QAAQ,EAAE,CAAA;QACd,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,GAAY,CAAC,CAAA;QAC1B,CAAC;IACL,CAAC;IACD,QAAQ,CAAE,KAAmB,EAAE,QAAkC;QAC7D,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACvD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACxD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,EAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1D,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;CACJ;AA1DD,sCA0DC;AAMD,MAAa,SAAa,SAAQ,0BAAY;IAClC,IAAI,GAAG,IAAI,YAAY,CAAC,YAAY,EAAwB,CAAA;IACpE,KAAK,CAAE,KAAe,EAAE,GAAa,EAAE,IAAO;QAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,KAAK,CAAE,KAAe,EAAE,GAAa;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrD,CAAC;IACD,KAAK,CAAE,OAAiB;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;QACjD,KAAK,MAAM,QAAQ,IAAI,SAAS;YAC5B,IAAI,QAAQ,CAAC,GAAG,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,GAAG,MAAM;gBAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IACD,KAAK;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,YAAY,EAAwB,CAAA;IACrE,CAAC;CACJ;AAnBD,8BAmBC"}