mediasoup-client 3.6.90 → 3.6.91
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/lib/Consumer.d.ts +115 -0
- package/lib/Consumer.d.ts.map +1 -0
- package/lib/Consumer.js +190 -0
- package/lib/DataConsumer.d.ts +93 -0
- package/lib/DataConsumer.d.ts.map +1 -0
- package/lib/DataConsumer.js +162 -0
- package/lib/DataProducer.d.ts +97 -0
- package/lib/DataProducer.d.ts.map +1 -0
- package/lib/DataProducer.js +180 -0
- package/lib/Device.d.ts +92 -0
- package/lib/Device.d.ts.map +1 -0
- package/lib/Device.js +463 -0
- package/lib/EnhancedEventEmitter.d.ts +24 -0
- package/lib/EnhancedEventEmitter.d.ts.map +1 -0
- package/lib/EnhancedEventEmitter.js +70 -0
- package/lib/Logger.d.ts +11 -0
- package/lib/Logger.d.ts.map +1 -0
- package/lib/Logger.js +37 -0
- package/lib/Producer.d.ts +169 -0
- package/lib/Producer.d.ts.map +1 -0
- package/lib/Producer.js +287 -0
- package/lib/RtpParameters.d.ts +306 -0
- package/lib/RtpParameters.d.ts.map +1 -0
- package/lib/RtpParameters.js +6 -0
- package/lib/SctpParameters.d.ts +68 -0
- package/lib/SctpParameters.d.ts.map +1 -0
- package/lib/SctpParameters.js +2 -0
- package/lib/Transport.d.ts +243 -0
- package/lib/Transport.d.ts.map +1 -0
- package/lib/Transport.js +824 -0
- package/lib/errors.d.ts +13 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +39 -0
- package/lib/handlers/Chrome111.d.ts +49 -0
- package/lib/handlers/Chrome111.d.ts.map +1 -0
- package/lib/handlers/Chrome111.js +654 -0
- package/lib/handlers/Chrome55.d.ts +51 -0
- package/lib/handlers/Chrome55.d.ts.map +1 -0
- package/lib/handlers/Chrome55.js +538 -0
- package/lib/handlers/Chrome67.d.ts +51 -0
- package/lib/handlers/Chrome67.d.ts.map +1 -0
- package/lib/handlers/Chrome67.js +594 -0
- package/lib/handlers/Chrome70.d.ts +49 -0
- package/lib/handlers/Chrome70.d.ts.map +1 -0
- package/lib/handlers/Chrome70.js +623 -0
- package/lib/handlers/Chrome74.d.ts +49 -0
- package/lib/handlers/Chrome74.d.ts.map +1 -0
- package/lib/handlers/Chrome74.js +671 -0
- package/lib/handlers/Edge11.d.ts +55 -0
- package/lib/handlers/Edge11.d.ts.map +1 -0
- package/lib/handlers/Edge11.js +447 -0
- package/lib/handlers/FakeHandler.d.ts +49 -0
- package/lib/handlers/FakeHandler.d.ts.map +1 -0
- package/lib/handlers/FakeHandler.js +276 -0
- package/lib/handlers/Firefox60.d.ts +48 -0
- package/lib/handlers/Firefox60.d.ts.map +1 -0
- package/lib/handlers/Firefox60.js +681 -0
- package/lib/handlers/HandlerInterface.d.ts +97 -0
- package/lib/handlers/HandlerInterface.d.ts.map +1 -0
- package/lib/handlers/HandlerInterface.js +10 -0
- package/lib/handlers/ReactNative.d.ts +51 -0
- package/lib/handlers/ReactNative.d.ts.map +1 -0
- package/lib/handlers/ReactNative.js +554 -0
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +49 -0
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -0
- package/lib/handlers/ReactNativeUnifiedPlan.js +690 -0
- package/lib/handlers/Safari11.d.ts +51 -0
- package/lib/handlers/Safari11.d.ts.map +1 -0
- package/lib/handlers/Safari11.js +588 -0
- package/lib/handlers/Safari12.d.ts +49 -0
- package/lib/handlers/Safari12.d.ts.map +1 -0
- package/lib/handlers/Safari12.js +644 -0
- package/lib/handlers/ortc/edgeUtils.d.ts +11 -0
- package/lib/handlers/ortc/edgeUtils.d.ts.map +1 -0
- package/lib/handlers/ortc/edgeUtils.js +86 -0
- package/lib/handlers/ortc/utils.d.ts +6 -0
- package/lib/handlers/ortc/utils.d.ts.map +1 -0
- package/lib/handlers/ortc/utils.js +19 -0
- package/lib/handlers/sdp/MediaSection.d.ts +68 -0
- package/lib/handlers/sdp/MediaSection.d.ts.map +1 -0
- package/lib/handlers/sdp/MediaSection.js +588 -0
- package/lib/handlers/sdp/RemoteSdp.d.ts +75 -0
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -0
- package/lib/handlers/sdp/RemoteSdp.js +303 -0
- package/lib/handlers/sdp/commonUtils.d.ts +24 -0
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/commonUtils.js +224 -0
- package/lib/handlers/sdp/plainRtpUtils.d.ts +14 -0
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/plainRtpUtils.js +33 -0
- package/lib/handlers/sdp/planBUtils.d.ts +14 -0
- package/lib/handlers/sdp/planBUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/planBUtils.js +155 -0
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +12 -0
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/unifiedPlanUtils.js +131 -0
- package/lib/index.d.ts +14 -1435
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +43 -11884
- package/lib/ortc.d.ts +123 -0
- package/lib/ortc.d.ts.map +1 -0
- package/lib/ortc.js +943 -0
- package/lib/scalabilityModes.d.ts +6 -0
- package/lib/scalabilityModes.d.ts.map +1 -0
- package/lib/scalabilityModes.js +20 -0
- package/lib/tests/fakeParameters.d.ts +20 -0
- package/lib/tests/fakeParameters.d.ts.map +1 -0
- package/lib/tests/fakeParameters.js +659 -0
- package/lib/tests/test.d.ts +6 -0
- package/lib/tests/test.d.ts.map +1 -0
- package/lib/tests/test.js +1287 -0
- package/lib/tests/uaTestCases.d.ts +9 -0
- package/lib/tests/uaTestCases.d.ts.map +1 -0
- package/lib/tests/uaTestCases.js +85 -0
- package/lib/types.d.ts +15 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +26 -0
- package/lib/utils.d.ts +9 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +20 -0
- package/npm-scripts.mjs +2 -3
- package/package.json +1 -6
- package/lib/index.js.map +0 -1
- package/lib/index.mjs +0 -11860
- package/lib/index.mjs.map +0 -1
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataProducer = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
const EnhancedEventEmitter_1 = require("./EnhancedEventEmitter");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
const logger = new Logger_1.Logger('DataProducer');
|
|
8
|
+
class DataProducer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
9
|
+
constructor({ id, dataChannel, sctpStreamParameters, appData }) {
|
|
10
|
+
super();
|
|
11
|
+
// Closed flag.
|
|
12
|
+
this._closed = false;
|
|
13
|
+
// Observer instance.
|
|
14
|
+
this._observer = new EnhancedEventEmitter_1.EnhancedEventEmitter();
|
|
15
|
+
logger.debug('constructor()');
|
|
16
|
+
this._id = id;
|
|
17
|
+
this._dataChannel = dataChannel;
|
|
18
|
+
this._sctpStreamParameters = sctpStreamParameters;
|
|
19
|
+
this._appData = appData || {};
|
|
20
|
+
this.handleDataChannel();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DataProducer id.
|
|
24
|
+
*/
|
|
25
|
+
get id() {
|
|
26
|
+
return this._id;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Whether the DataProducer is closed.
|
|
30
|
+
*/
|
|
31
|
+
get closed() {
|
|
32
|
+
return this._closed;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* SCTP stream parameters.
|
|
36
|
+
*/
|
|
37
|
+
get sctpStreamParameters() {
|
|
38
|
+
return this._sctpStreamParameters;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* DataChannel readyState.
|
|
42
|
+
*/
|
|
43
|
+
get readyState() {
|
|
44
|
+
return this._dataChannel.readyState;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* DataChannel label.
|
|
48
|
+
*/
|
|
49
|
+
get label() {
|
|
50
|
+
return this._dataChannel.label;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* DataChannel protocol.
|
|
54
|
+
*/
|
|
55
|
+
get protocol() {
|
|
56
|
+
return this._dataChannel.protocol;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* DataChannel bufferedAmount.
|
|
60
|
+
*/
|
|
61
|
+
get bufferedAmount() {
|
|
62
|
+
return this._dataChannel.bufferedAmount;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* DataChannel bufferedAmountLowThreshold.
|
|
66
|
+
*/
|
|
67
|
+
get bufferedAmountLowThreshold() {
|
|
68
|
+
return this._dataChannel.bufferedAmountLowThreshold;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set DataChannel bufferedAmountLowThreshold.
|
|
72
|
+
*/
|
|
73
|
+
set bufferedAmountLowThreshold(bufferedAmountLowThreshold) {
|
|
74
|
+
this._dataChannel.bufferedAmountLowThreshold = bufferedAmountLowThreshold;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* App custom data.
|
|
78
|
+
*/
|
|
79
|
+
get appData() {
|
|
80
|
+
return this._appData;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* App custom data setter.
|
|
84
|
+
*/
|
|
85
|
+
set appData(appData) {
|
|
86
|
+
this._appData = appData;
|
|
87
|
+
}
|
|
88
|
+
get observer() {
|
|
89
|
+
return this._observer;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Closes the DataProducer.
|
|
93
|
+
*/
|
|
94
|
+
close() {
|
|
95
|
+
if (this._closed) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
logger.debug('close()');
|
|
99
|
+
this._closed = true;
|
|
100
|
+
this._dataChannel.close();
|
|
101
|
+
this.emit('@close');
|
|
102
|
+
// Emit observer event.
|
|
103
|
+
this._observer.safeEmit('close');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Transport was closed.
|
|
107
|
+
*/
|
|
108
|
+
transportClosed() {
|
|
109
|
+
if (this._closed) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
logger.debug('transportClosed()');
|
|
113
|
+
this._closed = true;
|
|
114
|
+
this._dataChannel.close();
|
|
115
|
+
this.safeEmit('transportclose');
|
|
116
|
+
// Emit observer event.
|
|
117
|
+
this._observer.safeEmit('close');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Send a message.
|
|
121
|
+
*
|
|
122
|
+
* @param {String|Blob|ArrayBuffer|ArrayBufferView} data.
|
|
123
|
+
*/
|
|
124
|
+
send(data) {
|
|
125
|
+
logger.debug('send()');
|
|
126
|
+
if (this._closed) {
|
|
127
|
+
throw new errors_1.InvalidStateError('closed');
|
|
128
|
+
}
|
|
129
|
+
this._dataChannel.send(data);
|
|
130
|
+
}
|
|
131
|
+
handleDataChannel() {
|
|
132
|
+
this._dataChannel.addEventListener('open', () => {
|
|
133
|
+
if (this._closed) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
logger.debug('DataChannel "open" event');
|
|
137
|
+
this.safeEmit('open');
|
|
138
|
+
});
|
|
139
|
+
this._dataChannel.addEventListener('error', (event) => {
|
|
140
|
+
if (this._closed) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
let { error } = event;
|
|
144
|
+
if (!error) {
|
|
145
|
+
error = new Error('unknown DataChannel error');
|
|
146
|
+
}
|
|
147
|
+
if (error.errorDetail === 'sctp-failure') {
|
|
148
|
+
logger.error('DataChannel SCTP error [sctpCauseCode:%s]: %s', error.sctpCauseCode, error.message);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
logger.error('DataChannel "error" event: %o', error);
|
|
152
|
+
}
|
|
153
|
+
this.safeEmit('error', error);
|
|
154
|
+
});
|
|
155
|
+
this._dataChannel.addEventListener('close', () => {
|
|
156
|
+
if (this._closed) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
logger.warn('DataChannel "close" event');
|
|
160
|
+
this._closed = true;
|
|
161
|
+
this.emit('@close');
|
|
162
|
+
this.safeEmit('close');
|
|
163
|
+
// Emit observer event.
|
|
164
|
+
this._observer.safeEmit('close');
|
|
165
|
+
});
|
|
166
|
+
this._dataChannel.addEventListener('message', () => {
|
|
167
|
+
if (this._closed) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
logger.warn('DataChannel "message" event in a DataProducer, message discarded');
|
|
171
|
+
});
|
|
172
|
+
this._dataChannel.addEventListener('bufferedamountlow', () => {
|
|
173
|
+
if (this._closed) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this.safeEmit('bufferedamountlow');
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.DataProducer = DataProducer;
|
package/lib/Device.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { EnhancedEventEmitter } from './EnhancedEventEmitter';
|
|
2
|
+
import { Transport, TransportOptions } from './Transport';
|
|
3
|
+
import { HandlerFactory } from './handlers/HandlerInterface';
|
|
4
|
+
import { RtpCapabilities, MediaKind } from './RtpParameters';
|
|
5
|
+
import { SctpCapabilities } from './SctpParameters';
|
|
6
|
+
import { AppData } from './types';
|
|
7
|
+
export type BuiltinHandlerName = 'Chrome111' | 'Chrome74' | 'Chrome70' | 'Chrome67' | 'Chrome55' | 'Firefox60' | 'Safari12' | 'Safari11' | 'Edge11' | 'ReactNativeUnifiedPlan' | 'ReactNative';
|
|
8
|
+
export type DeviceOptions = {
|
|
9
|
+
/**
|
|
10
|
+
* The name of one of the builtin handlers.
|
|
11
|
+
*/
|
|
12
|
+
handlerName?: BuiltinHandlerName;
|
|
13
|
+
/**
|
|
14
|
+
* Custom handler factory.
|
|
15
|
+
*/
|
|
16
|
+
handlerFactory?: HandlerFactory;
|
|
17
|
+
/**
|
|
18
|
+
* DEPRECATED!
|
|
19
|
+
* The name of one of the builtin handlers.
|
|
20
|
+
*/
|
|
21
|
+
Handler?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function detectDevice(): BuiltinHandlerName | undefined;
|
|
24
|
+
export type DeviceObserverEvents = {
|
|
25
|
+
newtransport: [Transport];
|
|
26
|
+
};
|
|
27
|
+
export declare class Device {
|
|
28
|
+
private readonly _handlerFactory;
|
|
29
|
+
private readonly _handlerName;
|
|
30
|
+
private _loaded;
|
|
31
|
+
private _extendedRtpCapabilities?;
|
|
32
|
+
private _recvRtpCapabilities?;
|
|
33
|
+
private readonly _canProduceByKind;
|
|
34
|
+
private _sctpCapabilities?;
|
|
35
|
+
protected readonly _observer: EnhancedEventEmitter<DeviceObserverEvents>;
|
|
36
|
+
/**
|
|
37
|
+
* Create a new Device to connect to mediasoup server.
|
|
38
|
+
*
|
|
39
|
+
* @throws {UnsupportedError} if device is not supported.
|
|
40
|
+
*/
|
|
41
|
+
constructor({ handlerName, handlerFactory, Handler }?: DeviceOptions);
|
|
42
|
+
/**
|
|
43
|
+
* The RTC handler name.
|
|
44
|
+
*/
|
|
45
|
+
get handlerName(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the Device is loaded.
|
|
48
|
+
*/
|
|
49
|
+
get loaded(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* RTP capabilities of the Device for receiving media.
|
|
52
|
+
*
|
|
53
|
+
* @throws {InvalidStateError} if not loaded.
|
|
54
|
+
*/
|
|
55
|
+
get rtpCapabilities(): RtpCapabilities;
|
|
56
|
+
/**
|
|
57
|
+
* SCTP capabilities of the Device.
|
|
58
|
+
*
|
|
59
|
+
* @throws {InvalidStateError} if not loaded.
|
|
60
|
+
*/
|
|
61
|
+
get sctpCapabilities(): SctpCapabilities;
|
|
62
|
+
get observer(): EnhancedEventEmitter;
|
|
63
|
+
/**
|
|
64
|
+
* Initialize the Device.
|
|
65
|
+
*/
|
|
66
|
+
load({ routerRtpCapabilities }: {
|
|
67
|
+
routerRtpCapabilities: RtpCapabilities;
|
|
68
|
+
}): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Whether we can produce audio/video.
|
|
71
|
+
*
|
|
72
|
+
* @throws {InvalidStateError} if not loaded.
|
|
73
|
+
* @throws {TypeError} if wrong arguments.
|
|
74
|
+
*/
|
|
75
|
+
canProduce(kind: MediaKind): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Creates a Transport for sending media.
|
|
78
|
+
*
|
|
79
|
+
* @throws {InvalidStateError} if not loaded.
|
|
80
|
+
* @throws {TypeError} if wrong arguments.
|
|
81
|
+
*/
|
|
82
|
+
createSendTransport<TransportAppData extends AppData = AppData>({ id, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, appData }: TransportOptions<TransportAppData>): Transport<TransportAppData>;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a Transport for receiving media.
|
|
85
|
+
*
|
|
86
|
+
* @throws {InvalidStateError} if not loaded.
|
|
87
|
+
* @throws {TypeError} if wrong arguments.
|
|
88
|
+
*/
|
|
89
|
+
createRecvTransport<TransportAppData extends AppData = AppData>({ id, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, appData }: TransportOptions<TransportAppData>): Transport<TransportAppData>;
|
|
90
|
+
private createTransport;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=Device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAoB,MAAM,6BAA6B,CAAC;AAY/E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,kBAAkB,GAC3B,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,wBAAwB,GACxB,aAAa,CAAC;AAEjB,MAAM,MAAM,aAAa,GACzB;IACC;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAiM7D;AAED,MAAM,MAAM,oBAAoB,GAChC;IACC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;CAC1B,CAAC;AAEF,qBAAa,MAAM;IAGlB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,wBAAwB,CAAC,CAAM;IAEvC,OAAO,CAAC,oBAAoB,CAAC,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAE7C,SAAS,CAAC,QAAQ,CAAC,SAAS,6CAAoD;IAEhF;;;;OAIG;gBACS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAE,aAAkB;IA2GxE;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;;;OAIG;IACH,IAAI,eAAe,IAAI,eAAe,CAQrC;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,gBAAgB,CAQvC;IAED,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACG,IAAI,CACT,EAAE,qBAAqB,EAAE,EACzB;QAAE,qBAAqB,EAAE,eAAe,CAAA;KAAE,GACxC,OAAO,CAAC,IAAI,CAAC;IAgFhB;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAcpC;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,SAAS,OAAO,GAAG,OAAO,EAC7D,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GACnC,SAAS,CAAC,gBAAgB,CAAC;IAoB9B;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,SAAS,OAAO,GAAG,OAAO,EAC7D,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GACnC,SAAS,CAAC,gBAAgB,CAAC;IAoB9B,OAAO,CAAC,eAAe;CAwEvB"}
|