@discordeno/bot 21.0.0 → 21.0.1-next.01dd69b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/bot.cjs +1 -1
- package/dist/cjs/commandOptionsParser.cjs +1 -1
- package/dist/cjs/constants.cjs +7 -7
- package/dist/cjs/desiredProperties.cjs +111 -4
- package/dist/cjs/handlers/channels/THREAD_MEMBERS_UPDATE.cjs +4 -2
- package/dist/cjs/handlers/channels/THREAD_MEMBER_UPDATE.cjs +4 -2
- package/dist/cjs/handlers/guilds/GUILD_DELETE.cjs +6 -8
- package/dist/cjs/handlers/guilds/index.cjs +2 -2
- package/dist/cjs/handlers/index.cjs +3 -3
- package/dist/cjs/handlers/members/GUILD_MEMBER_ADD.cjs +2 -2
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +2 -1
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +2 -1
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.cjs +2 -1
- package/dist/cjs/handlers/messages/index.cjs +3 -3
- package/dist/cjs/handlers/soundboard/index.cjs +3 -3
- package/dist/cjs/handlers/voice/index.cjs +2 -2
- package/dist/cjs/helpers.cjs +52 -34
- package/dist/cjs/index.cjs +3 -4
- package/dist/cjs/transformers/activity.cjs +5 -5
- package/dist/cjs/transformers/application.cjs +2 -1
- package/dist/cjs/transformers/attachment.cjs +1 -1
- package/dist/cjs/transformers/automodActionExecution.cjs +3 -3
- package/dist/cjs/transformers/channel.cjs +11 -9
- package/dist/cjs/transformers/component.cjs +184 -64
- package/dist/cjs/transformers/emoji.cjs +5 -5
- package/dist/cjs/transformers/entitlement.cjs +2 -2
- package/dist/cjs/transformers/guild.cjs +12 -4
- package/dist/cjs/transformers/incidentsData.cjs +21 -0
- package/dist/cjs/transformers/index.cjs +5 -3
- package/dist/cjs/transformers/interaction.cjs +38 -22
- package/dist/cjs/transformers/invite.cjs +4 -3
- package/dist/cjs/transformers/lobby.cjs +41 -0
- package/dist/cjs/transformers/member.cjs +5 -5
- package/dist/cjs/transformers/message.cjs +23 -8
- package/dist/cjs/transformers/onboarding.cjs +6 -6
- package/dist/cjs/transformers/poll.cjs +8 -7
- package/dist/cjs/transformers/presence.cjs +1 -1
- package/dist/cjs/transformers/reverse/application.cjs +1 -1
- package/dist/cjs/transformers/reverse/attachment.cjs +15 -14
- package/dist/cjs/transformers/reverse/component.cjs +104 -15
- package/dist/cjs/transformers/reverse/emoji.cjs +3 -3
- package/dist/cjs/transformers/reverse/index.cjs +1 -2
- package/dist/cjs/transformers/reverse/member.cjs +37 -35
- package/dist/cjs/transformers/reverse/presence.cjs +4 -4
- package/dist/cjs/transformers/reverse/team.cjs +1 -1
- package/dist/cjs/transformers/role.cjs +17 -5
- package/dist/cjs/transformers/scheduledEvent.cjs +4 -4
- package/dist/cjs/transformers/sku.cjs +1 -1
- package/dist/cjs/transformers/soundboardSound.cjs +1 -1
- package/dist/cjs/transformers/stageInstance.cjs +1 -1
- package/dist/cjs/transformers/stageInviteInstance.cjs +1 -1
- package/dist/cjs/transformers/sticker.cjs +4 -4
- package/dist/cjs/transformers/subscription.cjs +2 -2
- package/dist/cjs/transformers/team.cjs +1 -1
- package/dist/cjs/transformers/template.cjs +1 -1
- package/dist/cjs/transformers/threadMember.cjs +8 -7
- package/dist/cjs/transformers/toggles/Permissions.cjs +1 -1
- package/dist/cjs/transformers/toggles/ToggleBitfield.cjs +4 -4
- package/dist/cjs/transformers/toggles/channel.cjs +4 -4
- package/dist/cjs/transformers/toggles/emoji.cjs +4 -4
- package/dist/cjs/transformers/toggles/guild.cjs +24 -7
- package/dist/cjs/transformers/toggles/member.cjs +11 -5
- package/dist/cjs/transformers/toggles/role.cjs +4 -4
- package/dist/cjs/transformers/toggles/user.cjs +4 -4
- package/dist/cjs/transformers/toggles/voice.cjs +4 -4
- package/dist/cjs/transformers/user.cjs +39 -4
- package/dist/cjs/transformers/voiceState.cjs +1 -1
- package/dist/cjs/transformers/webhook.cjs +1 -1
- package/dist/cjs/transformers/widget.cjs +7 -15
- package/dist/cjs/transformers.cjs +165 -142
- package/dist/esm/bot.js +2 -2
- package/dist/esm/commandOptionsParser.js +1 -1
- package/dist/esm/constants.js +2 -2
- package/dist/esm/desiredProperties.js +108 -1
- package/dist/esm/events.js +1 -1
- package/dist/esm/handlers/channels/THREAD_MEMBERS_UPDATE.js +4 -2
- package/dist/esm/handlers/channels/THREAD_MEMBER_UPDATE.js +4 -2
- package/dist/esm/handlers/guilds/GUILD_DELETE.js +6 -8
- package/dist/esm/handlers/guilds/index.js +2 -2
- package/dist/esm/handlers/index.js +3 -3
- package/dist/esm/handlers/members/GUILD_MEMBER_ADD.js +2 -2
- package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +2 -1
- package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +2 -1
- package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.js +2 -1
- package/dist/esm/handlers/messages/index.js +3 -3
- package/dist/esm/handlers/soundboard/index.js +3 -3
- package/dist/esm/handlers/voice/index.js +2 -2
- package/dist/esm/helpers.js +52 -34
- package/dist/esm/index.js +3 -4
- package/dist/esm/transformers/activity.js +1 -1
- package/dist/esm/transformers/application.js +2 -1
- package/dist/esm/transformers/attachment.js +1 -1
- package/dist/esm/transformers/automodActionExecution.js +3 -3
- package/dist/esm/transformers/channel.js +5 -3
- package/dist/esm/transformers/component.js +170 -61
- package/dist/esm/transformers/emoji.js +1 -1
- package/dist/esm/transformers/entitlement.js +2 -2
- package/dist/esm/transformers/guild.js +9 -1
- package/dist/esm/transformers/incidentsData.js +11 -0
- package/dist/esm/transformers/index.js +6 -4
- package/dist/esm/transformers/interaction.js +32 -14
- package/dist/esm/transformers/invite.js +5 -4
- package/dist/esm/transformers/lobby.js +23 -0
- package/dist/esm/transformers/member.js +2 -2
- package/dist/esm/transformers/message.js +14 -2
- package/dist/esm/transformers/onboarding.js +2 -2
- package/dist/esm/transformers/poll.js +5 -4
- package/dist/esm/transformers/presence.js +1 -1
- package/dist/esm/transformers/reverse/application.js +1 -1
- package/dist/esm/transformers/reverse/attachment.js +15 -14
- package/dist/esm/transformers/reverse/component.js +90 -12
- package/dist/esm/transformers/reverse/emoji.js +3 -3
- package/dist/esm/transformers/reverse/index.js +1 -2
- package/dist/esm/transformers/reverse/member.js +34 -32
- package/dist/esm/transformers/reverse/presence.js +1 -1
- package/dist/esm/transformers/reverse/team.js +1 -1
- package/dist/esm/transformers/role.js +11 -2
- package/dist/esm/transformers/scheduledEvent.js +1 -1
- package/dist/esm/transformers/sku.js +1 -1
- package/dist/esm/transformers/soundboardSound.js +1 -1
- package/dist/esm/transformers/stageInstance.js +1 -1
- package/dist/esm/transformers/stageInviteInstance.js +1 -1
- package/dist/esm/transformers/sticker.js +1 -1
- package/dist/esm/transformers/subscription.js +2 -2
- package/dist/esm/transformers/team.js +1 -1
- package/dist/esm/transformers/template.js +1 -1
- package/dist/esm/transformers/threadMember.js +5 -4
- package/dist/esm/transformers/toggles/Permissions.js +1 -1
- package/dist/esm/transformers/toggles/ToggleBitfield.js +1 -1
- package/dist/esm/transformers/toggles/channel.js +1 -1
- package/dist/esm/transformers/toggles/emoji.js +1 -1
- package/dist/esm/transformers/toggles/guild.js +21 -4
- package/dist/esm/transformers/toggles/member.js +8 -2
- package/dist/esm/transformers/toggles/role.js +1 -1
- package/dist/esm/transformers/toggles/user.js +1 -1
- package/dist/esm/transformers/toggles/voice.js +1 -1
- package/dist/esm/transformers/types.js +2 -2
- package/dist/esm/transformers/user.js +27 -1
- package/dist/esm/transformers/voiceState.js +1 -1
- package/dist/esm/transformers/webhook.js +1 -1
- package/dist/esm/transformers/widget.js +7 -15
- package/dist/esm/transformers.js +167 -144
- package/dist/types/bot.d.ts +0 -2
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/commandOptionsParser.d.ts +11 -2
- package/dist/types/commandOptionsParser.d.ts.map +1 -1
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/desiredProperties.d.ts +21 -5
- package/dist/types/desiredProperties.d.ts.map +1 -1
- package/dist/types/events.d.ts +6 -2
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +1 -1
- package/dist/types/handlers/guilds/GUILD_DELETE.d.ts.map +1 -1
- package/dist/types/handlers/guilds/index.d.ts +1 -1
- package/dist/types/handlers/guilds/index.d.ts.map +1 -1
- package/dist/types/handlers/index.d.ts +2 -2
- package/dist/types/handlers/index.d.ts.map +1 -1
- package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts +2 -2
- package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts.map +1 -1
- package/dist/types/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
- package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
- package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts.map +1 -1
- package/dist/types/handlers/messages/index.d.ts +2 -2
- package/dist/types/handlers/messages/index.d.ts.map +1 -1
- package/dist/types/handlers/soundboard/index.d.ts +2 -2
- package/dist/types/handlers/soundboard/index.d.ts.map +1 -1
- package/dist/types/handlers/voice/index.d.ts +1 -1
- package/dist/types/handlers/voice/index.d.ts.map +1 -1
- package/dist/types/helpers.d.ts +29 -21
- package/dist/types/helpers.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/transformers/activity.d.ts +3 -3
- package/dist/types/transformers/activity.d.ts.map +1 -1
- package/dist/types/transformers/application.d.ts.map +1 -1
- package/dist/types/transformers/attachment.d.ts +2 -2
- package/dist/types/transformers/attachment.d.ts.map +1 -1
- package/dist/types/transformers/automodActionExecution.d.ts.map +1 -1
- package/dist/types/transformers/channel.d.ts +5 -5
- package/dist/types/transformers/channel.d.ts.map +1 -1
- package/dist/types/transformers/component.d.ts +3 -1
- package/dist/types/transformers/component.d.ts.map +1 -1
- package/dist/types/transformers/emoji.d.ts +4 -4
- package/dist/types/transformers/emoji.d.ts.map +1 -1
- package/dist/types/transformers/entitlement.d.ts +2 -2
- package/dist/types/transformers/entitlement.d.ts.map +1 -1
- package/dist/types/transformers/guild.d.ts +4 -4
- package/dist/types/transformers/guild.d.ts.map +1 -1
- package/dist/types/transformers/incidentsData.d.ts +4 -0
- package/dist/types/transformers/incidentsData.d.ts.map +1 -0
- package/dist/types/transformers/index.d.ts +5 -3
- package/dist/types/transformers/index.d.ts.map +1 -1
- package/dist/types/transformers/interaction.d.ts +11 -11
- package/dist/types/transformers/interaction.d.ts.map +1 -1
- package/dist/types/transformers/invite.d.ts +3 -3
- package/dist/types/transformers/invite.d.ts.map +1 -1
- package/dist/types/transformers/lobby.d.ts +5 -0
- package/dist/types/transformers/lobby.d.ts.map +1 -0
- package/dist/types/transformers/member.d.ts +4 -3
- package/dist/types/transformers/member.d.ts.map +1 -1
- package/dist/types/transformers/message.d.ts +10 -9
- package/dist/types/transformers/message.d.ts.map +1 -1
- package/dist/types/transformers/onboarding.d.ts +4 -4
- package/dist/types/transformers/onboarding.d.ts.map +1 -1
- package/dist/types/transformers/poll.d.ts +3 -3
- package/dist/types/transformers/poll.d.ts.map +1 -1
- package/dist/types/transformers/presence.d.ts +2 -2
- package/dist/types/transformers/presence.d.ts.map +1 -1
- package/dist/types/transformers/reverse/application.d.ts +2 -2
- package/dist/types/transformers/reverse/application.d.ts.map +1 -1
- package/dist/types/transformers/reverse/attachment.d.ts +2 -2
- package/dist/types/transformers/reverse/attachment.d.ts.map +1 -1
- package/dist/types/transformers/reverse/component.d.ts +3 -1
- package/dist/types/transformers/reverse/component.d.ts.map +1 -1
- package/dist/types/transformers/reverse/emoji.d.ts +2 -2
- package/dist/types/transformers/reverse/emoji.d.ts.map +1 -1
- package/dist/types/transformers/reverse/index.d.ts +0 -1
- package/dist/types/transformers/reverse/index.d.ts.map +1 -1
- package/dist/types/transformers/reverse/member.d.ts +3 -4
- package/dist/types/transformers/reverse/member.d.ts.map +1 -1
- package/dist/types/transformers/reverse/presence.d.ts +2 -2
- package/dist/types/transformers/reverse/presence.d.ts.map +1 -1
- package/dist/types/transformers/reverse/team.d.ts +2 -2
- package/dist/types/transformers/reverse/team.d.ts.map +1 -1
- package/dist/types/transformers/role.d.ts +6 -5
- package/dist/types/transformers/role.d.ts.map +1 -1
- package/dist/types/transformers/scheduledEvent.d.ts +3 -3
- package/dist/types/transformers/scheduledEvent.d.ts.map +1 -1
- package/dist/types/transformers/sku.d.ts +2 -2
- package/dist/types/transformers/sku.d.ts.map +1 -1
- package/dist/types/transformers/soundboardSound.d.ts +2 -2
- package/dist/types/transformers/soundboardSound.d.ts.map +1 -1
- package/dist/types/transformers/stageInstance.d.ts +2 -2
- package/dist/types/transformers/stageInstance.d.ts.map +1 -1
- package/dist/types/transformers/stageInviteInstance.d.ts +3 -3
- package/dist/types/transformers/stageInviteInstance.d.ts.map +1 -1
- package/dist/types/transformers/sticker.d.ts +3 -3
- package/dist/types/transformers/sticker.d.ts.map +1 -1
- package/dist/types/transformers/subscription.d.ts +2 -2
- package/dist/types/transformers/subscription.d.ts.map +1 -1
- package/dist/types/transformers/team.d.ts +2 -2
- package/dist/types/transformers/team.d.ts.map +1 -1
- package/dist/types/transformers/template.d.ts +2 -2
- package/dist/types/transformers/template.d.ts.map +1 -1
- package/dist/types/transformers/threadMember.d.ts +11 -2
- package/dist/types/transformers/threadMember.d.ts.map +1 -1
- package/dist/types/transformers/toggles/guild.d.ts +13 -1
- package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
- package/dist/types/transformers/toggles/member.d.ts +4 -0
- package/dist/types/transformers/toggles/member.d.ts.map +1 -1
- package/dist/types/transformers/types.d.ts +171 -18
- package/dist/types/transformers/types.d.ts.map +1 -1
- package/dist/types/transformers/user.d.ts +7 -4
- package/dist/types/transformers/user.d.ts.map +1 -1
- package/dist/types/transformers/voiceState.d.ts +3 -3
- package/dist/types/transformers/voiceState.d.ts.map +1 -1
- package/dist/types/transformers/webhook.d.ts +2 -2
- package/dist/types/transformers/webhook.d.ts.map +1 -1
- package/dist/types/transformers/widget.d.ts +1 -1
- package/dist/types/transformers/widget.d.ts.map +1 -1
- package/dist/types/transformers.d.ts +30 -9
- package/dist/types/transformers.d.ts.map +1 -1
- package/package.json +27 -22
- package/dist/cjs/transformers/reverse/createApplicationCommand.cjs +0 -36
- package/dist/cjs/utils.cjs +0 -32
- package/dist/esm/transformers/reverse/createApplicationCommand.js +0 -26
- package/dist/esm/utils.js +0 -11
- package/dist/types/transformers/reverse/createApplicationCommand.d.ts +0 -3
- package/dist/types/transformers/reverse/createApplicationCommand.d.ts.map +0 -1
- package/dist/types/utils.d.ts +0 -5
- package/dist/types/utils.d.ts.map +0 -1
|
@@ -16,9 +16,11 @@ export * from './emoji.js';
|
|
|
16
16
|
export * from './entitlement.js';
|
|
17
17
|
export * from './gatewayBot.js';
|
|
18
18
|
export * from './guild.js';
|
|
19
|
+
export * from './incidentsData.js';
|
|
19
20
|
export * from './integration.js';
|
|
20
21
|
export * from './interaction.js';
|
|
21
22
|
export * from './invite.js';
|
|
23
|
+
export * from './lobby.js';
|
|
22
24
|
export * from './member.js';
|
|
23
25
|
export * from './message.js';
|
|
24
26
|
export * from './onboarding.js';
|
|
@@ -28,23 +30,23 @@ export * from './reverse/index.js';
|
|
|
28
30
|
export * from './role.js';
|
|
29
31
|
export * from './scheduledEvent.js';
|
|
30
32
|
export * from './sku.js';
|
|
33
|
+
export * from './soundboardSound.js';
|
|
31
34
|
export * from './stageInstance.js';
|
|
32
35
|
export * from './stageInviteInstance.js';
|
|
33
36
|
export * from './sticker.js';
|
|
37
|
+
export * from './subscription.js';
|
|
38
|
+
export * from './subscription.js';
|
|
34
39
|
export * from './team.js';
|
|
35
40
|
export * from './template.js';
|
|
36
41
|
export * from './threadMember.js';
|
|
37
42
|
export * from './toggles/index.js';
|
|
38
43
|
export * from './types.js';
|
|
39
|
-
export * from './subscription.js';
|
|
40
|
-
export * from './soundboardSound.js';
|
|
41
44
|
export * from './user.js';
|
|
42
45
|
export * from './voiceRegion.js';
|
|
43
46
|
export * from './voiceState.js';
|
|
44
47
|
export * from './webhook.js';
|
|
45
|
-
export * from './subscription.js';
|
|
46
48
|
export * from './welcomeScreen.js';
|
|
47
49
|
export * from './widget.js';
|
|
48
50
|
export * from './widgetSettings.js';
|
|
49
51
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS5qcydcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uQ29tbWFuZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb25Db21tYW5kT3B0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25DaG9pY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0TG9nRW50cnkuanMnXG5leHBvcnQgKiBmcm9tICcuL2F1dG9tb2RBY3Rpb25FeGVjdXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2F1dG9tb2RSdWxlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9hdmF0YXJEZWNvcmF0aW9uRGF0YS5qcydcbmV4cG9ydCAqIGZyb20gJy4vY2hhbm5lbC5qcydcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9lbWJlZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vZW1vamkuanMnXG5leHBvcnQgKiBmcm9tICcuL2VudGl0bGVtZW50LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9nYXRld2F5Qm90LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9ndWlsZC5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW5jaWRlbnRzRGF0YS5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW50ZWdyYXRpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2ludGVyYWN0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9pbnZpdGUuanMnXG5leHBvcnQgKiBmcm9tICcuL2xvYmJ5LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2UuanMnXG5leHBvcnQgKiBmcm9tICcuL29uYm9hcmRpbmcuanMnXG5leHBvcnQgKiBmcm9tICcuL3BvbGwuanMnXG5leHBvcnQgKiBmcm9tICcuL3ByZXNlbmNlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9yZXZlcnNlL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9yb2xlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlZHVsZWRFdmVudC5qcydcbmV4cG9ydCAqIGZyb20gJy4vc2t1LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zb3VuZGJvYXJkU291bmQuanMnXG5leHBvcnQgKiBmcm9tICcuL3N0YWdlSW5zdGFuY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL3N0YWdlSW52aXRlSW5zdGFuY2UuanMnXG5leHBvcnQgKiBmcm9tICcuL3N0aWNrZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL3N1YnNjcmlwdGlvbi5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9uLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90ZWFtLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWFkTWVtYmVyLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGVzL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy5qcydcbmV4cG9ydCAqIGZyb20gJy4vdXNlci5qcydcbmV4cG9ydCAqIGZyb20gJy4vdm9pY2VSZWdpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL3ZvaWNlU3RhdGUuanMnXG5leHBvcnQgKiBmcm9tICcuL3dlYmhvb2suanMnXG5leHBvcnQgKiBmcm9tICcuL3dlbGNvbWVTY3JlZW4uanMnXG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC5qcydcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0U2V0dGluZ3MuanMnXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZTtBQUM3QixjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLDBCQUF5QjtBQUN2QyxjQUFjLGdDQUErQjtBQUM3QyxjQUFjLHNDQUFxQztBQUNuRCxjQUFjLG9DQUFtQztBQUNqRCxjQUFjLGtCQUFpQjtBQUMvQixjQUFjLHFCQUFvQjtBQUNsQyxjQUFjLDhCQUE2QjtBQUMzQyxjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLDRCQUEyQjtBQUN6QyxjQUFjLGVBQWM7QUFDNUIsY0FBYyxpQkFBZ0I7QUFDOUIsY0FBYyxhQUFZO0FBQzFCLGNBQWMsYUFBWTtBQUMxQixjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLGtCQUFpQjtBQUMvQixjQUFjLGFBQVk7QUFDMUIsY0FBYyxxQkFBb0I7QUFDbEMsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxjQUFhO0FBQzNCLGNBQWMsYUFBWTtBQUMxQixjQUFjLGNBQWE7QUFDM0IsY0FBYyxlQUFjO0FBQzVCLGNBQWMsa0JBQWlCO0FBQy9CLGNBQWMsWUFBVztBQUN6QixjQUFjLGdCQUFlO0FBQzdCLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsWUFBVztBQUN6QixjQUFjLHNCQUFxQjtBQUNuQyxjQUFjLFdBQVU7QUFDeEIsY0FBYyx1QkFBc0I7QUFDcEMsY0FBYyxxQkFBb0I7QUFDbEMsY0FBYywyQkFBMEI7QUFDeEMsY0FBYyxlQUFjO0FBQzVCLGNBQWMsb0JBQW1CO0FBQ2pDLGNBQWMsb0JBQW1CO0FBQ2pDLGNBQWMsWUFBVztBQUN6QixjQUFjLGdCQUFlO0FBQzdCLGNBQWMsb0JBQW1CO0FBQ2pDLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsYUFBWTtBQUMxQixjQUFjLFlBQVc7QUFDekIsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxrQkFBaUI7QUFDL0IsY0FBYyxlQUFjO0FBQzVCLGNBQWMscUJBQW9CO0FBQ2xDLGNBQWMsY0FBYTtBQUMzQixjQUFjLHNCQUFxQiJ9
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { DiscordApplicationIntegrationType, InteractionResponseTypes, InteractionTypes, MessageFlags } from '@discordeno/types';
|
|
2
2
|
import { Collection } from '@discordeno/utils';
|
|
3
|
+
// Assume we have all desired properties for this or else typescript will get very confused for the return types of these functions.
|
|
4
|
+
// This is used as a prototype, so the actual type with the user desired properties will be set later.
|
|
3
5
|
export const baseInteraction = {
|
|
4
6
|
// This allows typescript to still check for type errors on functions below
|
|
5
7
|
...undefined,
|
|
@@ -12,18 +14,22 @@ export const baseInteraction = {
|
|
|
12
14
|
// If user provides an object, determine if it should be an autocomplete or a modal response
|
|
13
15
|
if (response.title) type = InteractionResponseTypes.Modal;
|
|
14
16
|
if (this.type === InteractionTypes.ApplicationCommandAutocomplete) type = InteractionResponseTypes.ApplicationCommandAutocompleteResult;
|
|
15
|
-
if (type === InteractionResponseTypes.ChannelMessageWithSource && options?.isPrivate)
|
|
17
|
+
if (type === InteractionResponseTypes.ChannelMessageWithSource && options?.isPrivate) {
|
|
18
|
+
response.flags ??= 0;
|
|
19
|
+
response.flags |= MessageFlags.Ephemeral;
|
|
20
|
+
}
|
|
16
21
|
// Since this has already been given a response, any further responses must be followups.
|
|
17
22
|
if (this.acknowledged) return await this.bot.helpers.sendFollowupMessage(this.token, response);
|
|
18
23
|
// Modals cannot be chained
|
|
19
24
|
if (this.type === InteractionTypes.ModalSubmit && type === InteractionResponseTypes.Modal) throw new Error('Cannot respond to a modal interaction with another modal.');
|
|
20
|
-
this.
|
|
21
|
-
return await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
25
|
+
const result = await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
22
26
|
type,
|
|
23
27
|
data: response
|
|
24
28
|
}, {
|
|
25
29
|
withResponse: options?.withResponse
|
|
26
30
|
});
|
|
31
|
+
this.acknowledged = true;
|
|
32
|
+
return result;
|
|
27
33
|
},
|
|
28
34
|
async edit (response, messageId, options) {
|
|
29
35
|
if (this.type === InteractionTypes.ApplicationCommandAutocomplete) throw new Error('Cannot edit an autocomplete interaction.');
|
|
@@ -36,11 +42,12 @@ export const baseInteraction = {
|
|
|
36
42
|
}
|
|
37
43
|
if (!this.acknowledged) {
|
|
38
44
|
if (this.type !== InteractionTypes.MessageComponent && this.type !== InteractionTypes.ModalSubmit) throw new Error("This interaction has not been responded to yet and this isn't a MessageComponent or ModalSubmit interaction.");
|
|
39
|
-
this.
|
|
40
|
-
return await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
45
|
+
const result = await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
41
46
|
type: InteractionResponseTypes.UpdateMessage,
|
|
42
47
|
data: response
|
|
43
48
|
}, options);
|
|
49
|
+
this.acknowledged = true;
|
|
50
|
+
return result;
|
|
44
51
|
}
|
|
45
52
|
return await this.bot.helpers.editOriginalInteractionResponse(this.token, response);
|
|
46
53
|
},
|
|
@@ -48,20 +55,22 @@ export const baseInteraction = {
|
|
|
48
55
|
if (this.type === InteractionTypes.ApplicationCommandAutocomplete) throw new Error('Cannot edit an autocomplete interaction.');
|
|
49
56
|
if (this.acknowledged) throw new Error('Cannot defer an already responded interaction.');
|
|
50
57
|
if (this.type !== InteractionTypes.MessageComponent && this.type !== InteractionTypes.ModalSubmit) throw new Error("Cannot defer to then edit an interaction that isn't a MessageComponent or ModalSubmit interaction.");
|
|
51
|
-
this.
|
|
52
|
-
return await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
58
|
+
const result = await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
53
59
|
type: InteractionResponseTypes.DeferredUpdateMessage
|
|
54
60
|
}, options);
|
|
61
|
+
this.acknowledged = true;
|
|
62
|
+
return result;
|
|
55
63
|
},
|
|
56
64
|
async defer (isPrivate, options) {
|
|
57
65
|
if (this.acknowledged) throw new Error('Cannot defer an already responded interaction.');
|
|
58
|
-
this.
|
|
59
|
-
return await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
66
|
+
const result = await this.bot.helpers.sendInteractionResponse(this.id, this.token, {
|
|
60
67
|
type: InteractionResponseTypes.DeferredChannelMessageWithSource,
|
|
61
68
|
data: {
|
|
62
69
|
flags: isPrivate ? MessageFlags.Ephemeral : undefined
|
|
63
70
|
}
|
|
64
71
|
}, options);
|
|
72
|
+
this.acknowledged = true;
|
|
73
|
+
return result;
|
|
65
74
|
},
|
|
66
75
|
async delete (messageId) {
|
|
67
76
|
if (this.type === InteractionTypes.ApplicationCommandAutocomplete) throw new Error('Cannot delete an autocomplete interaction');
|
|
@@ -71,7 +80,6 @@ export const baseInteraction = {
|
|
|
71
80
|
};
|
|
72
81
|
export function transformInteraction(bot, payload) {
|
|
73
82
|
const guildId = payload.interaction.guild_id ? bot.transformers.snowflake(payload.interaction.guild_id) : undefined;
|
|
74
|
-
const user = bot.transformers.user(bot, payload.interaction.member?.user ?? payload.interaction.user);
|
|
75
83
|
const interaction = Object.create(baseInteraction);
|
|
76
84
|
const props = bot.transformers.desiredProperties.interaction;
|
|
77
85
|
// Typescript has an hard time with this, so we need to tell him for sure this is a Bot
|
|
@@ -90,7 +98,10 @@ export function transformInteraction(bot, payload) {
|
|
|
90
98
|
shardId: payload.shardId
|
|
91
99
|
});
|
|
92
100
|
if (props.guildId && guildId) interaction.guildId = guildId;
|
|
93
|
-
if (props.user
|
|
101
|
+
if (props.user) {
|
|
102
|
+
if (payload.interaction.member?.user) interaction.user = bot.transformers.user(bot, payload.interaction.member?.user);
|
|
103
|
+
else if (payload.interaction.user) interaction.user = bot.transformers.user(bot, payload.interaction.user);
|
|
104
|
+
}
|
|
94
105
|
if (props.appPermissions && payload.interaction.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.interaction.app_permissions);
|
|
95
106
|
if (props.message && payload.interaction.message) interaction.message = bot.transformers.message(bot, {
|
|
96
107
|
message: payload.interaction.message,
|
|
@@ -101,13 +112,15 @@ export function transformInteraction(bot, payload) {
|
|
|
101
112
|
guildId
|
|
102
113
|
});
|
|
103
114
|
if (props.channelId && payload.interaction.channel_id) interaction.channelId = bot.transformers.snowflake(payload.interaction.channel_id);
|
|
104
|
-
if (props.member && guildId && payload.interaction.member) interaction.member = bot.transformers.member(bot, payload.interaction.member, guildId, user.id);
|
|
115
|
+
if (props.member && guildId && payload.interaction.member) interaction.member = bot.transformers.member(bot, payload.interaction.member, guildId, payload.interaction.member?.user.id ?? payload.interaction.user?.id);
|
|
116
|
+
if (props.entitlements && payload.interaction.entitlements) interaction.entitlements = payload.interaction.entitlements.map((e)=>bot.transformers.entitlement(bot, e));
|
|
105
117
|
if (props.authorizingIntegrationOwners && payload.interaction.authorizing_integration_owners) {
|
|
106
118
|
interaction.authorizingIntegrationOwners = {};
|
|
107
119
|
if (payload.interaction.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['0']);
|
|
108
120
|
if (payload.interaction.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['1']);
|
|
109
121
|
}
|
|
110
122
|
if (props.context && payload.interaction.context) interaction.context = payload.interaction.context;
|
|
123
|
+
if (props.attachmentSizeLimit && payload.interaction.attachment_size_limit) interaction.attachmentSizeLimit = payload.interaction.attachment_size_limit;
|
|
111
124
|
if (props.data && payload.interaction.data) {
|
|
112
125
|
interaction.data = {
|
|
113
126
|
type: payload.interaction.data.type,
|
|
@@ -143,6 +156,7 @@ export function transformInteractionDataResolved(bot, payload) {
|
|
|
143
156
|
const transformed = {};
|
|
144
157
|
if (payload.resolved.messages) {
|
|
145
158
|
transformed.messages = new Collection(Object.entries(payload.resolved.messages).map(([_id, value])=>{
|
|
159
|
+
// @ts-expect-error TODO: Deal with partials
|
|
146
160
|
const message = bot.transformers.message(bot, {
|
|
147
161
|
message: value,
|
|
148
162
|
shardId: payload.shardId
|
|
@@ -164,7 +178,9 @@ export function transformInteractionDataResolved(bot, payload) {
|
|
|
164
178
|
}
|
|
165
179
|
if (payload.guildId && payload.resolved.members) {
|
|
166
180
|
transformed.members = new Collection(Object.entries(payload.resolved.members).map(([id, value])=>{
|
|
181
|
+
// @ts-expect-error TODO: Deal with partials, value is missing 2 values but the transformer can handle it, despite what the types says
|
|
167
182
|
const member = bot.transformers.member(bot, value, payload.guildId, bot.transformers.snowflake(id));
|
|
183
|
+
// We need to tell TS that we are sure the id is a bigint
|
|
168
184
|
return [
|
|
169
185
|
member.id,
|
|
170
186
|
member
|
|
@@ -188,6 +204,7 @@ export function transformInteractionDataResolved(bot, payload) {
|
|
|
188
204
|
const channel = bot.transformers.channel(bot, {
|
|
189
205
|
channel: value
|
|
190
206
|
});
|
|
207
|
+
// We need to tell TS that we are sure the id is a bigint
|
|
191
208
|
return [
|
|
192
209
|
channel.id,
|
|
193
210
|
channel
|
|
@@ -197,9 +214,10 @@ export function transformInteractionDataResolved(bot, payload) {
|
|
|
197
214
|
if (payload.resolved.attachments) {
|
|
198
215
|
transformed.attachments = new Collection(Object.entries(payload.resolved.attachments).map(([key, value])=>{
|
|
199
216
|
const id = bot.transformers.snowflake(key);
|
|
217
|
+
const attachment = bot.transformers.attachment(bot, value);
|
|
200
218
|
return [
|
|
201
219
|
id,
|
|
202
|
-
|
|
220
|
+
attachment
|
|
203
221
|
];
|
|
204
222
|
}));
|
|
205
223
|
}
|
|
@@ -238,4 +256,4 @@ export function transformInteractionResource(bot, payload) {
|
|
|
238
256
|
return bot.transformers.customizers.interactionResource(bot, payload.interactionResource, resource);
|
|
239
257
|
}
|
|
240
258
|
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJvdCxcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWRDaGFubmVsLFxuICBJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcm5hbEJvdCxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxufSBmcm9tICcuLi9pbmRleC5qcydcblxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogSW50ZXJuYWxCb3RbJ3RyYW5zZm9ybWVycyddWyckaW5mZXJyZWRUeXBlcyddWydpbnRlcmFjdGlvbiddID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIEludGVybmFsQm90Wyd0cmFuc2Zvcm1lcnMnXVsnJGluZmVycmVkVHlwZXMnXVsnaW50ZXJhY3Rpb24nXSksXG5cbiAgYXN5bmMgcmVzcG9uZChyZXNwb25zZSwgb3B0aW9ucykge1xuICAgIGxldCB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGFuIG9iamVjdCwgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBhbiBhdXRvY29tcGxldGUgb3IgYSBtb2RhbCByZXNwb25zZVxuICAgIGlmIChyZXNwb25zZS50aXRsZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdFxuICAgIGlmICh0eXBlID09PSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlICYmIG9wdGlvbnM/LmlzUHJpdmF0ZSkgcmVzcG9uc2UuZmxhZ3MgPSBNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsXG5cbiAgICAvLyBTaW5jZSB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZ2l2ZW4gYSByZXNwb25zZSwgYW55IGZ1cnRoZXIgcmVzcG9uc2VzIG11c3QgYmUgZm9sbG93dXBzLlxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCwgdGhpcy50b2tlbiwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9LCB7IHdpdGhSZXNwb25zZTogb3B0aW9ucz8ud2l0aFJlc3BvbnNlIH0pXG4gIH0sXG4gIGFzeW5jIGVkaXQocmVzcG9uc2UsIG1lc3NhZ2VJZCwgb3B0aW9ucykge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhIHN0cmluZywgY2hhbmdlIGl0IHRvIGEgcmVzcG9uc2Ugb2JqZWN0XG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycpIHJlc3BvbnNlID0geyBjb250ZW50OiByZXNwb25zZSB9XG5cbiAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZWRpdEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudCAmJiB0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgaW50ZXJhY3Rpb24gaGFzIG5vdCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQgYW5kIHRoaXMgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IG9yIE1vZGFsU3VibWl0IGludGVyYWN0aW9uLlwiKVxuXG4gICAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdChvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50ICYmIHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgb3IgTW9kYWxTdWJtaXQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkLCB0aGlzLnRva2VuLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSwgb3B0aW9ucylcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHtcbiAgICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApXG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbilcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiB7IGludGVyYWN0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb247IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG4gIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcj8udXNlciA/PyBwYXlsb2FkLmludGVyYWN0aW9uLnVzZXIhKVxuXG4gIGNvbnN0IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiA9IE9iamVjdC5jcmVhdGUoYmFzZUludGVyYWN0aW9uKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggdGhpcywgc28gd2UgbmVlZCB0byB0ZWxsIGhpbSBmb3Igc3VyZSB0aGlzIGlzIGEgQm90XG4gIGludGVyYWN0aW9uLmJvdCA9IGJvdCBhcyB1bmtub3duIGFzIEJvdFxuICBpbnRlcmFjdGlvbi5hY2tub3dsZWRnZWQgPSBmYWxzZVxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmlkKSBpbnRlcmFjdGlvbi5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uaWQpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gICAgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLmludGVyYWN0aW9uLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQuaW50ZXJhY3Rpb24udmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkIGlzIGEgUGFydGlhbDxEaXNjb3JkR3VpbGQ+XG4gICAgaW50ZXJhY3Rpb24uZ3VpbGQgPSBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgeyBndWlsZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gIGlmIChwcm9wcy5ndWlsZElkICYmIGd1aWxkSWQpIGludGVyYWN0aW9uLmd1aWxkSWQgPSBndWlsZElkXG4gIGlmIChwcm9wcy51c2VyICYmIHVzZXIpIGludGVyYWN0aW9uLnVzZXIgPSB1c2VyXG4gIGlmIChwcm9wcy5hcHBQZXJtaXNzaW9ucyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgICBpbnRlcmFjdGlvbi5hcHBQZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uYXBwX3Blcm1pc3Npb25zKVxuICBpZiAocHJvcHMubWVzc2FnZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lc3NhZ2UpXG4gICAgaW50ZXJhY3Rpb24ubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlLCBzaGFyZElkOiAwIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbClcbiAgICBpbnRlcmFjdGlvbi5jaGFubmVsID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsOiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwgYXMgRGlzY29yZENoYW5uZWwsIGd1aWxkSWQgfSlcbiAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpIGludGVyYWN0aW9uLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLm1lbWJlciAmJiBndWlsZElkICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyKVxuICAgIGludGVyYWN0aW9uLm1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZW1iZXIsIGd1aWxkSWQsIHVzZXIuaWQpXG4gIGlmIChwcm9wcy5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzKSB7XG4gICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyA9IHt9XG5cbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLkd1aWxkSW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSxcbiAgICAgIClcbiAgICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSlcbiAgICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddLFxuICAgICAgKVxuICB9XG4gIGlmIChwcm9wcy5jb250ZXh0ICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dCkgaW50ZXJhY3Rpb24uY29udGV4dCA9IHBheWxvYWQuaW50ZXJhY3Rpb24uY29udGV4dFxuICBpZiAocHJvcHMuZGF0YSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEpIHtcbiAgICBpbnRlcmFjdGlvbi5kYXRhID0ge1xuICAgICAgdHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnR5cGUsXG4gICAgICBjb21wb25lbnRUeXBlOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50X3R5cGUsXG4gICAgICBjdXN0b21JZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmN1c3RvbV9pZCxcbiAgICAgIGNvbXBvbmVudHM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jb21wb25lbnRzPy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKSxcbiAgICAgIHZhbHVlczogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnZhbHVlcyxcbiAgICAgIGlkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuaWQpIDogdW5kZWZpbmVkLFxuICAgICAgbmFtZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLm5hbWUsXG4gICAgICByZXNvbHZlZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkXG4gICAgICAgID8gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHsgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZCwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkLCBndWlsZElkIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9uczogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLm9wdGlvbnM/Lm1hcCgob3B0KSA9PiBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YU9wdGlvbnMoYm90LCBvcHQpKSxcbiAgICAgIHRhcmdldElkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEudGFyZ2V0X2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCkgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9XG5cbiAgLy8gVHlwZXNjcmlwdCBoYXMgYW4gaGFyZCB0aW1lIHdpdGggaW50ZXJhY3Rpb24uYm90LCBzbyB3ZSBuZWVkIHRvIHRlbGwgaGltIGZvciBzdXJlIHRoaXMgaW50ZXJhY3Rpb24gaXMgdGhlIG9mIHRoZSBjb3JyZWN0IHR5cGVcbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb24oYm90LCBwYXlsb2FkLCBpbnRlcmFjdGlvbiBhcyB1bmtub3duIGFzIHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uKGJvdDogQm90LCBvcHRpb246IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24pOiBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBjb25zdCBvcHQgPSB7XG4gICAgbmFtZTogb3B0aW9uLm5hbWUsXG4gICAgdHlwZTogb3B0aW9uLnR5cGUsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICBmb2N1c2VkOiBvcHRpb24uZm9jdXNlZCxcbiAgfSBhcyBJbnRlcmFjdGlvbkRhdGFPcHRpb25cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0aW9uLCBvcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChcbiAgYm90OiBJbnRlcm5hbEJvdCxcbiAgcGF5bG9hZDogeyByZXNvbHZlZDogRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkOyBzaGFyZElkOiBudW1iZXI7IGd1aWxkSWQ/OiBiaWdpbnQgfSxcbik6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgY29uc3QgdHJhbnNmb3JtZWQ6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkID0ge31cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykge1xuICAgIHRyYW5zZm9ybWVkLm1lc3NhZ2VzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lc3NhZ2VzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlOiBNZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgeyBtZXNzYWdlOiB2YWx1ZSwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pXG4gICAgICAgIHJldHVybiBbbWVzc2FnZS5pZCwgbWVzc2FnZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLnJlc29sdmVkLnVzZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQudXNlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQudXNlcnMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFt1c2VyLmlkLCB1c2VyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLm1lbWJlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZW1iZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lbWJlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVyOiBNZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHZhbHVlLCBwYXlsb2FkLmd1aWxkSWQhLCBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCkpXG4gICAgICAgIHJldHVybiBbbWVtYmVyLmlkLCBtZW1iZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocGF5bG9hZC5ndWlsZElkICYmIHBheWxvYWQucmVzb2x2ZWQucm9sZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5yb2xlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5yb2xlcykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHsgcm9sZTogdmFsdWUsIGd1aWxkSWQ6IHBheWxvYWQuZ3VpbGRJZCEgfSlcbiAgICAgICAgcmV0dXJuIFtyb2xlLmlkLCByb2xlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5jaGFubmVscykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogdmFsdWUgfSkgYXMgSW50ZXJhY3Rpb25SZXNvbHZlZENoYW5uZWxcbiAgICAgICAgcmV0dXJuIFtjaGFubmVsLmlkLCBjaGFubmVsXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5hdHRhY2htZW50cyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5hdHRhY2htZW50cykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIHJldHVybiBbaWQsIGJvdC50cmFuc2Zvcm1lcnMuYXR0YWNobWVudChib3QsIHZhbHVlKV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZCwgdHJhbnNmb3JtZWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcbiAgY29uc3QgcmVzcG9uc2UgPSB7fSBhcyBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcblxuICBpZiAocHJvcHMuaW50ZXJhY3Rpb24gJiYgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UuaW50ZXJhY3Rpb24pXG4gICAgcmVzcG9uc2UuaW50ZXJhY3Rpb24gPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5pbnRlcmFjdGlvbilcbiAgaWYgKHByb3BzLnJlc291cmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLnJlc291cmNlKVxuICAgIHJlc3BvbnNlLnJlc291cmNlID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwge1xuICAgICAgaW50ZXJhY3Rpb25SZXNvdXJjZTogcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UucmVzb3VyY2UsXG4gICAgICBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQsXG4gICAgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSwgcmVzcG9uc2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrKFxuICBib3Q6IEludGVybmFsQm90LFxuICBwYXlsb2FkOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbik6IHR5cGVvZiBib3QudHJhbnNmb3JtZXJzLiRpbmZlcnJlZFR5cGVzLmludGVyYWN0aW9uQ2FsbGJhY2sge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25DYWxsYmFja1xuICBjb25zdCBjYWxsYmFjayA9IHt9IGFzIEludGVyYWN0aW9uQ2FsbGJhY2tcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2FsbGJhY2suaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNhbGxiYWNrLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2VJZCAmJiBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkKSBjYWxsYmFjay5hY3Rpdml0eUluc3RhbmNlSWQgPSBwYXlsb2FkLmFjdGl2aXR5X2luc3RhbmNlX2lkXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VJZCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfaWQpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKVxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCA9IHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWxcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmcpIGNhbGxiYWNrLnJlc3BvbnNlTWVzc2FnZUxvYWRpbmcgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfbG9hZGluZ1xuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uQ2FsbGJhY2soYm90LCBwYXlsb2FkLCBjYWxsYmFjaylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uUmVzb3VyY2UoXG4gIGJvdDogSW50ZXJuYWxCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25SZXNvdXJjZTogRGlzY29yZEludGVyYWN0aW9uUmVzb3VyY2U7IHNoYXJkSWQ6IG51bWJlciB9LFxuKTogdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb25SZXNvdXJjZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblJlc291cmNlXG4gIGNvbnN0IHJlc291cmNlID0ge30gYXMgSW50ZXJhY3Rpb25SZXNvdXJjZVxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlKSByZXNvdXJjZS50eXBlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLnR5cGVcbiAgaWYgKHByb3BzLmFjdGl2aXR5SW5zdGFuY2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlKVxuICAgIHJlc291cmNlLmFjdGl2aXR5SW5zdGFuY2UgPSBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UuYWN0aXZpdHlfaW5zdGFuY2VcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLm1lc3NhZ2UpXG4gICAgcmVzb3VyY2UubWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHsgbWVzc2FnZTogcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLm1lc3NhZ2UsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uUmVzb3VyY2UoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UsIHJlc291cmNlKVxufVxuIl0sIm5hbWVzIjpbIkRpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZSIsIkludGVyYWN0aW9uUmVzcG9uc2VUeXBlcyIsIkludGVyYWN0aW9uVHlwZXMiLCJNZXNzYWdlRmxhZ3MiLCJDb2xsZWN0aW9uIiwiYmFzZUludGVyYWN0aW9uIiwidW5kZWZpbmVkIiwicmVzcG9uZCIsInJlc3BvbnNlIiwib3B0aW9ucyIsInR5cGUiLCJDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJjb250ZW50IiwidGl0bGUiLCJNb2RhbCIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdCIsImlzUHJpdmF0ZSIsImZsYWdzIiwiRXBoZW1lcmFsIiwiYWNrbm93bGVkZ2VkIiwiYm90IiwiaGVscGVycyIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIk1vZGFsU3VibWl0IiwiRXJyb3IiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImlkIiwiZGF0YSIsIndpdGhSZXNwb25zZSIsImVkaXQiLCJtZXNzYWdlSWQiLCJlZGl0Rm9sbG93dXBNZXNzYWdlIiwiTWVzc2FnZUNvbXBvbmVudCIsIlVwZGF0ZU1lc3NhZ2UiLCJlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZGVmZXJFZGl0IiwiRGVmZXJyZWRVcGRhdGVNZXNzYWdlIiwiZGVmZXIiLCJEZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSIsImRlbGV0ZSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsInRyYW5zZm9ybUludGVyYWN0aW9uIiwicGF5bG9hZCIsImd1aWxkSWQiLCJpbnRlcmFjdGlvbiIsImd1aWxkX2lkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwidXNlciIsIm1lbWJlciIsIk9iamVjdCIsImNyZWF0ZSIsInByb3BzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJhcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25faWQiLCJ2ZXJzaW9uIiwibG9jYWxlIiwiZ3VpbGRMb2NhbGUiLCJndWlsZF9sb2NhbGUiLCJndWlsZCIsInNoYXJkSWQiLCJhcHBQZXJtaXNzaW9ucyIsImFwcF9wZXJtaXNzaW9ucyIsIm1lc3NhZ2UiLCJjaGFubmVsIiwiY2hhbm5lbElkIiwiY2hhbm5lbF9pZCIsImF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMiLCJhdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMiLCJHdWlsZEluc3RhbGwiLCJVc2VySW5zdGFsbCIsImNvbnRleHQiLCJjb21wb25lbnRUeXBlIiwiY29tcG9uZW50X3R5cGUiLCJjdXN0b21JZCIsImN1c3RvbV9pZCIsImNvbXBvbmVudHMiLCJtYXAiLCJjb21wb25lbnQiLCJ2YWx1ZXMiLCJuYW1lIiwicmVzb2x2ZWQiLCJpbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsIm9wdCIsImludGVyYWN0aW9uRGF0YU9wdGlvbnMiLCJ0YXJnZXRJZCIsInRhcmdldF9pZCIsImN1c3RvbWl6ZXJzIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uIiwib3B0aW9uIiwidmFsdWUiLCJmb2N1c2VkIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJ0cmFuc2Zvcm1lZCIsIm1lc3NhZ2VzIiwiZW50cmllcyIsIl9pZCIsInVzZXJzIiwibWVtYmVycyIsInJvbGVzIiwicm9sZSIsImNoYW5uZWxzIiwiYXR0YWNobWVudHMiLCJrZXkiLCJhdHRhY2htZW50IiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlIiwiaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlIiwiaW50ZXJhY3Rpb25DYWxsYmFjayIsInJlc291cmNlIiwiaW50ZXJhY3Rpb25SZXNvdXJjZSIsInRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2siLCJjYWxsYmFjayIsImFjdGl2aXR5SW5zdGFuY2VJZCIsImFjdGl2aXR5X2luc3RhbmNlX2lkIiwicmVzcG9uc2VNZXNzYWdlSWQiLCJyZXNwb25zZV9tZXNzYWdlX2lkIiwicmVzcG9uc2VNZXNzYWdlRXBoZW1lcmFsIiwicmVzcG9uc2VfbWVzc2FnZV9lcGhlbWVyYWwiLCJyZXNwb25zZU1lc3NhZ2VMb2FkaW5nIiwicmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25SZXNvdXJjZSIsImFjdGl2aXR5SW5zdGFuY2UiLCJhY3Rpdml0eV9pbnN0YW5jZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsaUNBQWlDLEVBT2pDQyx3QkFBd0IsRUFDeEJDLGdCQUFnQixFQUNoQkMsWUFBWSxRQUNQLG9CQUFtQjtBQUMxQixTQUFTQyxVQUFVLFFBQVEsb0JBQW1CO0FBZ0I5QyxPQUFPLE1BQU1DLGtCQUFnRjtJQUMzRiwyRUFBMkU7SUFDM0UsR0FBSUMsU0FBUztJQUViLE1BQU1DLFNBQVFDLFFBQVEsRUFBRUMsT0FBTztRQUM3QixJQUFJQyxPQUFPVCx5QkFBeUJVLHdCQUF3QjtRQUU1RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUFPSCxhQUFhLFVBQVVBLFdBQVc7WUFBRUksU0FBU0o7UUFBUztRQUVqRSw0RkFBNEY7UUFDNUYsSUFBSUEsU0FBU0ssS0FBSyxFQUFFSCxPQUFPVCx5QkFBeUJhLEtBQUs7UUFDekQsSUFBSSxJQUFJLENBQUNKLElBQUksS0FBS1IsaUJBQWlCYSw4QkFBOEIsRUFBRUwsT0FBT1QseUJBQXlCZSxvQ0FBb0M7UUFDdkksSUFBSU4sU0FBU1QseUJBQXlCVSx3QkFBd0IsSUFBSUYsU0FBU1EsV0FBV1QsU0FBU1UsS0FBSyxHQUFHZixhQUFhZ0IsU0FBUztRQUU3SCx5RkFBeUY7UUFDekYsSUFBSSxJQUFJLENBQUNDLFlBQVksRUFBRSxPQUFPLE1BQU0sSUFBSSxDQUFDQyxHQUFHLENBQUNDLE9BQU8sQ0FBQ0MsbUJBQW1CLENBQUMsSUFBSSxDQUFDQyxLQUFLLEVBQUVoQjtRQUVyRiwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUNFLElBQUksS0FBS1IsaUJBQWlCdUIsV0FBVyxJQUFJZixTQUFTVCx5QkFBeUJhLEtBQUssRUFDdkYsTUFBTSxJQUFJWSxNQUFNO1FBRWxCLElBQUksQ0FB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
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFjayxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkLFxuICB0eXBlIERpc2NvcmRJbnRlcmFjdGlvblJlc291cmNlLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMsXG4gIEludGVyYWN0aW9uVHlwZXMsXG4gIE1lc3NhZ2VGbGFncyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIEJvdCxcbiAgQ29tcGxldGVEZXNpcmVkUHJvcGVydGllcyxcbiAgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcixcbiAgRGlzY29yZENoYW5uZWwsXG4gIEludGVyYWN0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsXG4gIEludGVyYWN0aW9uUmVzb2x2ZWREYXRhQ2hhbm5lbCxcbiAgSW50ZXJhY3Rpb25SZXNvbHZlZERhdGFNZW1iZXIsXG4gIEludGVyYWN0aW9uUmVzb3VyY2UsXG4gIE1lc3NhZ2UsXG4gIFJvbGUsXG4gIFNldHVwRGVzaXJlZFByb3BzLFxuICBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyxcbiAgVHJhbnNmb3JtUHJvcGVydHksXG4gIFVzZXIsXG59IGZyb20gJy4uL2luZGV4LmpzJ1xuXG4vLyBBc3N1bWUgd2UgaGF2ZSBhbGwgZGVzaXJlZCBwcm9wZXJ0aWVzIGZvciB0aGlzIG9yIGVsc2UgdHlwZXNjcmlwdCB3aWxsIGdldCB2ZXJ5IGNvbmZ1c2VkIGZvciB0aGUgcmV0dXJuIHR5cGVzIG9mIHRoZXNlIGZ1bmN0aW9ucy5cbi8vIFRoaXMgaXMgdXNlZCBhcyBhIHByb3RvdHlwZSwgc28gdGhlIGFjdHVhbCB0eXBlIHdpdGggdGhlIHVzZXIgZGVzaXJlZCBwcm9wZXJ0aWVzIHdpbGwgYmUgc2V0IGxhdGVyLlxuZXhwb3J0IGNvbnN0IGJhc2VJbnRlcmFjdGlvbjogU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb24sIENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8e30sIHRydWU+LCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleT4gPSB7XG4gIC8vIFRoaXMgYWxsb3dzIHR5cGVzY3JpcHQgdG8gc3RpbGwgY2hlY2sgZm9yIHR5cGUgZXJyb3JzIG9uIGZ1bmN0aW9ucyBiZWxvd1xuICAuLi4odW5kZWZpbmVkIGFzIHVua25vd24gYXMgU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb24sIENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8e30sIHRydWU+LCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleT4pLFxuXG4gIGFzeW5jIHJlc3BvbmQocmVzcG9uc2UsIG9wdGlvbnMpIHtcbiAgICBsZXQgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2VcblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYSBzdHJpbmcsIGNoYW5nZSBpdCB0byBhIHJlc3BvbnNlIG9iamVjdFxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnKSByZXNwb25zZSA9IHsgY29udGVudDogcmVzcG9uc2UgfVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhbiBvYmplY3QsIGRldGVybWluZSBpZiBpdCBzaG91bGQgYmUgYW4gYXV0b2NvbXBsZXRlIG9yIGEgbW9kYWwgcmVzcG9uc2VcbiAgICBpZiAocmVzcG9uc2UudGl0bGUpIHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuTW9kYWxcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHRcbiAgICBpZiAodHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSAmJiBvcHRpb25zPy5pc1ByaXZhdGUpIHtcbiAgICAgIHJlc3BvbnNlLmZsYWdzID8/PSAwXG4gICAgICByZXNwb25zZS5mbGFncyB8PSBNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsXG4gICAgfVxuXG4gICAgLy8gU2luY2UgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGdpdmVuIGEgcmVzcG9uc2UsIGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBtdXN0IGJlIGZvbGxvd3Vwcy5cbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiwgcmVzcG9uc2UpXG5cbiAgICAvLyBNb2RhbHMgY2Fubm90IGJlIGNoYWluZWRcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLk1vZGFsU3VibWl0ICYmIHR5cGUgPT09IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbClcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlc3BvbmQgdG8gYSBtb2RhbCBpbnRlcmFjdGlvbiB3aXRoIGFub3RoZXIgbW9kYWwuJylcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYm90LmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoXG4gICAgICB0aGlzLmlkLFxuICAgICAgdGhpcy50b2tlbixcbiAgICAgIHsgdHlwZSwgZGF0YTogcmVzcG9uc2UgfSxcbiAgICAgIHsgd2l0aFJlc3BvbnNlOiBvcHRpb25zPy53aXRoUmVzcG9uc2UgfSxcbiAgICApXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9LFxuICBhc3luYyBlZGl0KHJlc3BvbnNlLCBtZXNzYWdlSWQsIG9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYSBzdHJpbmcsIGNoYW5nZSBpdCB0byBhIHJlc3BvbnNlIG9iamVjdFxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnKSByZXNwb25zZSA9IHsgY29udGVudDogcmVzcG9uc2UgfVxuXG4gICAgaWYgKG1lc3NhZ2VJZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90Py5oZWxwZXJzLmVkaXRGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiwgbWVzc2FnZUlkLCByZXNwb25zZSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYWNrbm93bGVkZ2VkKSB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1lc3NhZ2VDb21wb25lbnQgJiYgdGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1vZGFsU3VibWl0KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGludGVyYWN0aW9uIGhhcyBub3QgYmVlbiByZXNwb25kZWQgdG8geWV0IGFuZCB0aGlzIGlzbid0IGEgTWVzc2FnZUNvbXBvbmVudCBvciBNb2RhbFN1Ym1pdCBpbnRlcmFjdGlvbi5cIilcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShcbiAgICAgICAgdGhpcy5pZCxcbiAgICAgICAgdGhpcy50b2tlbixcbiAgICAgICAgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuVXBkYXRlTWVzc2FnZSwgZGF0YTogcmVzcG9uc2UgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdChvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50ICYmIHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5Nb2RhbFN1Ym1pdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgb3IgTW9kYWxTdWJtaXQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmJvdC5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKFxuICAgICAgdGhpcy5pZCxcbiAgICAgIHRoaXMudG9rZW4sXG4gICAgICB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKVxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiByZXN1bHRcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlLCBvcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ib3QuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShcbiAgICAgIHRoaXMuaWQsXG4gICAgICB0aGlzLnRva2VuLFxuICAgICAge1xuICAgICAgICB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmbGFnczogaXNQcml2YXRlID8gTWVzc2FnZUZsYWdzLkVwaGVtZXJhbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgIClcbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4sIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbilcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uKGJvdDogQm90LCBwYXlsb2FkOiB7IGludGVyYWN0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb247IHNoYXJkSWQ6IG51bWJlciB9KTogSW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgaW50ZXJhY3Rpb246IFNldHVwRGVzaXJlZFByb3BzPEludGVyYWN0aW9uLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4gPSBPYmplY3QuY3JlYXRlKGJhc2VJbnRlcmFjdGlvbilcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uXG4gIC8vIFR5cGVzY3JpcHQgaGFzIGFuIGhhcmQgdGltZSB3aXRoIHRoaXMsIHNvIHdlIG5lZWQgdG8gdGVsbCBoaW0gZm9yIHN1cmUgdGhpcyBpcyBhIEJvdFxuICBpbnRlcmFjdGlvbi5ib3QgPSBib3QgYXMgdW5rbm93biBhcyBCb3RcbiAgaW50ZXJhY3Rpb24uYWNrbm93bGVkZ2VkID0gZmFsc2VcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5pZCkgaW50ZXJhY3Rpb24uaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmlkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICAgIGludGVyYWN0aW9uLmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGUpIGludGVyYWN0aW9uLnR5cGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGVcbiAgaWYgKHByb3BzLnRva2VuICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udG9rZW4pIGludGVyYWN0aW9uLnRva2VuID0gcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlblxuICBpZiAocHJvcHMudmVyc2lvbiAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb24pIGludGVyYWN0aW9uLnZlcnNpb24gPSBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb25cbiAgaWYgKHByb3BzLmxvY2FsZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZSkgaW50ZXJhY3Rpb24ubG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkTG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlKSBpbnRlcmFjdGlvbi5ndWlsZExvY2FsZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlXG4gIGlmIChwcm9wcy5ndWlsZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCBpcyBhIFBhcnRpYWw8RGlzY29yZEd1aWxkPlxuICAgIGludGVyYWN0aW9uLmd1aWxkID0gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHsgZ3VpbGQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICBpZiAocHJvcHMuZ3VpbGRJZCAmJiBndWlsZElkKSBpbnRlcmFjdGlvbi5ndWlsZElkID0gZ3VpbGRJZFxuICBpZiAocHJvcHMudXNlcikge1xuICAgIGlmIChwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcj8udXNlcikgaW50ZXJhY3Rpb24udXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyPy51c2VyKVxuICAgIGVsc2UgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24udXNlcikgaW50ZXJhY3Rpb24udXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24udXNlcilcbiAgfVxuICBpZiAocHJvcHMuYXBwUGVybWlzc2lvbnMgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBfcGVybWlzc2lvbnMpXG4gICAgaW50ZXJhY3Rpb24uYXBwUGVybWlzc2lvbnMgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlKVxuICAgIGludGVyYWN0aW9uLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB7IG1lc3NhZ2U6IHBheWxvYWQuaW50ZXJhY3Rpb24ubWVzc2FnZSwgc2hhcmRJZDogMCB9KVxuICBpZiAocHJvcHMuY2hhbm5lbCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwpXG4gICAgaW50ZXJhY3Rpb24uY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsIGFzIERpc2NvcmRDaGFubmVsLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsX2lkKSBpbnRlcmFjdGlvbi5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcilcbiAgICBpbnRlcmFjdGlvbi5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihcbiAgICAgIGJvdCxcbiAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyLFxuICAgICAgZ3VpbGRJZCxcbiAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyPy51c2VyLmlkID8/IHBheWxvYWQuaW50ZXJhY3Rpb24udXNlcj8uaWQsXG4gICAgKVxuICBpZiAocHJvcHMuZW50aXRsZW1lbnRzICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZW50aXRsZW1lbnRzKVxuICAgIGludGVyYWN0aW9uLmVudGl0bGVtZW50cyA9IHBheWxvYWQuaW50ZXJhY3Rpb24uZW50aXRsZW1lbnRzLm1hcCgoZSkgPT4gYm90LnRyYW5zZm9ybWVycy5lbnRpdGxlbWVudChib3QsIGUpKVxuICBpZiAocHJvcHMuYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycykge1xuICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgPSB7fVxuXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5HdWlsZEluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10sXG4gICAgICApXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5Vc2VySW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSxcbiAgICAgIClcbiAgfVxuICBpZiAocHJvcHMuY29udGV4dCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHQpIGludGVyYWN0aW9uLmNvbnRleHQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHRcbiAgaWYgKHByb3BzLmF0dGFjaG1lbnRTaXplTGltaXQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdHRhY2htZW50X3NpemVfbGltaXQpXG4gICAgaW50ZXJhY3Rpb24uYXR0YWNobWVudFNpemVMaW1pdCA9IHBheWxvYWQuaW50ZXJhY3Rpb24uYXR0YWNobWVudF9zaXplX2xpbWl0XG4gIGlmIChwcm9wcy5kYXRhICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YSkge1xuICAgIGludGVyYWN0aW9uLmRhdGEgPSB7XG4gICAgICB0eXBlOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEudHlwZSxcbiAgICAgIGNvbXBvbmVudFR5cGU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jb21wb25lbnRfdHlwZSxcbiAgICAgIGN1c3RvbUlkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY3VzdG9tX2lkLFxuICAgICAgY29tcG9uZW50czogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmNvbXBvbmVudHM/Lm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpLFxuICAgICAgdmFsdWVzOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEudmFsdWVzLFxuICAgICAgaWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEubmFtZSxcbiAgICAgIHJlc29sdmVkOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWRcbiAgICAgICAgPyBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgeyByZXNvbHZlZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkLCBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQsIGd1aWxkSWQgfSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEub3B0aW9ucz8ubWFwKChvcHQpID0+IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdCkpLFxuICAgICAgdGFyZ2V0SWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50YXJnZXRfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEudGFyZ2V0X2lkKSA6IHVuZGVmaW5lZCxcbiAgICB9XG4gIH1cblxuICAvLyBUeXBlc2NyaXB0IGhhcyBhbiBoYXJkIHRpbWUgd2l0aCBpbnRlcmFjdGlvbi5ib3QsIHNvIHdlIG5lZWQgdG8gdGVsbCBoaW0gZm9yIHN1cmUgdGhpcyBpbnRlcmFjdGlvbiBpcyB0aGUgb2YgdGhlIGNvcnJlY3QgdHlwZVxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbihib3QsIHBheWxvYWQsIGludGVyYWN0aW9uIGFzIHVua25vd24gYXMgdHlwZW9mIGJvdC50cmFuc2Zvcm1lcnMuJGluZmVycmVkVHlwZXMuaW50ZXJhY3Rpb24pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFPcHRpb24oYm90OiBCb3QsIG9wdGlvbjogRGlzY29yZEludGVyYWN0aW9uRGF0YU9wdGlvbik6IEludGVyYWN0aW9uRGF0YU9wdGlvbiB7XG4gIGNvbnN0IG9wdCA9IHtcbiAgICBuYW1lOiBvcHRpb24ubmFtZSxcbiAgICB0eXBlOiBvcHRpb24udHlwZSxcbiAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgIG9wdGlvbnM6IG9wdGlvbi5vcHRpb25zLFxuICAgIGZvY3VzZWQ6IG9wdGlvbi5mb2N1c2VkLFxuICB9IGFzIEludGVyYWN0aW9uRGF0YU9wdGlvblxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uRGF0YU9wdGlvbnMoYm90LCBvcHRpb24sIG9wdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkKFxuICBib3Q6IEJvdCxcbiAgcGF5bG9hZDogeyByZXNvbHZlZDogRGlzY29yZEludGVyYWN0aW9uRGF0YVJlc29sdmVkOyBzaGFyZElkOiBudW1iZXI7IGd1aWxkSWQ/OiBiaWdpbnQgfSxcbik6IFRyYW5zZm9ybVByb3BlcnR5PEludGVyYWN0aW9uRGF0YVJlc29sdmVkLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvci5SZW1vdmVLZXk+IHtcbiAgY29uc3QgdHJhbnNmb3JtZWQ6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkID0ge31cblxuICBpZiAocGF5bG9hZC5yZXNvbHZlZC5tZXNzYWdlcykge1xuICAgIHRyYW5zZm9ybWVkLm1lc3NhZ2VzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhwYXlsb2FkLnJlc29sdmVkLm1lc3NhZ2VzKS5tYXAoKFtfaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IERlYWwgd2l0aCBwYXJ0aWFsc1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgeyBtZXNzYWdlOiB2YWx1ZSwgc2hhcmRJZDogcGF5bG9hZC5zaGFyZElkIH0pIGFzIE1lc3NhZ2VcbiAgICAgICAgcmV0dXJuIFttZXNzYWdlLmlkLCBtZXNzYWdlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQudXNlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC51c2VycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC51c2VycykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHZhbHVlKSBhcyBVc2VyXG4gICAgICAgIHJldHVybiBbdXNlci5pZCwgdXNlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYXlsb2FkLmd1aWxkSWQgJiYgcGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5tZW1iZXJzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogRGVhbCB3aXRoIHBhcnRpYWxzLCB2YWx1ZSBpcyBtaXNzaW5nIDIgdmFsdWVzIGJ1dCB0aGUgdHJhbnNmb3JtZXIgY2FuIGhhbmRsZSBpdCwgZGVzcGl0ZSB3aGF0IHRoZSB0eXBlcyBzYXlzXG4gICAgICAgIGNvbnN0IG1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgdmFsdWUsIHBheWxvYWQuZ3VpbGRJZCEsIGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGlkKSkgYXMgSW50ZXJhY3Rpb25SZXNvbHZlZERhdGFNZW1iZXI8XG4gICAgICAgICAgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsXG4gICAgICAgICAgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvclxuICAgICAgICA+XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byB0ZWxsIFRTIHRoYXQgd2UgYXJlIHN1cmUgdGhlIGlkIGlzIGEgYmlnaW50XG4gICAgICAgIHJldHVybiBbbWVtYmVyLmlkIGFzIGJpZ2ludCwgbWVtYmVyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQuZ3VpbGRJZCAmJiBwYXlsb2FkLnJlc29sdmVkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBheWxvYWQucmVzb2x2ZWQucm9sZXMpLm1hcCgoW19pZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHZhbHVlLCBndWlsZElkOiBwYXlsb2FkLmd1aWxkSWQhIH0pIGFzIFJvbGVcbiAgICAgICAgcmV0dXJuIFtyb2xlLmlkLCByb2xlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5jaGFubmVscykubWFwKChbX2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogdmFsdWUgfSkgYXMgdW5rbm93biBhcyBJbnRlcmFjdGlvblJlc29sdmVkRGF0YUNoYW5uZWw8XG4gICAgICAgICAgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsXG4gICAgICAgICAgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvclxuICAgICAgICA+XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdGVsbCBUUyB0aGF0IHdlIGFyZSBzdXJlIHRoZSBpZCBpcyBhIGJpZ2ludFxuICAgICAgICByZXR1cm4gW2NoYW5uZWwuaWQgYXMgYmlnaW50LCBjaGFubmVsXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBheWxvYWQucmVzb2x2ZWQuYXR0YWNobWVudHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5hdHRhY2htZW50cyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocGF5bG9hZC5yZXNvbHZlZC5hdHRhY2htZW50cykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCB2YWx1ZSkgYXMgQXR0YWNobWVudFxuICAgICAgICByZXR1cm4gW2lkLCBhdHRhY2htZW50XVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLCB0cmFuc2Zvcm1lZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZShcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOiBEaXNjb3JkSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlOyBzaGFyZElkOiBudW1iZXIgfSxcbik6IEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2VcbiAgY29uc3QgcmVzcG9uc2UgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPlxuXG4gIGlmIChwcm9wcy5pbnRlcmFjdGlvbiAmJiBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5pbnRlcmFjdGlvbilcbiAgICByZXNwb25zZS5pbnRlcmFjdGlvbiA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25DYWxsYmFjayhib3QsIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLmludGVyYWN0aW9uKVxuICBpZiAocHJvcHMucmVzb3VyY2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UucmVzb3VyY2UpXG4gICAgcmVzcG9uc2UucmVzb3VyY2UgPSBib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uUmVzb3VyY2UoYm90LCB7XG4gICAgICBpbnRlcmFjdGlvblJlc291cmNlOiBwYXlsb2FkLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZS5yZXNvdXJjZSxcbiAgICAgIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCxcbiAgICB9KVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZShib3QsIHBheWxvYWQuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLCByZXNwb25zZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uQ2FsbGJhY2soYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRJbnRlcmFjdGlvbkNhbGxiYWNrKTogSW50ZXJhY3Rpb25DYWxsYmFjayB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvbkNhbGxiYWNrXG4gIGNvbnN0IGNhbGxiYWNrID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb25DYWxsYmFjaywgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+XG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNhbGxiYWNrLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjYWxsYmFjay50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlSWQgJiYgcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZCkgY2FsbGJhY2suYWN0aXZpdHlJbnN0YW5jZUlkID0gcGF5bG9hZC5hY3Rpdml0eV9pbnN0YW5jZV9pZFxuICBpZiAocHJvcHMucmVzcG9uc2VNZXNzYWdlSWQgJiYgcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2lkKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9pZClcbiAgaWYgKHByb3BzLnJlc3BvbnNlTWVzc2FnZUVwaGVtZXJhbCAmJiBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwgPSBwYXlsb2FkLnJlc3BvbnNlX21lc3NhZ2VfZXBoZW1lcmFsXG4gIGlmIChwcm9wcy5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nICYmIHBheWxvYWQucmVzcG9uc2VfbWVzc2FnZV9sb2FkaW5nKSBjYWxsYmFjay5yZXNwb25zZU1lc3NhZ2VMb2FkaW5nID0gcGF5bG9hZC5yZXNwb25zZV9tZXNzYWdlX2xvYWRpbmdcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkNhbGxiYWNrKGJvdCwgcGF5bG9hZCwgY2FsbGJhY2spXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlKFxuICBib3Q6IEJvdCxcbiAgcGF5bG9hZDogeyBpbnRlcmFjdGlvblJlc291cmNlOiBEaXNjb3JkSW50ZXJhY3Rpb25SZXNvdXJjZTsgc2hhcmRJZDogbnVtYmVyIH0sXG4pOiBJbnRlcmFjdGlvblJlc291cmNlIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmludGVyYWN0aW9uUmVzb3VyY2VcbiAgY29uc3QgcmVzb3VyY2UgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxJbnRlcmFjdGlvblJlc291cmNlLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj5cblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uUmVzb3VyY2UudHlwZSkgcmVzb3VyY2UudHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS50eXBlXG4gIGlmIChwcm9wcy5hY3Rpdml0eUluc3RhbmNlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5hY3Rpdml0eV9pbnN0YW5jZSlcbiAgICByZXNvdXJjZS5hY3Rpdml0eUluc3RhbmNlID0gcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLmFjdGl2aXR5X2luc3RhbmNlXG4gIGlmIChwcm9wcy5tZXNzYWdlICYmIHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlKVxuICAgIHJlc291cmNlLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB7IG1lc3NhZ2U6IHBheWxvYWQuaW50ZXJhY3Rpb25SZXNvdXJjZS5tZXNzYWdlLCBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvblJlc291cmNlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvblJlc291cmNlLCByZXNvdXJjZSlcbn1cbiJdLCJuYW1lcyI6WyJEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJJbnRlcmFjdGlvblR5cGVzIiwiTWVzc2FnZUZsYWdzIiwiQ29sbGVjdGlvbiIsImJhc2VJbnRlcmFjdGlvbiIsInVuZGVmaW5lZCIsInJlc3BvbmQiLCJyZXNwb25zZSIsIm9wdGlvbnMiLCJ0eXBlIiwiQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlIiwiY29udGVudCIsInRpdGxlIiwiTW9kYWwiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwicmVzdWx0Iiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJ3aXRoUmVzcG9uc2UiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbiIsInBheWxvYWQiLCJndWlsZElkIiwiaW50ZXJhY3Rpb24iLCJndWlsZF9pZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsIk9iamVjdCIsImNyZWF0ZSIsInByb3BzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJhcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25faWQiLCJ2ZXJzaW9uIiwibG9jYWxlIiwiZ3VpbGRMb2NhbGUiLCJndWlsZF9sb2NhbGUiLCJndWlsZCIsInNoYXJkSWQiLCJ1c2VyIiwibWVtYmVyIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJlbnRpdGxlbWVudHMiLCJtYXAiLCJlIiwiZW50aXRsZW1lbnQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiYXR0YWNobWVudFNpemVMaW1pdCIsImF0dGFjaG1lbnRfc2l6ZV9saW1pdCIsImNvbXBvbmVudFR5cGUiLCJjb21wb25lbnRfdHlwZSIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwiY29tcG9uZW50cyIsImNvbXBvbmVudCIsInZhbHVlcyIsIm5hbWUiLCJyZXNvbHZlZCIsImludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwib3B0IiwiaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyIsInRhcmdldElkIiwidGFyZ2V0X2lkIiwiY3VzdG9taXplcnMiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFPcHRpb24iLCJvcHRpb24iLCJ2YWx1ZSIsImZvY3VzZWQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsInRyYW5zZm9ybWVkIiwibWVzc2FnZXMiLCJlbnRyaWVzIiwiX2lkIiwidXNlcnMiLCJtZW1iZXJzIiwicm9sZXMiLCJyb2xlIiwiY2hhbm5lbHMiLCJhdHRhY2htZW50cyIsImtleSIsImF0dGFjaG1lbnQiLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UiLCJpbnRlcmFjdGlvbkNhbGxiYWNrIiwicmVzb3VyY2UiLCJpbnRlcmFjdGlvblJlc291cmNlIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25DYWxsYmFjayIsImNhbGxiYWNrIiwiYWN0aXZpdHlJbnN0YW5jZUlkIiwiYWN0aXZpdHlfaW5zdGFuY2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VJZCIsInJlc3BvbnNlX21lc3NhZ2VfaWQiLCJyZXNwb25zZU1lc3NhZ2VFcGhlbWVyYWwiLCJyZXNwb25zZV9tZXNzYWdlX2VwaGVtZXJhbCIsInJlc3BvbnNlTWVzc2FnZUxvYWRpbmciLCJyZXNwb25zZV9tZXNzYWdlX2xvYWRpbmciLCJ0cmFuc2Zvcm1JbnRlcmFjdGlvblJlc291cmNlIiwiYWN0aXZpdHlJbnN0YW5jZSIsImFjdGl2aXR5X2luc3RhbmNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxpQ0FBaUMsRUFPakNDLHdCQUF3QixFQUN4QkMsZ0JBQWdCLEVBQ2hCQyxZQUFZLFFBQ1Asb0JBQW1CO0FBQzFCLFNBQVNDLFVBQVUsUUFBUSxvQkFBbUI7QUF1QjlDLG9JQUFvSTtBQUNwSSxzR0FBc0c7QUFDdEcsT0FBTyxNQUFNQyxrQkFBNEg7SUFDdkksMkVBQTJFO0lBQzNFLEdBQUlDLFNBQVM7SUFFYixNQUFNQyxTQUFRQyxRQUFRLEVBQUVDLE9BQU87UUFDN0IsSUFBSUMsT0FBT1QseUJBQXlCVSx3QkFBd0I7UUFFNUQsNERBQTREO1FBQzVELElBQUksT0FBT0gsYUFBYSxVQUFVQSxXQUFXO1lBQUVJLFNBQVNKO1FBQVM7UUFFakUsNEZBQTRGO1FBQzVGLElBQUlBLFNBQVNLLEtBQUssRUFBRUgsT0FBT1Qs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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isInviteWithMetadata } from '../index.js';
|
|
1
|
+
import { isInviteWithMetadata, ToggleBitfield } from '../index.js';
|
|
2
2
|
export function transformInvite(bot, payload) {
|
|
3
3
|
const props = bot.transformers.desiredProperties.invite;
|
|
4
4
|
const invite = {};
|
|
@@ -22,15 +22,16 @@ export function transformInvite(bot, payload) {
|
|
|
22
22
|
if (props.approximateMemberCount && payload.invite.approximate_member_count) invite.approximateMemberCount = payload.invite.approximate_member_count;
|
|
23
23
|
if (props.approximatePresenceCount && payload.invite.approximate_presence_count !== undefined) invite.approximatePresenceCount = payload.invite.approximate_presence_count;
|
|
24
24
|
if (props.guildScheduledEvent && payload.invite.guild_scheduled_event) invite.guildScheduledEvent = bot.transformers.scheduledEvent(bot, payload.invite.guild_scheduled_event);
|
|
25
|
-
if (props.stageInstance && invite.
|
|
25
|
+
if (props.stageInstance && payload.invite.guild?.id && payload.invite.stage_instance) {
|
|
26
26
|
invite.stageInstance = bot.transformers.inviteStageInstance(bot, {
|
|
27
27
|
...payload.invite.stage_instance,
|
|
28
|
-
guildId: invite.
|
|
28
|
+
guildId: bot.transformers.snowflake(payload.invite.guild.id)
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
if (props.expiresAt && payload.invite.expires_at) {
|
|
32
32
|
invite.expiresAt = Date.parse(payload.invite.expires_at);
|
|
33
33
|
}
|
|
34
|
+
if (props.flags && payload.invite.flags) invite.flags = new ToggleBitfield(payload.invite.flags);
|
|
34
35
|
} else {
|
|
35
36
|
if (props.channelId && payload.invite.channel_id) invite.channelId = bot.transformers.snowflake(payload.invite.channel_id);
|
|
36
37
|
if (props.guildId && payload.invite.guild_id) invite.guildId = bot.transformers.snowflake(payload.invite.guild_id);
|
|
@@ -38,4 +39,4 @@ export function transformInvite(bot, payload) {
|
|
|
38
39
|
return bot.transformers.customizers.invite(bot, payload.invite, invite);
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW52aXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEFwcGxpY2F0aW9uLCBEaXNjb3JkSW52aXRlQ3JlYXRlLCBEaXNjb3JkSW52aXRlTWV0YWRhdGEgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7XG4gIHR5cGUgQm90LFxuICB0eXBlIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IsXG4gIHR5cGUgSW52aXRlLFxuICBpc0ludml0ZVdpdGhNZXRhZGF0YSxcbiAgdHlwZSBTZXR1cERlc2lyZWRQcm9wcyxcbiAgVG9nZ2xlQml0ZmllbGQsXG4gIHR5cGUgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsXG59IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW52aXRlKGJvdDogQm90LCBwYXlsb2FkOiB7IGludml0ZTogRGlzY29yZEludml0ZUNyZWF0ZSB8IERpc2NvcmRJbnZpdGVNZXRhZGF0YTsgc2hhcmRJZDogbnVtYmVyIH0pOiBJbnZpdGUge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW52aXRlXG4gIGNvbnN0IGludml0ZSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPEludml0ZSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgJ3R5cGUnIGluIHBheWxvYWQuaW52aXRlKSBpbnZpdGUudHlwZSA9IHBheWxvYWQuaW52aXRlLnR5cGVcbiAgaWYgKHByb3BzLmNvZGUgJiYgcGF5bG9hZC5pbnZpdGUuY29kZSkgaW52aXRlLmNvZGUgPSBwYXlsb2FkLmludml0ZS5jb2RlXG4gIGlmIChwcm9wcy5jcmVhdGVkQXQgJiYgcGF5bG9hZC5pbnZpdGUuY3JlYXRlZF9hdCkgaW52aXRlLmNyZWF0ZWRBdCA9IERhdGUucGFyc2UocGF5bG9hZC5pbnZpdGUuY3JlYXRlZF9hdClcbiAgaWYgKHByb3BzLmludml0ZXIgJiYgcGF5bG9hZC5pbnZpdGUuaW52aXRlcikgaW52aXRlLmludml0ZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLmludml0ZS5pbnZpdGVyKVxuICBpZiAocHJvcHMubWF4QWdlKSBpbnZpdGUubWF4QWdlID0gcGF5bG9hZC5pbnZpdGUubWF4X2FnZVxuICBpZiAocHJvcHMubWF4VXNlcykgaW52aXRlLm1heFVzZXMgPSBwYXlsb2FkLmludml0ZS5tYXhfdXNlc1xuICBpZiAocHJvcHMudGFyZ2V0VHlwZSAmJiBwYXlsb2FkLmludml0ZS50YXJnZXRfdHlwZSkgaW52aXRlLnRhcmdldFR5cGUgPSBwYXlsb2FkLmludml0ZS50YXJnZXRfdHlwZVxuICBpZiAocHJvcHMudGFyZ2V0VXNlciAmJiBwYXlsb2FkLmludml0ZS50YXJnZXRfdXNlcikgaW52aXRlLnRhcmdldFVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLmludml0ZS50YXJnZXRfdXNlcilcbiAgaWYgKHByb3BzLnRhcmdldEFwcGxpY2F0aW9uICYmIHBheWxvYWQuaW52aXRlLnRhcmdldF9hcHBsaWNhdGlvbilcbiAgICBpbnZpdGUudGFyZ2V0QXBwbGljYXRpb24gPSBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwge1xuICAgICAgYXBwbGljYXRpb246IHBheWxvYWQuaW52aXRlLnRhcmdldF9hcHBsaWNhdGlvbiBhcyBEaXNjb3JkQXBwbGljYXRpb24sXG4gICAgICBzaGFyZElkOiBwYXlsb2FkLnNoYXJkSWQsXG4gICAgfSlcbiAgaWYgKHByb3BzLnRlbXBvcmFyeSAmJiBwYXlsb2FkLmludml0ZS50ZW1wb3JhcnkpIGludml0ZS50ZW1wb3JhcnkgPSBwYXlsb2FkLmludml0ZS50ZW1wb3JhcnlcbiAgaWYgKHByb3BzLnVzZXMgJiYgcGF5bG9hZC5pbnZpdGUudXNlcykgaW52aXRlLnVzZXMgPSBwYXlsb2FkLmludml0ZS51c2VzXG5cbiAgaWYgKGlzSW52aXRlV2l0aE1ldGFkYXRhKHBheWxvYWQuaW52aXRlKSkge1xuICAgIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5pbnZpdGUuY2hhbm5lbD8uaWQpIGludml0ZS5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludml0ZS5jaGFubmVsLmlkKVxuICAgIGlmIChwcm9wcy5ndWlsZElkICYmIHBheWxvYWQuaW52aXRlLmd1aWxkPy5pZCkgaW52aXRlLmd1aWxkSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludml0ZS5ndWlsZC5pZClcbiAgICBpZiAocHJvcHMuYXBwcm94aW1hdGVNZW1iZXJDb3VudCAmJiBwYXlsb2FkLmludml0ZS5hcHByb3hpbWF0ZV9tZW1iZXJfY291bnQpXG4gICAgICBpbnZpdGUuYXBwcm94aW1hdGVNZW1iZXJDb3VudCA9IHBheWxvYWQuaW52aXRlLmFwcHJveGltYXRlX21lbWJlcl9jb3VudFxuICAgIGlmIChwcm9wcy5hcHByb3hpbWF0ZVByZXNlbmNlQ291bnQgJiYgcGF5bG9hZC5pbnZpdGUuYXBwcm94aW1hdGVfcHJlc2VuY2VfY291bnQgIT09IHVuZGVmaW5lZClcbiAgICAgIGludml0ZS5hcHByb3hpbWF0ZVByZXNlbmNlQ291bnQgPSBwYXlsb2FkLmludml0ZS5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudFxuICAgIGlmIChwcm9wcy5ndWlsZFNjaGVkdWxlZEV2ZW50ICYmIHBheWxvYWQuaW52aXRlLmd1aWxkX3NjaGVkdWxlZF9ldmVudClcbiAgICAgIGludml0ZS5ndWlsZFNjaGVkdWxlZEV2ZW50ID0gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHBheWxvYWQuaW52aXRlLmd1aWxkX3NjaGVkdWxlZF9ldmVudClcbiAgICBpZiAocHJvcHMuc3RhZ2VJbnN0YW5jZSAmJiBwYXlsb2FkLmludml0ZS5ndWlsZD8uaWQgJiYgcGF5bG9hZC5pbnZpdGUuc3RhZ2VfaW5zdGFuY2UpIHtcbiAgICAgIGludml0ZS5zdGFnZUluc3RhbmNlID0gYm90LnRyYW5zZm9ybWVycy5pbnZpdGVTdGFnZUluc3RhbmNlKGJvdCwge1xuICAgICAgICAuLi5wYXlsb2FkLmludml0ZS5zdGFnZV9pbnN0YW5jZSxcbiAgICAgICAgZ3VpbGRJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnZpdGUuZ3VpbGQuaWQpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHByb3BzLmV4cGlyZXNBdCAmJiBwYXlsb2FkLmludml0ZS5leHBpcmVzX2F0KSB7XG4gICAgICBpbnZpdGUuZXhwaXJlc0F0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmludml0ZS5leHBpcmVzX2F0KVxuICAgIH1cbiAgICBpZiAocHJvcHMuZmxhZ3MgJiYgcGF5bG9hZC5pbnZpdGUuZmxhZ3MpIGludml0ZS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmludml0ZS5mbGFncylcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMuY2hhbm5lbElkICYmIHBheWxvYWQuaW52aXRlLmNoYW5uZWxfaWQpIGludml0ZS5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludml0ZS5jaGFubmVsX2lkKVxuICAgIGlmIChwcm9wcy5ndWlsZElkICYmIHBheWxvYWQuaW52aXRlLmd1aWxkX2lkKSBpbnZpdGUuZ3VpbGRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW52aXRlLmd1aWxkX2lkKVxuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW52aXRlKGJvdCwgcGF5bG9hZC5pbnZpdGUsIGludml0ZSlcbn1cbiJdLCJuYW1lcyI6WyJpc0ludml0ZVdpdGhNZXRhZGF0YSIsIlRvZ2dsZUJpdGZpZWxkIiwidHJhbnNmb3JtSW52aXRlIiwiYm90IiwicGF5bG9hZCIsInByb3BzIiwidHJhbnNmb3JtZXJzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJpbnZpdGUiLCJ0eXBlIiwiY29kZSIsImNyZWF0ZWRBdCIsImNyZWF0ZWRfYXQiLCJEYXRlIiwicGFyc2UiLCJpbnZpdGVyIiwidXNlciIsIm1heEFnZSIsIm1heF9hZ2UiLCJtYXhVc2VzIiwibWF4X3VzZXMiLCJ0YXJnZXRUeXBlIiwidGFyZ2V0X3R5cGUiLCJ0YXJnZXRVc2VyIiwidGFyZ2V0X3VzZXIiLCJ0YXJnZXRBcHBsaWNhdGlvbiIsInRhcmdldF9hcHBsaWNhdGlvbiIsImFwcGxpY2F0aW9uIiwic2hhcmRJZCIsInRlbXBvcmFyeSIsInVzZXMiLCJjaGFubmVsSWQiLCJjaGFubmVsIiwiaWQiLCJzbm93Zmxha2UiLCJndWlsZElkIiwiZ3VpbGQiLCJhcHByb3hpbWF0ZU1lbWJlckNvdW50IiwiYXBwcm94aW1hdGVfbWVtYmVyX2NvdW50IiwiYXBwcm94aW1hdGVQcmVzZW5jZUNvdW50IiwiYXBwcm94aW1hdGVfcHJlc2VuY2VfY291bnQiLCJ1bmRlZmluZWQiLCJndWlsZFNjaGVkdWxlZEV2ZW50IiwiZ3VpbGRfc2NoZWR1bGVkX2V2ZW50Iiwic2NoZWR1bGVkRXZlbnQiLCJzdGFnZUluc3RhbmNlIiwic3RhZ2VfaW5zdGFuY2UiLCJpbnZpdGVTdGFnZUluc3RhbmNlIiwiZXhwaXJlc0F0IiwiZXhwaXJlc19hdCIsImZsYWdzIiwiY2hhbm5lbF9pZCIsImd1aWxkX2lkIiwiY3VzdG9taXplcnMiXSwibWFwcGluZ3MiOiJBQUNBLFNBSUVBLG9CQUFvQixFQUVwQkMsY0FBYyxRQUVULGNBQWE7QUFFcEIsT0FBTyxTQUFTQyxnQkFBZ0JDLEdBQVEsRUFBRUMsT0FBaUY7SUFDekgsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsTUFBTTtJQUN2RCxNQUFNQSxTQUFTLENBQUM7SUFFaEIsSUFB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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ToggleBitfield } from '../index.js';
|
|
2
|
+
export function transformLobby(bot, payload) {
|
|
3
|
+
const props = bot.transformers.desiredProperties.lobby;
|
|
4
|
+
const lobby = {};
|
|
5
|
+
if (props.id && payload.id) lobby.id = bot.transformers.snowflake(payload.id);
|
|
6
|
+
if (props.applicationId && payload.application_id) lobby.applicationId = bot.transformers.snowflake(payload.application_id);
|
|
7
|
+
if (props.metadata && payload.metadata) lobby.metadata = payload.metadata;
|
|
8
|
+
if (props.members && payload.members) lobby.members = payload.members.map((member)=>bot.transformers.lobbyMember(bot, member));
|
|
9
|
+
if (props.linkedChannel && payload.linked_channel) lobby.linkedChannel = bot.transformers.channel(bot, {
|
|
10
|
+
channel: payload.linked_channel
|
|
11
|
+
});
|
|
12
|
+
return bot.transformers.customizers.lobby(bot, payload, lobby);
|
|
13
|
+
}
|
|
14
|
+
export function transformLobbyMember(bot, payload) {
|
|
15
|
+
const props = bot.transformers.desiredProperties.lobbyMember;
|
|
16
|
+
const lobbyMember = {};
|
|
17
|
+
if (props.id && payload.id) lobbyMember.id = bot.transformers.snowflake(payload.id);
|
|
18
|
+
if (props.metadata && payload.metadata) lobbyMember.metadata = payload.metadata;
|
|
19
|
+
if (props.flags && payload.flags) lobbyMember.flags = new ToggleBitfield(payload.flags);
|
|
20
|
+
return bot.transformers.customizers.lobbyMember(bot, payload, lobbyMember);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbG9iYnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkTG9iYnksIERpc2NvcmRMb2JieU1lbWJlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHtcbiAgdHlwZSBCb3QsXG4gIHR5cGUgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcixcbiAgdHlwZSBMb2JieSxcbiAgdHlwZSBMb2JieU1lbWJlcixcbiAgdHlwZSBTZXR1cERlc2lyZWRQcm9wcyxcbiAgVG9nZ2xlQml0ZmllbGQsXG4gIHR5cGUgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsXG59IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTG9iYnkoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieSk6IExvYmJ5IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5XG4gIGNvbnN0IGxvYmJ5ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8TG9iYnksIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPlxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBsb2JieS5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuYXBwbGljYXRpb25faWQpIGxvYmJ5LmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMubWV0YWRhdGEgJiYgcGF5bG9hZC5tZXRhZGF0YSkgbG9iYnkubWV0YWRhdGEgPSBwYXlsb2FkLm1ldGFkYXRhXG4gIGlmIChwcm9wcy5tZW1iZXJzICYmIHBheWxvYWQubWVtYmVycykgbG9iYnkubWVtYmVycyA9IHBheWxvYWQubWVtYmVycy5tYXAoKG1lbWJlcikgPT4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lbWJlcihib3QsIG1lbWJlcikpXG4gIGlmIChwcm9wcy5saW5rZWRDaGFubmVsICYmIHBheWxvYWQubGlua2VkX2NoYW5uZWwpIGxvYmJ5LmxpbmtlZENoYW5uZWwgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHBheWxvYWQubGlua2VkX2NoYW5uZWwgfSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5sb2JieShib3QsIHBheWxvYWQsIGxvYmJ5KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTG9iYnlNZW1iZXIoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRMb2JieU1lbWJlcik6IExvYmJ5TWVtYmVyIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmxvYmJ5TWVtYmVyXG4gIGNvbnN0IGxvYmJ5TWVtYmVyID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZW1iZXIsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPlxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBsb2JieU1lbWJlci5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy5tZXRhZGF0YSAmJiBwYXlsb2FkLm1ldGFkYXRhKSBsb2JieU1lbWJlci5tZXRhZGF0YSA9IHBheWxvYWQubWV0YWRhdGFcbiAgaWYgKHByb3BzLmZsYWdzICYmIHBheWxvYWQuZmxhZ3MpIGxvYmJ5TWVtYmVyLmZsYWdzID0gbmV3IFRvZ2dsZUJpdGZpZWxkKHBheWxvYWQuZmxhZ3MpXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubG9iYnlNZW1iZXIoYm90LCBwYXlsb2FkLCBsb2JieU1lbWJlcilcbn1cbiJdLCJuYW1lcyI6WyJUb2dnbGVCaXRmaWVsZCIsInRyYW5zZm9ybUxvYmJ5IiwiYm90IiwicGF5bG9hZCIsInByb3BzIiwidHJhbnNmb3JtZXJzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJsb2JieSIsImlkIiwic25vd2ZsYWtlIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwibWV0YWRhdGEiLCJtZW1iZXJzIiwibWFwIiwibWVtYmVyIiwibG9iYnlNZW1iZXIiLCJsaW5rZWRDaGFubmVsIiwibGlua2VkX2NoYW5uZWwiLCJjaGFubmVsIiwiY3VzdG9taXplcnMiLCJ0cmFuc2Zvcm1Mb2JieU1lbWJlciIsImZsYWdzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQU1FQSxjQUFjLFFBRVQsY0FBYTtBQUVwQixPQUFPLFNBQVNDLGVBQWVDLEdBQVEsRUFBRUMsT0FBcUI7SUFDNUQsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSztJQUN0RCxNQUFNQSxRQUFRLENBQUM7SUFFZixJQUFJSCxNQUFNSSxFQUFFLElBQUlMLFFBQVFLLEVBQUUsRUFBRUQsTUFBTUMsRUFBRSxHQUFHTixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUUssRUFBRTtJQUM1RSxJQUFJSixNQUFNTSxhQUFhLElBQUlQLFFBQVFRLGNBQWMsRUFBRUosTUFBTUcsYUFBYSxHQUFHUixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUVEsY0FBYztJQUMxSCxJQUFJUCxNQUFNUSxRQUFRLElBQUlULFFBQVFTLFFBQVEsRUFBRUwsTUFBTUssUUFBUSxHQUFHVCxRQUFRUyxRQUFRO0lBQ3pFLElBQUlSLE1BQU1TLE9BQU8sSUFBSVYsUUFBUVUsT0FBTyxFQUFFTixNQUFNTSxPQUFPLEdBQUdWLFFBQVFVLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLFNBQVdiLElBQUlHLFlBQVksQ0FBQ1csV0FBVyxDQUFDZCxLQUFLYTtJQUN4SCxJQUFJWCxNQUFNYSxhQUFhLElBQUlkLFFBQVFlLGNBQWMsRUFBRVgsTUFBTVUsYUFBYSxHQUFHZixJQUFJRyxZQUFZLENBQUNjLE9BQU8sQ0FBQ2pCLEtBQUs7UUFBRWlCLFNBQVNoQixRQUFRZSxjQUFjO0lBQUM7SUFFekksT0FBT2hCLElBQUlHLFlBQVksQ0FBQ2UsV0FBVyxDQUFDYixLQUFLLENBQUNMLEtBQUtDLFNBQVNJO0FBQzFEO0FBRUEsT0FBTyxTQUFTYyxxQkFBcUJuQixHQUFRLEVBQUVDLE9BQTJCO0lBQ3hFLE1BQU1DLFFBQVFGLElBQUlHLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNVLFdBQVc7SUFDNUQsTUFBTUEsY0FBYyxDQUFDO0lBRXJCLElBQUlaLE1BQU1JLEVBQUUsSUFBSUwsUUFBUUssRUFBRSxFQUFFUSxZQUFZUixFQUFFLEdBQUdOLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRSyxFQUFFO0lBQ2xGLElBQUlKLE1BQU1RLFFBQVEsSUFBSVQsUUFBUVMsUUFBUSxFQUFFSSxZQUFZSixRQUFRLEdBQUdULFFBQVFTLFFBQVE7SUFDL0UsSUFBSVIsTUFBTWtCLEtBQUssSUFBSW5CLFFBQVFtQixLQUFLLEVBQUVOLFlBQVlNLEtBQUssR0FBRyxJQUFJdEIsZUFBZUcsUUFBUW1CLEtBQUs7SUFFdEYsT0FBT3BCLElBQUlHLFlBQVksQ0FBQ2UsV0FBVyxDQUFDSixXQUFXLENBQUNkLEtBQUtDLFNBQVNhO0FBQ2hFIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { iconHashToBigInt } from '@discordeno/utils';
|
|
2
|
-
import { Permissions } from './toggles/Permissions.js';
|
|
3
2
|
import { MemberToggles } from './toggles/member.js';
|
|
3
|
+
import { Permissions } from './toggles/Permissions.js';
|
|
4
4
|
export const baseMember = {
|
|
5
5
|
// This allows typescript to still check for type errors on functions below
|
|
6
6
|
...undefined,
|
|
@@ -48,4 +48,4 @@ export function transformMember(bot, payload, guildId, userId) {
|
|
|
48
48
|
return bot.transformers.customizers.member(bot, payload, member);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbWVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmlnU3RyaW5nLCBEaXNjb3JkTWVtYmVyIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uSGFzaFRvQmlnSW50IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2JvdC5qcydcbmltcG9ydCB0eXBlIHsgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciwgU2V0dXBEZXNpcmVkUHJvcHMsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vaW5kZXguanMnXG5pbXBvcnQgeyBNZW1iZXJUb2dnbGVzIH0gZnJvbSAnLi90b2dnbGVzL21lbWJlci5qcydcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi90b2dnbGVzL1Blcm1pc3Npb25zLmpzJ1xuaW1wb3J0IHR5cGUgeyBNZW1iZXIgfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5leHBvcnQgY29uc3QgYmFzZU1lbWJlcjogTWVtYmVyID0ge1xuICAvLyBUaGlzIGFsbG93cyB0eXBlc2NyaXB0IHRvIHN0aWxsIGNoZWNrIGZvciB0eXBlIGVycm9ycyBvbiBmdW5jdGlvbnMgYmVsb3dcbiAgLi4uKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIE1lbWJlciksXG5cbiAgZ2V0IGRlYWYoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5oYXMoJ2RlYWYnKVxuICB9LFxuICBnZXQgbXV0ZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmhhcygnbXV0ZScpXG4gIH0sXG4gIGdldCBwZW5kaW5nKCkge1xuICAgIHJldHVybiAhIXRoaXMudG9nZ2xlcz8uaGFzKCdwZW5kaW5nJylcbiAgfSxcbiAgZ2V0IGZsYWdzKCkge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZXM/LmZsYWdzID8/IDBcbiAgfSxcbiAgZ2V0IGRpZFJlam9pbigpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmRpZFJlam9pblxuICB9LFxuICBnZXQgc3RhcnRlZE9uYm9hcmRpbmcoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5zdGFydGVkT25ib2FyZGluZ1xuICB9LFxuICBnZXQgYnlwYXNzZXNWZXJpZmljYXRpb24oKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5ieXBhc3Nlc1ZlcmlmaWNhdGlvblxuICB9LFxuICBnZXQgY29tcGxldGVkT25ib2FyZGluZygpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmNvbXBsZXRlZE9uYm9hcmRpbmdcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lbWJlcihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lbWJlciwgZ3VpbGRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLCB1c2VySWQ6IEJpZ1N0cmluZyk6IE1lbWJlciB7XG4gIGNvbnN0IG1lbWJlcjogU2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4gPSBPYmplY3QuY3JlYXRlKGJhc2VNZW1iZXIpXG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5tZW1iZXJcblxuICBpZiAocHJvcHMuaWQgJiYgdXNlcklkKSBtZW1iZXIuaWQgPSB0eXBlb2YgdXNlcklkID09PSAnc3RyaW5nJyA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHVzZXJJZCkgOiB1c2VySWRcbiAgaWYgKHByb3BzLmd1aWxkSWQgJiYgZ3VpbGRJZCkgbWVtYmVyLmd1aWxkSWQgPSB0eXBlb2YgZ3VpbGRJZCA9PT0gJ3N0cmluZycgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShndWlsZElkKSA6IGd1aWxkSWRcbiAgaWYgKHByb3BzLnVzZXIgJiYgcGF5bG9hZC51c2VyKSBtZW1iZXIudXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQudXNlcilcbiAgaWYgKHByb3BzLm5pY2sgJiYgcGF5bG9hZC5uaWNrKSBtZW1iZXIubmljayA9IHBheWxvYWQubmlja1xuICBpZiAocHJvcHMucm9sZXMgJiYgcGF5bG9hZC5yb2xlcykgbWVtYmVyLnJvbGVzID0gcGF5bG9hZC5yb2xlcy5tYXAoKGlkKSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCkpXG4gIGlmIChwcm9wcy5qb2luZWRBdCAmJiBwYXlsb2FkLmpvaW5lZF9hdCkgbWVtYmVyLmpvaW5lZEF0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmpvaW5lZF9hdClcbiAgaWYgKHByb3BzLnByZW1pdW1TaW5jZSAmJiBwYXlsb2FkLnByZW1pdW1fc2luY2UpIG1lbWJlci5wcmVtaXVtU2luY2UgPSBEYXRlLnBhcnNlKHBheWxvYWQucHJlbWl1bV9zaW5jZSlcbiAgaWYgKHByb3BzLmNvbW11bmljYXRpb25EaXNhYmxlZFVudGlsICYmIHBheWxvYWQuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbClcbiAgICBtZW1iZXIuY29tbXVuaWNhdGlvbkRpc2FibGVkVW50aWwgPSBEYXRlLnBhcnNlKHBheWxvYWQuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbClcbiAgaWYgKHByb3BzLmF2YXRhciAmJiBwYXlsb2FkLmF2YXRhcikgbWVtYmVyLmF2YXRhciA9IGljb25IYXNoVG9CaWdJbnQocGF5bG9hZC5hdmF0YXIpXG4gIGlmIChwcm9wcy5iYW5uZXIgJiYgcGF5bG9hZC5iYW5uZXIpIG1lbWJlci5iYW5uZXIgPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuYmFubmVyKVxuICBpZiAocHJvcHMucGVybWlzc2lvbnMgJiYgcGF5bG9hZC5wZXJtaXNzaW9ucykgbWVtYmVyLnBlcm1pc3Npb25zID0gbmV3IFBlcm1pc3Npb25zKHBheWxvYWQucGVybWlzc2lvbnMpXG4gIGlmIChwcm9wcy50b2dnbGVzKSBtZW1iZXIudG9nZ2xlcyA9IG5ldyBNZW1iZXJUb2dnbGVzKHBheWxvYWQpXG4gIGlmIChwcm9wcy5hdmF0YXJEZWNvcmF0aW9uRGF0YSAmJiBwYXlsb2FkLmF2YXRhcl9kZWNvcmF0aW9uX2RhdGEpXG4gICAgbWVtYmVyLmF2YXRhckRlY29yYXRpb25EYXRhID0gYm90LnRyYW5zZm9ybWVycy5hdmF0YXJEZWNvcmF0aW9uRGF0YShib3QsIHBheWxvYWQuYXZhdGFyX2RlY29yYXRpb25fZGF0YSlcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5tZW1iZXIoYm90LCBwYXlsb2FkLCBtZW1iZXIpXG59XG4iXSwibmFtZXMiOlsiaWNvbkhhc2hUb0JpZ0ludCIsIk1lbWJlclRvZ2dsZXMiLCJQZXJtaXNzaW9ucyIsImJhc2VNZW1iZXIiLCJ1bmRlZmluZWQiLCJkZWFmIiwidG9nZ2xlcyIsImhhcyIsIm11dGUiLCJwZW5kaW5nIiwiZmxhZ3MiLCJkaWRSZWpvaW4iLCJzdGFydGVkT25ib2FyZGluZyIsImJ5cGFzc2VzVmVyaWZpY2F0aW9uIiwiY29tcGxldGVkT25ib2FyZGluZyIsInRyYW5zZm9ybU1lbWJlciIsImJvdCIsInBheWxvYWQiLCJndWlsZElkIiwidXNlcklkIiwibWVtYmVyIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsImlkIiwic25vd2ZsYWtlIiwidXNlciIsIm5pY2siLCJyb2xlcyIsIm1hcCIsImpvaW5lZEF0Iiwiam9pbmVkX2F0IiwiRGF0ZSIsInBhcnNlIiwicHJlbWl1bVNpbmNlIiwicHJlbWl1bV9zaW5jZSIsImNvbW11bmljYXRpb25EaXNhYmxlZFVudGlsIiwiY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbCIsImF2YXRhciIsImJhbm5lciIsInBlcm1pc3Npb25zIiwiYXZhdGFyRGVjb3JhdGlvbkRhdGEiLCJhdmF0YXJf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
|