@livedigital/client 3.48.0 → 3.49.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/dist/constants/encodings.d.ts +3 -3
- package/dist/constants/encodings.ts +3 -3
- package/dist/engine/handlers/ChannelAudioObserverEventHandler.d.ts +3 -1
- package/dist/engine/handlers/ChannelAudioObserverMissingProducerRestorer.d.ts +10 -0
- package/dist/engine/handlers/MediaEventHandler.d.ts +0 -1
- package/dist/engine/index.d.ts +7 -4
- package/dist/engine/network/DatachannelHeartbeater.d.ts +2 -2
- package/dist/engine/network/NetworkTransportPolicyManager.d.ts +22 -0
- package/dist/engine/network/index.d.ts +10 -8
- package/dist/index.d.ts +2 -0
- package/dist/index.es.js +2 -2
- package/dist/index.js +2 -2
- package/dist/inversify.tokens.d.ts +3 -1
- package/dist/types/network.d.ts +6 -6
- package/package.json +2 -3
- package/src/ClientMetaProvider.ts +0 -41
- package/src/EnhancedEventEmitter.ts +0 -75
- package/src/config/ConfigService.ts +0 -66
- package/src/constants/common.ts +0 -85
- package/src/constants/encodings.ts +0 -26
- package/src/constants/events.ts +0 -126
- package/src/constants/mutex.ts +0 -6
- package/src/constants/stats.ts +0 -1
- package/src/constants/videoConstrains.ts +0 -21
- package/src/engine/CallState.ts +0 -19
- package/src/engine/ChannelStateSynchronizer/ChannelStateSynchronizer.ts +0 -448
- package/src/engine/ChannelStateSynchronizer/types.ts +0 -22
- package/src/engine/EventsQueue.ts +0 -255
- package/src/engine/IntegrationsService.ts +0 -163
- package/src/engine/LocalMutex.ts +0 -45
- package/src/engine/Logger.ts +0 -234
- package/src/engine/MyPeer.ts +0 -25
- package/src/engine/Peer.ts +0 -602
- package/src/engine/PeerConsumer.ts +0 -276
- package/src/engine/PeerProducer.ts +0 -50
- package/src/engine/Peers.ts +0 -150
- package/src/engine/PeersStorage.ts +0 -45
- package/src/engine/RemotePeerTracks.ts +0 -73
- package/src/engine/WIDHandler.ts +0 -166
- package/src/engine/WebRTCStats/ConnectionStatsManager.ts +0 -31
- package/src/engine/WebRTCStats/InboundTrackStatsManager.ts +0 -51
- package/src/engine/WebRTCStats/OutboudTrackStatsManager.ts +0 -51
- package/src/engine/WebRTCStats/StatsHandler.ts +0 -80
- package/src/engine/WebRTCStats/TransportsStatsProvider.ts +0 -123
- package/src/engine/WebRTCStats/types.ts +0 -20
- package/src/engine/analyticsApiClient/LogApi.ts +0 -24
- package/src/engine/analyticsApiClient/MetricsApi.ts +0 -30
- package/src/engine/analyticsApiClient/helper.ts +0 -88
- package/src/engine/analyticsApiClient/index.ts +0 -42
- package/src/engine/analyticsApiClient/types.ts +0 -33
- package/src/engine/handlers/ChannelAudioObserverEventHandler.ts +0 -177
- package/src/engine/handlers/ChannelEventHandler.ts +0 -268
- package/src/engine/handlers/ChannelStateSyncEventHandler/ChannelStateConsistencyCheckResult.ts +0 -31
- package/src/engine/handlers/ChannelStateSyncEventHandler/ChannelStateConsistencyChecker.ts +0 -146
- package/src/engine/handlers/ChannelStateSyncEventHandler/consts.ts +0 -7
- package/src/engine/handlers/ChannelStateSyncEventHandler/index.ts +0 -342
- package/src/engine/handlers/ChannelStateSyncEventHandler/types.ts +0 -21
- package/src/engine/handlers/MediaEventHandler.ts +0 -273
- package/src/engine/index.ts +0 -793
- package/src/engine/media/index.ts +0 -574
- package/src/engine/media/producer/PendingClosureProducerStorage.ts +0 -37
- package/src/engine/media/producer/ProducerCloseManager.ts +0 -115
- package/src/engine/media/streamEffects/ProcessorsCache.ts +0 -41
- package/src/engine/media/streamEffects/audio/AudioTrackProcessor.ts +0 -7
- package/src/engine/media/streamEffects/audio/asdk/ASDKTrackProcessor.ts +0 -275
- package/src/engine/media/streamEffects/audio/asdk/atsrb.d.ts +0 -36
- package/src/engine/media/streamEffects/audio/asdk/errorBus.d.ts +0 -47
- package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionAudioWorkletNode.ts +0 -35
- package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionNodeProvider.ts +0 -44
- package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionScriptProcessorNode.ts +0 -69
- package/src/engine/media/streamEffects/audio/noiseSuppression/RNNoiseTrackProcessor.ts +0 -134
- package/src/engine/media/streamEffects/audio/noiseSuppression/WasmModuleCompiler.ts +0 -9
- package/src/engine/media/streamEffects/video/esdk/TrackProcessor.ts +0 -386
- package/src/engine/media/streamEffects/video/esdk/components/component.d.ts +0 -35
- package/src/engine/media/streamEffects/video/esdk/components/countdown/countdown.d.ts +0 -27
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/collection/doubleSlideRect.d.ts +0 -33
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/collection/horizontalMirror.d.ts +0 -29
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/collection/leftTextbox.d.ts +0 -31
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/collection/slideBold.d.ts +0 -41
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/collection/twoSideRects/animatedBox.d.ts +0 -59
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/collection/twoSideRects/twoSlideRects.d.ts +0 -27
- package/src/engine/media/streamEffects/video/esdk/components/lower-third/lowerThird.d.ts +0 -83
- package/src/engine/media/streamEffects/video/esdk/components/overlay-screen/overlayScreen.d.ts +0 -40
- package/src/engine/media/streamEffects/video/esdk/components/overlay-screen/overlaySprite.d.ts +0 -10
- package/src/engine/media/streamEffects/video/esdk/components/stickers/stickerSprite.d.ts +0 -51
- package/src/engine/media/streamEffects/video/esdk/components/stickers/stickers.d.ts +0 -54
- package/src/engine/media/streamEffects/video/esdk/components/utils/positionHelper.d.ts +0 -14
- package/src/engine/media/streamEffects/video/esdk/components/waterMark/waterMark.d.ts +0 -20
- package/src/engine/media/streamEffects/video/esdk/tsvb.d.ts +0 -187
- package/src/engine/media/streamEffects/video/esdk/utils/errorBus.d.ts +0 -42
- package/src/engine/media/tracks/DefaultAudioTrack.ts +0 -178
- package/src/engine/media/tracks/DefaultBaseTrack.ts +0 -592
- package/src/engine/media/tracks/DefaultVideoTrack.ts +0 -301
- package/src/engine/media/tracks/MediaStreamTrackManager.ts +0 -50
- package/src/engine/media/tracks/PeerTrack.ts +0 -558
- package/src/engine/network/DataChannelsManager.ts +0 -164
- package/src/engine/network/DatachannelHeartbeater.ts +0 -122
- package/src/engine/network/SignalingHeartbeater.ts +0 -55
- package/src/engine/network/index.ts +0 -961
- package/src/engine/signalingApiClient/SignalingApiClient.ts +0 -95
- package/src/engine/signalingApiClient/api.ts +0 -2289
- package/src/engine/system/index.ts +0 -221
- package/src/errors/AlreadyConnectedError.ts +0 -11
- package/src/errors/AlreadyCreatedError.ts +0 -11
- package/src/errors/ForbiddenError.ts +0 -11
- package/src/errors/InvalidPayloadError.ts +0 -11
- package/src/errors/InvalidRequestError.ts +0 -11
- package/src/errors/LivedigitalSDKError.ts +0 -15
- package/src/errors/NeedJoinFirstError.ts +0 -11
- package/src/errors/NotFoundError.ts +0 -11
- package/src/errors/OperationError.ts +0 -47
- package/src/errors/RequestError.ts +0 -11
- package/src/errors/TimeoutError.ts +0 -11
- package/src/errors/TooManyRequestsError.ts +0 -11
- package/src/errors/UnauthorizedError.ts +0 -11
- package/src/errors/UnsupportedError.ts +0 -15
- package/src/errors/signalingApiErrorMapper.ts +0 -143
- package/src/helpers/appDataValidator.ts +0 -21
- package/src/helpers/browser.ts +0 -37
- package/src/helpers/channelMessageConverter.ts +0 -124
- package/src/helpers/common.ts +0 -96
- package/src/helpers/datetime.ts +0 -11
- package/src/helpers/errors.ts +0 -25
- package/src/helpers/filterStatsCodecs.ts +0 -3
- package/src/helpers/loader.ts +0 -59
- package/src/helpers/media.ts +0 -57
- package/src/helpers/peer.ts +0 -19
- package/src/helpers/randomString.ts +0 -18
- package/src/helpers/retry.ts +0 -74
- package/src/index.ts +0 -171
- package/src/inversify.config.ts +0 -333
- package/src/inversify.factories.ts +0 -191
- package/src/inversify.tokens.ts +0 -42
- package/src/proto/.gitkeep +0 -0
- package/src/proto/generated/channel/channel_activity_confirmation_time.ts +0 -110
- package/src/proto/generated/channel/channel_management_event.ts +0 -213
- package/src/proto/generated/channel/channel_produce_permissions.ts +0 -171
- package/src/proto/generated/channel/channel_state.ts +0 -94
- package/src/proto/generated/channel/channel_state_short.ts +0 -282
- package/src/proto/generated/channel_message/channel_event.ts +0 -401
- package/src/proto/generated/channel_message/channel_message.ts +0 -139
- package/src/proto/generated/channel_message/media_event.ts +0 -290
- package/src/proto/generated/consumer/consumer.ts +0 -167
- package/src/proto/generated/google/protobuf/struct.ts +0 -588
- package/src/proto/generated/google/protobuf/timestamp.ts +0 -229
- package/src/proto/generated/peer/peer.ts +0 -430
- package/src/proto/generated/peer/peer_group.ts +0 -48
- package/src/proto/generated/peer/peer_role.ts +0 -48
- package/src/proto/generated/producer/producer.ts +0 -204
- package/src/proto/generated/producer/producer_kind.ts +0 -48
- package/src/proto/generated/producer/producer_label.ts +0 -78
- package/src/proto/generated/producer/producer_spatial_layer_request.ts +0 -116
- package/src/proto/generated/transport/transport_connection_timeout.ts +0 -156
- package/src/proto/generated/transport/transport_connection_timeout_reason.ts +0 -48
- package/src/proto/generated/transport/transport_direction.ts +0 -48
- package/src/types/channelAudioObserver.ts +0 -34
- package/src/types/channelStateSyncronizer.ts +0 -22
- package/src/types/client.ts +0 -27
- package/src/types/common.ts +0 -399
- package/src/types/container.ts +0 -31
- package/src/types/engine.ts +0 -97
- package/src/types/media.ts +0 -146
- package/src/types/mediasoup.ts +0 -10
- package/src/types/network.ts +0 -10
- package/src/types/streamEffects.ts +0 -23
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
-
// versions:
|
|
3
|
-
// protoc-gen-ts_proto v2.7.5
|
|
4
|
-
// protoc v4.23.4
|
|
5
|
-
// source: channel_message/channel_message.proto
|
|
6
|
-
|
|
7
|
-
/* eslint-disable */
|
|
8
|
-
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
9
|
-
import { ChannelEvent } from "./channel_event";
|
|
10
|
-
import { MediaEvent } from "./media_event";
|
|
11
|
-
|
|
12
|
-
export const protobufPackage = "channel_message";
|
|
13
|
-
|
|
14
|
-
export interface ChannelMessage {
|
|
15
|
-
id: number;
|
|
16
|
-
channelEvent?: ChannelEvent | undefined;
|
|
17
|
-
mediaEvent?: MediaEvent | undefined;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function createBaseChannelMessage(): ChannelMessage {
|
|
21
|
-
return { id: 0, channelEvent: undefined, mediaEvent: undefined };
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const ChannelMessage: MessageFns<ChannelMessage> = {
|
|
25
|
-
encode(message: ChannelMessage, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
26
|
-
if (message.id !== 0) {
|
|
27
|
-
writer.uint32(8).int32(message.id);
|
|
28
|
-
}
|
|
29
|
-
if (message.channelEvent !== undefined) {
|
|
30
|
-
ChannelEvent.encode(message.channelEvent, writer.uint32(18).fork()).join();
|
|
31
|
-
}
|
|
32
|
-
if (message.mediaEvent !== undefined) {
|
|
33
|
-
MediaEvent.encode(message.mediaEvent, writer.uint32(26).fork()).join();
|
|
34
|
-
}
|
|
35
|
-
return writer;
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
decode(input: BinaryReader | Uint8Array, length?: number): ChannelMessage {
|
|
39
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
40
|
-
const end = length === undefined ? reader.len : reader.pos + length;
|
|
41
|
-
const message = createBaseChannelMessage();
|
|
42
|
-
while (reader.pos < end) {
|
|
43
|
-
const tag = reader.uint32();
|
|
44
|
-
switch (tag >>> 3) {
|
|
45
|
-
case 1: {
|
|
46
|
-
if (tag !== 8) {
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
message.id = reader.int32();
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
case 2: {
|
|
54
|
-
if (tag !== 18) {
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
message.channelEvent = ChannelEvent.decode(reader, reader.uint32());
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
case 3: {
|
|
62
|
-
if (tag !== 26) {
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
message.mediaEvent = MediaEvent.decode(reader, reader.uint32());
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
reader.skip(tag & 7);
|
|
74
|
-
}
|
|
75
|
-
return message;
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
fromJSON(object: any): ChannelMessage {
|
|
79
|
-
return {
|
|
80
|
-
id: isSet(object.id) ? globalThis.Number(object.id) : 0,
|
|
81
|
-
channelEvent: isSet(object.channelEvent) ? ChannelEvent.fromJSON(object.channelEvent) : undefined,
|
|
82
|
-
mediaEvent: isSet(object.mediaEvent) ? MediaEvent.fromJSON(object.mediaEvent) : undefined,
|
|
83
|
-
};
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
toJSON(message: ChannelMessage): unknown {
|
|
87
|
-
const obj: any = {};
|
|
88
|
-
if (message.id !== 0) {
|
|
89
|
-
obj.id = Math.round(message.id);
|
|
90
|
-
}
|
|
91
|
-
if (message.channelEvent !== undefined) {
|
|
92
|
-
obj.channelEvent = ChannelEvent.toJSON(message.channelEvent);
|
|
93
|
-
}
|
|
94
|
-
if (message.mediaEvent !== undefined) {
|
|
95
|
-
obj.mediaEvent = MediaEvent.toJSON(message.mediaEvent);
|
|
96
|
-
}
|
|
97
|
-
return obj;
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
create<I extends Exact<DeepPartial<ChannelMessage>, I>>(base?: I): ChannelMessage {
|
|
101
|
-
return ChannelMessage.fromPartial(base ?? ({} as any));
|
|
102
|
-
},
|
|
103
|
-
fromPartial<I extends Exact<DeepPartial<ChannelMessage>, I>>(object: I): ChannelMessage {
|
|
104
|
-
const message = createBaseChannelMessage();
|
|
105
|
-
message.id = object.id ?? 0;
|
|
106
|
-
message.channelEvent = (object.channelEvent !== undefined && object.channelEvent !== null)
|
|
107
|
-
? ChannelEvent.fromPartial(object.channelEvent)
|
|
108
|
-
: undefined;
|
|
109
|
-
message.mediaEvent = (object.mediaEvent !== undefined && object.mediaEvent !== null)
|
|
110
|
-
? MediaEvent.fromPartial(object.mediaEvent)
|
|
111
|
-
: undefined;
|
|
112
|
-
return message;
|
|
113
|
-
},
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
117
|
-
|
|
118
|
-
export type DeepPartial<T> = T extends Builtin ? T
|
|
119
|
-
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
120
|
-
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
121
|
-
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
122
|
-
: Partial<T>;
|
|
123
|
-
|
|
124
|
-
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
125
|
-
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
126
|
-
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
127
|
-
|
|
128
|
-
function isSet(value: any): boolean {
|
|
129
|
-
return value !== null && value !== undefined;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export interface MessageFns<T> {
|
|
133
|
-
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
134
|
-
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
135
|
-
fromJSON(object: any): T;
|
|
136
|
-
toJSON(message: T): unknown;
|
|
137
|
-
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
138
|
-
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
139
|
-
}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
-
// versions:
|
|
3
|
-
// protoc-gen-ts_proto v2.7.5
|
|
4
|
-
// protoc v4.23.4
|
|
5
|
-
// source: channel_message/media_event.proto
|
|
6
|
-
|
|
7
|
-
/* eslint-disable */
|
|
8
|
-
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
9
|
-
import { Consumer } from "../consumer/consumer";
|
|
10
|
-
import { Producer } from "../producer/producer";
|
|
11
|
-
import { ProducerSpatialLayerRequest } from "../producer/producer_spatial_layer_request";
|
|
12
|
-
import { TransportConnectionTimeout } from "../transport/transport_connection_timeout";
|
|
13
|
-
|
|
14
|
-
export const protobufPackage = "channel_message";
|
|
15
|
-
|
|
16
|
-
export enum MediaEventType {
|
|
17
|
-
MEDIA_EVENT_TYPE_UNSPECIFIED = 0,
|
|
18
|
-
MEDIA_EVENT_TYPE_TRANSPORT_CONNECTION_TIMEOUT = 1,
|
|
19
|
-
MEDIA_EVENT_TYPE_PRODUCER_CREATED = 2,
|
|
20
|
-
MEDIA_EVENT_TYPE_PRODUCER_PAUSED = 3,
|
|
21
|
-
MEDIA_EVENT_TYPE_PRODUCER_RESUMED = 4,
|
|
22
|
-
MEDIA_EVENT_TYPE_PRODUCER_CLOSED = 5,
|
|
23
|
-
MEDIA_EVENT_TYPE_PRODUCER_FORCIBLY_CLOSED = 6,
|
|
24
|
-
MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_REQUESTED = 7,
|
|
25
|
-
MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_CHANGED = 8,
|
|
26
|
-
MEDIA_EVENT_TYPE_CONSUMER_CLOSED = 9,
|
|
27
|
-
MEDIA_EVENT_TYPE_CONSUMER_PAUSED = 10,
|
|
28
|
-
MEDIA_EVENT_TYPE_CONSUMER_RESUMED = 11,
|
|
29
|
-
MEDIA_EVENT_TYPE_CONSUMER_PREFERRED_LAYERS_CHANGED = 12,
|
|
30
|
-
UNRECOGNIZED = -1,
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function mediaEventTypeFromJSON(object: any): MediaEventType {
|
|
34
|
-
switch (object) {
|
|
35
|
-
case 0:
|
|
36
|
-
case "MEDIA_EVENT_TYPE_UNSPECIFIED":
|
|
37
|
-
return MediaEventType.MEDIA_EVENT_TYPE_UNSPECIFIED;
|
|
38
|
-
case 1:
|
|
39
|
-
case "MEDIA_EVENT_TYPE_TRANSPORT_CONNECTION_TIMEOUT":
|
|
40
|
-
return MediaEventType.MEDIA_EVENT_TYPE_TRANSPORT_CONNECTION_TIMEOUT;
|
|
41
|
-
case 2:
|
|
42
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_CREATED":
|
|
43
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_CREATED;
|
|
44
|
-
case 3:
|
|
45
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_PAUSED":
|
|
46
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_PAUSED;
|
|
47
|
-
case 4:
|
|
48
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_RESUMED":
|
|
49
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_RESUMED;
|
|
50
|
-
case 5:
|
|
51
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_CLOSED":
|
|
52
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_CLOSED;
|
|
53
|
-
case 6:
|
|
54
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_FORCIBLY_CLOSED":
|
|
55
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_FORCIBLY_CLOSED;
|
|
56
|
-
case 7:
|
|
57
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_REQUESTED":
|
|
58
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_REQUESTED;
|
|
59
|
-
case 8:
|
|
60
|
-
case "MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_CHANGED":
|
|
61
|
-
return MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_CHANGED;
|
|
62
|
-
case 9:
|
|
63
|
-
case "MEDIA_EVENT_TYPE_CONSUMER_CLOSED":
|
|
64
|
-
return MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_CLOSED;
|
|
65
|
-
case 10:
|
|
66
|
-
case "MEDIA_EVENT_TYPE_CONSUMER_PAUSED":
|
|
67
|
-
return MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_PAUSED;
|
|
68
|
-
case 11:
|
|
69
|
-
case "MEDIA_EVENT_TYPE_CONSUMER_RESUMED":
|
|
70
|
-
return MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_RESUMED;
|
|
71
|
-
case 12:
|
|
72
|
-
case "MEDIA_EVENT_TYPE_CONSUMER_PREFERRED_LAYERS_CHANGED":
|
|
73
|
-
return MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_PREFERRED_LAYERS_CHANGED;
|
|
74
|
-
case -1:
|
|
75
|
-
case "UNRECOGNIZED":
|
|
76
|
-
default:
|
|
77
|
-
return MediaEventType.UNRECOGNIZED;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export function mediaEventTypeToJSON(object: MediaEventType): string {
|
|
82
|
-
switch (object) {
|
|
83
|
-
case MediaEventType.MEDIA_EVENT_TYPE_UNSPECIFIED:
|
|
84
|
-
return "MEDIA_EVENT_TYPE_UNSPECIFIED";
|
|
85
|
-
case MediaEventType.MEDIA_EVENT_TYPE_TRANSPORT_CONNECTION_TIMEOUT:
|
|
86
|
-
return "MEDIA_EVENT_TYPE_TRANSPORT_CONNECTION_TIMEOUT";
|
|
87
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_CREATED:
|
|
88
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_CREATED";
|
|
89
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_PAUSED:
|
|
90
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_PAUSED";
|
|
91
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_RESUMED:
|
|
92
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_RESUMED";
|
|
93
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_CLOSED:
|
|
94
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_CLOSED";
|
|
95
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_FORCIBLY_CLOSED:
|
|
96
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_FORCIBLY_CLOSED";
|
|
97
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_REQUESTED:
|
|
98
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_REQUESTED";
|
|
99
|
-
case MediaEventType.MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_CHANGED:
|
|
100
|
-
return "MEDIA_EVENT_TYPE_PRODUCER_MAX_SPATIAL_LAYER_CHANGED";
|
|
101
|
-
case MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_CLOSED:
|
|
102
|
-
return "MEDIA_EVENT_TYPE_CONSUMER_CLOSED";
|
|
103
|
-
case MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_PAUSED:
|
|
104
|
-
return "MEDIA_EVENT_TYPE_CONSUMER_PAUSED";
|
|
105
|
-
case MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_RESUMED:
|
|
106
|
-
return "MEDIA_EVENT_TYPE_CONSUMER_RESUMED";
|
|
107
|
-
case MediaEventType.MEDIA_EVENT_TYPE_CONSUMER_PREFERRED_LAYERS_CHANGED:
|
|
108
|
-
return "MEDIA_EVENT_TYPE_CONSUMER_PREFERRED_LAYERS_CHANGED";
|
|
109
|
-
case MediaEventType.UNRECOGNIZED:
|
|
110
|
-
default:
|
|
111
|
-
return "UNRECOGNIZED";
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export interface MediaEvent {
|
|
116
|
-
eventType: MediaEventType;
|
|
117
|
-
producer?: Producer | undefined;
|
|
118
|
-
consumer?: Consumer | undefined;
|
|
119
|
-
producerSpatialLayerRequest?: ProducerSpatialLayerRequest | undefined;
|
|
120
|
-
transportConnectionTimeout?: TransportConnectionTimeout | undefined;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function createBaseMediaEvent(): MediaEvent {
|
|
124
|
-
return {
|
|
125
|
-
eventType: 0,
|
|
126
|
-
producer: undefined,
|
|
127
|
-
consumer: undefined,
|
|
128
|
-
producerSpatialLayerRequest: undefined,
|
|
129
|
-
transportConnectionTimeout: undefined,
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export const MediaEvent: MessageFns<MediaEvent> = {
|
|
134
|
-
encode(message: MediaEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
135
|
-
if (message.eventType !== 0) {
|
|
136
|
-
writer.uint32(8).int32(message.eventType);
|
|
137
|
-
}
|
|
138
|
-
if (message.producer !== undefined) {
|
|
139
|
-
Producer.encode(message.producer, writer.uint32(18).fork()).join();
|
|
140
|
-
}
|
|
141
|
-
if (message.consumer !== undefined) {
|
|
142
|
-
Consumer.encode(message.consumer, writer.uint32(26).fork()).join();
|
|
143
|
-
}
|
|
144
|
-
if (message.producerSpatialLayerRequest !== undefined) {
|
|
145
|
-
ProducerSpatialLayerRequest.encode(message.producerSpatialLayerRequest, writer.uint32(34).fork()).join();
|
|
146
|
-
}
|
|
147
|
-
if (message.transportConnectionTimeout !== undefined) {
|
|
148
|
-
TransportConnectionTimeout.encode(message.transportConnectionTimeout, writer.uint32(42).fork()).join();
|
|
149
|
-
}
|
|
150
|
-
return writer;
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
decode(input: BinaryReader | Uint8Array, length?: number): MediaEvent {
|
|
154
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
155
|
-
const end = length === undefined ? reader.len : reader.pos + length;
|
|
156
|
-
const message = createBaseMediaEvent();
|
|
157
|
-
while (reader.pos < end) {
|
|
158
|
-
const tag = reader.uint32();
|
|
159
|
-
switch (tag >>> 3) {
|
|
160
|
-
case 1: {
|
|
161
|
-
if (tag !== 8) {
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
message.eventType = reader.int32() as any;
|
|
166
|
-
continue;
|
|
167
|
-
}
|
|
168
|
-
case 2: {
|
|
169
|
-
if (tag !== 18) {
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
message.producer = Producer.decode(reader, reader.uint32());
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
case 3: {
|
|
177
|
-
if (tag !== 26) {
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
message.consumer = Consumer.decode(reader, reader.uint32());
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
case 4: {
|
|
185
|
-
if (tag !== 34) {
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
message.producerSpatialLayerRequest = ProducerSpatialLayerRequest.decode(reader, reader.uint32());
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
case 5: {
|
|
193
|
-
if (tag !== 42) {
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
message.transportConnectionTimeout = TransportConnectionTimeout.decode(reader, reader.uint32());
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
202
|
-
break;
|
|
203
|
-
}
|
|
204
|
-
reader.skip(tag & 7);
|
|
205
|
-
}
|
|
206
|
-
return message;
|
|
207
|
-
},
|
|
208
|
-
|
|
209
|
-
fromJSON(object: any): MediaEvent {
|
|
210
|
-
return {
|
|
211
|
-
eventType: isSet(object.eventType) ? mediaEventTypeFromJSON(object.eventType) : 0,
|
|
212
|
-
producer: isSet(object.producer) ? Producer.fromJSON(object.producer) : undefined,
|
|
213
|
-
consumer: isSet(object.consumer) ? Consumer.fromJSON(object.consumer) : undefined,
|
|
214
|
-
producerSpatialLayerRequest: isSet(object.producerSpatialLayerRequest)
|
|
215
|
-
? ProducerSpatialLayerRequest.fromJSON(object.producerSpatialLayerRequest)
|
|
216
|
-
: undefined,
|
|
217
|
-
transportConnectionTimeout: isSet(object.transportConnectionTimeout)
|
|
218
|
-
? TransportConnectionTimeout.fromJSON(object.transportConnectionTimeout)
|
|
219
|
-
: undefined,
|
|
220
|
-
};
|
|
221
|
-
},
|
|
222
|
-
|
|
223
|
-
toJSON(message: MediaEvent): unknown {
|
|
224
|
-
const obj: any = {};
|
|
225
|
-
if (message.eventType !== 0) {
|
|
226
|
-
obj.eventType = mediaEventTypeToJSON(message.eventType);
|
|
227
|
-
}
|
|
228
|
-
if (message.producer !== undefined) {
|
|
229
|
-
obj.producer = Producer.toJSON(message.producer);
|
|
230
|
-
}
|
|
231
|
-
if (message.consumer !== undefined) {
|
|
232
|
-
obj.consumer = Consumer.toJSON(message.consumer);
|
|
233
|
-
}
|
|
234
|
-
if (message.producerSpatialLayerRequest !== undefined) {
|
|
235
|
-
obj.producerSpatialLayerRequest = ProducerSpatialLayerRequest.toJSON(message.producerSpatialLayerRequest);
|
|
236
|
-
}
|
|
237
|
-
if (message.transportConnectionTimeout !== undefined) {
|
|
238
|
-
obj.transportConnectionTimeout = TransportConnectionTimeout.toJSON(message.transportConnectionTimeout);
|
|
239
|
-
}
|
|
240
|
-
return obj;
|
|
241
|
-
},
|
|
242
|
-
|
|
243
|
-
create<I extends Exact<DeepPartial<MediaEvent>, I>>(base?: I): MediaEvent {
|
|
244
|
-
return MediaEvent.fromPartial(base ?? ({} as any));
|
|
245
|
-
},
|
|
246
|
-
fromPartial<I extends Exact<DeepPartial<MediaEvent>, I>>(object: I): MediaEvent {
|
|
247
|
-
const message = createBaseMediaEvent();
|
|
248
|
-
message.eventType = object.eventType ?? 0;
|
|
249
|
-
message.producer = (object.producer !== undefined && object.producer !== null)
|
|
250
|
-
? Producer.fromPartial(object.producer)
|
|
251
|
-
: undefined;
|
|
252
|
-
message.consumer = (object.consumer !== undefined && object.consumer !== null)
|
|
253
|
-
? Consumer.fromPartial(object.consumer)
|
|
254
|
-
: undefined;
|
|
255
|
-
message.producerSpatialLayerRequest =
|
|
256
|
-
(object.producerSpatialLayerRequest !== undefined && object.producerSpatialLayerRequest !== null)
|
|
257
|
-
? ProducerSpatialLayerRequest.fromPartial(object.producerSpatialLayerRequest)
|
|
258
|
-
: undefined;
|
|
259
|
-
message.transportConnectionTimeout =
|
|
260
|
-
(object.transportConnectionTimeout !== undefined && object.transportConnectionTimeout !== null)
|
|
261
|
-
? TransportConnectionTimeout.fromPartial(object.transportConnectionTimeout)
|
|
262
|
-
: undefined;
|
|
263
|
-
return message;
|
|
264
|
-
},
|
|
265
|
-
};
|
|
266
|
-
|
|
267
|
-
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
268
|
-
|
|
269
|
-
export type DeepPartial<T> = T extends Builtin ? T
|
|
270
|
-
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
271
|
-
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
272
|
-
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
273
|
-
: Partial<T>;
|
|
274
|
-
|
|
275
|
-
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
276
|
-
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
277
|
-
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
278
|
-
|
|
279
|
-
function isSet(value: any): boolean {
|
|
280
|
-
return value !== null && value !== undefined;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
export interface MessageFns<T> {
|
|
284
|
-
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
285
|
-
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
286
|
-
fromJSON(object: any): T;
|
|
287
|
-
toJSON(message: T): unknown;
|
|
288
|
-
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
289
|
-
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
290
|
-
}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
-
// versions:
|
|
3
|
-
// protoc-gen-ts_proto v2.7.5
|
|
4
|
-
// protoc v4.23.4
|
|
5
|
-
// source: consumer/consumer.proto
|
|
6
|
-
|
|
7
|
-
/* eslint-disable */
|
|
8
|
-
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
9
|
-
|
|
10
|
-
export const protobufPackage = "consumer";
|
|
11
|
-
|
|
12
|
-
export interface Consumer {
|
|
13
|
-
id: string;
|
|
14
|
-
peerId: string;
|
|
15
|
-
producerPeerId: string;
|
|
16
|
-
spatialLayer?: number | undefined;
|
|
17
|
-
temporalLayer?: number | undefined;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function createBaseConsumer(): Consumer {
|
|
21
|
-
return { id: "", peerId: "", producerPeerId: "", spatialLayer: undefined, temporalLayer: undefined };
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const Consumer: MessageFns<Consumer> = {
|
|
25
|
-
encode(message: Consumer, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
26
|
-
if (message.id !== "") {
|
|
27
|
-
writer.uint32(10).string(message.id);
|
|
28
|
-
}
|
|
29
|
-
if (message.peerId !== "") {
|
|
30
|
-
writer.uint32(18).string(message.peerId);
|
|
31
|
-
}
|
|
32
|
-
if (message.producerPeerId !== "") {
|
|
33
|
-
writer.uint32(26).string(message.producerPeerId);
|
|
34
|
-
}
|
|
35
|
-
if (message.spatialLayer !== undefined) {
|
|
36
|
-
writer.uint32(32).uint32(message.spatialLayer);
|
|
37
|
-
}
|
|
38
|
-
if (message.temporalLayer !== undefined) {
|
|
39
|
-
writer.uint32(40).uint32(message.temporalLayer);
|
|
40
|
-
}
|
|
41
|
-
return writer;
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
decode(input: BinaryReader | Uint8Array, length?: number): Consumer {
|
|
45
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
46
|
-
const end = length === undefined ? reader.len : reader.pos + length;
|
|
47
|
-
const message = createBaseConsumer();
|
|
48
|
-
while (reader.pos < end) {
|
|
49
|
-
const tag = reader.uint32();
|
|
50
|
-
switch (tag >>> 3) {
|
|
51
|
-
case 1: {
|
|
52
|
-
if (tag !== 10) {
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
message.id = reader.string();
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
case 2: {
|
|
60
|
-
if (tag !== 18) {
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
message.peerId = reader.string();
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
case 3: {
|
|
68
|
-
if (tag !== 26) {
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
message.producerPeerId = reader.string();
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
case 4: {
|
|
76
|
-
if (tag !== 32) {
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
message.spatialLayer = reader.uint32();
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
case 5: {
|
|
84
|
-
if (tag !== 40) {
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
message.temporalLayer = reader.uint32();
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
reader.skip(tag & 7);
|
|
96
|
-
}
|
|
97
|
-
return message;
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
fromJSON(object: any): Consumer {
|
|
101
|
-
return {
|
|
102
|
-
id: isSet(object.id) ? globalThis.String(object.id) : "",
|
|
103
|
-
peerId: isSet(object.peerId) ? globalThis.String(object.peerId) : "",
|
|
104
|
-
producerPeerId: isSet(object.producerPeerId) ? globalThis.String(object.producerPeerId) : "",
|
|
105
|
-
spatialLayer: isSet(object.spatialLayer) ? globalThis.Number(object.spatialLayer) : undefined,
|
|
106
|
-
temporalLayer: isSet(object.temporalLayer) ? globalThis.Number(object.temporalLayer) : undefined,
|
|
107
|
-
};
|
|
108
|
-
},
|
|
109
|
-
|
|
110
|
-
toJSON(message: Consumer): unknown {
|
|
111
|
-
const obj: any = {};
|
|
112
|
-
if (message.id !== "") {
|
|
113
|
-
obj.id = message.id;
|
|
114
|
-
}
|
|
115
|
-
if (message.peerId !== "") {
|
|
116
|
-
obj.peerId = message.peerId;
|
|
117
|
-
}
|
|
118
|
-
if (message.producerPeerId !== "") {
|
|
119
|
-
obj.producerPeerId = message.producerPeerId;
|
|
120
|
-
}
|
|
121
|
-
if (message.spatialLayer !== undefined) {
|
|
122
|
-
obj.spatialLayer = Math.round(message.spatialLayer);
|
|
123
|
-
}
|
|
124
|
-
if (message.temporalLayer !== undefined) {
|
|
125
|
-
obj.temporalLayer = Math.round(message.temporalLayer);
|
|
126
|
-
}
|
|
127
|
-
return obj;
|
|
128
|
-
},
|
|
129
|
-
|
|
130
|
-
create<I extends Exact<DeepPartial<Consumer>, I>>(base?: I): Consumer {
|
|
131
|
-
return Consumer.fromPartial(base ?? ({} as any));
|
|
132
|
-
},
|
|
133
|
-
fromPartial<I extends Exact<DeepPartial<Consumer>, I>>(object: I): Consumer {
|
|
134
|
-
const message = createBaseConsumer();
|
|
135
|
-
message.id = object.id ?? "";
|
|
136
|
-
message.peerId = object.peerId ?? "";
|
|
137
|
-
message.producerPeerId = object.producerPeerId ?? "";
|
|
138
|
-
message.spatialLayer = object.spatialLayer ?? undefined;
|
|
139
|
-
message.temporalLayer = object.temporalLayer ?? undefined;
|
|
140
|
-
return message;
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
145
|
-
|
|
146
|
-
export type DeepPartial<T> = T extends Builtin ? T
|
|
147
|
-
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
148
|
-
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
149
|
-
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
150
|
-
: Partial<T>;
|
|
151
|
-
|
|
152
|
-
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
153
|
-
export type Exact<P, I extends P> = P extends Builtin ? P
|
|
154
|
-
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
|
|
155
|
-
|
|
156
|
-
function isSet(value: any): boolean {
|
|
157
|
-
return value !== null && value !== undefined;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
export interface MessageFns<T> {
|
|
161
|
-
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
162
|
-
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
163
|
-
fromJSON(object: any): T;
|
|
164
|
-
toJSON(message: T): unknown;
|
|
165
|
-
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
166
|
-
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
167
|
-
}
|