@discordeno/rest 19.0.0-next.e2d86ea → 19.0.0-next.e30e5a2

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 (51) hide show
  1. package/README.md +15 -1
  2. package/dist/cjs/index.cjs +25 -0
  3. package/dist/cjs/invalidBucket.cjs +87 -0
  4. package/dist/cjs/manager.cjs +1446 -0
  5. package/dist/cjs/queue.cjs +166 -0
  6. package/dist/cjs/routes.cjs +582 -0
  7. package/dist/cjs/types.cjs +6 -0
  8. package/dist/cjs/typings/routes.cjs +6 -0
  9. package/dist/esm/index.js +8 -0
  10. package/dist/esm/invalidBucket.js +83 -0
  11. package/dist/esm/manager.js +1404 -0
  12. package/dist/esm/queue.js +156 -0
  13. package/dist/esm/routes.js +572 -0
  14. package/dist/esm/types.js +3 -0
  15. package/dist/esm/typings/routes.js +3 -0
  16. package/dist/types/index.d.ts.map +1 -0
  17. package/dist/{invalidBucket.d.ts → types/invalidBucket.d.ts} +5 -0
  18. package/dist/types/invalidBucket.d.ts.map +1 -0
  19. package/dist/types/manager.d.ts.map +1 -0
  20. package/dist/{queue.d.ts → types/queue.d.ts} +12 -1
  21. package/dist/types/queue.d.ts.map +1 -0
  22. package/dist/types/routes.d.ts.map +1 -0
  23. package/dist/{types.d.ts → types/types.d.ts} +448 -109
  24. package/dist/types/types.d.ts.map +1 -0
  25. package/dist/{typings → types/typings}/routes.d.ts +46 -5
  26. package/dist/types/typings/routes.d.ts.map +1 -0
  27. package/package.json +30 -25
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/index.js +0 -8
  30. package/dist/index.js.map +0 -1
  31. package/dist/invalidBucket.d.ts.map +0 -1
  32. package/dist/invalidBucket.js +0 -82
  33. package/dist/invalidBucket.js.map +0 -1
  34. package/dist/manager.d.ts.map +0 -1
  35. package/dist/manager.js +0 -1112
  36. package/dist/manager.js.map +0 -1
  37. package/dist/queue.d.ts.map +0 -1
  38. package/dist/queue.js +0 -153
  39. package/dist/queue.js.map +0 -1
  40. package/dist/routes.d.ts.map +0 -1
  41. package/dist/routes.js +0 -487
  42. package/dist/routes.js.map +0 -1
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js +0 -3
  45. package/dist/types.js.map +0 -1
  46. package/dist/typings/routes.d.ts.map +0 -1
  47. package/dist/typings/routes.js +0 -3
  48. package/dist/typings/routes.js.map +0 -1
  49. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  50. /package/dist/{manager.d.ts → types/manager.d.ts} +0 -0
  51. /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
@@ -0,0 +1,582 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createRoutes", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createRoutes;
9
+ }
10
+ });
11
+ const _utils = require("@discordeno/utils");
12
+ function createRoutes() {
13
+ return {
14
+ webhooks: {
15
+ id: (webhookId)=>{
16
+ return `/webhooks/${webhookId}`;
17
+ },
18
+ message: (webhookId, token, messageId, options)=>{
19
+ let url = `/webhooks/${webhookId}/${token}/messages/${messageId}?`;
20
+ if (options) {
21
+ if (options.threadId) url += `thread_id=${options.threadId}`;
22
+ }
23
+ return url;
24
+ },
25
+ original: (webhookId, token, options)=>{
26
+ let url = `/webhooks/${webhookId}/${token}/messages/@original?`;
27
+ if (options) {
28
+ if (options.threadId) url += `thread_id=${options.threadId}`;
29
+ }
30
+ return url;
31
+ },
32
+ webhook: (webhookId, token, options)=>{
33
+ let url = `/webhooks/${webhookId}/${token}?`;
34
+ if (options) {
35
+ if (options?.wait !== undefined) url += `wait=${options.wait.toString()}`;
36
+ if (options.threadId) url += `thread_id=${options.threadId}`;
37
+ }
38
+ return url;
39
+ }
40
+ },
41
+ // Channel Endpoints
42
+ channels: {
43
+ bulk: (channelId)=>{
44
+ return `/channels/${channelId}/messages/bulk-delete`;
45
+ },
46
+ dm: ()=>{
47
+ return '/users/@me/channels';
48
+ },
49
+ dmRecipient: (channelId, userId)=>{
50
+ return `/channels/${channelId}/recipients/${userId}`;
51
+ },
52
+ pin: (channelId, messageId)=>{
53
+ return `/channels/${channelId}/pins/${messageId}`;
54
+ },
55
+ pins: (channelId)=>{
56
+ return `/channels/${channelId}/pins`;
57
+ },
58
+ reactions: {
59
+ bot: (channelId, messageId, emoji)=>{
60
+ return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/@me`;
61
+ },
62
+ user: (channelId, messageId, emoji, userId)=>{
63
+ return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/${userId}`;
64
+ },
65
+ all: (channelId, messageId)=>{
66
+ return `/channels/${channelId}/messages/${messageId}/reactions`;
67
+ },
68
+ emoji: (channelId, messageId, emoji, options)=>{
69
+ let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
70
+ if (options) {
71
+ if (options.type) url += `type=${options.type}`;
72
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
73
+ if (options.after) url += `&after=${options.after}`;
74
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
75
+ if (options.limit) url += `&limit=${options.limit}`;
76
+ }
77
+ return url;
78
+ },
79
+ message: (channelId, messageId, emoji, options)=>{
80
+ let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
81
+ if (options) {
82
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
83
+ if (options.after) url += `after=${options.after}`;
84
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
85
+ if (options.limit) url += `&limit=${options.limit}`;
86
+ }
87
+ return url;
88
+ }
89
+ },
90
+ webhooks: (channelId)=>{
91
+ return `/channels/${channelId}/webhooks`;
92
+ },
93
+ channel: (channelId)=>{
94
+ return `/channels/${channelId}`;
95
+ },
96
+ follow: (channelId)=>{
97
+ return `/channels/${channelId}/followers`;
98
+ },
99
+ forum: (channelId)=>{
100
+ return `/channels/${channelId}/threads`;
101
+ },
102
+ invites: (channelId)=>{
103
+ return `/channels/${channelId}/invites`;
104
+ },
105
+ message: (channelId, messageId)=>{
106
+ return `/channels/${channelId}/messages/${messageId}`;
107
+ },
108
+ messages: (channelId, options)=>{
109
+ let url = `/channels/${channelId}/messages?`;
110
+ if (options) {
111
+ if ((0, _utils.isGetMessagesAfter)(options) && options.after) {
112
+ url += `after=${options.after}`;
113
+ }
114
+ if ((0, _utils.isGetMessagesBefore)(options) && options.before) {
115
+ url += `&before=${options.before}`;
116
+ }
117
+ if ((0, _utils.isGetMessagesAround)(options) && options.around) {
118
+ url += `&around=${options.around}`;
119
+ }
120
+ if ((0, _utils.isGetMessagesLimit)(options) && options.limit) {
121
+ url += `&limit=${options.limit}`;
122
+ }
123
+ }
124
+ return url;
125
+ },
126
+ overwrite: (channelId, overwriteId)=>{
127
+ return `/channels/${channelId}/permissions/${overwriteId}`;
128
+ },
129
+ crosspost: (channelId, messageId)=>{
130
+ return `/channels/${channelId}/messages/${messageId}/crosspost`;
131
+ },
132
+ stages: ()=>{
133
+ return '/stage-instances';
134
+ },
135
+ stage: (channelId)=>{
136
+ return `/stage-instances/${channelId}`;
137
+ },
138
+ // Thread Endpoints
139
+ threads: {
140
+ message: (channelId, messageId)=>{
141
+ return `/channels/${channelId}/messages/${messageId}/threads`;
142
+ },
143
+ all: (channelId)=>{
144
+ return `/channels/${channelId}/threads`;
145
+ },
146
+ active: (guildId)=>{
147
+ return `/guilds/${guildId}/threads/active`;
148
+ },
149
+ members: (channelId)=>{
150
+ return `/channels/${channelId}/thread-members`;
151
+ },
152
+ me: (channelId)=>{
153
+ return `/channels/${channelId}/thread-members/@me`;
154
+ },
155
+ user: (channelId, userId)=>{
156
+ return `/channels/${channelId}/thread-members/${userId}`;
157
+ },
158
+ archived: (channelId)=>{
159
+ return `/channels/${channelId}/threads/archived`;
160
+ },
161
+ public: (channelId, options)=>{
162
+ let url = `/channels/${channelId}/threads/archived/public?`;
163
+ if (options) {
164
+ if (options.before) {
165
+ url += `before=${new Date(options.before).toISOString()}`;
166
+ }
167
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
168
+ if (options.limit) url += `&limit=${options.limit}`;
169
+ }
170
+ return url;
171
+ },
172
+ private: (channelId, options)=>{
173
+ let url = `/channels/${channelId}/threads/archived/private?`;
174
+ if (options) {
175
+ if (options.before) {
176
+ url += `before=${new Date(options.before).toISOString()}`;
177
+ }
178
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
179
+ if (options.limit) url += `&limit=${options.limit}`;
180
+ }
181
+ return url;
182
+ },
183
+ joined: (channelId, options)=>{
184
+ let url = `/channels/${channelId}/users/@me/threads/archived/private?`;
185
+ if (options) {
186
+ if (options.before) {
187
+ url += `before=${new Date(options.before).toISOString()}`;
188
+ }
189
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
190
+ if (options.limit) url += `&limit=${options.limit}`;
191
+ }
192
+ return url;
193
+ }
194
+ },
195
+ typing: (channelId)=>{
196
+ return `/channels/${channelId}/typing`;
197
+ },
198
+ polls: {
199
+ votes: (channelId, messageId, answerId, options)=>{
200
+ let url = `/channels/${channelId}/polls/${messageId}/answers/${answerId}?`;
201
+ if (options) {
202
+ if (options.after) url += `after=${options.after}`;
203
+ if (options.limit) url += `&limit=${options.limit}`;
204
+ }
205
+ return url;
206
+ },
207
+ expire: (channelId, messageId)=>{
208
+ return `/channels/${channelId}/polls/${messageId}/expire`;
209
+ }
210
+ }
211
+ },
212
+ // Guild Endpoints
213
+ guilds: {
214
+ all: ()=>{
215
+ return '/guilds';
216
+ },
217
+ userGuilds: (options)=>{
218
+ let url = '/users/@me/guilds?';
219
+ if (options) {
220
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
221
+ if (options.after) url += `after=${options.after}`;
222
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
223
+ if (options.before) url += `&before=${options.before}`;
224
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
225
+ if (options.limit) url += `&limit=${options.limit}`;
226
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
227
+ if (options.withCounts) url += `&with_counts=${options.withCounts}`;
228
+ }
229
+ return url;
230
+ },
231
+ auditlogs: (guildId, options)=>{
232
+ let url = `/guilds/${guildId}/audit-logs?`;
233
+ if (options) {
234
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
235
+ if (options.actionType) url += `action_type=${options.actionType}`;
236
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
237
+ if (options.before) url += `&before=${options.before}`;
238
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
239
+ if (options.after) url += `&after=${options.after}`;
240
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
241
+ if (options.limit) url += `&limit=${options.limit}`;
242
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
243
+ if (options.userId) url += `&user_id=${options.userId}`;
244
+ }
245
+ return url;
246
+ },
247
+ automod: {
248
+ rule: (guildId, ruleId)=>{
249
+ return `/guilds/${guildId}/auto-moderation/rules/${ruleId}`;
250
+ },
251
+ rules: (guildId)=>{
252
+ return `/guilds/${guildId}/auto-moderation/rules`;
253
+ }
254
+ },
255
+ channels: (guildId)=>{
256
+ return `/guilds/${guildId}/channels`;
257
+ },
258
+ emoji: (guildId, emojiId)=>{
259
+ return `/guilds/${guildId}/emojis/${emojiId}`;
260
+ },
261
+ emojis: (guildId)=>{
262
+ return `/guilds/${guildId}/emojis`;
263
+ },
264
+ events: {
265
+ events: (guildId, withUserCount)=>{
266
+ let url = `/guilds/${guildId}/scheduled-events?`;
267
+ if (withUserCount !== undefined) {
268
+ url += `with_user_count=${withUserCount.toString()}`;
269
+ }
270
+ return url;
271
+ },
272
+ event: (guildId, eventId, withUserCount)=>{
273
+ let url = `/guilds/${guildId}/scheduled-events/${eventId}`;
274
+ if (withUserCount !== undefined) {
275
+ url += `with_user_count=${withUserCount.toString()}`;
276
+ }
277
+ return url;
278
+ },
279
+ users: (guildId, eventId, options)=>{
280
+ let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`;
281
+ if (options) {
282
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
283
+ if (options.limit !== undefined) url += `limit=${options.limit}`;
284
+ if (options.withMember !== undefined) {
285
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
286
+ url += `&with_member=${options.withMember.toString()}`;
287
+ }
288
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
289
+ if (options.after !== undefined) url += `&after=${options.after}`;
290
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
291
+ if (options.before !== undefined) url += `&before=${options.before}`;
292
+ }
293
+ return url;
294
+ }
295
+ },
296
+ guild (guildId, withCounts) {
297
+ let url = `/guilds/${guildId}?`;
298
+ if (withCounts !== undefined) {
299
+ url += `with_counts=${withCounts.toString()}`;
300
+ }
301
+ return url;
302
+ },
303
+ integration (guildId, integrationId) {
304
+ return `/guilds/${guildId}/integrations/${integrationId}`;
305
+ },
306
+ integrations: (guildId)=>{
307
+ return `/guilds/${guildId}/integrations?include_applications=true`;
308
+ },
309
+ invite (inviteCode, options) {
310
+ let url = `/invites/${inviteCode}?`;
311
+ if (options) {
312
+ if (options.withCounts !== undefined) {
313
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
314
+ url += `with_counts=${options.withCounts.toString()}`;
315
+ }
316
+ if (options.withExpiration !== undefined) {
317
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
318
+ url += `&with_expiration=${options.withExpiration.toString()}`;
319
+ }
320
+ if (options.scheduledEventId) {
321
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
322
+ url += `&guild_scheduled_event_id=${options.scheduledEventId}`;
323
+ }
324
+ }
325
+ return url;
326
+ },
327
+ invites: (guildId)=>{
328
+ return `/guilds/${guildId}/invites`;
329
+ },
330
+ leave: (guildId)=>{
331
+ return `/users/@me/guilds/${guildId}`;
332
+ },
333
+ members: {
334
+ ban: (guildId, userId)=>{
335
+ return `/guilds/${guildId}/bans/${userId}`;
336
+ },
337
+ bans: (guildId, options)=>{
338
+ let url = `/guilds/${guildId}/bans?`;
339
+ if (options) {
340
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
341
+ if (options.limit) url += `limit=${options.limit}`;
342
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
343
+ if (options.after) url += `&after=${options.after}`;
344
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
345
+ if (options.before) url += `&before=${options.before}`;
346
+ }
347
+ return url;
348
+ },
349
+ bulkBan: (guildId)=>{
350
+ return `/guilds/${guildId}/bulk-ban`;
351
+ },
352
+ bot: (guildId)=>{
353
+ return `/guilds/${guildId}/members/@me`;
354
+ },
355
+ member: (guildId, userId)=>{
356
+ return `/guilds/${guildId}/members/${userId}`;
357
+ },
358
+ currentMember: (guildId)=>{
359
+ return `/users/@me/guilds/${guildId}/member`;
360
+ },
361
+ members: (guildId, options)=>{
362
+ let url = `/guilds/${guildId}/members?`;
363
+ if (options !== undefined) {
364
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
365
+ if (options.limit) url += `limit=${options.limit}`;
366
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
367
+ if (options.after) url += `&after=${options.after}`;
368
+ }
369
+ return url;
370
+ },
371
+ search: (guildId, query, options)=>{
372
+ let url = `/guilds/${guildId}/members/search?query=${encodeURIComponent(query)}`;
373
+ if (options) {
374
+ if (options.limit !== undefined) url += `&limit=${options.limit}`;
375
+ }
376
+ return url;
377
+ },
378
+ prune: (guildId, options)=>{
379
+ let url = `/guilds/${guildId}/prune?`;
380
+ if (options) {
381
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
382
+ if (options.days) url += `days=${options.days}`;
383
+ if (Array.isArray(options.includeRoles)) {
384
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
385
+ url += `&include_roles=${options.includeRoles.join(',')}`;
386
+ } else if (options.includeRoles) {
387
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
388
+ url += `&include_roles=${options.includeRoles}`;
389
+ }
390
+ }
391
+ return url;
392
+ }
393
+ },
394
+ mfa: (guildId)=>`/guilds/${guildId}/mfa`,
395
+ preview: (guildId)=>{
396
+ return `/guilds/${guildId}/preview`;
397
+ },
398
+ prune: (guildId, options)=>{
399
+ let url = `/guilds/${guildId}/prune?`;
400
+ if (options) {
401
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
402
+ if (options.days) url += `days=${options.days}`;
403
+ if (Array.isArray(options.includeRoles)) {
404
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
405
+ url += `&include_roles=${options.includeRoles.join(',')}`;
406
+ } else if (options.includeRoles) {
407
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
408
+ url += `&include_roles=${options.includeRoles}`;
409
+ }
410
+ }
411
+ return url;
412
+ },
413
+ roles: {
414
+ one: (guildId, roleId)=>{
415
+ return `/guilds/${guildId}/roles/${roleId}`;
416
+ },
417
+ all: (guildId)=>{
418
+ return `/guilds/${guildId}/roles`;
419
+ },
420
+ member: (guildId, memberId, roleId)=>{
421
+ return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`;
422
+ }
423
+ },
424
+ stickers: (guildId)=>{
425
+ return `/guilds/${guildId}/stickers`;
426
+ },
427
+ sticker: (guildId, stickerId)=>{
428
+ return `/guilds/${guildId}/stickers/${stickerId}`;
429
+ },
430
+ voice: (guildId, userId)=>{
431
+ return `/guilds/${guildId}/voice-states/${userId ?? '@me'}`;
432
+ },
433
+ templates: {
434
+ code: (code)=>{
435
+ return `/guilds/templates/${code}`;
436
+ },
437
+ guild: (guildId, code)=>{
438
+ return `/guilds/${guildId}/templates/${code}`;
439
+ },
440
+ all: (guildId)=>{
441
+ return `/guilds/${guildId}/templates`;
442
+ }
443
+ },
444
+ vanity: (guildId)=>{
445
+ return `/guilds/${guildId}/vanity-url`;
446
+ },
447
+ regions: (guildId)=>{
448
+ return `/guilds/${guildId}/regions`;
449
+ },
450
+ webhooks: (guildId)=>{
451
+ return `/guilds/${guildId}/webhooks`;
452
+ },
453
+ welcome: (guildId)=>{
454
+ return `/guilds/${guildId}/welcome-screen`;
455
+ },
456
+ widget: (guildId)=>{
457
+ return `/guilds/${guildId}/widget`;
458
+ },
459
+ widgetJson: (guildId)=>{
460
+ return `/guilds/${guildId}/widget.json`;
461
+ },
462
+ onboarding: (guildId)=>{
463
+ return `/guilds/${guildId}/onboarding`;
464
+ }
465
+ },
466
+ sticker: (stickerId)=>{
467
+ return `/stickers/${stickerId}`;
468
+ },
469
+ regions: ()=>{
470
+ return '/voice/regions';
471
+ },
472
+ // Interaction Endpoints
473
+ interactions: {
474
+ commands: {
475
+ // Application Endpoints
476
+ commands: (applicationId)=>{
477
+ return `/applications/${applicationId}/commands`;
478
+ },
479
+ guilds: {
480
+ all (applicationId, guildId) {
481
+ return `/applications/${applicationId}/guilds/${guildId}/commands`;
482
+ },
483
+ one (applicationId, guildId, commandId, withLocalizations) {
484
+ let url = `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}?`;
485
+ if (withLocalizations !== undefined) {
486
+ url += `with_localizations=${withLocalizations.toString()}`;
487
+ }
488
+ return url;
489
+ }
490
+ },
491
+ permissions: (applicationId, guildId)=>{
492
+ return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`;
493
+ },
494
+ permission: (applicationId, guildId, commandId)=>{
495
+ return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`;
496
+ },
497
+ command: (applicationId, commandId, withLocalizations)=>{
498
+ let url = `/applications/${applicationId}/commands/${commandId}?`;
499
+ if (withLocalizations !== undefined) {
500
+ url += `withLocalizations=${withLocalizations.toString()}`;
501
+ }
502
+ return url;
503
+ }
504
+ },
505
+ responses: {
506
+ // Interaction Endpoints
507
+ callback: (interactionId, token)=>{
508
+ return `/interactions/${interactionId}/${token}/callback`;
509
+ },
510
+ original: (interactionId, token)=>{
511
+ return `/webhooks/${interactionId}/${token}/messages/@original`;
512
+ },
513
+ message: (applicationId, token, messageId)=>{
514
+ return `/webhooks/${applicationId}/${token}/messages/${messageId}`;
515
+ }
516
+ }
517
+ },
518
+ // OAuth2 endpoints
519
+ oauth2: {
520
+ tokenExchange: ()=>{
521
+ return '/oauth2/token';
522
+ },
523
+ tokenRevoke: ()=>{
524
+ return '/oauth2/token/revoke';
525
+ },
526
+ currentAuthorization: ()=>{
527
+ return '/oauth2/@me';
528
+ },
529
+ application: ()=>{
530
+ return '/oauth2/applications/@me';
531
+ },
532
+ connections: ()=>{
533
+ return '/users/@me/connections';
534
+ },
535
+ roleConnections: (applicationId)=>{
536
+ return `/users/@me/applications/${applicationId}/role-connection`;
537
+ }
538
+ },
539
+ monetization: {
540
+ entitlements: (applicationId, options)=>{
541
+ let url = `/applications/${applicationId}/entitlements?`;
542
+ if (options) {
543
+ if (options.after) url += `after=${options.after}`;
544
+ if (options.before) url += `&before=${options.before}`;
545
+ if (options.excludeEnded) url += `&exclude_ended=${options.excludeEnded}`;
546
+ if (options.guildId) url += `&guild_id=${options.guildId}`;
547
+ if (options.limit) url += `&limit=${options.limit}`;
548
+ if (options.skuIds) url += `&sku_ids=${options.skuIds.join(',')}`;
549
+ if (options.userId) url += `&user_id=${options.userId}`;
550
+ }
551
+ return url;
552
+ },
553
+ entitlement: (applicationId, entitlementId)=>{
554
+ return `/applications/${applicationId}/entitlements/${entitlementId}`;
555
+ },
556
+ consumeEntitlement: (applicationId, entitlementId)=>{
557
+ return `/applications/${applicationId}/entitlements/${entitlementId}/consume`;
558
+ },
559
+ skus: (applicationId)=>{
560
+ return `/applications/${applicationId}/skus`;
561
+ }
562
+ },
563
+ // User endpoints
564
+ user (userId) {
565
+ return `/users/${userId}`;
566
+ },
567
+ application () {
568
+ return '/applications/@me';
569
+ },
570
+ currentUser () {
571
+ return '/users/@me';
572
+ },
573
+ gatewayBot () {
574
+ return '/gateway/bot';
575
+ },
576
+ stickerPacks () {
577
+ return '/sticker-packs';
578
+ }
579
+ };
580
+ }
581
+
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGlzR2V0TWVzc2FnZXNBZnRlciwgaXNHZXRNZXNzYWdlc0Fyb3VuZCwgaXNHZXRNZXNzYWdlc0JlZm9yZSwgaXNHZXRNZXNzYWdlc0xpbWl0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKCk6IFJlc3RSb3V0ZXMge1xuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke3dlYmhvb2tJZH1gXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIG9yaWdpbmFsOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7d2ViaG9va0lkfS8ke3Rva2VufT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtvcHRpb25zLndhaXQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7b3B0aW9ucy50aHJlYWRJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWBcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnXG4gICAgICB9LFxuICAgICAgZG1SZWNpcGllbnQ6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcmVjaXBpZW50cy8ke3VzZXJJZH1gXG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnMvJHttZXNzYWdlSWR9YFxuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnNgXG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vcmVhY3Rpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtb2ppKX0vQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlKSB1cmwgKz0gYHR5cGU9JHtvcHRpb25zLnR5cGV9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS93ZWJob29rc2BcbiAgICAgIH0sXG5cbiAgICAgIGNoYW5uZWw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9YFxuICAgICAgfSxcblxuICAgICAgZm9sbG93OiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9mb2xsb3dlcnNgXG4gICAgICB9LFxuXG4gICAgICBmb3J1bTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgIH0sXG5cbiAgICAgIGludml0ZXM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L2ludml0ZXNgXG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke29wdGlvbnMuYXJvdW5kfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJ3cml0ZTogKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3Blcm1pc3Npb25zLyR7b3ZlcndyaXRlSWR9YFxuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS9jcm9zc3Bvc3RgXG4gICAgICB9LFxuXG4gICAgICBzdGFnZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvc3RhZ2UtaW5zdGFuY2VzJ1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7Y2hhbm5lbElkfWBcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS90aHJlYWRzYFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RocmVhZHMvYWN0aXZlYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZC1tZW1iZXJzYFxuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFyY2hpdmVkOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWRgXG4gICAgICAgIH0sXG4gICAgICAgIHB1YmxpYzogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkL3B1YmxpYz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcml2YXRlOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBqb2luZWQ6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdXNlcnMvQG1lL3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdHlwaW5nOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90eXBpbmdgXG4gICAgICB9LFxuXG4gICAgICBwb2xsczoge1xuICAgICAgICB2b3RlczogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9wb2xscy8ke21lc3NhZ2VJZH0vYW5zd2Vycy8ke2Fuc3dlcklkfT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcG9sbHMvJHttZXNzYWdlSWR9L2V4cGlyZWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcydcbiAgICAgIH0sXG4gICAgICB1c2VyR3VpbGRzOiAob3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gJy91c2Vycy9AbWUvZ3VpbGRzPydcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMpIHVybCArPSBgJndpdGhfY291bnRzPSR7b3B0aW9ucy53aXRoQ291bnRzfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBhdWRpdGxvZ3M6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L2F1ZGl0LWxvZ3M/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmFjdGlvblR5cGUpIHVybCArPSBgYWN0aW9uX3R5cGU9JHtvcHRpb25zLmFjdGlvblR5cGV9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgYXV0b21vZDoge1xuICAgICAgICBydWxlOiAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7cnVsZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzYFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9jaGFubmVsc2BcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vZW1vamlzLyR7ZW1vamlJZH1gXG4gICAgICB9LFxuICAgICAgZW1vamlzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9lbW9qaXNgXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGV2ZW50czogKGd1aWxkSWQsIHdpdGhVc2VyQ291bnQ/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc2NoZWR1bGVkLWV2ZW50cz9gXG5cbiAgICAgICAgICBpZiAod2l0aFVzZXJDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfdXNlcl9jb3VudD0ke3dpdGhVc2VyQ291bnQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IChndWlsZElkLCBldmVudElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3NjaGVkdWxlZC1ldmVudHMvJHtldmVudElkfWBcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7d2l0aFVzZXJDb3VudC50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJzOiAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50VXNlcnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZXZlbnRJZH0vdXNlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICAgIHVybCArPSBgJndpdGhfbWVtYmVyPSR7b3B0aW9ucy53aXRoTWVtYmVyLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGd1aWxkKGd1aWxkSWQsIHdpdGhDb3VudHMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0/YFxuXG4gICAgICAgIGlmICh3aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cmwgKz0gYHdpdGhfY291bnRzPSR7d2l0aENvdW50cy50b1N0cmluZygpfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbihndWlsZElkLCBpbnRlZ3JhdGlvbklkKSB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludGVncmF0aW9ucy8ke2ludGVncmF0aW9uSWR9YFxuICAgICAgfSxcbiAgICAgIGludGVncmF0aW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vaW50ZWdyYXRpb25zP2luY2x1ZGVfYXBwbGljYXRpb25zPXRydWVgXG4gICAgICB9LFxuICAgICAgaW52aXRlKGludml0ZUNvZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvaW52aXRlcy8ke2ludml0ZUNvZGV9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke29wdGlvbnMud2l0aENvdW50cy50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aEV4cGlyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmd2l0aF9leHBpcmF0aW9uPSR7b3B0aW9ucy53aXRoRXhwaXJhdGlvbi50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmZ3VpbGRfc2NoZWR1bGVkX2V2ZW50X2lkPSR7b3B0aW9ucy5zY2hlZHVsZWRFdmVudElkfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgaW52aXRlczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vaW52aXRlc2BcbiAgICAgIH0sXG4gICAgICBsZWF2ZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvdXNlcnMvQG1lL2d1aWxkcy8ke2d1aWxkSWR9YFxuICAgICAgfSxcbiAgICAgIG1lbWJlcnM6IHtcbiAgICAgICAgYmFuOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYmFucy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGJhbnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYmFucz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBidWxrQmFuOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2J1bGstYmFuYFxuICAgICAgICB9LFxuICAgICAgICBib3Q6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50TWVtYmVyOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGBsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBzZWFyY2g6IChndWlsZElkLCBxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvc2VhcmNoP3F1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3BydW5lP2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtvcHRpb25zLmRheXN9YFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzLmpvaW4oJywnKX1gXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWZhOiAoZ3VpbGRJZCkgPT4gYC9ndWlsZHMvJHtndWlsZElkfS9tZmFgLFxuICAgICAgcHJldmlldzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJldmlld2BcbiAgICAgIH0sXG4gICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJ1bmU/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmRheXMpIHVybCArPSBgZGF5cz0ke29wdGlvbnMuZGF5c31gXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpfWBcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXN9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICByb2xlczoge1xuICAgICAgICBvbmU6IChndWlsZElkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlcy8ke3JvbGVJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlc2BcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyOiAoZ3VpbGRJZCwgbWVtYmVySWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0aWNrZXJzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9zdGlja2Vyc2BcbiAgICAgIH0sXG4gICAgICBzdGlja2VyOiAoZ3VpbGRJZCwgc3RpY2tlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICAgIH0sXG4gICAgICB2b2ljZTogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS92b2ljZS1zdGF0ZXMvJHt1c2VySWQgPz8gJ0BtZSd9YFxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICBjb2RlOiAoY29kZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy90ZW1wbGF0ZXMvJHtjb2RlfWBcbiAgICAgICAgfSxcbiAgICAgICAgZ3VpbGQ6IChndWlsZElkLCBjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vdGVtcGxhdGVzLyR7Y29kZX1gXG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS90ZW1wbGF0ZXNgXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmFuaXR5OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS92YW5pdHktdXJsYFxuICAgICAgfSxcbiAgICAgIHJlZ2lvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JlZ2lvbnNgXG4gICAgICB9LFxuICAgICAgd2ViaG9va3M6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dlYmhvb2tzYFxuICAgICAgfSxcbiAgICAgIHdlbGNvbWU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dlbGNvbWUtc2NyZWVuYFxuICAgICAgfSxcbiAgICAgIHdpZGdldDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0YFxuICAgICAgfSxcbiAgICAgIHdpZGdldEpzb246IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dpZGdldC5qc29uYFxuICAgICAgfSxcbiAgICAgIG9uYm9hcmRpbmc6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L29uYm9hcmRpbmdgXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBzdGlja2VyOiAoc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYC9zdGlja2Vycy8ke3N0aWNrZXJJZH1gXG4gICAgfSxcblxuICAgIHJlZ2lvbnM6ICgpID0+IHtcbiAgICAgIHJldHVybiAnL3ZvaWNlL3JlZ2lvbnMnXG4gICAgfSxcblxuICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgLy8gQXBwbGljYXRpb24gRW5kcG9pbnRzXG4gICAgICAgIGNvbW1hbmRzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2NvbW1hbmRzYFxuICAgICAgICB9LFxuXG4gICAgICAgIGd1aWxkczoge1xuICAgICAgICAgIGFsbChhcHBsaWNhdGlvbklkLCBndWlsZElkKSB7XG4gICAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kc2BcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgb25lKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfT9gXG5cbiAgICAgICAgICAgIGlmICh3aXRoTG9jYWxpemF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgd2l0aF9sb2NhbGl6YXRpb25zPSR7d2l0aExvY2FsaXphdGlvbnMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kcy9wZXJtaXNzaW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbjogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfS9wZXJtaXNzaW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9jb21tYW5kcy8ke2NvbW1hbmRJZH0/YFxuXG4gICAgICAgICAgaWYgKHdpdGhMb2NhbGl6YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aExvY2FsaXphdGlvbnM9JHt3aXRoTG9jYWxpemF0aW9ucy50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICByZXNwb25zZXM6IHtcbiAgICAgICAgLy8gSW50ZXJhY3Rpb24gRW5kcG9pbnRzXG4gICAgICAgIGNhbGxiYWNrOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9pbnRlcmFjdGlvbnMvJHtpbnRlcmFjdGlvbklkfS8ke3Rva2VufS9jYWxsYmFja2BcbiAgICAgICAgfSxcbiAgICAgICAgb3JpZ2luYWw6IChpbnRlcmFjdGlvbklkLCB0b2tlbikgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7aW50ZXJhY3Rpb25JZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsYFxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoYXBwbGljYXRpb25JZCwgdG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7YXBwbGljYXRpb25JZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9YFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gT0F1dGgyIGVuZHBvaW50c1xuICAgIG9hdXRoMjoge1xuICAgICAgdG9rZW5FeGNoYW5nZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4nXG4gICAgICB9LFxuICAgICAgdG9rZW5SZXZva2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuL3Jldm9rZSdcbiAgICAgIH0sXG4gICAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvQG1lJ1xuICAgICAgfSxcbiAgICAgIGFwcGxpY2F0aW9uOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3Rpb25zOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL3VzZXJzL0BtZS9jb25uZWN0aW9ucydcbiAgICAgIH0sXG4gICAgICByb2xlQ29ubmVjdGlvbnM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9yb2xlLWNvbm5lY3Rpb25gXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBtb25ldGl6YXRpb246IHtcbiAgICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUVuZGVkKSB1cmwgKz0gYCZleGNsdWRlX2VuZGVkPSR7b3B0aW9ucy5leGNsdWRlRW5kZWR9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmd1aWxkSWQpIHVybCArPSBgJmd1aWxkX2lkPSR7b3B0aW9ucy5ndWlsZElkfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5za3VJZHMpIHVybCArPSBgJnNrdV9pZHM9JHtvcHRpb25zLnNrdUlkcy5qb2luKCcsJyl9YFxuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke29wdGlvbnMudXNlcklkfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBlbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzLyR7ZW50aXRsZW1lbnRJZH1gXG4gICAgICB9LFxuICAgICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbnRpdGxlbWVudHMvJHtlbnRpdGxlbWVudElkfS9jb25zdW1lYFxuICAgICAgfSxcblxuICAgICAgc2t1czogKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vc2t1c2BcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIFVzZXIgZW5kcG9pbnRzXG4gICAgdXNlcih1c2VySWQpIHtcbiAgICAgIHJldHVybiBgL3VzZXJzLyR7dXNlcklkfWBcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb24oKSB7XG4gICAgICByZXR1cm4gJy9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgIH0sXG5cbiAgICBjdXJyZW50VXNlcigpIHtcbiAgICAgIHJldHVybiAnL3VzZXJzL0BtZSdcbiAgICB9LFxuXG4gICAgZ2F0ZXdheUJvdCgpIHtcbiAgICAgIHJldHVybiAnL2dhdGV3YXkvYm90J1xuICAgIH0sXG5cbiAgICBzdGlja2VyUGFja3MoKSB7XG4gICAgICByZXR1cm4gJy9zdGlja2VyLXBhY2tzJ1xuICAgIH0sXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSb3V0ZXMiLCJ3ZWJob29rcyIsImlkIiwid2ViaG9va0lkIiwibWVzc2FnZSIsInRva2VuIiwibWVzc2FnZUlkIiwib3B0aW9ucyIsInVybCIsInRocmVhZElkIiwib3JpZ2luYWwiLCJ3ZWJob29rIiwid2FpdCIsInVuZGVmaW5lZCIsInRvU3RyaW5nIiwiY2hhbm5lbHMiLCJidWxrIiwiY2hhbm5lbElkIiwiZG0iLCJkbVJlY2lwaWVudCIsInVzZXJJZCIsInBpbiIsInBpbnMiLCJyZWFjdGlvbnMiLCJib3QiLCJlbW9qaSIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXIiLCJhbGwiLCJ0eXBlIiwiYWZ0ZXIiLCJsaW1pdCIsImNoYW5uZWwiLCJmb2xsb3ciLCJmb3J1bSIsImludml0ZXMiLCJtZXNzYWdlcyIsImlzR2V0TWVzc2FnZXNBZnRlciIsImlzR2V0TWVzc2FnZXNCZWZvcmUiLCJiZWZvcmUiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiYXJvdW5kIiwiaXNHZXRNZXNzYWdlc0xpbWl0Iiwib3ZlcndyaXRlIiwib3ZlcndyaXRlSWQiLCJjcm9zc3Bvc3QiLCJzdGFnZXMiLCJzdGFnZSIsInRocmVhZHMiLCJhY3RpdmUiLCJndWlsZElkIiwibWVtYmVycyIsIm1lIiwiYXJjaGl2ZWQiLCJwdWJsaWMiLCJEYXRlIiwidG9JU09TdHJpbmciLCJwcml2YXRlIiwiam9pbmVkIiwidHlwaW5nIiwicG9sbHMiLCJ2b3RlcyIsImFuc3dlcklkIiwiZXhwaXJlIiwiZ3VpbGRzIiwidXNlckd1aWxkcyIsIndpdGhDb3VudHMiLCJhdWRpdGxvZ3MiLCJhY3Rpb25UeXBlIiwiYXV0b21vZCIsInJ1bGUiLCJydWxlSWQiLCJydWxlcyIsImVtb2ppSWQiLCJlbW9qaXMiLCJldmVudHMiLCJ3aXRoVXNlckNvdW50IiwiZXZlbnQiLCJldmVudElkIiwidXNlcnMiLCJ3aXRoTWVtYmVyIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwid2l0aEV4cGlyYXRpb24iLCJzY2hlZHVsZWRFdmVudElkIiwibGVhdmUiLCJiYW4iLCJiYW5zIiwiYnVsa0JhbiIsIm1lbWJlciIsImN1cnJlbnRNZW1iZXIiLCJzZWFyY2giLCJxdWVyeSIsInBydW5lIiwiZGF5cyIsIkFycmF5IiwiaXNBcnJheSIsImluY2x1ZGVSb2xlcyIsImpvaW4iLCJtZmEiLCJwcmV2aWV3Iiwicm9sZXMiLCJvbmUiLCJyb2xlSWQiLCJtZW1iZXJJZCIsInN0aWNrZXJzIiwic3RpY2tlciIsInN0aWNrZXJJZCIsInZvaWNlIiwidGVtcGxhdGVzIiwiY29kZSIsInZhbml0eSIsInJlZ2lvbnMiLCJ3ZWxjb21lIiwid2lkZ2V0Iiwid2lkZ2V0SnNvbiIsIm9uYm9hcmRpbmciLCJpbnRlcmFjdGlvbnMiLCJjb21tYW5kcyIsImFwcGxpY2F0aW9uSWQiLCJjb21tYW5kSWQiLCJ3aXRoTG9jYWxpemF0aW9ucyIsInBlcm1pc3Npb25zIiwicGVybWlzc2lvbiIsImNvbW1hbmQiLCJyZXNwb25zZXMiLCJjYWxsYmFjayIsImludGVyYWN0aW9uSWQiLCJvYXV0aDIiLCJ0b2tlbkV4Y2hhbmdlIiwidG9rZW5SZXZva2UiLCJjdXJyZW50QXV0aG9yaXphdGlvbiIsImFwcGxpY2F0aW9uIiwiY29ubmVjdGlvbnMiLCJyb2xlQ29ubmVjdGlvbnMiLCJtb25ldGl6YXRpb24iLCJlbnRpdGxlbWVudHMiLCJleGNsdWRlRW5kZWQiLCJza3VJZHMiLCJlbnRpdGxlbWVudCIsImVudGl0bGVtZW50SWQiLCJjb25zdW1l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