@discordeno/rest 19.0.0-next.fd8642b → 19.0.0-next.fda3003

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