@vkontakte/calls-sdk 2.8.11-dev.cb5b05f6.0 → 2.8.11-dev.d88537e0.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/CallsSDK.d.ts +58 -15
- package/abstract/BaseApi.d.ts +3 -5
- package/abstract/BaseSignaling.d.ts +2 -3
- package/calls-sdk.cjs.js +16 -13
- package/calls-sdk.esm.js +11609 -13
- package/classes/AudioFix.d.ts +5 -1
- package/classes/AudioOutput.d.ts +5 -1
- package/classes/Conversation.d.ts +9 -2
- package/classes/DebugInfo.d.ts +3 -0
- package/classes/DisplayLayoutRequester.d.ts +39 -0
- package/classes/ExternalIdCache.d.ts +19 -0
- package/classes/MediaSource.d.ts +5 -1
- package/classes/ParticipantIdRegistry.d.ts +3 -0
- package/classes/ProducerCommandSerializationService.d.ts +3 -0
- package/classes/SignalingActor.d.ts +3 -1
- package/classes/SpeakerDetector.d.ts +2 -1
- package/classes/SpecListener.d.ts +5 -1
- package/classes/StatsLogger.d.ts +29 -0
- package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
- package/classes/asr/AsrReceiver.d.ts +3 -1
- package/classes/codec/LibVPxDecoder.d.ts +3 -0
- package/classes/codec/LibVPxEncoder.d.ts +3 -1
- package/classes/codec/WebCodecsDecoder.d.ts +3 -0
- package/classes/codec/WebCodecsEncoder.d.ts +3 -1
- package/classes/codec/WorkerBase.d.ts +5 -0
- package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
- package/classes/screenshare/CanvasRenderer.d.ts +3 -1
- package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
- package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
- package/classes/screenshare/StreamBuilder.d.ts +5 -1
- package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
- package/classes/screenshare/WebmBuilder.d.ts +3 -1
- package/classes/stat/CodecStatsAggregator.d.ts +7 -7
- package/classes/stat/ConversationStats.d.ts +21 -0
- package/classes/stat/StatAggregator.d.ts +6 -6
- package/classes/stat/StatFirstMediaReceived.d.ts +4 -1
- package/classes/stat/StatPings.d.ts +9 -9
- package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
- package/classes/stat/StatSignalingCommands.d.ts +8 -8
- package/classes/transport/BaseTransport.d.ts +1 -1
- package/classes/transport/DirectStatReporter.d.ts +3 -1
- package/classes/transport/DirectTransport.d.ts +9 -1
- package/classes/transport/PerfStatReporter.d.ts +5 -1
- package/classes/transport/ServerTransport.d.ts +10 -2
- package/classes/transport/Transport.d.ts +14 -14
- package/default/Api.d.ts +4 -14
- package/default/Signaling.d.ts +15 -4
- package/enums/TransportState.d.ts +10 -0
- package/enums/TransportTopology.d.ts +5 -0
- package/package.json +2 -2
- package/static/Debug.d.ts +27 -8
- package/static/External.d.ts +3 -0
- package/static/Params.d.ts +27 -1
- package/static/Utils.d.ts +3 -2
- package/static/WebRTCUtils.d.ts +7 -4
- package/types/Conversation.d.ts +1 -1
- package/types/FastStart.d.ts +1 -0
- package/types/ParticipantLayout.d.ts +33 -0
- package/types/PerfStatReporter.d.ts +2 -1
- package/types/SignalingMessage.d.ts +4 -1
- package/types/Statistics.d.ts +1 -1
- package/types/WebTransport.d.ts +1 -0
- package/utils/DebugStorage.d.ts +100 -1
- package/classes/Logger.d.ts +0 -41
- package/classes/stat/EventMetricsService.d.ts +0 -9
- package/static/ConversationDebugLogger.d.ts +0 -13
package/CallsSDK.d.ts
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* CallsSDK
|
|
3
3
|
*/
|
|
4
4
|
import type { IEffect, VideoEffects } from '@vkontakte/calls-video-effects';
|
|
5
|
-
import type { EffectVoiceChange } from '@vkontakte/calls-audio-effects';
|
|
5
|
+
import type { EffectVoiceChange, VadControllerOptions, VadLib } from '@vkontakte/calls-audio-effects';
|
|
6
6
|
import type * as Vmoji from '@vkontakte/calls-vmoji';
|
|
7
7
|
import BaseLogger from './abstract/BaseLogger';
|
|
8
8
|
import { AddParticipantParams } from './abstract/BaseSignaling';
|
|
9
9
|
import HangupReason, { HangupReasonData, CustomError } from './classes/HangupReason';
|
|
10
10
|
import { MediaTrackKind } from './classes/MediaSource';
|
|
11
11
|
import { AudienceModeHandsResponse } from './types/AudienceMode';
|
|
12
|
-
import
|
|
12
|
+
import TransportTopology from './enums/TransportTopology';
|
|
13
13
|
import Api from './default/Api';
|
|
14
14
|
import Signaling from './default/Signaling';
|
|
15
15
|
import CallDirection from './enums/CallDirection';
|
|
@@ -30,6 +30,7 @@ import SignalingNotification from './enums/SignalingNotification';
|
|
|
30
30
|
import UserRole from './enums/UserRole';
|
|
31
31
|
import UserType from './enums/UserType';
|
|
32
32
|
import { DebugMessageType } from './static/Debug';
|
|
33
|
+
import * as DebugStorage from './utils/DebugStorage';
|
|
33
34
|
import { ParticipantStatus } from './static/External';
|
|
34
35
|
import { JSONArray, JSONObject, JSONType } from './static/Json';
|
|
35
36
|
import { ParamsObject } from './static/Params';
|
|
@@ -49,7 +50,7 @@ import { IAddMovieParams, IMovieMetaData, IMoviePreview, IOnRemoteMovieData, ISh
|
|
|
49
50
|
import MuteStates, { IMuteParticipantInternalParams, IMuteParticipantParams } from './types/MuteStates';
|
|
50
51
|
import { IAPIBaseUrl, IApiEnv } from './types/Params';
|
|
51
52
|
import { CompositeUserId, IGetParticipantsParameters, OkUserId, ParticipantId, ParticipantListMarker, ParticipantListMarkers, ParticipantListType, ParticipantsStateList, ParticipantStateMapped, ParticipantStateData, ParticipantStateDataKey, ParticipantStateDataValue } from './types/Participant';
|
|
52
|
-
import ParticipantLayout, { Layout, RequestKeyFrame, StopStream } from './types/ParticipantLayout';
|
|
53
|
+
import ParticipantLayout, { DisplayLayoutRequest, Layout, RequestKeyFrame, StopStream } from './types/ParticipantLayout';
|
|
53
54
|
import { ParticipantListChunkParameters } from './types/ParticipantListChunk';
|
|
54
55
|
import ParticipantPriority from './types/ParticipantPriority';
|
|
55
56
|
import { MediaType, ParticipantStreamDescription } from './types/ParticipantStreamDescription';
|
|
@@ -66,6 +67,7 @@ import { VmojiError } from './types/Vmoji';
|
|
|
66
67
|
import { VolumeDetector } from './classes/VolumeDetector';
|
|
67
68
|
import { FastStartHandler, FastStartParams } from './types/FastStart';
|
|
68
69
|
import { FastJoinHandler, FastJoinParams, FastJoinResponse } from './types/FastJoin';
|
|
70
|
+
export type { CurrentLogItem, DebugLogGetParams, DebugLogSessionInfo, DebugLogStorageStats } from './utils/DebugStorage';
|
|
69
71
|
/**
|
|
70
72
|
* Информация о текущем браузере
|
|
71
73
|
*/
|
|
@@ -209,6 +211,13 @@ export declare function setVideoEffects(effects: VideoEffects): void;
|
|
|
209
211
|
* @param effects Экземпляр класса `EffectVoiceChange` из `@vkontakte/calls-audio-effects`
|
|
210
212
|
*/
|
|
211
213
|
export declare function setAudioEffects(effects: EffectVoiceChange): void;
|
|
214
|
+
/**
|
|
215
|
+
* Устанавливает поддержку VAD
|
|
216
|
+
*
|
|
217
|
+
* @param vad принимает VadController из `@vkontakte/calls-audio-effects`
|
|
218
|
+
* @param options принимает VadControllerOptions из `@vkontakte/calls-audio-effects`
|
|
219
|
+
*/
|
|
220
|
+
export declare function setVad(vad: VadLib, options?: VadControllerOptions): void;
|
|
212
221
|
/**
|
|
213
222
|
* Устанавливает библиотеку вимоджи
|
|
214
223
|
*
|
|
@@ -410,6 +419,12 @@ export declare function putHandsDown(): Promise<void>;
|
|
|
410
419
|
* @param layout Список приоритетов
|
|
411
420
|
*/
|
|
412
421
|
export declare function updateDisplayLayout(layout: ParticipantLayout[]): Promise<void>;
|
|
422
|
+
/**
|
|
423
|
+
* Запрашивает стримы, которые клиент хочет получать для отображения.
|
|
424
|
+
*
|
|
425
|
+
* @param requests Полный список стримов, которые должны приходить на клиент
|
|
426
|
+
*/
|
|
427
|
+
export declare function requestDisplayLayout(requests: DisplayLayoutRequest[]): Promise<void>;
|
|
413
428
|
/**
|
|
414
429
|
* Выдать или забрать роли в звонке пользователю
|
|
415
430
|
*
|
|
@@ -561,16 +576,6 @@ export declare function stopStream(roomId?: number | null, remove?: boolean): Pr
|
|
|
561
576
|
* @param roomId
|
|
562
577
|
*/
|
|
563
578
|
export declare function publishStream(roomId?: number | null): Promise<undefined>;
|
|
564
|
-
/**
|
|
565
|
-
* Устанавливает роль участника в запись звонка
|
|
566
|
-
* Если хотя бы у одного участника звонка выставлена роль, то в записи звонка будут
|
|
567
|
-
* видны только те участники, у кого есть роль.
|
|
568
|
-
* @param king участник показывается крупно в записи звонка (только один участник имеет такую роль)
|
|
569
|
-
* @param pawns участник показывается в записи звонка
|
|
570
|
-
* @param hideParticipantCount скрыть/показать количество невидимых участников
|
|
571
|
-
* @param roomId комната
|
|
572
|
-
*/
|
|
573
|
-
export declare function recordSetConf(king?: ExternalId, pawns?: ExternalId[], hideParticipantCount?: boolean, roomId?: number | null): Promise<void>;
|
|
574
579
|
/**
|
|
575
580
|
* Получить информацию о трансляции звонка
|
|
576
581
|
*/
|
|
@@ -641,6 +646,38 @@ export declare function debug(enabled: boolean): void;
|
|
|
641
646
|
* @param args
|
|
642
647
|
*/
|
|
643
648
|
export declare function debugMessage(type: DebugMessageType, ...args: any[]): void;
|
|
649
|
+
/**
|
|
650
|
+
* Локальные отладочные логи, сохраненные в браузере.
|
|
651
|
+
*
|
|
652
|
+
* Работает при включенном параметре `debugLog: true`.
|
|
653
|
+
* Логи хранятся в IndexedDB: последние 10 звонков, максимум 25 МБ суммарно.
|
|
654
|
+
*/
|
|
655
|
+
export declare const debugLogs: {
|
|
656
|
+
/**
|
|
657
|
+
* Возвращает список сохраненных локальных сессий логирования.
|
|
658
|
+
*/
|
|
659
|
+
list: typeof DebugStorage.list;
|
|
660
|
+
/**
|
|
661
|
+
* Возвращает логи конкретного звонка вместе с глобальным контекстом SDK.
|
|
662
|
+
*/
|
|
663
|
+
get: typeof DebugStorage.get;
|
|
664
|
+
/**
|
|
665
|
+
* Возвращает логи конкретного звонка вместе с глобальным контекстом SDK JSON-строкой.
|
|
666
|
+
*/
|
|
667
|
+
getJson: typeof DebugStorage.getJson;
|
|
668
|
+
/**
|
|
669
|
+
* Скачивает логи конкретного звонка вместе с глобальным контекстом SDK JSON-файлом.
|
|
670
|
+
*/
|
|
671
|
+
download: typeof DebugStorage.download;
|
|
672
|
+
/**
|
|
673
|
+
* Очищает логи конкретного звонка или все локальные логи SDK.
|
|
674
|
+
*/
|
|
675
|
+
clear: typeof DebugStorage.clear;
|
|
676
|
+
/**
|
|
677
|
+
* Возвращает статистику локального хранилища логов.
|
|
678
|
+
*/
|
|
679
|
+
stats: typeof DebugStorage.stats;
|
|
680
|
+
};
|
|
644
681
|
/**
|
|
645
682
|
* Отправляет клиенские логи по conversationId на сервер OK
|
|
646
683
|
* @example можно посмотреть в examples/anonym/index.html
|
|
@@ -749,11 +786,17 @@ export declare function requestAsr(request: boolean): Promise<void>;
|
|
|
749
786
|
export declare function startUrlSharing(sharedUrl: string): Promise<void>;
|
|
750
787
|
export declare function stopUrlSharing(): Promise<void>;
|
|
751
788
|
export declare function sendTestCommand(name: string, params?: any): void;
|
|
752
|
-
export declare function startAnalyzingAudio(expectAudio: boolean): void;
|
|
789
|
+
export declare function startAnalyzingAudio(expectAudio: boolean, expectedActiveTracks?: number | null, expectedTrackFrequencies?: number[] | null): void;
|
|
753
790
|
export declare function stopAnalyzingAudio(): void;
|
|
791
|
+
/**
|
|
792
|
+
* Возвращает текущее время, скорректированное на смещение относительно серверного времени.
|
|
793
|
+
* Доступно после установки соединения (начало/присоединение к звонку).
|
|
794
|
+
* Если активного звонка нет — возвращает Date.now().
|
|
795
|
+
*/
|
|
796
|
+
export declare function getSyncedTime(): number;
|
|
754
797
|
/**
|
|
755
798
|
* Версия SDK
|
|
756
799
|
*/
|
|
757
800
|
export declare function version(): string;
|
|
758
|
-
export type { AddParticipantParams, AudienceModeHandsResponse, BrowserName, CompositeUserId, ConversationData, ConversationParams, ConversationResponse, CustomError, ExternalId, ExternalParticipant, ExternalParticipantListChunk, ExternalParticipantListMarker, ExternalParticipantListMarkers as ExternalParticipantMarkers, ExternalParticipantId, GetParticipantsSignalingResponse, GetRoomsSignalingResponse, HangupReasonData, IApiEnv, IAPIBaseUrl, IAsrStartParams, IAsrStopParams, IAsrData, IceServer, JSONArray, JSONObject, JSONType, Layout, MediaModifiers, MediaSettings, MuteStates, OkUserId, ParamsObject, ParticipantId, ParticipantLayout, ParticipantListMarkers, ParticipantListType, ParticipantPriority, ParticipantsStateList, ParticipantStateData, ParticipantStateDataKey, ParticipantStateMapped, ParticipantStreamDescription, ParticipantListChunkParameters, ParticipantListMarker, RequestKeyFrame, Rooms, IGetParticipantsParameters, ScreenCaptureSettings, SignalingMessage, StatResult, StopStream, WaitingHallResponse, IMovieMetaData, IVideoDimentions, IFeedbackExternal, ISharedMovieInfo, ISharedMovieStoppedInfo, ISharedMovieState, ISharedMovieStateResponse, IAddMovieParams, IOnRemoteMovieData, IMoviePreview, IRoomId, Room, RoomsUpdate, RoomParticipantUpdate, IUpdateMovieData, IFeaturesPerRole, IMuteParticipantParams, IMuteParticipantInternalParams, IStartStreamData, IStopStreamData, IPublishStreamData, VmojiError, FastStartHandler, FastStartParams, FastJoinHandler, FastJoinParams, FastJoinResponse, };
|
|
801
|
+
export type { AddParticipantParams, AudienceModeHandsResponse, BrowserName, CompositeUserId, ConversationData, ConversationParams, ConversationResponse, CustomError, ExternalId, ExternalParticipant, ExternalParticipantListChunk, ExternalParticipantListMarker, ExternalParticipantListMarkers as ExternalParticipantMarkers, ExternalParticipantId, DisplayLayoutRequest, GetParticipantsSignalingResponse, GetRoomsSignalingResponse, HangupReasonData, IApiEnv, IAPIBaseUrl, IAsrStartParams, IAsrStopParams, IAsrData, IceServer, JSONArray, JSONObject, JSONType, Layout, MediaModifiers, MediaSettings, MuteStates, OkUserId, ParamsObject, ParticipantId, ParticipantLayout, ParticipantListMarkers, ParticipantListType, ParticipantPriority, ParticipantsStateList, ParticipantStateData, ParticipantStateDataKey, ParticipantStateMapped, ParticipantStreamDescription, ParticipantListChunkParameters, ParticipantListMarker, RequestKeyFrame, Rooms, IGetParticipantsParameters, ScreenCaptureSettings, SignalingMessage, StatResult, StopStream, WaitingHallResponse, IMovieMetaData, IVideoDimentions, IFeedbackExternal, ISharedMovieInfo, ISharedMovieStoppedInfo, ISharedMovieState, ISharedMovieStateResponse, IAddMovieParams, IOnRemoteMovieData, IMoviePreview, IRoomId, Room, RoomsUpdate, RoomParticipantUpdate, IUpdateMovieData, IFeaturesPerRole, IMuteParticipantParams, IMuteParticipantInternalParams, IStartStreamData, IStopStreamData, IPublishStreamData, VmojiError, FastStartHandler, FastStartParams, FastJoinHandler, FastJoinParams, FastJoinResponse, };
|
|
759
802
|
export { Api, AuthData, BaseLogger, CallDirection, CallType, ChatRoomEventType, ConversationOption, DebugMessageType, ExternalIdType, FacingMode, FatalError, HangupReason, HangupType, MediaOption, MediaTrackKind, MediaType, MuteState, ParticipantState, ParticipantStateDataValue, ParticipantStatus, RecordRole, Signaling, SignalingCommandType, SignalingConnectionType, SignalingNotification, UserRole, UserType, TransportTopology, RoomsEventType, ConversationFeature, ArrayDequeue, ApiExternal, VolumeDetector, };
|
package/abstract/BaseApi.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ExternalId, ExternalParticipantId, ExternalUserId } from '../types/Exte
|
|
|
7
7
|
import { CompositeUserId, OkUserId, ParticipantId } from '../types/Participant';
|
|
8
8
|
export type ClientStats = {
|
|
9
9
|
vcid: ConversationData['id'] | null;
|
|
10
|
-
[k: string]: string | number | null;
|
|
10
|
+
[k: string]: string | number | boolean | null;
|
|
11
11
|
};
|
|
12
12
|
export type ClientEvent = {
|
|
13
13
|
timestamp: number;
|
|
@@ -44,7 +44,7 @@ export default abstract class BaseApi {
|
|
|
44
44
|
audioOnly?: boolean;
|
|
45
45
|
waitForAdmin?: boolean;
|
|
46
46
|
closedConversation?: boolean;
|
|
47
|
-
}, speakerIds?:
|
|
47
|
+
}, speakerIds?: ExternalId[]): Promise<ConversationResponse>;
|
|
48
48
|
abstract startConversation(conversationId: string, ids?: OkUserId[], type?: CallType, isVideo?: boolean, payload?: string, joiningAllowed?: boolean, requireAuthToJoin?: boolean, createConversationParameters?: {
|
|
49
49
|
onlyAdminCanShareMovie?: boolean;
|
|
50
50
|
}, externalIds?: ExternalId[]): Promise<ConversationResponse>;
|
|
@@ -73,17 +73,15 @@ export default abstract class BaseApi {
|
|
|
73
73
|
*/
|
|
74
74
|
logClientEvents(items: ClientEvent[]): void;
|
|
75
75
|
abstract uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
|
|
76
|
-
abstract getOkIdsByExternalIds(externalIds: ExternalId[]): Promise<OkUserId[]>;
|
|
77
|
-
abstract getParticipantIdsByExternalIds(externalIds: ExternalId[]): Promise<Map<ExternalId, ParticipantId>>;
|
|
78
76
|
abstract getExternalIdsByOkIds(uids: OkUserId[]): Promise<ExternalParticipantId[]>;
|
|
79
77
|
getCachedOkIdByExternalId(externalId: ExternalId): ParticipantId | null;
|
|
78
|
+
getCachedRawOkIdByExternalId(externalId: ExternalId): OkUserId | null;
|
|
80
79
|
cacheExternalId(compositeId: OkUserId | CompositeUserId | ParticipantId, externalId: ExternalParticipantId): void;
|
|
81
80
|
mapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId, okId: OkUserId | CompositeUserId): void;
|
|
82
81
|
unmapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId): void;
|
|
83
82
|
getDecorativeIdByInitialId(okId: OkUserId | CompositeUserId | ParticipantId): OkUserId | undefined;
|
|
84
83
|
replaceByInitialIdIdIfExists(id: OkUserId | CompositeUserId | ParticipantId): OkUserId;
|
|
85
84
|
hangupConversation(conversationId: string, reason?: HangupType): void;
|
|
86
|
-
sendUserFeedbackStats(conversationId: string, userResponse: number, reason?: string, groupCallUsersCount?: number): void;
|
|
87
85
|
removeHistoryRecords(recordIds: number[]): Promise<void>;
|
|
88
86
|
getServerTime(): Promise<number>;
|
|
89
87
|
cleanup(): void;
|
|
@@ -3,7 +3,7 @@ import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
|
|
|
3
3
|
import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
|
|
4
4
|
import { PerfStatReport } from '../types/PerfStatReporter';
|
|
5
5
|
import { NetworkStatReport } from '../types/NetworkStatReport';
|
|
6
|
-
import
|
|
6
|
+
import TransportTopology from '../enums/TransportTopology';
|
|
7
7
|
import ConversationFeature from '../enums/ConversationFeature';
|
|
8
8
|
import ConversationOption from '../enums/ConversationOption';
|
|
9
9
|
import MediaOption from '../enums/MediaOption';
|
|
@@ -21,7 +21,7 @@ import { ParticipantLayout, RequestKeyFrame, StopStream } from '../types/Partici
|
|
|
21
21
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
22
22
|
import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse } from '../types/SignalingMessage';
|
|
23
23
|
import { ChangeSimulcast } from '../types/ChangeSimulcast';
|
|
24
|
-
import { IPublishStreamData,
|
|
24
|
+
import { IPublishStreamData, IStartStreamData, IStopStreamData } from '../types/Streams';
|
|
25
25
|
import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
|
|
26
26
|
/**
|
|
27
27
|
* Параметры добавления пользователя в звонок
|
|
@@ -92,7 +92,6 @@ export default abstract class BaseSignaling extends EventEmitter {
|
|
|
92
92
|
abstract startStream(data: IStartStreamData): Promise<SignalingMessage>;
|
|
93
93
|
abstract stopStream(data: IStopStreamData): Promise<SignalingMessage>;
|
|
94
94
|
abstract publishStream(data: IPublishStreamData): Promise<SignalingMessage>;
|
|
95
|
-
abstract recordSetConf(conf: IRecordConfData): Promise<SignalingMessage>;
|
|
96
95
|
abstract getRecordStatus(): Promise<SignalingMessage>;
|
|
97
96
|
abstract switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
|
|
98
97
|
abstract reportPerfStat(report: PerfStatReport): Promise<SignalingMessage>;
|