@microsoft/live-share-media 2.0.0-internal.2 → 2.0.0-internal.20
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/README.md +26 -27
- package/bin/esm/IMediaPlayer.d.ts.map +1 -0
- package/bin/{IMediaPlayer.js → esm/IMediaPlayer.js} +1 -2
- package/bin/esm/IMediaPlayer.js.map +1 -0
- package/bin/{LiveMediaSession.d.ts → esm/LiveMediaSession.d.ts} +16 -9
- package/bin/esm/LiveMediaSession.d.ts.map +1 -0
- package/bin/esm/LiveMediaSession.js +247 -0
- package/bin/esm/LiveMediaSession.js.map +1 -0
- package/bin/{LiveMediaSessionCoordinator.d.ts → esm/LiveMediaSessionCoordinator.d.ts} +57 -13
- package/bin/esm/LiveMediaSessionCoordinator.d.ts.map +1 -0
- package/bin/esm/LiveMediaSessionCoordinator.js +544 -0
- package/bin/esm/LiveMediaSessionCoordinator.js.map +1 -0
- package/bin/{LiveMediaSessionCoordinatorSuspension.d.ts → esm/LiveMediaSessionCoordinatorSuspension.d.ts} +1 -1
- package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
- package/bin/{LiveMediaSessionCoordinatorSuspension.js → esm/LiveMediaSessionCoordinatorSuspension.js} +3 -5
- package/bin/esm/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
- package/bin/{MediaPlayerSynchronizer.d.ts → esm/MediaPlayerSynchronizer.d.ts} +22 -8
- package/bin/esm/MediaPlayerSynchronizer.d.ts.map +1 -0
- package/bin/{MediaPlayerSynchronizer.js → esm/MediaPlayerSynchronizer.js} +130 -153
- package/bin/esm/MediaPlayerSynchronizer.js.map +1 -0
- package/bin/{MediaSessionActionThrottler.d.ts → esm/MediaSessionActionThrottler.d.ts} +1 -1
- package/bin/esm/MediaSessionActionThrottler.d.ts.map +1 -0
- package/bin/esm/MediaSessionActionThrottler.js +10 -0
- package/bin/esm/MediaSessionActionThrottler.js.map +1 -0
- package/bin/esm/MediaSessionExtensions.d.ts.map +1 -0
- package/bin/{MediaSessionExtensions.js → esm/MediaSessionExtensions.js} +2 -5
- package/bin/esm/MediaSessionExtensions.js.map +1 -0
- package/bin/{RepeatedActionThrottler.d.ts → esm/RepeatedActionThrottler.d.ts} +2 -2
- package/bin/esm/RepeatedActionThrottler.d.ts.map +1 -0
- package/bin/{RepeatedActionThrottler.js → esm/RepeatedActionThrottler.js} +12 -17
- package/bin/esm/RepeatedActionThrottler.js.map +1 -0
- package/bin/{VolumeManager.d.ts → esm/VolumeManager.d.ts} +6 -6
- package/bin/esm/VolumeManager.d.ts.map +1 -0
- package/bin/{VolumeManager.js → esm/VolumeManager.js} +19 -22
- package/bin/esm/VolumeManager.js.map +1 -0
- package/bin/esm/index.d.ts +14 -0
- package/bin/esm/index.d.ts.map +1 -0
- package/bin/esm/index.js +14 -0
- package/bin/esm/index.js.map +1 -0
- package/bin/{internals → esm/internals}/GroupCoordinatorState.d.ts +14 -12
- package/bin/esm/internals/GroupCoordinatorState.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/GroupCoordinatorState.js +177 -185
- package/bin/esm/internals/GroupCoordinatorState.js.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackPosition.d.ts +6 -5
- package/bin/esm/internals/GroupPlaybackPosition.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackPosition.js +16 -12
- package/bin/esm/internals/GroupPlaybackPosition.js.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackRate.d.ts +4 -5
- package/bin/esm/internals/GroupPlaybackRate.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackRate.js +5 -11
- package/bin/esm/internals/GroupPlaybackRate.js.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackTrack.d.ts +5 -6
- package/bin/esm/internals/GroupPlaybackTrack.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackTrack.js +6 -11
- package/bin/esm/internals/GroupPlaybackTrack.js.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackTrackData.d.ts +5 -6
- package/bin/esm/internals/GroupPlaybackTrackData.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/GroupPlaybackTrackData.js +8 -13
- package/bin/esm/internals/GroupPlaybackTrackData.js.map +1 -0
- package/bin/{internals → esm/internals}/GroupTransportState.d.ts +8 -9
- package/bin/esm/internals/GroupTransportState.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/GroupTransportState.js +11 -13
- package/bin/esm/internals/GroupTransportState.js.map +1 -0
- package/bin/esm/internals/PriorityTimeInterval.d.ts +33 -0
- package/bin/esm/internals/PriorityTimeInterval.d.ts.map +1 -0
- package/bin/esm/internals/PriorityTimeInterval.js +53 -0
- package/bin/esm/internals/PriorityTimeInterval.js.map +1 -0
- package/bin/esm/internals/consts.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/consts.js +1 -4
- package/bin/esm/internals/consts.js.map +1 -0
- package/bin/esm/internals/errors.d.ts.map +1 -0
- package/bin/{internals → esm/internals}/errors.js +2 -7
- package/bin/esm/internals/errors.js.map +1 -0
- package/bin/esm/internals/interfaces.d.ts +23 -0
- package/bin/esm/internals/interfaces.d.ts.map +1 -0
- package/bin/esm/internals/interfaces.js +2 -0
- package/bin/{internals → esm/internals}/interfaces.js.map +1 -1
- package/package.json +21 -12
- package/src/LiveMediaSession.ts +29 -14
- package/src/LiveMediaSessionCoordinator.ts +149 -37
- package/src/LiveMediaSessionCoordinatorSuspension.ts +2 -4
- package/src/MediaPlayerSynchronizer.ts +26 -11
- package/src/MediaSessionActionThrottler.ts +1 -1
- package/src/RepeatedActionThrottler.ts +2 -2
- package/src/VolumeManager.ts +6 -6
- package/src/index.ts +9 -9
- package/src/internals/GroupCoordinatorState.ts +19 -15
- package/src/internals/GroupPlaybackPosition.ts +9 -9
- package/src/internals/GroupPlaybackRate.ts +4 -4
- package/src/internals/GroupPlaybackTrack.ts +5 -5
- package/src/internals/GroupPlaybackTrackData.ts +5 -5
- package/src/internals/GroupTransportState.ts +8 -8
- package/src/internals/PriorityTimeInterval.ts +76 -0
- package/src/internals/interfaces.ts +15 -1
- package/tsconfig.json +64 -74
- package/.nycrc.json +0 -11
- package/bin/IMediaPlayer.d.ts.map +0 -1
- package/bin/IMediaPlayer.js.map +0 -1
- package/bin/LiveMediaSession.d.ts.map +0 -1
- package/bin/LiveMediaSession.js +0 -255
- package/bin/LiveMediaSession.js.map +0 -1
- package/bin/LiveMediaSessionCoordinator.d.ts.map +0 -1
- package/bin/LiveMediaSessionCoordinator.js +0 -472
- package/bin/LiveMediaSessionCoordinator.js.map +0 -1
- package/bin/LiveMediaSessionCoordinatorSuspension.d.ts.map +0 -1
- package/bin/LiveMediaSessionCoordinatorSuspension.js.map +0 -1
- package/bin/MediaPlayerSynchronizer.d.ts.map +0 -1
- package/bin/MediaPlayerSynchronizer.js.map +0 -1
- package/bin/MediaSessionActionThrottler.d.ts.map +0 -1
- package/bin/MediaSessionActionThrottler.js +0 -14
- package/bin/MediaSessionActionThrottler.js.map +0 -1
- package/bin/MediaSessionExtensions.d.ts.map +0 -1
- package/bin/MediaSessionExtensions.js.map +0 -1
- package/bin/RepeatedActionThrottler.d.ts.map +0 -1
- package/bin/RepeatedActionThrottler.js.map +0 -1
- package/bin/VolumeManager.d.ts.map +0 -1
- package/bin/VolumeManager.js.map +0 -1
- package/bin/index.d.ts +0 -14
- package/bin/index.d.ts.map +0 -1
- package/bin/index.js +0 -30
- package/bin/index.js.map +0 -1
- package/bin/internals/GroupCoordinatorState.d.ts.map +0 -1
- package/bin/internals/GroupCoordinatorState.js.map +0 -1
- package/bin/internals/GroupPlaybackPosition.d.ts.map +0 -1
- package/bin/internals/GroupPlaybackPosition.js.map +0 -1
- package/bin/internals/GroupPlaybackRate.d.ts.map +0 -1
- package/bin/internals/GroupPlaybackRate.js.map +0 -1
- package/bin/internals/GroupPlaybackTrack.d.ts.map +0 -1
- package/bin/internals/GroupPlaybackTrack.js.map +0 -1
- package/bin/internals/GroupPlaybackTrackData.d.ts.map +0 -1
- package/bin/internals/GroupPlaybackTrackData.js.map +0 -1
- package/bin/internals/GroupTransportState.d.ts.map +0 -1
- package/bin/internals/GroupTransportState.js.map +0 -1
- package/bin/internals/consts.d.ts.map +0 -1
- package/bin/internals/consts.js.map +0 -1
- package/bin/internals/errors.d.ts.map +0 -1
- package/bin/internals/errors.js.map +0 -1
- package/bin/internals/index.d.ts +0 -13
- package/bin/internals/index.d.ts.map +0 -1
- package/bin/internals/index.js +0 -29
- package/bin/internals/index.js.map +0 -1
- package/bin/internals/interfaces.d.ts +0 -10
- package/bin/internals/interfaces.d.ts.map +0 -1
- package/bin/internals/interfaces.js +0 -3
- package/src/internals/index.ts +0 -13
- package/tsconfig.build.json +0 -9
- package/typedoc.json +0 -10
- /package/bin/{IMediaPlayer.d.ts → esm/IMediaPlayer.d.ts} +0 -0
- /package/bin/{MediaSessionExtensions.d.ts → esm/MediaSessionExtensions.d.ts} +0 -0
- /package/bin/{internals → esm/internals}/consts.d.ts +0 -0
- /package/bin/{internals → esm/internals}/errors.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaPlayerSynchronizer.d.ts","sourceRoot":"","sources":["../../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.MediaPlayerSynchronizer = exports.MediaPlayerSynchronizerEvents = void 0;
|
|
16
|
-
const events_1 = __importDefault(require("events"));
|
|
17
|
-
const MediaSessionExtensions_1 = require("./MediaSessionExtensions");
|
|
18
|
-
const VolumeManager_1 = require("./VolumeManager");
|
|
19
|
-
const internals_1 = require("./internals");
|
|
20
|
-
const internals_2 = require("@microsoft/live-share/bin/internals");
|
|
1
|
+
import { waitUntilConnected, } from "@microsoft/live-share/internal";
|
|
2
|
+
import { MediaSessionCoordinatorEvents, } from "./MediaSessionExtensions.js";
|
|
3
|
+
import { VolumeManager } from "./VolumeManager.js";
|
|
4
|
+
import { TelemetryEvents } from "./internals/consts.js";
|
|
5
|
+
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
21
6
|
/**
|
|
22
7
|
* Events supported by `MediaPlayerSynchronizer` object.
|
|
23
8
|
*/
|
|
24
|
-
var MediaPlayerSynchronizerEvents;
|
|
9
|
+
export var MediaPlayerSynchronizerEvents;
|
|
25
10
|
(function (MediaPlayerSynchronizerEvents) {
|
|
26
11
|
/**
|
|
27
12
|
*
|
|
@@ -29,7 +14,7 @@ var MediaPlayerSynchronizerEvents;
|
|
|
29
14
|
MediaPlayerSynchronizerEvents["coordinatorstatechange"] = "coordinatorstatechange";
|
|
30
15
|
MediaPlayerSynchronizerEvents["groupaction"] = "groupaction";
|
|
31
16
|
MediaPlayerSynchronizerEvents["useraction"] = "useraction";
|
|
32
|
-
})(MediaPlayerSynchronizerEvents || (
|
|
17
|
+
})(MediaPlayerSynchronizerEvents || (MediaPlayerSynchronizerEvents = {}));
|
|
33
18
|
/**
|
|
34
19
|
* Synchronizes a local HTML Media Element with a group of remote HTML Media Elements.
|
|
35
20
|
*
|
|
@@ -39,7 +24,40 @@ var MediaPlayerSynchronizerEvents;
|
|
|
39
24
|
* to the local player. When the group session is joined the commands will be broadcast to the
|
|
40
25
|
* group in addition to being applied to the local player.
|
|
41
26
|
*/
|
|
42
|
-
class MediaPlayerSynchronizer extends
|
|
27
|
+
export class MediaPlayerSynchronizer extends TypedEventEmitter {
|
|
28
|
+
static SESSION_ACTIONS = [
|
|
29
|
+
"play",
|
|
30
|
+
"pause",
|
|
31
|
+
"seekto",
|
|
32
|
+
"settrack",
|
|
33
|
+
"ratechange",
|
|
34
|
+
"datachange",
|
|
35
|
+
"catchup",
|
|
36
|
+
"wait",
|
|
37
|
+
];
|
|
38
|
+
static PLAYER_EVENTS = [
|
|
39
|
+
"playing",
|
|
40
|
+
"pause",
|
|
41
|
+
"ratechange",
|
|
42
|
+
"timeupdate",
|
|
43
|
+
"ended",
|
|
44
|
+
"loadedmetadata",
|
|
45
|
+
"blocked",
|
|
46
|
+
];
|
|
47
|
+
_logger;
|
|
48
|
+
_player;
|
|
49
|
+
_mediaSession;
|
|
50
|
+
_runtime;
|
|
51
|
+
_volumeManager;
|
|
52
|
+
_onEnd;
|
|
53
|
+
_onPlayerEvent;
|
|
54
|
+
_seekSuspension;
|
|
55
|
+
_viewOnly = false;
|
|
56
|
+
_blockUnexpectedPlayerEvents = true;
|
|
57
|
+
_expectedPlaybackState = "none";
|
|
58
|
+
_expectedPlaybackRate = 1.0;
|
|
59
|
+
_metadata = null;
|
|
60
|
+
_trackData = null;
|
|
43
61
|
/**
|
|
44
62
|
* Creates a new `MediaElementSynchronizer` instance.
|
|
45
63
|
* @param player Media player element. This can be an HTML Media Element or any player that looks like an HTML Media Element.
|
|
@@ -48,21 +66,14 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
48
66
|
*/
|
|
49
67
|
constructor(player, mediaSession, runtime, onEnd) {
|
|
50
68
|
super();
|
|
51
|
-
this._viewOnly = false;
|
|
52
|
-
this._blockUnexpectedPlayerEvents = true;
|
|
53
|
-
this._expectedPlaybackState = "none";
|
|
54
|
-
this._expectedPlaybackRate = 1.0;
|
|
55
|
-
this._metadata = null;
|
|
56
|
-
this._trackData = null;
|
|
57
69
|
this._player = player;
|
|
58
70
|
this._mediaSession = mediaSession;
|
|
59
71
|
this._runtime = runtime;
|
|
60
72
|
this._logger = mediaSession.logger;
|
|
61
|
-
this._volumeManager = new
|
|
73
|
+
this._volumeManager = new VolumeManager(player);
|
|
62
74
|
this._onEnd = onEnd;
|
|
63
75
|
// Listen for player state requests
|
|
64
76
|
mediaSession.setRequestPlayerStateHandler(() => {
|
|
65
|
-
var _a;
|
|
66
77
|
// Find playback state
|
|
67
78
|
let playbackState;
|
|
68
79
|
const src = this._player.currentSrc || this._player.src;
|
|
@@ -89,7 +100,7 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
89
100
|
playbackState: playbackState,
|
|
90
101
|
positionState: {
|
|
91
102
|
position: this._player.currentTime,
|
|
92
|
-
playbackRate:
|
|
103
|
+
playbackRate: this._player.playbackRate ?? 1,
|
|
93
104
|
duration: this._player.duration,
|
|
94
105
|
},
|
|
95
106
|
trackData: this._trackData,
|
|
@@ -99,7 +110,7 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
99
110
|
// Listen for player events
|
|
100
111
|
this._onPlayerEvent = (evt) => {
|
|
101
112
|
if (evt.type != "timeupdate") {
|
|
102
|
-
this._logger.sendTelemetryEvent(
|
|
113
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PlayerEvent, null, {
|
|
103
114
|
type: evt.type,
|
|
104
115
|
});
|
|
105
116
|
}
|
|
@@ -116,10 +127,10 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
116
127
|
this._expectedPlaybackState != "playing") {
|
|
117
128
|
if (this._mediaSession.coordinator.canPlayPause &&
|
|
118
129
|
this._player.currentTime < 1.0) {
|
|
119
|
-
this._logger.sendTelemetryEvent(
|
|
130
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
120
131
|
.UserTappedVideoToPlay);
|
|
121
132
|
this.play().catch((err) => {
|
|
122
|
-
this._logger.sendErrorEvent(
|
|
133
|
+
this._logger.sendErrorEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
123
134
|
.UserTappedVideoToPlayError, err);
|
|
124
135
|
});
|
|
125
136
|
}
|
|
@@ -159,47 +170,46 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
159
170
|
}
|
|
160
171
|
break;
|
|
161
172
|
case "blocked":
|
|
162
|
-
this._logger.sendTelemetryEvent(
|
|
173
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
163
174
|
.PlayerBlockedOperation);
|
|
164
175
|
break;
|
|
165
176
|
}
|
|
166
177
|
};
|
|
167
178
|
// Register for coordinator state changes
|
|
168
|
-
this._mediaSession.coordinator.on(
|
|
169
|
-
this._mediaSession.coordinator.on(
|
|
179
|
+
this._mediaSession.coordinator.on(MediaSessionCoordinatorEvents.coordinatorstatechange, (evt) => this.emit(evt.type, evt));
|
|
180
|
+
this._mediaSession.coordinator.on(MediaSessionCoordinatorEvents.triggeractionignored, (evt) => {
|
|
170
181
|
this.dispatchGroupAction(evt.details, undefined);
|
|
171
182
|
});
|
|
172
183
|
// Register media session actions
|
|
173
184
|
for (const action of MediaPlayerSynchronizer.SESSION_ACTIONS) {
|
|
174
|
-
this._mediaSession.setActionHandler(action, (details) =>
|
|
175
|
-
var _a, _b, _c;
|
|
185
|
+
this._mediaSession.setActionHandler(action, async (details) => {
|
|
176
186
|
let error;
|
|
177
187
|
try {
|
|
178
188
|
switch (details.action) {
|
|
179
189
|
case "play":
|
|
180
190
|
this._expectedPlaybackState = "playing";
|
|
181
191
|
if (this._player.paused) {
|
|
182
|
-
this._logger.sendTelemetryEvent(
|
|
192
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
183
193
|
.PlayAction);
|
|
184
194
|
if (typeof details.seekTime == "number" &&
|
|
185
195
|
this._player.currentTime < 1.0) {
|
|
186
|
-
this._logger.sendTelemetryEvent(
|
|
196
|
+
this._logger.sendTelemetryEvent(TelemetryEvents
|
|
187
197
|
.MediaPlayerSynchronizer
|
|
188
198
|
.SeekingPlayerToStartPosition, null, { position: details.seekTime });
|
|
189
199
|
this._player.currentTime =
|
|
190
200
|
details.seekTime;
|
|
191
201
|
}
|
|
192
202
|
// Reference: https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play#exceptions
|
|
193
|
-
|
|
203
|
+
await this._player.play();
|
|
194
204
|
}
|
|
195
205
|
break;
|
|
196
206
|
case "pause":
|
|
197
|
-
this._logger.sendTelemetryEvent(
|
|
207
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
198
208
|
.PauseAction);
|
|
199
209
|
this._expectedPlaybackState = "paused";
|
|
200
210
|
if (typeof details.seekTime == "number" &&
|
|
201
211
|
this._player.currentTime < 1.0) {
|
|
202
|
-
this._logger.sendTelemetryEvent(
|
|
212
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
203
213
|
.SeekingPlayerToStartPosition, null, { position: details.seekTime });
|
|
204
214
|
this._player.currentTime =
|
|
205
215
|
details.seekTime;
|
|
@@ -208,19 +218,19 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
208
218
|
break;
|
|
209
219
|
case "seekto":
|
|
210
220
|
if (typeof details.seekTime == "number") {
|
|
211
|
-
this._logger.sendTelemetryEvent(
|
|
221
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
212
222
|
.SeekToAction, null, { position: details.seekTime });
|
|
213
223
|
this._player.currentTime =
|
|
214
224
|
details.seekTime;
|
|
215
225
|
}
|
|
216
226
|
break;
|
|
217
227
|
case "settrack":
|
|
218
|
-
this._logger.sendTelemetryEvent(
|
|
228
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
219
229
|
.SetTrackAction);
|
|
220
230
|
this._expectedPlaybackState = "none";
|
|
221
|
-
this._metadata =
|
|
231
|
+
this._metadata = details.metadata ?? null;
|
|
222
232
|
if (this._player.src ===
|
|
223
|
-
|
|
233
|
+
details.metadata?.trackIdentifier) {
|
|
224
234
|
// Don't set duplicate src and load again.
|
|
225
235
|
break;
|
|
226
236
|
}
|
|
@@ -229,14 +239,14 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
229
239
|
this._player.load();
|
|
230
240
|
break;
|
|
231
241
|
case "datachange":
|
|
232
|
-
this._logger.sendTelemetryEvent(
|
|
242
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
233
243
|
.DataChangeAction);
|
|
234
244
|
break;
|
|
235
245
|
case "ratechange":
|
|
236
246
|
if (!details.playbackRate) {
|
|
237
247
|
break;
|
|
238
248
|
}
|
|
239
|
-
this._logger.sendTelemetryEvent(
|
|
249
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
240
250
|
.RateChangeAction, null, { playbackRate: details.playbackRate });
|
|
241
251
|
this._expectedPlaybackRate =
|
|
242
252
|
details.playbackRate;
|
|
@@ -245,7 +255,7 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
245
255
|
break;
|
|
246
256
|
case "catchup":
|
|
247
257
|
if (typeof details.seekTime == "number") {
|
|
248
|
-
this._logger.sendTelemetryEvent(
|
|
258
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
|
|
249
259
|
.CatchupAction, null, { position: details.seekTime });
|
|
250
260
|
this.catchupPlayer(details.seekTime);
|
|
251
261
|
}
|
|
@@ -257,17 +267,18 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
257
267
|
error = err;
|
|
258
268
|
}
|
|
259
269
|
else {
|
|
260
|
-
error = new Error(
|
|
270
|
+
error = new Error(err?.message ??
|
|
271
|
+
"An unknown error occurred after processing the group session action.");
|
|
261
272
|
}
|
|
262
273
|
}
|
|
263
274
|
this.dispatchGroupAction(details, error);
|
|
264
|
-
})
|
|
275
|
+
});
|
|
265
276
|
}
|
|
266
277
|
// Subscribe to player events
|
|
267
278
|
for (const event of MediaPlayerSynchronizer.PLAYER_EVENTS) {
|
|
268
279
|
this._player.addEventListener(event, this._onPlayerEvent);
|
|
269
280
|
}
|
|
270
|
-
this._logger.sendTelemetryEvent(
|
|
281
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SynchronizationStarted);
|
|
271
282
|
}
|
|
272
283
|
/**
|
|
273
284
|
* Media player being synchronized.
|
|
@@ -376,7 +387,7 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
376
387
|
if (this._seekSuspension) {
|
|
377
388
|
throw new Error("MediaPlayerSynchronizer:beginSeek - cannot begin seek since a seek is already in progress.\nTo prevent this error, ensure you first call `endSeek()` before calling `beginSeek()` again.");
|
|
378
389
|
}
|
|
379
|
-
this._logger.sendTelemetryEvent(
|
|
390
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.BeginSeekCalled);
|
|
380
391
|
this._seekSuspension = this._mediaSession.coordinator.beginSuspension();
|
|
381
392
|
}
|
|
382
393
|
/**
|
|
@@ -393,11 +404,11 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
393
404
|
this._player.currentTime = seekTo;
|
|
394
405
|
const suspension = this._seekSuspension;
|
|
395
406
|
this._seekSuspension = undefined;
|
|
396
|
-
this._logger.sendTelemetryEvent(
|
|
407
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.EndSeekCalled, null, {
|
|
397
408
|
position: seekTo,
|
|
398
409
|
});
|
|
399
410
|
suspension.end(seekTo);
|
|
400
|
-
|
|
411
|
+
waitUntilConnected(this._runtime).then((clientId) => {
|
|
401
412
|
this.dispatchUserAction({
|
|
402
413
|
action: "seekto",
|
|
403
414
|
source: "user",
|
|
@@ -416,17 +427,15 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
416
427
|
*
|
|
417
428
|
* @returns a void promise that resolves once complete, throws if user does not have proper roles
|
|
418
429
|
*/
|
|
419
|
-
play() {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
local: true,
|
|
429
|
-
});
|
|
430
|
+
async play() {
|
|
431
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PlayCalled);
|
|
432
|
+
this._expectedPlaybackState = "playing";
|
|
433
|
+
await this._mediaSession.coordinator.play();
|
|
434
|
+
this.dispatchUserAction({
|
|
435
|
+
action: "play",
|
|
436
|
+
source: "user",
|
|
437
|
+
clientId: await waitUntilConnected(this._runtime),
|
|
438
|
+
local: true,
|
|
430
439
|
});
|
|
431
440
|
}
|
|
432
441
|
/**
|
|
@@ -438,17 +447,15 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
438
447
|
*
|
|
439
448
|
* @returns a void promise that resolves once complete, throws if user does not have proper roles
|
|
440
449
|
*/
|
|
441
|
-
pause() {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
local: true,
|
|
451
|
-
});
|
|
450
|
+
async pause() {
|
|
451
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PauseCalled);
|
|
452
|
+
this._expectedPlaybackState = "paused";
|
|
453
|
+
await this._mediaSession.coordinator.pause();
|
|
454
|
+
this.dispatchUserAction({
|
|
455
|
+
action: "pause",
|
|
456
|
+
source: "user",
|
|
457
|
+
clientId: await waitUntilConnected(this._runtime),
|
|
458
|
+
local: true,
|
|
452
459
|
});
|
|
453
460
|
}
|
|
454
461
|
/**
|
|
@@ -460,34 +467,30 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
460
467
|
*
|
|
461
468
|
* @returns a void promise that resolves once complete, throws if user does not have proper roles
|
|
462
469
|
*/
|
|
463
|
-
seekTo(time) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
local: true,
|
|
477
|
-
});
|
|
470
|
+
async seekTo(time) {
|
|
471
|
+
// Always seek player to new time.
|
|
472
|
+
// - This resolves an issue where the timeline scrubber can temporarily snap back to the original
|
|
473
|
+
// location.
|
|
474
|
+
this._player.currentTime = time;
|
|
475
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SeekToCalled, null, { position: time });
|
|
476
|
+
await this._mediaSession.coordinator.seekTo(time);
|
|
477
|
+
this.dispatchUserAction({
|
|
478
|
+
action: "seekto",
|
|
479
|
+
source: "user",
|
|
480
|
+
clientId: await waitUntilConnected(this._runtime),
|
|
481
|
+
seekTime: time,
|
|
482
|
+
local: true,
|
|
478
483
|
});
|
|
479
484
|
}
|
|
480
|
-
setPlaybackRate(playbackRate) {
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
playbackRate,
|
|
490
|
-
});
|
|
485
|
+
async setPlaybackRate(playbackRate) {
|
|
486
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.RateChangeCalled, null, { playbackRate });
|
|
487
|
+
await this._mediaSession.coordinator.setPlaybackRate(playbackRate);
|
|
488
|
+
this.dispatchUserAction({
|
|
489
|
+
action: "ratechange",
|
|
490
|
+
source: "user",
|
|
491
|
+
clientId: await waitUntilConnected(this._runtime),
|
|
492
|
+
local: true,
|
|
493
|
+
playbackRate,
|
|
491
494
|
});
|
|
492
495
|
}
|
|
493
496
|
/**
|
|
@@ -499,17 +502,15 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
499
502
|
*
|
|
500
503
|
* @returns a void promise that resolves once complete, throws if user does not have proper roles
|
|
501
504
|
*/
|
|
502
|
-
setTrack(track, waitPoints) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
local: true,
|
|
512
|
-
});
|
|
505
|
+
async setTrack(track, waitPoints) {
|
|
506
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SetTrackCalled);
|
|
507
|
+
await this._mediaSession.coordinator.setTrack(track, waitPoints);
|
|
508
|
+
this.dispatchUserAction({
|
|
509
|
+
action: "settrack",
|
|
510
|
+
source: "user",
|
|
511
|
+
clientId: await waitUntilConnected(this._runtime),
|
|
512
|
+
metadata: track,
|
|
513
|
+
local: true,
|
|
513
514
|
});
|
|
514
515
|
}
|
|
515
516
|
/**
|
|
@@ -521,18 +522,16 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
521
522
|
*
|
|
522
523
|
* @returns a void promise that resolves once complete, throws if user does not have proper roles
|
|
523
524
|
*/
|
|
524
|
-
setTrackData(data) {
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
data: data,
|
|
535
|
-
});
|
|
525
|
+
async setTrackData(data) {
|
|
526
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SetTrackDataCalled);
|
|
527
|
+
this._trackData = data;
|
|
528
|
+
await this._mediaSession.coordinator.setTrackData(data);
|
|
529
|
+
this.dispatchUserAction({
|
|
530
|
+
action: "datachange",
|
|
531
|
+
source: "user",
|
|
532
|
+
clientId: await waitUntilConnected(this._runtime),
|
|
533
|
+
local: true,
|
|
534
|
+
data: data,
|
|
536
535
|
});
|
|
537
536
|
}
|
|
538
537
|
dispatchGroupAction(details, error) {
|
|
@@ -548,30 +547,8 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
548
547
|
details: details,
|
|
549
548
|
});
|
|
550
549
|
}
|
|
551
|
-
catchupPlayer(time) {
|
|
552
|
-
|
|
553
|
-
this._player.currentTime = time;
|
|
554
|
-
});
|
|
550
|
+
async catchupPlayer(time) {
|
|
551
|
+
this._player.currentTime = time;
|
|
555
552
|
}
|
|
556
553
|
}
|
|
557
|
-
exports.MediaPlayerSynchronizer = MediaPlayerSynchronizer;
|
|
558
|
-
MediaPlayerSynchronizer.SESSION_ACTIONS = [
|
|
559
|
-
"play",
|
|
560
|
-
"pause",
|
|
561
|
-
"seekto",
|
|
562
|
-
"settrack",
|
|
563
|
-
"ratechange",
|
|
564
|
-
"datachange",
|
|
565
|
-
"catchup",
|
|
566
|
-
"wait",
|
|
567
|
-
];
|
|
568
|
-
MediaPlayerSynchronizer.PLAYER_EVENTS = [
|
|
569
|
-
"playing",
|
|
570
|
-
"pause",
|
|
571
|
-
"ratechange",
|
|
572
|
-
"timeupdate",
|
|
573
|
-
"ended",
|
|
574
|
-
"loadedmetadata",
|
|
575
|
-
"blocked",
|
|
576
|
-
];
|
|
577
554
|
//# sourceMappingURL=MediaPlayerSynchronizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaPlayerSynchronizer.js","sourceRoot":"","sources":["../../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
4
|
*/
|
|
5
|
-
import { ExtendedMediaSessionActionDetails, ExtendedMediaSessionActionHandler } from "./MediaSessionExtensions";
|
|
5
|
+
import { ExtendedMediaSessionActionDetails, ExtendedMediaSessionActionHandler } from "./MediaSessionExtensions.js";
|
|
6
6
|
/**
|
|
7
7
|
* Base class for action throttlers.
|
|
8
8
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaSessionActionThrottler.d.ts","sourceRoot":"","sources":["../../src/MediaSessionActionThrottler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,iCAAiC,EACjC,iCAAiC,EACpC,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,8BAAsB,2BAA2B;aAC7B,SAAS,CACrB,OAAO,EAAE,yBAAyB,GAAG,iCAAiC,EACtE,OAAO,CAAC,EAAE,yBAAyB,GAAG,iCAAiC,GACxE,IAAI;CACV"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the Microsoft Live Share SDK License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Base class for action throttlers.
|
|
7
|
+
*/
|
|
8
|
+
export class MediaSessionActionThrottler {
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=MediaSessionActionThrottler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaSessionActionThrottler.js","sourceRoot":"","sources":["../../src/MediaSessionActionThrottler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,OAAgB,2BAA2B;CAKhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaSessionExtensions.d.ts","sourceRoot":"","sources":["../../src/MediaSessionExtensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAC9C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC;;;;;;;;OAQG;IACH,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,oBAAY,6BAA6B;IACrC;;OAEG;IACH,sBAAsB,2BAA2B;IACjD;;OAEG;IACH,aAAa,kBAAkB;IAC/B;;OAEG;IACH,oBAAoB,yBAAyB;CAChD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAChC,kBAAkB,GAClB,UAAU,GACV,YAAY,GACZ,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,CAAC;AAEhB;;;;;;GAMG;AACH,MAAM,MAAM,iCAAiC,GACvC,yBAAyB,GACzB,WAAW,GACX,SAAS,GACT,OAAO,CAAC;AAEd;;;;;;GAMG;AACH,MAAM,MAAM,gCAAgC,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IACxD;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gCAAgC,GAAG,oBAAoB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,WAAW,iCAAiC;IAC9C;;OAEG;IACH,MAAM,EAAE,0BAA0B,CAAC;IACnC;;;;;;OAMG;IACH,MAAM,EAAE,gCAAgC,CAAC;IACzC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACxC;;OAEG;IACH,UAAU,CAAC,EAAE,iCAAiC,GAAG,IAAI,CAAC;IACtD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAAC;IAEvD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAC9C,CAAC,OAAO,EAAE,iCAAiC,GAAG,IAAI,CAAC;CACtD"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
5
4
|
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.MediaSessionCoordinatorEvents = void 0;
|
|
8
5
|
/**
|
|
9
6
|
* Event types of `LiveMediaSessionCoordinator`.
|
|
10
7
|
*/
|
|
11
|
-
var MediaSessionCoordinatorEvents;
|
|
8
|
+
export var MediaSessionCoordinatorEvents;
|
|
12
9
|
(function (MediaSessionCoordinatorEvents) {
|
|
13
10
|
/**
|
|
14
11
|
* Event emitted after the coordinator's state changed
|
|
@@ -22,5 +19,5 @@ var MediaSessionCoordinatorEvents;
|
|
|
22
19
|
* Event emitted when an action would have been triggered, but a suspension is active for the local client.
|
|
23
20
|
*/
|
|
24
21
|
MediaSessionCoordinatorEvents["triggeractionignored"] = "triggeractionignored";
|
|
25
|
-
})(MediaSessionCoordinatorEvents || (
|
|
22
|
+
})(MediaSessionCoordinatorEvents || (MediaSessionCoordinatorEvents = {}));
|
|
26
23
|
//# sourceMappingURL=MediaSessionExtensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaSessionExtensions.js","sourceRoot":"","sources":["../../src/MediaSessionExtensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8CH;;GAEG;AACH,MAAM,CAAN,IAAY,6BAaX;AAbD,WAAY,6BAA6B;IACrC;;OAEG;IACH,kFAAiD,CAAA;IACjD;;OAEG;IACH,gEAA+B,CAAA;IAC/B;;OAEG;IACH,8EAA6C,CAAA;AACjD,CAAC,EAbW,6BAA6B,KAA7B,6BAA6B,QAaxC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
4
|
*/
|
|
5
|
-
import { MediaSessionActionThrottler } from "./MediaSessionActionThrottler";
|
|
6
|
-
import { ExtendedMediaSessionActionDetails } from "./MediaSessionExtensions";
|
|
5
|
+
import { MediaSessionActionThrottler } from "./MediaSessionActionThrottler.js";
|
|
6
|
+
import { ExtendedMediaSessionActionDetails } from "./MediaSessionExtensions.js";
|
|
7
7
|
/**
|
|
8
8
|
* A Throttler that passes through all actions but will only let an action be repeated once every 2 seconds.
|
|
9
9
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepeatedActionThrottler.d.ts","sourceRoot":"","sources":["../../src/RepeatedActionThrottler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACH,iCAAiC,EAEpC,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,2BAA2B;IACpE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IACF,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,cAAc,CAAC,KAAK,EAAE,MAAM,EAEtC;IAEM,SAAS,CACZ,OAAO,EAAE,yBAAyB,GAAG,iCAAiC,EACtE,OAAO,CAAC,EAAE,yBAAyB,GACpC,IAAI;IA4BP,OAAO,CAAC,YAAY;CAUvB"}
|