@verdant-web/server 2.0.7 → 2.1.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.
@@ -24,6 +24,7 @@ import { Readable } from 'stream';
24
24
  import { FileMetadata } from './files/FileMetadata.js';
25
25
  import { ServerLibrary } from './ServerLibrary.js';
26
26
  import { migrations } from './migrations.js';
27
+ import { TransformStream, } from 'node:stream/web';
27
28
  class DefaultProfiles {
28
29
  constructor() {
29
30
  this.get = async (userId) => {
@@ -39,10 +40,58 @@ export class Server extends EventEmitter {
39
40
  this.connectionToReplicaIdMap = new WeakMap();
40
41
  this.log = () => { };
41
42
  this.__testMode = false;
43
+ /**
44
+ * Attaches the Verdant server to an HttpServer instance, which
45
+ * allows it to handle requests and websockets required for the
46
+ * Verdant protocol.
47
+ *
48
+ * You can pass httpPath = false if you want to handle HTTP requests
49
+ * yourself, and this will only attach the websocket handling.
50
+ */
51
+ this.attach = (server, options = {}) => {
52
+ if (this.httpServer) {
53
+ this.httpServer.off('upgrade', this.handleUpgrade);
54
+ }
55
+ this.httpServer = server;
56
+ this.httpServer.on('upgrade', this.handleUpgrade);
57
+ if (options.httpPath !== false) {
58
+ this.httpServer.on('request', this.createInternalRequestHandler(options.httpPath));
59
+ }
60
+ };
61
+ /**
62
+ * Handles an HTTP upgrade request to a websocket connection.
63
+ */
64
+ this.handleUpgrade = async (req, socket, head) => {
65
+ try {
66
+ const info = this.authorizeRequest(req);
67
+ this.wss.handleUpgrade(req, socket, head, (ws) => {
68
+ this.wss.emit('connection', ws, req, info);
69
+ });
70
+ }
71
+ catch (e) {
72
+ this.emit('error', e);
73
+ if (e instanceof VerdantError && e.httpStatus === 401) {
74
+ socket.write('HTTP/1.1 401 Unauthorized\r\n' +
75
+ 'Connection: close\r\n' +
76
+ 'Content-Length: 0\r\n' +
77
+ '\r\n');
78
+ }
79
+ socket.destroy();
80
+ }
81
+ };
42
82
  this.authorizeRequest = (req) => {
43
83
  return this.tokenVerifier.verifyToken(this.getRequestToken(req));
44
84
  };
45
85
  this.getRequestToken = (req) => {
86
+ if (isFetch(req)) {
87
+ const authHeader = req.headers.get('Authorization');
88
+ assert(authHeader, 'Token is required');
89
+ const [type, token] = authHeader.split(' ');
90
+ if (type === 'Bearer') {
91
+ return token;
92
+ }
93
+ return token;
94
+ }
46
95
  if (req.headers.authorization) {
47
96
  const [type, token] = req.headers.authorization.split(' ');
48
97
  if (type === 'Bearer') {
@@ -62,21 +111,27 @@ export class Server extends EventEmitter {
62
111
  assert(token, 'Token is required');
63
112
  return token;
64
113
  };
65
- this.internalServerHandleRequest = (req, res) => {
66
- const url = new URL(req.url || '', 'http://localhost');
67
- if (url.pathname.startsWith('lofi')) {
68
- if (url.pathname === 'lofi') {
69
- return this.handleRequest(req, res);
114
+ this.createInternalRequestHandler = (pathPrefix = '/sync') => {
115
+ const handleRequest = (req, res) => {
116
+ const url = new URL(req.url || '', 'http://localhost');
117
+ if (url.pathname.startsWith('sync')) {
118
+ if (url.pathname === 'sync') {
119
+ return this.handleRequest(req, res);
120
+ }
121
+ else if (url.pathname.startsWith('/sync/files/')) {
122
+ return this.handleFileRequest(req, res);
123
+ }
70
124
  }
71
- else if (url.pathname.startsWith('/lofi/files/')) {
72
- return this.handleFileRequest(req, res);
125
+ else {
126
+ res.writeHead(404);
127
+ res.end();
73
128
  }
74
- }
75
- else {
76
- res.writeHead(404);
77
- res.end();
78
- }
129
+ };
130
+ return handleRequest;
79
131
  };
132
+ /**
133
+ * Handles an HTTP request from a verdant client.
134
+ */
80
135
  this.handleRequest = async (req, res) => {
81
136
  var _a;
82
137
  try {
@@ -98,28 +153,45 @@ export class Server extends EventEmitter {
98
153
  reject(e);
99
154
  });
100
155
  }));
101
- try {
102
- for (const message of body.messages) {
103
- await this.handleMessage(key, info, message);
104
- }
105
- }
106
- catch (e) {
107
- this.emit('error', e);
108
- res.writeHead(500);
109
- res.end();
110
- return;
111
- }
112
- // update our keepalive timers for presence management
113
- const firstMessage = body.messages[0];
114
- if (firstMessage) {
115
- this.keepalives.refresh(info.libraryId, firstMessage.replicaId);
116
- }
156
+ await this.handleRequestBody(key, info, body);
117
157
  finish();
118
158
  this.emit('request', info);
119
159
  }
120
160
  }
121
161
  catch (e) {
122
- return this.sendErrorResponse(e, res);
162
+ return this.writeErrorResponse(e, res);
163
+ }
164
+ };
165
+ /**
166
+ * Handles a "fetch" style request. Complement to handleRequest, for servers
167
+ * that use Request/Response style handlers.
168
+ */
169
+ this.handleFetch = async (req) => {
170
+ try {
171
+ const info = this.authorizeRequest(req);
172
+ const key = generateId();
173
+ const finish = this.clientConnections.addFetch(info.libraryId, key, req, info);
174
+ const body = (await req.json());
175
+ if (!body) {
176
+ throw new VerdantError(VerdantError.Code.BodyRequired);
177
+ }
178
+ await this.handleRequestBody(key, info, body);
179
+ const res = finish();
180
+ this.emit('request', info);
181
+ return res;
182
+ }
183
+ catch (e) {
184
+ return this.getErrorResponse(e);
185
+ }
186
+ };
187
+ this.handleRequestBody = async (key, info, body) => {
188
+ for (const message of body.messages) {
189
+ await this.handleMessage(key, info, message);
190
+ }
191
+ // update our keepalive timers for presence management
192
+ const firstMessage = body.messages[0];
193
+ if (firstMessage) {
194
+ this.keepalives.refresh(info.libraryId, firstMessage.replicaId);
123
195
  }
124
196
  };
125
197
  /**
@@ -128,70 +200,19 @@ export class Server extends EventEmitter {
128
200
  * must be authenticated with a token to tie it to a library.
129
201
  */
130
202
  this.handleFileRequest = async (req, res) => {
131
- const fs = this.fileStorage;
132
- if (!fs) {
133
- this.emit('error', new Error('No file storage configured, but a client attempted to upload a file.'));
134
- res.writeHead(500);
135
- res.write('File storage is not configured');
136
- res.end();
137
- return;
138
- }
139
- // FIXME: rather than trying to support Express, I should
140
- // just expose regular methods you call from whatever HTTP handler...
141
- const url = new URL(req.originalUrl || req.baseUrl || req.url || '', 'http://localhost');
142
- const id = url.pathname.split('/').pop();
143
- if (!id || id === 'files') {
144
- res.writeHead(400);
145
- res.write('File ID is required to be in the URL path as the last parameter');
146
- res.end();
147
- return;
148
- }
149
203
  try {
204
+ const info = this.authorizeRequest(req);
205
+ const url = new URL(req.originalUrl || req.baseUrl || req.url || '', 'http://localhost');
206
+ const id = url.pathname.split('/').pop();
207
+ if (!id || id === 'files') {
208
+ throw new VerdantError(VerdantError.Code.NotFound);
209
+ }
150
210
  if (req.method === 'POST') {
151
- const info = this.authorizeRequest(req);
152
- await new Promise((resolve, reject) => {
153
- const bb = busboy({ headers: req.headers });
154
- bb.on('file', (fieldName, stream, fileInfo) => {
155
- // too many 'info's....
156
- const lofiFileInfo = {
157
- id,
158
- libraryId: info.libraryId,
159
- fileName: fileInfo.filename,
160
- type: fileInfo.mimeType,
161
- };
162
- // write metadata to storage
163
- try {
164
- this.fileMetadata.put(info.libraryId, lofiFileInfo);
165
- fs.put(stream, lofiFileInfo);
166
- }
167
- catch (e) {
168
- reject(e);
169
- }
170
- });
171
- bb.on('field', (fieldName, value) => {
172
- if (fieldName === 'file') {
173
- if (this.__testMode) {
174
- // this isn't right in the real world, but in testing it's
175
- // the only way we get file data.
176
- // we create a stream from the data and pass it as if it
177
- // were a file stream
178
- const stream = new Readable();
179
- stream.push(value);
180
- stream.push(null);
181
- const fileInfo = {
182
- filename: 'test.txt',
183
- mimeType: 'text/plain',
184
- };
185
- bb.emit('file', fieldName, stream, fileInfo);
186
- }
187
- else {
188
- throw new Error('Invalid file upload');
189
- }
190
- }
191
- });
192
- req.pipe(bb);
193
- bb.on('finish', resolve);
194
- bb.on('error', reject);
211
+ await this.streamIncomingFile({
212
+ req,
213
+ info,
214
+ headers: req.headers,
215
+ id,
195
216
  });
196
217
  this.log('File upload complete');
197
218
  res.writeHead(200);
@@ -199,39 +220,147 @@ export class Server extends EventEmitter {
199
220
  res.end();
200
221
  }
201
222
  else if (req.method === 'GET') {
202
- const info = this.authorizeRequest(req);
203
- const fileInfo = this.fileMetadata.get(info.libraryId, id);
204
- if (!fileInfo) {
205
- res.writeHead(404);
206
- res.end();
207
- return;
208
- }
209
- const url = await fs.getUrl({
210
- fileName: fileInfo.name,
211
- id: fileInfo.fileId,
212
- libraryId: info.libraryId,
213
- type: fileInfo.type,
214
- });
223
+ const data = await this.getFileData(info, id);
215
224
  res.writeHead(200, {
216
225
  'Content-Type': 'application/json',
217
226
  });
218
- // we need to augment that data with the URL from the file backend.
219
- // and generally enforce the FileData interface here...
220
- const data = {
221
- id: fileInfo.fileId,
222
- url,
223
- remote: true,
224
- name: fileInfo.name,
225
- type: fileInfo.type,
226
- };
227
227
  res.write(JSON.stringify(data));
228
228
  res.end();
229
229
  }
230
230
  }
231
231
  catch (e) {
232
- return this.sendErrorResponse(e, res);
232
+ return this.writeErrorResponse(e, res);
233
233
  }
234
234
  };
235
+ /**
236
+ * Handles a "fetch" style file request. Complement to handleFileRequest,
237
+ * for servers that use Request/Response style handlers.
238
+ */
239
+ this.handleFileFetch = async (req) => {
240
+ this.log('info', 'Handling file fetch', req.url, req.method);
241
+ try {
242
+ const info = this.authorizeRequest(req);
243
+ const url = new URL(req.url, 'http://localhost');
244
+ const id = url.pathname.split('/').pop();
245
+ if (!id || id === 'files') {
246
+ throw new VerdantError(VerdantError.Code.NotFound);
247
+ }
248
+ if (req.method === 'POST') {
249
+ if (!req.body) {
250
+ throw new VerdantError(VerdantError.Code.InvalidRequest);
251
+ }
252
+ const headersAsRecord = Array.from(req.headers.entries()).reduce((acc, [key, value]) => {
253
+ acc[key] = value;
254
+ return acc;
255
+ }, {});
256
+ // this is needed because Node's webstreams don't
257
+ // like itty's polyfill streams
258
+ const intermediate = new TransformStream();
259
+ req.body.pipeTo(intermediate.writable);
260
+ await this.streamIncomingFile({
261
+ req: Readable.fromWeb(intermediate.readable),
262
+ info,
263
+ headers: headersAsRecord,
264
+ id,
265
+ });
266
+ this.log('File upload complete');
267
+ return new Response(JSON.stringify({ success: true }), {
268
+ status: 200,
269
+ headers: {
270
+ 'Content-Type': 'application/json',
271
+ },
272
+ });
273
+ }
274
+ else if (req.method === 'GET') {
275
+ const data = await this.getFileData(info, id);
276
+ return new Response(JSON.stringify(data), {
277
+ status: 200,
278
+ headers: {
279
+ 'Content-Type': 'application/json',
280
+ },
281
+ });
282
+ }
283
+ else {
284
+ throw new VerdantError(VerdantError.Code.InvalidRequest);
285
+ }
286
+ }
287
+ catch (e) {
288
+ return this.getErrorResponse(e);
289
+ }
290
+ };
291
+ this.getFileStorageOrThrow = () => {
292
+ if (!this.fileStorage) {
293
+ throw new VerdantError(VerdantError.Code.NoFileStorage);
294
+ }
295
+ return this.fileStorage;
296
+ };
297
+ this.streamIncomingFile = ({ id, req, headers, info, }) => {
298
+ const fs = this.getFileStorageOrThrow();
299
+ return new Promise((resolve, reject) => {
300
+ const bb = busboy({ headers });
301
+ bb.on('file', (fieldName, stream, fileInfo) => {
302
+ // too many 'info's....
303
+ const lofiFileInfo = {
304
+ id,
305
+ libraryId: info.libraryId,
306
+ fileName: fileInfo.filename,
307
+ type: fileInfo.mimeType,
308
+ };
309
+ // write metadata to storage
310
+ try {
311
+ this.fileMetadata.put(info.libraryId, lofiFileInfo);
312
+ fs.put(stream, lofiFileInfo);
313
+ }
314
+ catch (e) {
315
+ reject(e);
316
+ }
317
+ });
318
+ bb.on('field', (fieldName, value) => {
319
+ if (fieldName === 'file') {
320
+ if (this.__testMode) {
321
+ // this isn't right in the real world, but in testing it's
322
+ // the only way we get file data.
323
+ // we create a stream from the data and pass it as if it
324
+ // were a file stream
325
+ const stream = new Readable();
326
+ stream.push(value);
327
+ stream.push(null);
328
+ const fileInfo = {
329
+ filename: 'test.txt',
330
+ mimeType: 'text/plain',
331
+ };
332
+ bb.emit('file', fieldName, stream, fileInfo);
333
+ }
334
+ else {
335
+ throw new Error('Invalid file upload');
336
+ }
337
+ }
338
+ });
339
+ req.pipe(bb);
340
+ bb.on('finish', resolve);
341
+ bb.on('error', reject);
342
+ });
343
+ };
344
+ this.getFileData = async (info, id) => {
345
+ const fs = this.getFileStorageOrThrow();
346
+ const fileInfo = this.fileMetadata.get(info.libraryId, id);
347
+ if (!fileInfo) {
348
+ throw new VerdantError(VerdantError.Code.NotFound, undefined, `File ${id} not found`);
349
+ }
350
+ const url = await fs.getUrl({
351
+ fileName: fileInfo.name,
352
+ id: fileInfo.fileId,
353
+ libraryId: info.libraryId,
354
+ type: fileInfo.type,
355
+ });
356
+ return {
357
+ id: fileInfo.fileId,
358
+ url,
359
+ remote: true,
360
+ name: fileInfo.name,
361
+ type: fileInfo.type,
362
+ };
363
+ };
235
364
  this.broadcast = (libraryId, message, omitKeys = []) => {
236
365
  this.clientConnections.broadcast(libraryId, message, omitKeys);
237
366
  };
@@ -366,28 +495,10 @@ export class Server extends EventEmitter {
366
495
  });
367
496
  this.wss.on('connection', this.handleConnection);
368
497
  this.httpServer =
369
- options.httpServer || new HttpServer(this.internalServerHandleRequest);
370
- this.httpServer.on('upgrade', async (req, socket, head) => {
371
- try {
372
- const info = this.authorizeRequest(req);
373
- this.wss.handleUpgrade(req, socket, head, (ws) => {
374
- this.wss.emit('connection', ws, req, info);
375
- });
376
- }
377
- catch (e) {
378
- this.emit('error', e);
379
- if (e instanceof VerdantError && e.httpStatus === 401) {
380
- socket.write('HTTP/1.1 401 Unauthorized\r\n' +
381
- 'Connection: close\r\n' +
382
- 'Content-Length: 0\r\n' +
383
- '\r\n');
384
- }
385
- socket.destroy();
386
- }
387
- });
498
+ options.httpServer || new HttpServer(this.createInternalRequestHandler());
388
499
  this.keepalives.subscribe('lost', this.library.remove);
389
500
  }
390
- sendErrorResponse(e, res) {
501
+ writeErrorResponse(e, res) {
391
502
  this.emit('error', e);
392
503
  this.log('Error handling request', e);
393
504
  if (e instanceof VerdantError) {
@@ -401,5 +512,29 @@ export class Server extends EventEmitter {
401
512
  }
402
513
  res.end();
403
514
  }
515
+ // for fetch-style
516
+ getErrorResponse(e) {
517
+ this.emit('error', e);
518
+ this.log('Error handling request', e);
519
+ if (e instanceof VerdantError) {
520
+ return new Response(JSON.stringify(e.toResponse()), {
521
+ status: e.httpStatus,
522
+ headers: {
523
+ 'Content-Type': 'application/json',
524
+ },
525
+ });
526
+ }
527
+ else {
528
+ return new Response(JSON.stringify(new VerdantError(VerdantError.Code.Unexpected).toResponse()), {
529
+ status: 500,
530
+ headers: {
531
+ 'Content-Type': 'application/json',
532
+ },
533
+ });
534
+ }
535
+ }
536
+ }
537
+ function isFetch(request) {
538
+ return 'json' in request;
404
539
  }
405
540
  //# sourceMappingURL=Server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EACN,MAAM,EAEN,SAAS,EAGT,UAAU,EAGV,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAmB,MAAM,IAAI,UAAU,EAAkB,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAa,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAgB,MAAM,eAAe,CAAC;AAChE,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAsB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiD7C,MAAM,eAAe;IAArB;QACC,QAAG,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC;IACH,CAAC;CAAA;AA8BD,MAAM,OAAO,MAAO,SAAQ,YAAY;IAkBvC,YAAY,OAAsB;QACjC,KAAK,EAAE,CAAC;QAZD,sBAAiB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAClD,eAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAI1C,6BAAwB,GAAG,IAAI,OAAO,EAAqB,CAAC;QAE5D,QAAG,GAA6B,GAAG,EAAE,GAAE,CAAC,CAAC;QAEzC,eAAU,GAAG,KAAK,CAAC;QAyEnB,qBAAgB,GAAG,CAAC,GAAoB,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,GAAoB,EAAE,EAAE;YAClD,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC9B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACtB,OAAO,KAAK,CAAC;iBACb;aACD;YAED,IAAI,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE;gBAC1C,0DAA0D;gBAC1D,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvE,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACtB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;iBACpB;aACD;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACnC,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QAEM,gCAA2B,GAAG,CACrC,GAAoB,EACpB,GAAmB,EAClB,EAAE;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACpC,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;oBAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;iBACpC;qBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;oBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;iBACxC;aACD;iBAAM;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;aACV;QACF,CAAC,CAAC;QAEF,kBAAa,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;;YACnE,IAAI;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAExC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;oBAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAC/C,IAAI,CAAC,SAAS,EACd,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,CACJ,CAAC;oBAEF,yDAAyD;oBACzD,aAAa;oBACb,MAAM,IAAI,GAGT,MAAC,GAAW,CAAC,IAAI,mCACjB,CAAC,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC9C,IAAI,IAAI,GAAG,EAAE,CAAC;wBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;4BACxB,IAAI,IAAI,KAAK,CAAC;wBACf,CAAC,CAAC,CAAC;wBACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAC,CAAC;wBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4BACrB,MAAM,CAAC,CAAC,CAAC,CAAC;wBACX,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC,CAAC;oBAEL,IAAI;wBACH,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACpC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;yBAC7C;qBACD;oBAAC,OAAO,CAAC,EAAE;wBACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;wBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;wBACV,OAAO;qBACP;oBAED,sDAAsD;oBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,YAAY,EAAE;wBACjB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;qBAChE;oBAED,MAAM,EAAE,CAAC;oBAET,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBAC3B;aACD;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACtC;QACF,CAAC,CAAC;QAqBF;;;;WAIG;QACH,sBAAiB,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACvE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5B,IAAI,CAAC,EAAE,EAAE;gBACR,IAAI,CAAC,IAAI,CACR,OAAO,EACP,IAAI,KAAK,CACR,sEAAsE,CACtE,CACD,CAAC;gBACF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAC5C,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;aACP;YAED,yDAAyD;YACzD,qEAAqE;YACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAW,CAAC,WAAW,IAAK,GAAW,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EACjE,kBAAkB,CAClB,CAAC;YAEF,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAEzC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE;gBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,KAAK,CACR,iEAAiE,CACjE,CAAC;gBACF,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;aACP;YAED,IAAI;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACrC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBAE5C,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;4BAC7C,uBAAuB;4BACvB,MAAM,YAAY,GAAa;gCAC9B,EAAE;gCACF,SAAS,EAAE,IAAI,CAAC,SAAS;gCACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gCAC3B,IAAI,EAAE,QAAQ,CAAC,QAAQ;6BACvB,CAAC;4BACF,4BAA4B;4BAC5B,IAAI;gCACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gCACpD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;6BAC7B;4BAAC,OAAO,CAAC,EAAE;gCACX,MAAM,CAAC,CAAC,CAAC,CAAC;6BACV;wBACF,CAAC,CAAC,CAAC;wBACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;4BACnC,IAAI,SAAS,KAAK,MAAM,EAAE;gCACzB,IAAI,IAAI,CAAC,UAAU,EAAE;oCACpB,0DAA0D;oCAC1D,iCAAiC;oCACjC,wDAAwD;oCACxD,qBAAqB;oCACrB,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oCAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oCACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCAClB,MAAM,QAAQ,GAAG;wCAChB,QAAQ,EAAE,UAAU;wCACpB,QAAQ,EAAE,YAAY;qCACtB,CAAC;oCACF,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;iCAC7C;qCAAM;oCACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;iCACvC;6BACD;wBACF,CAAC,CAAC,CAAC;wBAEH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACb,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACzB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC7C,GAAG,CAAC,GAAG,EAAE,CAAC;iBACV;qBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;oBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBAC3D,IAAI,CAAC,QAAQ,EAAE;wBACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;wBACV,OAAO;qBACP;oBAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC;wBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI;wBACvB,EAAE,EAAE,QAAQ,CAAC,MAAM;wBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACnB,CAAC,CAAC;oBACH,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;wBAClB,cAAc,EAAE,kBAAkB;qBAClC,CAAC,CAAC;oBACH,mEAAmE;oBACnE,uDAAuD;oBACvD,MAAM,IAAI,GAAa;wBACtB,EAAE,EAAE,QAAQ,CAAC,MAAM;wBACnB,GAAG;wBACH,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACnB,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,GAAG,CAAC,GAAG,EAAE,CAAC;iBACV;aACD;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACtC;QACF,CAAC,CAAC;QAEF,cAAS,GAAG,CACX,SAAiB,EACjB,OAAsB,EACtB,WAAqB,EAAE,EACtB,EAAE;YACH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,SAAI,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAE,OAAsB,EAAE,EAAE;YACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC,CAAC;QAEM,kBAAa,GAAG,CACvB,SAAiB,EACjB,IAAe,EACf,OAAsB,EACrB,EAAE;YACH,IAAI,CAAC,GAAG,CACP,uBAAuB,EACvB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACvB,CAAC;YACF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAC1B,EAAa,EACb,GAAoB,EACpB,IAAe,EACd,EAAE;YACH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;YAEzB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAEhE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAkB,CAAC;gBAE7D,IAAI,IAAI,CAAC,SAAS,EAAE;oBACnB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxD;gBAED,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,SAAS,EAAE;oBACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC;oBACzD,OAAO;iBACP;gBAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAE/C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,GAAG,MAAwC,EAAE,EAAE;YACxD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,UAAK,GAAG,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC7B,UAAU,CAAC,GAAG,EAAE;wBACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;wBAC5C,OAAO,EAAE,CAAC;oBACX,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;oBACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC1B,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAChC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC;gBACF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC7B,UAAU,CAAC,GAAG,EAAE;wBACf,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;wBAC9C,OAAO,EAAE,CAAC;oBACX,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;wBACnB,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC;aACF,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF;;;;;;;WAOG;QACH,iBAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;YACpC,yBAAyB;YACzB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF;;WAEG;QACH,uBAAkB,GAAG,CAAC,SAAiB,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF;;;;WAIG;QACH,mBAAc,GAAG,CAAC,SAAiB,EAAE,EAAE;YACtC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF;;;;WAIG;QACH,cAAS,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF;;;;WAIG;QACH,wBAAmB,GAAG,CACrB,SAAiB,EACjB,UAAkB,EAClB,UAAkB,EACjB,EAAE;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CACtC,SAAS,EACT,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CACjC,CAAC;QACH,CAAC,CAAC;QA/cD,IAAI,CAAC,UAAU;YACd,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;QAElE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAEnC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,MAAM,EAAE,OAAO,CAAC,WAAW;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAEvC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC;YAChC,EAAE;YACF,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,iBAAiB,CAC9B,OAAO,CAAC,QAAQ,IAAI,IAAI,eAAe,EAAE,CACzC;YACD,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CACrB,SAAS,EACT,CAAC,EAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;gBAA7C,EAAE,KAAK,OAAW,EAAN,IAAI,cAAhB,SAAkB,CAAF;YAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;YAC9B,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU;YACd,OAAO,CAAC,UAAU,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAExE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACzD,IAAI;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;oBAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACH;YAAC,OAAO,CAAC,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;oBACtD,MAAM,CAAC,KAAK,CACX,+BAA+B;wBAC9B,uBAAuB;wBACvB,uBAAuB;wBACvB,MAAM,CACP,CAAC;iBACF;gBACD,MAAM,CAAC,OAAO,EAAE,CAAC;aACjB;QACF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IA0GO,iBAAiB,CAAC,CAAU,EAAE,GAAmB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,YAAY,YAAY,EAAE;YAC9B,+BAA+B;YAC/B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;SAC1C;aAAM;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,KAAK,CACR,IAAI,CAAC,SAAS,CACb,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAC3D,CACD,CAAC;SACF;QACD,GAAG,CAAC,GAAG,EAAE,CAAC;IACX,CAAC;CAmRD"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}