sonatica 1.0.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.
Files changed (82) hide show
  1. package/@dist/classes/Database.d.ts +17 -0
  2. package/@dist/classes/Database.d.ts.map +1 -0
  3. package/@dist/classes/Database.js +108 -0
  4. package/@dist/classes/Database.js.map +1 -0
  5. package/@dist/classes/Filters.d.ts +85 -0
  6. package/@dist/classes/Filters.d.ts.map +1 -0
  7. package/@dist/classes/Filters.js +188 -0
  8. package/@dist/classes/Filters.js.map +1 -0
  9. package/@dist/classes/Node.d.ts +41 -0
  10. package/@dist/classes/Node.d.ts.map +1 -0
  11. package/@dist/classes/Node.js +357 -0
  12. package/@dist/classes/Node.js.map +1 -0
  13. package/@dist/classes/Player.d.ts +48 -0
  14. package/@dist/classes/Player.d.ts.map +1 -0
  15. package/@dist/classes/Player.js +299 -0
  16. package/@dist/classes/Player.js.map +1 -0
  17. package/@dist/classes/Queue.d.ts +14 -0
  18. package/@dist/classes/Queue.d.ts.map +1 -0
  19. package/@dist/classes/Queue.js +79 -0
  20. package/@dist/classes/Queue.js.map +1 -0
  21. package/@dist/classes/Rest.d.ts +9 -0
  22. package/@dist/classes/Rest.d.ts.map +1 -0
  23. package/@dist/classes/Rest.js +44 -0
  24. package/@dist/classes/Rest.js.map +1 -0
  25. package/@dist/classes/Sonatica.d.ts +26 -0
  26. package/@dist/classes/Sonatica.d.ts.map +1 -0
  27. package/@dist/classes/Sonatica.js +184 -0
  28. package/@dist/classes/Sonatica.js.map +1 -0
  29. package/@dist/classes/Utils.d.ts +4 -0
  30. package/@dist/classes/Utils.d.ts.map +1 -0
  31. package/@dist/classes/Utils.js +29 -0
  32. package/@dist/classes/Utils.js.map +1 -0
  33. package/@dist/index.d.ts +18 -0
  34. package/@dist/index.d.ts.map +1 -0
  35. package/@dist/index.js +34 -0
  36. package/@dist/index.js.map +1 -0
  37. package/@dist/sorter/leastLoadNode.d.ts +5 -0
  38. package/@dist/sorter/leastLoadNode.d.ts.map +1 -0
  39. package/@dist/sorter/leastLoadNode.js +13 -0
  40. package/@dist/sorter/leastLoadNode.js.map +1 -0
  41. package/@dist/sorter/leastUsedNodes.d.ts +5 -0
  42. package/@dist/sorter/leastUsedNodes.d.ts.map +1 -0
  43. package/@dist/sorter/leastUsedNodes.js +9 -0
  44. package/@dist/sorter/leastUsedNodes.js.map +1 -0
  45. package/@dist/types/Filters.d.ts +5 -0
  46. package/@dist/types/Filters.d.ts.map +1 -0
  47. package/@dist/types/Filters.js +3 -0
  48. package/@dist/types/Filters.js.map +1 -0
  49. package/@dist/types/Node.d.ts +37 -0
  50. package/@dist/types/Node.d.ts.map +1 -0
  51. package/@dist/types/Node.js +3 -0
  52. package/@dist/types/Node.js.map +1 -0
  53. package/@dist/types/Op.d.ts +65 -0
  54. package/@dist/types/Op.d.ts.map +1 -0
  55. package/@dist/types/Op.js +3 -0
  56. package/@dist/types/Op.js.map +1 -0
  57. package/@dist/types/Player.d.ts +39 -0
  58. package/@dist/types/Player.d.ts.map +1 -0
  59. package/@dist/types/Player.js +10 -0
  60. package/@dist/types/Player.js.map +1 -0
  61. package/@dist/types/Rest.d.ts +82 -0
  62. package/@dist/types/Rest.d.ts.map +1 -0
  63. package/@dist/types/Rest.js +3 -0
  64. package/@dist/types/Rest.js.map +1 -0
  65. package/@dist/types/Sonatica.d.ts +49 -0
  66. package/@dist/types/Sonatica.d.ts.map +1 -0
  67. package/@dist/types/Sonatica.js +3 -0
  68. package/@dist/types/Sonatica.js.map +1 -0
  69. package/@dist/utils/equlizers.d.ts +7 -0
  70. package/@dist/utils/equlizers.d.ts.map +1 -0
  71. package/@dist/utils/equlizers.js +85 -0
  72. package/@dist/utils/equlizers.js.map +1 -0
  73. package/@dist/utils/sources.d.ts +10 -0
  74. package/@dist/utils/sources.d.ts.map +1 -0
  75. package/@dist/utils/sources.js +14 -0
  76. package/@dist/utils/sources.js.map +1 -0
  77. package/@dist/utils/utils.d.ts +17 -0
  78. package/@dist/utils/utils.d.ts.map +1 -0
  79. package/@dist/utils/utils.js +119 -0
  80. package/@dist/utils/utils.js.map +1 -0
  81. package/README.md +30 -0
  82. package/package.json +43 -0
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Node = void 0;
13
+ const ws_1 = require("ws");
14
+ const Rest_1 = require("./Rest");
15
+ const Utils_1 = require("./Utils");
16
+ const Player_1 = require("../types/Player");
17
+ class Node {
18
+ get connected() {
19
+ if (!this.ws)
20
+ return false;
21
+ return this.ws.readyState === 1;
22
+ }
23
+ get address() {
24
+ return `${this.options.host}:${this.options.port}`;
25
+ }
26
+ static init(sonatica) {
27
+ this._sonatica = sonatica;
28
+ }
29
+ constructor(options) {
30
+ this.options = options;
31
+ this.isEnabled = true;
32
+ this.stats = {
33
+ players: 0,
34
+ playingPlayers: 0,
35
+ uptime: 0,
36
+ cpu: {
37
+ cores: 0,
38
+ lavalinkLoad: 0,
39
+ systemLoad: 0,
40
+ },
41
+ frameStats: {
42
+ deficit: 0,
43
+ nulled: 0,
44
+ sent: 0,
45
+ },
46
+ memory: {
47
+ allocated: 0,
48
+ free: 0,
49
+ reservable: 0,
50
+ used: 0,
51
+ },
52
+ };
53
+ this.reconnectAttempts = 1;
54
+ this.lastestOp = 0;
55
+ if (!this.sonatica)
56
+ this.sonatica = Node._sonatica;
57
+ if (!this.sonatica)
58
+ throw new Error("Sonatica is not initialized.");
59
+ if (this.sonatica.nodes.has(options.identifier))
60
+ return this.sonatica.nodes.get(options.identifier);
61
+ this.options = Object.assign({ identifier: "localhost", host: "localhost", password: "youshallnotpass", playback: true, port: 2333, retryAmount: Infinity, search: true, requestTimeout: 5000, retryDelay: 2500, secure: false }, options);
62
+ if (this.options.port === 443)
63
+ this.options.secure = true;
64
+ if (!this.options.identifier)
65
+ this.options.identifier = this.options.host;
66
+ this.sonatica.nodes.set(this.options.identifier, this);
67
+ this.sonatica.emit("nodeCreate", this);
68
+ this.rest = new Rest_1.Rest(this);
69
+ }
70
+ connect() {
71
+ var _a;
72
+ if (this.connected)
73
+ return;
74
+ const headers = Object.assign({
75
+ Authorization: this.options.password,
76
+ "User-Id": this.sonatica.options.clientId,
77
+ "Client-Name": this.sonatica.options.clientName,
78
+ });
79
+ const sessionId = this.sonatica.db.get(`sessions.${(_a = this.options.identifier) !== null && _a !== void 0 ? _a : this.options.host.replace(/\./g, "-")}`);
80
+ if (this.sonatica.options.autoResume && sessionId)
81
+ headers["Session-Id"] = sessionId;
82
+ this.ws = new ws_1.WebSocket(`ws${this.options.secure ? "s" : ""}://${this.address}/v4/websocket`, { headers });
83
+ this.ws.on("open", this.open.bind(this));
84
+ this.ws.on("close", this.close.bind(this));
85
+ this.ws.on("message", this.message.bind(this));
86
+ this.ws.on("error", this.error.bind(this));
87
+ }
88
+ open() {
89
+ if (this.reconnectTimeout)
90
+ clearTimeout(this.reconnectTimeout);
91
+ this.sonatica.emit("nodeConnect", this);
92
+ }
93
+ close(code, reason) {
94
+ this.sonatica.emit("nodeDisconnect", this, { code, reason });
95
+ if (code !== 1000 || reason !== "destroy")
96
+ this.reconnect();
97
+ }
98
+ error(error) {
99
+ if (!error)
100
+ return;
101
+ this.sonatica.emit("nodeError", this, error);
102
+ }
103
+ message(d) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ var _a;
106
+ if (Array.isArray(d))
107
+ d = Buffer.concat(d);
108
+ else if (d instanceof ArrayBuffer)
109
+ d = Buffer.from(d);
110
+ const payload = JSON.parse(d.toString());
111
+ if (!payload.op)
112
+ return;
113
+ this.sonatica.emit("nodeRaw", payload);
114
+ this.lastestOp = Date.now();
115
+ switch (payload.op) {
116
+ case "stats":
117
+ {
118
+ delete payload.op;
119
+ this.stats = payload;
120
+ }
121
+ break;
122
+ case "playerUpdate":
123
+ {
124
+ const player = this.sonatica.players.get(payload.guildId);
125
+ if (player)
126
+ player.position = payload.state.position || 0;
127
+ }
128
+ break;
129
+ case "ready":
130
+ {
131
+ this.sessionId = payload.sessionId;
132
+ const identifier = (_a = this.options.identifier) !== null && _a !== void 0 ? _a : this.options.host.replace(/\./g, "-");
133
+ this.sonatica.db.set(`sessions.${identifier}`, this.sessionId);
134
+ if (!this.sonatica.options.autoResume)
135
+ return;
136
+ yield this.rest.request("PATCH", `/sessions/${this.sessionId}`, { resuming: true, timeout: 360 });
137
+ const resumedPlayers = yield this.rest.request("GET", `/sessions/${this.sessionId}/players`);
138
+ for (const resumedPlayer of resumedPlayers) {
139
+ if (this.sonatica.players.get(resumedPlayer.guildId))
140
+ return;
141
+ const previousPlayer = this.sonatica.db.get(`players.${resumedPlayer.guildId}`) || Object.assign({});
142
+ if (!previousPlayer.guild || !previousPlayer.voiceChannel || !previousPlayer.textChannel)
143
+ return this.sonatica.db.delete(`players.${resumedPlayer.guildId}`);
144
+ const player = this.sonatica.create({
145
+ guild: previousPlayer.guild,
146
+ textChannel: previousPlayer.textChannel,
147
+ voiceChannel: previousPlayer.voiceChannel,
148
+ volume: previousPlayer.volume,
149
+ selfDeafen: previousPlayer.selfDeafen,
150
+ selfMute: previousPlayer.selfMute,
151
+ data: previousPlayer.data,
152
+ node: this.options.identifier,
153
+ });
154
+ if (!previousPlayer.current)
155
+ return;
156
+ player.state = "RESUMING";
157
+ let decoded = yield this.rest.request("POST", "/decodetracks", JSON.stringify(previousPlayer.queue.map((t) => t).concat(previousPlayer.current)));
158
+ player.queue.add((0, Utils_1.buildTrack)(decoded.find((t) => t.encoded === previousPlayer.current)));
159
+ if (previousPlayer.queue.length > 0)
160
+ player.queue.add(decoded.filter((t) => t.encoded !== previousPlayer.current).map((t) => (0, Utils_1.buildTrack)(t)));
161
+ player.setRepeat(previousPlayer.repeatMode);
162
+ player.filters.distortion = resumedPlayer.filters.distortion;
163
+ player.filters.equalizer = resumedPlayer.filters.equalizer;
164
+ player.filters.karaoke = resumedPlayer.filters.karaoke;
165
+ player.filters.rotation = resumedPlayer.filters.rotation;
166
+ player.filters.timescale = resumedPlayer.filters.timescale;
167
+ player.filters.vibrato = resumedPlayer.filters.vibrato;
168
+ player.filters.volume = resumedPlayer.filters.volume;
169
+ player.volume = resumedPlayer.volume;
170
+ player.position = resumedPlayer.state.position;
171
+ player.connect();
172
+ yield player.play();
173
+ }
174
+ }
175
+ break;
176
+ }
177
+ });
178
+ }
179
+ handleOp(payload) {
180
+ if (!payload.guildId)
181
+ return;
182
+ const player = this.sonatica.players.get(payload.guildId);
183
+ if (!player)
184
+ return;
185
+ const track = player.queue.current;
186
+ switch (payload.type) {
187
+ case "TrackStartEvent":
188
+ {
189
+ this.trackStart(player, track, payload);
190
+ }
191
+ break;
192
+ case "TrackStuckEvent":
193
+ {
194
+ this.trackStuck(player, track, payload);
195
+ }
196
+ break;
197
+ case "TrackExceptionEvent":
198
+ {
199
+ this.trackError(player, track, payload);
200
+ }
201
+ break;
202
+ case "WebSocketClosedEvent":
203
+ {
204
+ this.socketClosed(player, payload);
205
+ }
206
+ break;
207
+ case "TrackEndEvent":
208
+ {
209
+ player.save();
210
+ this.trackEnd(player, track, payload);
211
+ }
212
+ break;
213
+ }
214
+ }
215
+ trackStart(player, track, payload) {
216
+ player.playing = true;
217
+ player.paused = false;
218
+ this.sonatica.emit("trackStart", player, track, payload);
219
+ }
220
+ trackEnd(player, track, payload) {
221
+ if (player.state === "MOVING" || player.state === "RESUMING")
222
+ return;
223
+ const { reason } = payload;
224
+ const { queue, repeatMode } = player;
225
+ const { autoPlay } = this.sonatica.options;
226
+ switch (reason) {
227
+ case "loadFailed":
228
+ case "cleanup": {
229
+ queue.previous = queue.current;
230
+ queue.current = queue.shift();
231
+ if (!queue.current)
232
+ return this.queueEnd(player, track, payload);
233
+ this.sonatica.emit("trackEnd", player, track, payload);
234
+ if (autoPlay)
235
+ player.play();
236
+ break;
237
+ }
238
+ case "replaced": {
239
+ this.sonatica.emit("trackEnd", player, track, payload);
240
+ queue.previous = queue.current;
241
+ break;
242
+ }
243
+ default: {
244
+ if (track && (repeatMode === Player_1.RepeatMode.TRACK || repeatMode === Player_1.RepeatMode.QUEUE)) {
245
+ if (repeatMode === Player_1.RepeatMode.TRACK) {
246
+ queue.unshift(queue.current);
247
+ }
248
+ else if (repeatMode === Player_1.RepeatMode.QUEUE) {
249
+ queue.add(queue.current);
250
+ }
251
+ queue.previous = queue.current;
252
+ queue.current = queue.shift();
253
+ this.sonatica.emit("trackEnd", player, track, payload);
254
+ if (reason === "stopped" && !(queue.current = queue.shift()))
255
+ return this.queueEnd(player, track, payload);
256
+ if (autoPlay)
257
+ player.play();
258
+ }
259
+ else if (queue.length) {
260
+ queue.previous = queue.current;
261
+ queue.current = queue.shift();
262
+ this.sonatica.emit("trackEnd", player, track, payload);
263
+ if (autoPlay)
264
+ player.play();
265
+ }
266
+ else {
267
+ this.queueEnd(player, track, payload);
268
+ }
269
+ break;
270
+ }
271
+ }
272
+ }
273
+ trackStuck(player, track, payload) {
274
+ this.sonatica.emit("trackStuck", player, track, payload);
275
+ }
276
+ trackError(player, track, payload) {
277
+ this.sonatica.emit("trackError", player, track, payload);
278
+ }
279
+ socketClosed(player, payload) {
280
+ this.sonatica.emit("socketClosed", player, payload);
281
+ }
282
+ queueEnd(player, track, payload) {
283
+ return __awaiter(this, void 0, void 0, function* () {
284
+ player.queue.current = null;
285
+ player.playing = player.isAutoplay;
286
+ if (player.isAutoplay)
287
+ return yield this.handleAutoplay(player, track);
288
+ this.sonatica.emit("queueEnd", player, track, payload);
289
+ });
290
+ }
291
+ reconnect() {
292
+ this.reconnectTimeout = setTimeout(() => {
293
+ var _a;
294
+ if (this.reconnectAttempts >= this.options.retryAmount) {
295
+ const error = new Error(`Unable to connect after ${this.options.retryAmount} attempts.`);
296
+ this.sonatica.emit("nodeError", this, error);
297
+ return this.destroy();
298
+ }
299
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
300
+ this.ws = null;
301
+ this.sonatica.emit("nodeReconnect", this);
302
+ this.connect();
303
+ this.reconnectAttempts++;
304
+ }, this.options.retryDelay);
305
+ }
306
+ setEnabled(enabled) {
307
+ this.isEnabled = enabled;
308
+ }
309
+ destroy() {
310
+ var _a, _b;
311
+ const players = this.sonatica.players.filter((p) => p.node == this);
312
+ if (players.size) {
313
+ players.map((p) => {
314
+ if (this.sonatica.options.autoMove)
315
+ p.moveNode();
316
+ else
317
+ p.destroy();
318
+ });
319
+ }
320
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close(1000, "destroy");
321
+ (_b = this.ws) === null || _b === void 0 ? void 0 : _b.removeAllListeners();
322
+ this.ws = null;
323
+ this.reconnectAttempts = 1;
324
+ clearTimeout(this.reconnectTimeout);
325
+ this.sonatica.emit("nodeDestroy", this);
326
+ this.sonatica.destroyNode(this.options.identifier);
327
+ }
328
+ handleAutoplay(player, track) {
329
+ return __awaiter(this, void 0, void 0, function* () {
330
+ const base = "https://www.youtube.com/watch?v=H58vbez_m4E";
331
+ const getMixUrl = (identifier) => `https://www.youtube.com/watch?v=${identifier}&list=RD${identifier}`;
332
+ const findMix = () => __awaiter(this, void 0, void 0, function* () {
333
+ let mixUrl;
334
+ let response;
335
+ let base_response;
336
+ const previousTrack = player.queue.previous || track;
337
+ base_response = yield player.search({
338
+ query: `${previousTrack.title} - ${previousTrack.author}`,
339
+ source: "youtube",
340
+ }, previousTrack.requester);
341
+ mixUrl = getMixUrl(previousTrack.sourceName === "youtube" ? previousTrack.identifier : base_response.tracks[0].identifier);
342
+ response = yield player.search({ query: mixUrl }, previousTrack.requester);
343
+ if (response.loadType === "error" || response.loadType === "empty") {
344
+ base_response = yield player.search({ query: base }, previousTrack.requester);
345
+ mixUrl = getMixUrl(base_response.tracks[0].identifier);
346
+ response = yield player.search({ query: mixUrl }, previousTrack.requester);
347
+ }
348
+ return response;
349
+ });
350
+ const response = yield findMix();
351
+ player.queue.add(response.playlist.tracks.filter((t) => t.uri !== track.uri)[Math.floor(Math.random() * response.playlist.tracks.length - 1)]);
352
+ player.play();
353
+ });
354
+ }
355
+ }
356
+ exports.Node = Node;
357
+ //# sourceMappingURL=Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../src/classes/Node.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2BAA+B;AAG/B,iCAA8B;AAG9B,mCAAqC;AAErC,4CAAqE;AAErE,MAAa,IAAI;IAiChB,IAAW,SAAS;QACnB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,QAAkB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,YAAmB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QA5ChC,cAAS,GAAY,IAAI,CAAC;QAK1B,UAAK,GAAc;YACzB,OAAO,EAAE,CAAC;YACV,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,CAAC;YACT,GAAG,EAAE;gBACJ,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,CAAC;aACb;YACD,UAAU,EAAE;gBACX,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,CAAC;aACP;YACD,MAAM,EAAE;gBACP,SAAS,EAAE,CAAC;gBACZ,IAAI,EAAE,CAAC;gBACP,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,CAAC;aACP;SACD,CAAC;QAGM,sBAAiB,GAAG,CAAC,CAAC;QACtB,cAAS,GAAW,CAAC,CAAC;QAgB7B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEpG,IAAI,CAAC,OAAO,mBACX,UAAU,EAAE,WAAW,EACvB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,IAAI,EACpB,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,KAAK,IACV,OAAO,CACV,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAE1E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,OAAO;;QACb,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YACpC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;YACzC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;SAC/C,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,mCAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACvH,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;QAErF,IAAI,CAAC,EAAE,GAAG,IAAI,cAAS,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAES,IAAI;QACb,IAAI,IAAI,CAAC,gBAAgB;YAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAES,KAAK,CAAC,IAAY,EAAE,MAAc;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7D,CAAC;IAES,KAAK,CAAC,KAAY;QAC3B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEe,OAAO,CAAC,CAAkB;;;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACtC,IAAI,CAAC,YAAY,WAAW;gBAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAQ,CAAC;YAEhD,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO;YAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE5B,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC;gBACpB,KAAK,OAAO;oBACX,CAAC;wBACA,OAAO,OAAO,CAAC,EAAE,CAAC;wBAClB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;oBACtB,CAAC;oBACD,MAAM;gBACP,KAAK,cAAc;oBAClB,CAAC;wBACA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC1D,IAAI,MAAM;4BAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;oBAC3D,CAAC;oBACD,MAAM;gBACP,KAAK,OAAO;oBACX,CAAC;wBACA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;wBAEnC,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,mCAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACpF,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;wBAE/D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;4BAAE,OAAO;wBAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;wBAElG,MAAM,cAAc,GAAiB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;wBAC3G,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;4BAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;gCAAE,OAAO;4BAC7D,MAAM,cAAc,GAAmB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BAErH,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,WAAW;gCAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;4BAC7J,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gCACnC,KAAK,EAAE,cAAc,CAAC,KAAK;gCAC3B,WAAW,EAAE,cAAc,CAAC,WAAW;gCACvC,YAAY,EAAE,cAAc,CAAC,YAAY;gCACzC,MAAM,EAAE,cAAc,CAAC,MAAM;gCAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;gCACrC,QAAQ,EAAE,cAAc,CAAC,QAAQ;gCACjC,IAAI,EAAE,cAAc,CAAC,IAAI;gCACzB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;6BAC7B,CAAC,CAAC;4BAEH,IAAI,CAAC,cAAc,CAAC,OAAO;gCAAE,OAAO;4BACpC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;4BAE1B,IAAI,OAAO,GAAgB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BAC/J,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,kBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BACxF,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gCAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAE7I,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;4BAC5C,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;4BAC7D,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;4BAC3D,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;4BACvD,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;4BACzD,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;4BAC3D,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;4BACvD,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;4BACrD,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;4BACrC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;4BAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;4BACjB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBACrB,CAAC;oBACF,CAAC;oBACD,MAAM;YACR,CAAC;QACF,CAAC;KAAA;IAES,QAAQ,CAAC,OAAgB;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,iBAAiB;gBACrB,CAAC;oBACA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAS,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM;YACP,KAAK,iBAAiB;gBACrB,CAAC;oBACA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAS,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM;YACP,KAAK,qBAAqB;gBACzB,CAAC;oBACA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAS,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM;YACP,KAAK,sBAAsB;gBAC1B,CAAC;oBACA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM;YACP,KAAK,eAAe;gBACnB,CAAC;oBACA,MAAM,CAAC,IAAI,EAAE,CAAC;oBACd,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAS,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM;QACR,CAAC;IACF,CAAC;IAES,UAAU,CAAC,MAAc,EAAE,KAAY,EAAE,OAAwB;QAC1E,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAES,QAAQ,CAAC,MAAc,EAAE,KAAY,EAAE,OAAsB;QACtE,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU;YAAE,OAAO;QAErE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAE3C,QAAQ,MAAM,EAAE,CAAC;YAChB,KAAK,YAAY,CAAC;YAClB,KAAK,SAAS,CAAC,CAAC,CAAC;gBAChB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEjE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACvD,IAAI,QAAQ;oBAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM;YACP,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACvD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,MAAM;YACP,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACT,IAAI,KAAK,IAAI,CAAC,UAAU,KAAK,mBAAU,CAAC,KAAK,IAAI,UAAU,KAAK,mBAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnF,IAAI,UAAU,KAAK,mBAAU,CAAC,KAAK,EAAE,CAAC;wBACrC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;yBAAM,IAAI,UAAU,KAAK,mBAAU,CAAC,KAAK,EAAE,CAAC;wBAC5C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC1B,CAAC;oBAED,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;oBAE9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBACvD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;wBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBAE3G,IAAI,QAAQ;wBAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC7B,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACzB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBACvD,IAAI,QAAQ;wBAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAES,UAAU,CAAC,MAAc,EAAE,KAAY,EAAE,OAAwB;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAES,UAAU,CAAC,MAAc,EAAE,KAA8B,EAAE,OAA4B;QAChG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAES,YAAY,CAAC,MAAc,EAAE,OAA6B;QACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAEe,QAAQ,CAAC,MAAc,EAAE,KAAY,EAAE,OAAsB;;YAC5E,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YAC5B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;YAEnC,IAAI,MAAM,CAAC,UAAU;gBAAE,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEvE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;KAAA;IAEO,SAAS;QAChB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;;YACvC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,CAAC;gBACzF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YAED,MAAA,IAAI,CAAC,EAAE,0CAAE,kBAAkB,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAEM,UAAU,CAAC,OAAgB;QACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,OAAO;;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;oBAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;;oBAC5C,CAAC,CAAC,OAAO,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChC,MAAA,IAAI,CAAC,EAAE,0CAAE,kBAAkB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAEa,cAAc,CAAC,MAAc,EAAE,KAA8B;;YAC1E,MAAM,IAAI,GAAG,6CAA6C,CAAC;YAC3D,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,mCAAmC,UAAU,WAAW,UAAU,EAAE,CAAC;YAC/G,MAAM,OAAO,GAAG,GAAgC,EAAE;gBACjD,IAAI,MAAc,CAAC;gBACnB,IAAI,QAAsB,CAAC;gBAC3B,IAAI,aAA2B,CAAC;gBAEhC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;gBAErD,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAClC;oBACC,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,MAAM,aAAa,CAAC,MAAM,EAAE;oBACzD,MAAM,EAAE,SAAS;iBACjB,EACD,aAAa,CAAC,SAAS,CACvB,CAAC;gBAEF,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,UAAW,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,UAAW,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAE7H,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAE3E,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACpE,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;oBAC9E,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;oBACvD,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC5E,CAAC;gBAED,OAAO,QAAQ,CAAC;YACjB,CAAC,CAAA,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjJ,MAAM,CAAC,IAAI,EAAE,CAAC;QACf,CAAC;KAAA;CACD;AArXD,oBAqXC"}
@@ -0,0 +1,48 @@
1
+ import { SearchQuery, VoiceState } from "../types/Sonatica";
2
+ import { PlayerOptions, RepeatMode, State, Track, UnresolvedTrack } from "../types/Player";
3
+ import { Filters } from "./Filters";
4
+ import { Sonatica } from "./Sonatica";
5
+ import { Node } from "./Node";
6
+ import { Queue } from "./Queue";
7
+ export declare class Player {
8
+ options: PlayerOptions;
9
+ readonly queue: Queue;
10
+ filters: Filters;
11
+ repeatMode: RepeatMode;
12
+ position: number;
13
+ playing: boolean;
14
+ paused: boolean;
15
+ volume: number;
16
+ isAutoplay: boolean;
17
+ node: Node;
18
+ guild: string;
19
+ voiceChannel: string | null;
20
+ textChannel: string | null;
21
+ state: State;
22
+ bands: number[];
23
+ voiceState: VoiceState;
24
+ sonatica: Sonatica;
25
+ private static _sonatica;
26
+ readonly data: Record<string, unknown>;
27
+ set(key: string, value: unknown): void;
28
+ get<T>(key: string): T;
29
+ static init(sonatica: Sonatica): void;
30
+ constructor(options: PlayerOptions);
31
+ search(query: SearchQuery, requester?: unknown): Promise<import("..").SearchResult>;
32
+ connect(): this;
33
+ disconnect(): this;
34
+ destroy(disconnect?: boolean): void;
35
+ setVoiceChannel(channel: string): this;
36
+ setTextChannel(channel: string): this;
37
+ setVolume(volume: number): Promise<this>;
38
+ setAutoplay(state: boolean): this;
39
+ setRepeat(mode: RepeatMode): this;
40
+ moveNode(node?: string): Promise<this>;
41
+ play(track?: Track | UnresolvedTrack): Promise<void>;
42
+ stop(amount?: number): Promise<this>;
43
+ pause(paused: boolean): Promise<this>;
44
+ previous(): Promise<this>;
45
+ seek(position: number): Promise<this>;
46
+ save(): void;
47
+ }
48
+ //# sourceMappingURL=Player.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/classes/Player.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,qBAAa,MAAM;IAgCC,OAAO,EAAE,aAAa;IA/BzC,SAAgB,KAAK,EAAE,KAAK,CAAe;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAK;IAC3B,QAAQ,SAAK;IACb,OAAO,UAAS;IAChB,MAAM,UAAS;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAS;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,KAAK,EAAE,KAAK,CAAkB;IAC9B,KAAK,WAAmC;IACxC,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAW;IACnC,SAAgB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAE5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;WAIf,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;gBAIzB,OAAO,EAAE,aAAa;IAqBlC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO;IAI9C,OAAO;IAgBP,UAAU,IAAI,IAAI;IAmBlB,OAAO,CAAC,UAAU,GAAE,OAAc,GAAG,IAAI;IAUzC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQtC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IASjC,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAS3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAqDtB,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CpD,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM;IAapB,KAAK,CAAC,MAAM,EAAE,OAAO;IAKrB,QAAQ;IAOR,IAAI,CAAC,QAAQ,EAAE,MAAM;IAc3B,IAAI;CAiBX"}