@discordeno/bot 19.0.0-next.f8f976a → 19.0.0-next.f9bdfce
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 +30 -0
- package/dist/cjs/bot.cjs +1 -1
- package/dist/cjs/handlers/emojis/GUILD_EMOJIS_UPDATE.cjs +2 -2
- package/dist/cjs/handlers/guilds/GUILD_STICKERS_UPDATE.cjs +8 -5
- package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +6 -3
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +4 -2
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +3 -2
- package/dist/cjs/transformers/attachment.cjs +2 -1
- package/dist/cjs/transformers/avatarDecorationData.cjs +20 -0
- package/dist/cjs/transformers/channel.cjs +29 -2
- package/dist/cjs/transformers/emoji.cjs +19 -4
- package/dist/cjs/transformers/guild.cjs +5 -2
- package/dist/cjs/transformers/index.cjs +2 -1
- package/dist/cjs/transformers/interaction.cjs +38 -41
- package/dist/cjs/transformers/invite.cjs +2 -1
- package/dist/cjs/transformers/member.cjs +3 -2
- package/dist/cjs/transformers/message.cjs +32 -33
- package/dist/cjs/transformers/reverse/member.cjs +7 -2
- package/dist/cjs/transformers/sku.cjs +1 -1
- package/dist/cjs/transformers/toggles/Permissions.cjs +2 -2
- package/dist/cjs/transformers/toggles/channel.cjs +7 -2
- package/dist/cjs/transformers/toggles/guild.cjs +74 -52
- package/dist/cjs/transformers/user.cjs +2 -2
- package/dist/cjs/transformers.cjs +48 -7
- package/dist/cjs/typings.cjs +4 -26
- package/dist/esm/bot.js +1 -1
- package/dist/esm/handlers/emojis/GUILD_EMOJIS_UPDATE.js +2 -2
- package/dist/esm/handlers/guilds/GUILD_STICKERS_UPDATE.js +8 -5
- package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +6 -3
- package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +4 -2
- package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +3 -2
- package/dist/esm/transformers/attachment.js +2 -1
- package/dist/esm/transformers/avatarDecorationData.js +10 -0
- package/dist/esm/transformers/channel.js +27 -3
- package/dist/esm/transformers/emoji.js +8 -1
- package/dist/esm/transformers/guild.js +5 -2
- package/dist/esm/transformers/index.js +2 -1
- package/dist/esm/transformers/interaction.js +37 -40
- package/dist/esm/transformers/invite.js +2 -1
- package/dist/esm/transformers/member.js +3 -2
- package/dist/esm/transformers/message.js +3 -4
- package/dist/esm/transformers/reverse/member.js +7 -2
- package/dist/esm/transformers/sku.js +1 -1
- package/dist/esm/transformers/toggles/Permissions.js +2 -2
- package/dist/esm/transformers/toggles/channel.js +7 -2
- package/dist/esm/transformers/toggles/guild.js +74 -52
- package/dist/esm/transformers/user.js +2 -2
- package/dist/esm/transformers.js +51 -10
- package/dist/esm/typings.js +1 -15
- package/dist/types/bot.d.ts +9 -3
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -1
- package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts +1 -1
- package/dist/types/handlers/interactions/INTERACTION_CREATE.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/transformers/attachment.d.ts +2 -0
- package/dist/types/transformers/attachment.d.ts.map +1 -1
- package/dist/types/transformers/avatarDecorationData.d.ts +9 -0
- package/dist/types/transformers/avatarDecorationData.d.ts.map +1 -0
- package/dist/types/transformers/channel.d.ts +38 -4
- package/dist/types/transformers/channel.d.ts.map +1 -1
- package/dist/types/transformers/emoji.d.ts +8 -1
- package/dist/types/transformers/emoji.d.ts.map +1 -1
- package/dist/types/transformers/guild.d.ts +3 -3
- package/dist/types/transformers/guild.d.ts.map +1 -1
- package/dist/types/transformers/index.d.ts +1 -0
- package/dist/types/transformers/index.d.ts.map +1 -1
- package/dist/types/transformers/interaction.d.ts +8 -14
- package/dist/types/transformers/interaction.d.ts.map +1 -1
- package/dist/types/transformers/invite.d.ts +3 -1
- package/dist/types/transformers/invite.d.ts.map +1 -1
- package/dist/types/transformers/member.d.ts +4 -1
- package/dist/types/transformers/member.d.ts.map +1 -1
- package/dist/types/transformers/message.d.ts +2 -2
- package/dist/types/transformers/message.d.ts.map +1 -1
- package/dist/types/transformers/reverse/member.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/toggles/Permissions.d.ts +4 -4
- package/dist/types/transformers/toggles/Permissions.d.ts.map +1 -1
- package/dist/types/transformers/toggles/channel.d.ts +3 -0
- package/dist/types/transformers/toggles/channel.d.ts.map +1 -1
- package/dist/types/transformers/toggles/guild.d.ts +50 -35
- package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
- package/dist/types/transformers/user.d.ts +3 -3
- package/dist/types/transformers/user.d.ts.map +1 -1
- package/dist/types/transformers.d.ts +50 -8
- package/dist/types/transformers.d.ts.map +1 -1
- package/dist/types/typings.d.ts +0 -24
- package/dist/types/typings.d.ts.map +1 -1
- package/package.json +13 -13
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,28 +1,33 @@
|
|
|
1
1
|
import { GuildFeatures } from '@discordeno/types';
|
|
2
2
|
import { ToggleBitfieldBigint } from './ToggleBitfield.js';
|
|
3
3
|
const featureNames = [
|
|
4
|
-
'
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
4
|
+
'animatedBanner',
|
|
5
|
+
'animatedIcon',
|
|
6
|
+
'applicationCommandPermissionsV2',
|
|
7
|
+
'autoModeration',
|
|
8
|
+
'banner',
|
|
9
9
|
'community',
|
|
10
|
+
'creatorMonetizableProvisional',
|
|
11
|
+
'creatorStorePage',
|
|
10
12
|
'developerSupportServer',
|
|
11
|
-
'news',
|
|
12
13
|
'discoverable',
|
|
13
14
|
'featurable',
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'welcomeScreenEnabled',
|
|
15
|
+
'invitesDisabled',
|
|
16
|
+
'inviteSplash',
|
|
17
17
|
'memberVerificationGateEnabled',
|
|
18
|
-
'previewEnabled',
|
|
19
|
-
'ticketedEventsEnabled',
|
|
20
|
-
'monetizationEnabled',
|
|
21
18
|
'moreStickers',
|
|
19
|
+
'news',
|
|
20
|
+
'partnered',
|
|
21
|
+
'previewEnabled',
|
|
22
|
+
'raidAlertsDisabled',
|
|
22
23
|
'roleIcons',
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
24
|
+
'roleSubscriptionsAvailableForPurchase',
|
|
25
|
+
'roleSubscriptionsEnabled',
|
|
26
|
+
'ticketedEventsEnabled',
|
|
27
|
+
'vanityUrl',
|
|
28
|
+
'verified',
|
|
29
|
+
'vipRegions',
|
|
30
|
+
'welcomeScreenEnabled'
|
|
26
31
|
];
|
|
27
32
|
export const GuildToggle = {
|
|
28
33
|
/** Whether the bot is the owner of the guild */ owner: 1n << 0n,
|
|
@@ -31,32 +36,34 @@ export const GuildToggle = {
|
|
|
31
36
|
/** Whether this guild is unavailable due to an outage */ unavailable: 1n << 3n,
|
|
32
37
|
/** Whether the guild has the boost progress bar enabled */ premiumProgressBarEnabled: 1n << 4n,
|
|
33
38
|
// GUILD FEATURES ARE BELOW THIS
|
|
34
|
-
|
|
35
|
-
/** Whether the guild has access to set
|
|
36
|
-
/** Whether the guild has access to set
|
|
37
|
-
/** Whether the guild is
|
|
38
|
-
/** Whether the guild
|
|
39
|
+
// MISSING VALUES IN THE BITFIELD: 24, 25, 26
|
|
40
|
+
/** Whether the guild has access to set an animated guild banner image */ animatedBanner: 1n << 11n,
|
|
41
|
+
/** Whether the guild has access to set an animated guild icon */ animatedIcon: 1n << 16n,
|
|
42
|
+
/** Whether the guild is using the old permissions configuration behavior */ applicationCommandPermissionsV2: 1n << 14n,
|
|
43
|
+
/** Whether the guild has set up auto moderation rules */ autoModeration: 1n << 28n,
|
|
44
|
+
/** Whether the guild has access to set a guild banner image */ banner: 1n << 17n,
|
|
39
45
|
/** Whether the guild can enable welcome screen, Membership Screening, stage channels and discovery, and receives community updates */ community: 1n << 10n,
|
|
40
46
|
/** Whether the guild has enabled monetization. */ creatorMonetizableProvisional: 1n << 31n,
|
|
41
47
|
/** Whether the guild has enabled the role subscription promo page. */ creatorStorePage: 1n << 32n,
|
|
42
|
-
/** Whether the guild has
|
|
43
|
-
/** Whether the guild has access to create news channels */ news: 1n << 12n,
|
|
48
|
+
/** Whether the guild has been set as a support server on the App Directory */ developerSupportServer: 1n << 30n,
|
|
44
49
|
/** Whether the guild is able to be discovered in the directory */ discoverable: 1n << 13n,
|
|
45
50
|
/** Whether the guild is able to be featured in the directory */ featurable: 1n << 15n,
|
|
46
|
-
/** Whether the guild has
|
|
47
|
-
/** Whether the guild has access to set
|
|
48
|
-
/** Whether the guild has enabled the welcome screen */ welcomeScreenEnabled: 1n << 18n,
|
|
51
|
+
/** Whether the guild has paused invites, preventing new users from joining */ invitesDisabled: 1n << 29n,
|
|
52
|
+
/** Whether the guild has access to set an invite splash background */ inviteSplash: 1n << 5n,
|
|
49
53
|
/** Whether the guild has enabled [Membership Screening](https://discord.com/developers/docs/resources/guild#membership-screening-object) */ memberVerificationGateEnabled: 1n << 19n,
|
|
50
|
-
/** Whether the guild can be previewed before joining via Membership Screening or the directory */ previewEnabled: 1n << 20n,
|
|
51
|
-
/** Whether the guild has enabled ticketed events */ ticketedEventsEnabled: 1n << 21n,
|
|
52
|
-
/** Whether the guild has enabled monetization */ monetizationEnabled: 1n << 22n,
|
|
53
54
|
/** Whether the guild has increased custom sticker slots */ moreStickers: 1n << 23n,
|
|
55
|
+
/** Whether the guild has access to create news channels */ news: 1n << 12n,
|
|
56
|
+
/** Whether the guild is partnered */ partnered: 1n << 9n,
|
|
57
|
+
/** Whether the guild can be previewed before joining via Membership Screening or the directory */ previewEnabled: 1n << 20n,
|
|
58
|
+
/** Whether the guild has disabled alerts for join raids in the configured safety alerts channel */ raidAlertsDisabled: 1n << 22n,
|
|
54
59
|
/** Whether the guild is able to set role icons */ roleIcons: 1n << 27n,
|
|
55
60
|
/** Whether the guild has role subscriptions that can be purchased. */ roleSubscriptionsAvailableForPurchase: 1n << 33n,
|
|
56
61
|
/** Whether the guild has enabled role subscriptions. */ roleSubscriptionsEnabled: 1n << 34n,
|
|
57
|
-
/** Whether the guild has
|
|
58
|
-
/** Whether the guild has
|
|
59
|
-
/** Whether the guild
|
|
62
|
+
/** Whether the guild has enabled ticketed events */ ticketedEventsEnabled: 1n << 21n,
|
|
63
|
+
/** Whether the guild has access to set a vanity URL */ vanityUrl: 1n << 7n,
|
|
64
|
+
/** Whether the guild is verified */ verified: 1n << 8n,
|
|
65
|
+
/** Whether the guild has access to set 384 kbps bitrate in voice (previously VIP voice servers) */ vipRegions: 1n << 6n,
|
|
66
|
+
/** Whether the guild has enabled the welcome screen */ welcomeScreenEnabled: 1n << 18n
|
|
60
67
|
};
|
|
61
68
|
export class GuildToggles extends ToggleBitfieldBigint {
|
|
62
69
|
constructor(guildOrTogglesBigint){
|
|
@@ -71,33 +78,33 @@ export class GuildToggles extends ToggleBitfieldBigint {
|
|
|
71
78
|
if (guild.large) this.add(GuildToggle.large);
|
|
72
79
|
if (guild.unavailable) this.add(GuildToggle.unavailable);
|
|
73
80
|
if (guild.premium_progress_bar_enabled) this.add(GuildToggle.premiumProgressBarEnabled);
|
|
74
|
-
if (guild.features.includes(GuildFeatures.
|
|
75
|
-
if (guild.features.includes(GuildFeatures.
|
|
76
|
-
if (guild.features.includes(GuildFeatures.
|
|
77
|
-
if (guild.features.includes(GuildFeatures.
|
|
78
|
-
if (guild.features.includes(GuildFeatures.
|
|
81
|
+
if (guild.features.includes(GuildFeatures.AnimatedBanner)) this.add(GuildToggle.animatedBanner);
|
|
82
|
+
if (guild.features.includes(GuildFeatures.AnimatedIcon)) this.add(GuildToggle.animatedIcon);
|
|
83
|
+
if (guild.features.includes(GuildFeatures.ApplicationCommandPermissionsV2)) this.add(GuildToggle.applicationCommandPermissionsV2);
|
|
84
|
+
if (guild.features.includes(GuildFeatures.AutoModeration)) this.add(GuildToggle.autoModeration);
|
|
85
|
+
if (guild.features.includes(GuildFeatures.Banner)) this.add(GuildToggle.banner);
|
|
79
86
|
if (guild.features.includes(GuildFeatures.Community)) this.add(GuildToggle.community);
|
|
80
87
|
if (guild.features.includes(GuildFeatures.CreatorMonetizableProvisional)) this.add(GuildToggle.creatorMonetizableProvisional);
|
|
81
88
|
if (guild.features.includes(GuildFeatures.CreatorStorePage)) this.add(GuildToggle.creatorStorePage);
|
|
82
89
|
if (guild.features.includes(GuildFeatures.DeveloperSupportServer)) this.add(GuildToggle.developerSupportServer);
|
|
83
|
-
if (guild.features.includes(GuildFeatures.AnimatedBanner)) this.add(GuildToggle.animatedBanner);
|
|
84
|
-
if (guild.features.includes(GuildFeatures.News)) this.add(GuildToggle.news);
|
|
85
90
|
if (guild.features.includes(GuildFeatures.Discoverable)) this.add(GuildToggle.discoverable);
|
|
86
91
|
if (guild.features.includes(GuildFeatures.Featurable)) this.add(GuildToggle.featurable);
|
|
87
|
-
if (guild.features.includes(GuildFeatures.
|
|
88
|
-
if (guild.features.includes(GuildFeatures.
|
|
89
|
-
if (guild.features.includes(GuildFeatures.
|
|
90
|
-
if (guild.features.includes(GuildFeatures.MemberVerificationGateEnabled)) {
|
|
91
|
-
this.add(GuildToggle.memberVerificationGateEnabled);
|
|
92
|
-
}
|
|
93
|
-
if (guild.features.includes(GuildFeatures.PreviewEnabled)) this.add(GuildToggle.previewEnabled);
|
|
94
|
-
if (guild.features.includes(GuildFeatures.TicketedEventsEnabled)) this.add(GuildToggle.ticketedEventsEnabled);
|
|
92
|
+
if (guild.features.includes(GuildFeatures.InvitesDisabled)) this.add(GuildToggle.invitesDisabled);
|
|
93
|
+
if (guild.features.includes(GuildFeatures.InviteSplash)) this.add(GuildToggle.inviteSplash);
|
|
94
|
+
if (guild.features.includes(GuildFeatures.MemberVerificationGateEnabled)) this.add(GuildToggle.memberVerificationGateEnabled);
|
|
95
95
|
if (guild.features.includes(GuildFeatures.MoreStickers)) this.add(GuildToggle.moreStickers);
|
|
96
|
+
if (guild.features.includes(GuildFeatures.News)) this.add(GuildToggle.news);
|
|
97
|
+
if (guild.features.includes(GuildFeatures.Partnered)) this.add(GuildToggle.partnered);
|
|
98
|
+
if (guild.features.includes(GuildFeatures.PreviewEnabled)) this.add(GuildToggle.previewEnabled);
|
|
99
|
+
if (guild.features.includes(GuildFeatures.RaidAlertsDisabled)) this.add(GuildToggle.raidAlertsDisabled);
|
|
96
100
|
if (guild.features.includes(GuildFeatures.RoleIcons)) this.add(GuildToggle.roleIcons);
|
|
97
101
|
if (guild.features.includes(GuildFeatures.RoleSubscriptionsAvailableForPurchase)) this.add(GuildToggle.roleSubscriptionsAvailableForPurchase);
|
|
98
102
|
if (guild.features.includes(GuildFeatures.RoleSubscriptionsEnabled)) this.add(GuildToggle.roleSubscriptionsEnabled);
|
|
99
|
-
if (guild.features.includes(GuildFeatures.
|
|
100
|
-
if (guild.features.includes(GuildFeatures.
|
|
103
|
+
if (guild.features.includes(GuildFeatures.TicketedEventsEnabled)) this.add(GuildToggle.ticketedEventsEnabled);
|
|
104
|
+
if (guild.features.includes(GuildFeatures.VanityUrl)) this.add(GuildToggle.vanityUrl);
|
|
105
|
+
if (guild.features.includes(GuildFeatures.Verified)) this.add(GuildToggle.verified);
|
|
106
|
+
if (guild.features.includes(GuildFeatures.VipRegions)) this.add(GuildToggle.vipRegions);
|
|
107
|
+
if (guild.features.includes(GuildFeatures.WelcomeScreenEnabled)) this.add(GuildToggle.welcomeScreenEnabled);
|
|
101
108
|
}
|
|
102
109
|
}
|
|
103
110
|
get features() {
|
|
@@ -175,9 +182,6 @@ export class GuildToggles extends ToggleBitfieldBigint {
|
|
|
175
182
|
/** Whether the guild has enabled ticketed events */ get ticketedEventsEnabled() {
|
|
176
183
|
return this.has('ticketedEventsEnabled');
|
|
177
184
|
}
|
|
178
|
-
/** Whether the guild has enabled monetization */ get monetizationEnabled() {
|
|
179
|
-
return this.has('monetizationEnabled');
|
|
180
|
-
}
|
|
181
185
|
/** Whether the guild has increased custom sticker slots */ get moreStickers() {
|
|
182
186
|
return this.has('moreStickers');
|
|
183
187
|
}
|
|
@@ -190,6 +194,24 @@ export class GuildToggles extends ToggleBitfieldBigint {
|
|
|
190
194
|
/** Whether the guild has paused invites, preventing new users from joining */ get invitesDisabled() {
|
|
191
195
|
return this.has('invitesDisabled');
|
|
192
196
|
}
|
|
197
|
+
/** Whether the guild is using the old permissions configuration behavior */ get applicationCommandPermissionsV2() {
|
|
198
|
+
return this.has('applicationCommandPermissionsV2');
|
|
199
|
+
}
|
|
200
|
+
/** Whether the guild has enabled monetization. */ get creatorMonetizableProvisional() {
|
|
201
|
+
return this.has('creatorMonetizableProvisional');
|
|
202
|
+
}
|
|
203
|
+
/** Whether the guild has enabled the role subscription promo page. */ get creatorStorePage() {
|
|
204
|
+
return this.has('creatorStorePage');
|
|
205
|
+
}
|
|
206
|
+
/** Whether the guild has disabled alerts for join raids in the configured safety alerts channel */ get raidAlertsDisabled() {
|
|
207
|
+
return this.has('raidAlertsDisabled');
|
|
208
|
+
}
|
|
209
|
+
/** Whether the guild has role subscriptions that can be purchased. */ get roleSubscriptionsAvailableForPurchase() {
|
|
210
|
+
return this.has('roleSubscriptionsAvailableForPurchase');
|
|
211
|
+
}
|
|
212
|
+
/** Whether the guild has enabled role subscriptions. */ get roleSubscriptionsEnabled() {
|
|
213
|
+
return this.has('roleSubscriptionsEnabled');
|
|
214
|
+
}
|
|
193
215
|
/** Checks whether or not the permissions exist in this */ has(permissions) {
|
|
194
216
|
if (!Array.isArray(permissions)) return super.contains(GuildToggle[permissions]);
|
|
195
217
|
return super.contains(permissions.reduce((a, b)=>a |= GuildToggle[b], 0n));
|
|
@@ -203,4 +225,4 @@ export class GuildToggles extends ToggleBitfieldBigint {
|
|
|
203
225
|
}
|
|
204
226
|
}
|
|
205
227
|
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9ndWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHdWlsZEZlYXR1cmVzLCB0eXBlIERpc2NvcmRHdWlsZCB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGRCaWdpbnQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBmZWF0dXJlTmFtZXMgPSBbXG4gICdpbnZpdGVTcGxhc2gnLFxuICAndmlwUmVnaW9ucycsXG4gICd2YW5pdHlVcmwnLFxuICAndmVyaWZpZWQnLFxuICAncGFydG5lcmVkJyxcbiAgJ2NvbW11bml0eScsXG4gICdkZXZlbG9wZXJTdXBwb3J0U2VydmVyJyxcbiAgJ25ld3MnLFxuICAnZGlzY292ZXJhYmxlJyxcbiAgJ2ZlYXR1cmFibGUnLFxuICAnYW5pbWF0ZWRJY29uJyxcbiAgJ2Jhbm5lcicsXG4gICd3ZWxjb21lU2NyZWVuRW5hYmxlZCcsXG4gICdtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCcsXG4gICdwcmV2aWV3RW5hYmxlZCcsXG4gICd0aWNrZXRlZEV2ZW50c0VuYWJsZWQnLFxuICAnbW9uZXRpemF0aW9uRW5hYmxlZCcsXG4gICdtb3JlU3RpY2tlcnMnLFxuICAncm9sZUljb25zJyxcbiAgJ2F1dG9Nb2RlcmF0aW9uJyxcbiAgJ2ludml0ZXNEaXNhYmxlZCcsXG4gICdhbmltYXRlZEJhbm5lcicsXG5dXG5cbmV4cG9ydCBjb25zdCBHdWlsZFRvZ2dsZSA9IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIG93bmVyOiAxbiA8PCAwbixcbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICB3aWRnZXRFbmFibGVkOiAxbiA8PCAxbixcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgbGFyZ2U6IDFuIDw8IDJuLFxuICAvKiogV2hldGhlciB0aGlzIGd1aWxkIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhbiBvdXRhZ2UgKi9cbiAgdW5hdmFpbGFibGU6IDFuIDw8IDNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkOiAxbiA8PCA0bixcblxuICAvLyBHVUlMRCBGRUFUVVJFUyBBUkUgQkVMT1cgVEhJU1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBpbnZpdGUgc3BsYXNoIGJhY2tncm91bmQgKi9cbiAgaW52aXRlU3BsYXNoOiAxbiA8PCA1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIHZpcFJlZ2lvbnM6IDFuIDw8IDZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSB2YW5pdHkgVVJMICovXG4gIHZhbml0eVVybDogMW4gPDwgN24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB2ZXJpZmllZCAqL1xuICB2ZXJpZmllZDogMW4gPDwgOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBwYXJ0bmVyZWQgKi9cbiAgcGFydG5lcmVkOiAxbiA8PCA5bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgY29tbXVuaXR5OiAxbiA8PCAxMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsOiAxbiA8PCAzMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgY3JlYXRvclN0b3JlUGFnZTogMW4gPDwgMzJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gYW5pbWF0ZWQgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGFuaW1hdGVkQmFubmVyOiAxbiA8PCAxMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIGNyZWF0ZSBuZXdzIGNoYW5uZWxzICovXG4gIG5ld3M6IDFuIDw8IDEybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGRpc2NvdmVyYWJsZTogMW4gPDwgMTNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBiZSBmZWF0dXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGZlYXR1cmFibGU6IDFuIDw8IDE1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGljb24gKi9cbiAgYW5pbWF0ZWRJY29uOiAxbiA8PCAxNm4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBiYW5uZXI6IDFuIDw8IDE3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRoZSB3ZWxjb21lIHNjcmVlbiAqL1xuICB3ZWxjb21lU2NyZWVuRW5hYmxlZDogMW4gPDwgMThuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgW01lbWJlcnNoaXAgU2NyZWVuaW5nXShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbWVtYmVyc2hpcC1zY3JlZW5pbmctb2JqZWN0KSAqL1xuICBtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZDogMW4gPDwgMTluLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGJlIHByZXZpZXdlZCBiZWZvcmUgam9pbmluZyB2aWEgTWVtYmVyc2hpcCBTY3JlZW5pbmcgb3IgdGhlIGRpcmVjdG9yeSAqL1xuICBwcmV2aWV3RW5hYmxlZDogMW4gPDwgMjBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGlja2V0ZWQgZXZlbnRzICovXG4gIHRpY2tldGVkRXZlbnRzRW5hYmxlZDogMW4gPDwgMjFuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgbW9uZXRpemF0aW9uICovXG4gIG1vbmV0aXphdGlvbkVuYWJsZWQ6IDFuIDw8IDIybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBpbmNyZWFzZWQgY3VzdG9tIHN0aWNrZXIgc2xvdHMgKi9cbiAgbW9yZVN0aWNrZXJzOiAxbiA8PCAyM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCByb2xlIGljb25zICovXG4gIHJvbGVJY29uczogMW4gPDwgMjduLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHJvbGUgc3Vic2NyaXB0aW9ucyB0aGF0IGNhbiBiZSBwdXJjaGFzZWQuICovXG4gIHJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2U6IDFuIDw8IDMzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHJvbGUgc3Vic2NyaXB0aW9ucy4gKi9cbiAgcm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkOiAxbiA8PCAzNG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgc2V0IHVwIGF1dG8gbW9kZXJhdGlvbiBydWxlcyAqL1xuICBhdXRvTW9kZXJhdGlvbjogMW4gPDwgMjhuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgaW52aXRlc0Rpc2FibGVkOiAxbiA8PCAyOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYmVlbiBzZXQgYXMgYSBzdXBwb3J0IHNlcnZlciBvbiB0aGUgQXBwIERpcmVjdG9yeSAqL1xuICBkZXZlbG9wZXJTdXBwb3J0U2VydmVyOiAxbiA8PCAzMG4sXG59XG5cbmV4cG9ydCBjbGFzcyBHdWlsZFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB7XG4gIGNvbnN0cnVjdG9yKGd1aWxkT3JUb2dnbGVzQmlnaW50OiBEaXNjb3JkR3VpbGQgfCBiaWdpbnQpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGd1aWxkT3JUb2dnbGVzQmlnaW50ID09PSAnYmlnaW50JykgdGhpcy5iaXRmaWVsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBndWlsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgICAvLyBDYXVzZSBkaXNjb3JkIGJlIHNtYXJ0IGxpa2UgdGhhdFxuICAgICAgaWYgKCFndWlsZC5mZWF0dXJlcykgZ3VpbGQuZmVhdHVyZXMgPSBbXVxuXG4gICAgICBpZiAoZ3VpbGQub3duZXIpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm93bmVyKVxuICAgICAgaWYgKGd1aWxkLndpZGdldF9lbmFibGVkKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS53aWRnZXRFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmxhcmdlKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5sYXJnZSlcbiAgICAgIGlmIChndWlsZC51bmF2YWlsYWJsZSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudW5hdmFpbGFibGUpXG4gICAgICBpZiAoZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZClcblxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuSW52aXRlU3BsYXNoKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuaW52aXRlU3BsYXNoKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVmlwUmVnaW9ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZpcFJlZ2lvbnMpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WYW5pdHlVcmwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS52YW5pdHlVcmwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WZXJpZmllZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZlcmlmaWVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUGFydG5lcmVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucGFydG5lcmVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQ29tbXVuaXR5KSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY29tbXVuaXR5KVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQ3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5jcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNyZWF0b3JTdG9yZVBhZ2UpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5jcmVhdG9yU3RvcmVQYWdlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRGV2ZWxvcGVyU3VwcG9ydFNlcnZlcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmRldmVsb3BlclN1cHBvcnRTZXJ2ZXIpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5BbmltYXRlZEJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkQmFubmVyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTmV3cykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm5ld3MpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5EaXNjb3ZlcmFibGUpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5kaXNjb3ZlcmFibGUpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5GZWF0dXJhYmxlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZmVhdHVyYWJsZSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFuaW1hdGVkSWNvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkSWNvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLldlbGNvbWVTY3JlZW5FbmFibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUud2VsY29tZVNjcmVlbkVuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5NZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCkpIHtcbiAgICAgICAgdGhpcy5hZGQoR3VpbGRUb2dnbGUubWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQpXG4gICAgICB9XG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5QcmV2aWV3RW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnByZXZpZXdFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVGlja2V0ZWRFdmVudHNFbmFibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudGlja2V0ZWRFdmVudHNFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTW9yZVN0aWNrZXJzKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUubW9yZVN0aWNrZXJzKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZUljb25zKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucm9sZUljb25zKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5Sb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5yb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5BdXRvTW9kZXJhdGlvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmF1dG9Nb2RlcmF0aW9uKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuSW52aXRlc0Rpc2FibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuaW52aXRlc0Rpc2FibGVkKVxuICAgIH1cbiAgfVxuXG4gIGdldCBmZWF0dXJlcygpOiBHdWlsZFRvZ2dsZUtleXNbXSB7XG4gICAgY29uc3QgZmVhdHVyZXM6IEd1aWxkVG9nZ2xlS2V5c1tdID0gW11cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhHdWlsZFRvZ2dsZSkpIHtcbiAgICAgIGlmICghZmVhdHVyZU5hbWVzLmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlXG4gICAgICBpZiAoIXN1cGVyLmNvbnRhaW5zKEd1aWxkVG9nZ2xlW2tleSBhcyBHdWlsZFRvZ2dsZUtleXNdKSkgY29udGludWVcblxuICAgICAgZmVhdHVyZXMucHVzaChrZXkgYXMgR3VpbGRUb2dnbGVLZXlzKVxuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlc1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIGdldCBvd25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ293bmVyJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBzZXJ2ZXIgd2lkZ2V0IGlzIGVuYWJsZWQgKi9cbiAgZ2V0IHdpZGdldEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd3aWRnZXRFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgY29uc2lkZXJlZCBhIGxhcmdlIGd1aWxkICovXG4gIGdldCBsYXJnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2xhcmdlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgZ3VpbGQgaXMgdW5hdmFpbGFibGUgZHVlIHRvIGFuIG91dGFnZSAqL1xuICBnZXQgdW5hdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd1bmF2YWlsYWJsZScpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBnZXQgcHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ByZW1pdW1Qcm9ncmVzc0JhckVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGludml0ZSBzcGxhc2ggYmFja2dyb3VuZCAqL1xuICBnZXQgaW52aXRlU3BsYXNoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnaW52aXRlU3BsYXNoJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCAzODQga2JwcyBiaXRyYXRlIGluIHZvaWNlIChwcmV2aW91c2x5IFZJUCB2b2ljZSBzZXJ2ZXJzKSAqL1xuICBnZXQgdmlwUmVnaW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZpcFJlZ2lvbnMnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGEgdmFuaXR5IFVSTCAqL1xuICBnZXQgdmFuaXR5VXJsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndmFuaXR5VXJsJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB2ZXJpZmllZCAqL1xuICBnZXQgdmVyaWZpZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd2ZXJpZmllZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgcGFydG5lcmVkICovXG4gIGdldCBwYXJ0bmVyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwYXJ0bmVyZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgZ2V0IGNvbW11bml0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2NvbW11bml0eScpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgR3VpbGQgaGFzIGJlZW4gc2V0IGFzIGEgc3VwcG9ydCBzZXJ2ZXIgb24gdGhlIEFwcCBEaXJlY3RvcnkgKi9cbiAgZ2V0IGRldmVsb3BlclN1cHBvcnRTZXJ2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdkZXZlbG9wZXJTdXBwb3J0U2VydmVyJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBiYW5uZXIgaW1hZ2UgKi9cbiAgZ2V0IGFuaW1hdGVkQmFubmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYW5pbWF0ZWRCYW5uZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gY3JlYXRlIG5ld3MgY2hhbm5lbHMgKi9cbiAgZ2V0IG5ld3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCduZXdzJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGRpc2NvdmVyZWQgaW4gdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgZGlzY292ZXJhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZGlzY292ZXJhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGZlYXR1cmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZ2V0IGZlYXR1cmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdmZWF0dXJhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBpY29uICovXG4gIGdldCBhbmltYXRlZEljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhbmltYXRlZEljb24nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGEgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGdldCBiYW5uZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdiYW5uZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRoZSB3ZWxjb21lIHNjcmVlbiAqL1xuICBnZXQgd2VsY29tZVNjcmVlbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd3ZWxjb21lU2NyZWVuRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgW01lbWJlcnNoaXAgU2NyZWVuaW5nXShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbWVtYmVyc2hpcC1zY3JlZW5pbmctb2JqZWN0KSAqL1xuICBnZXQgbWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGJlIHByZXZpZXdlZCBiZWZvcmUgam9pbmluZyB2aWEgTWVtYmVyc2hpcCBTY3JlZW5pbmcgb3IgdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgcHJldmlld0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwcmV2aWV3RW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGlja2V0ZWQgZXZlbnRzICovXG4gIGdldCB0aWNrZXRlZEV2ZW50c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd0aWNrZXRlZEV2ZW50c0VuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIG1vbmV0aXphdGlvbiAqL1xuICBnZXQgbW9uZXRpemF0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21vbmV0aXphdGlvbkVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBpbmNyZWFzZWQgY3VzdG9tIHN0aWNrZXIgc2xvdHMgKi9cbiAgZ2V0IG1vcmVTdGlja2VycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21vcmVTdGlja2VycycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBzZXQgcm9sZSBpY29ucyAqL1xuICBnZXQgcm9sZUljb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncm9sZUljb25zJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgc2V0IHVwIGF1dG8gbW9kZXJhdGlvbiBydWxlcyAqL1xuICBnZXQgYXV0b01vZGVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhdXRvTW9kZXJhdGlvbicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgZ2V0IGludml0ZXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ludml0ZXNEaXNhYmxlZCcpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogR3VpbGRUb2dnbGVLZXlzIHwgR3VpbGRUb2dnbGVLZXlzW10pOiBib29sZWFuIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpKSByZXR1cm4gc3VwZXIuY29udGFpbnMoR3VpbGRUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gR3VpbGRUb2dnbGVbYl0pLCAwbikpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxHdWlsZFRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoR3VpbGRUb2dnbGUpKSB7XG4gICAgICBqc29uW2tleV0gPSBzdXBlci5jb250YWlucyh2YWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbiBhcyBSZWNvcmQ8R3VpbGRUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEd1aWxkVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBHdWlsZFRvZ2dsZVxuIl0sIm5hbWVzIjpbIkd1aWxkRmVhdHVyZXMiLCJUb2dnbGVCaXRmaWVsZEJpZ2ludCIsImZlYXR1cmVOYW1lcyIsIkd1aWxkVG9nZ2xlIiwib3duZXIiLCJ3aWRnZXRFbmFibGVkIiwibGFyZ2UiLCJ1bmF2YWlsYWJsZSIsInByZW1pdW1Qcm9ncmVzc0JhckVuYWJsZWQiLCJpbnZpdGVTcGxhc2giLCJ2aXBSZWdpb25zIiwidmFuaXR5VXJsIiwidmVyaWZpZWQiLCJwYXJ0bmVyZWQiLCJjb21tdW5pdHkiLCJjcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCIsImNyZWF0b3JTdG9yZVBhZ2UiLCJhbmltYXRlZEJhbm5lciIsIm5ld3MiLCJkaXNjb3ZlcmFibGUiLCJmZWF0dXJhYmxlIiwiYW5pbWF0ZWRJY29uIiwiYmFubmVyIiwid2VsY29tZVNjcmVlbkVuYWJsZWQiLCJtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsInByZXZpZXdFbmFibGVkIiwidGlja2V0ZWRFdmVudHNFbmFibGVkIiwibW9uZXRpemF0aW9uRW5hYmxlZCIsIm1vcmVTdGlja2VycyIsInJvbGVJY29ucyIsInJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJyb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJhdXRvTW9kZXJhdGlvbiIsImludml0ZXNEaXNhYmxlZCIsImRldmVsb3BlclN1cHBvcnRTZXJ2ZXIiLCJHdWlsZFRvZ2dsZXMiLCJjb25zdHJ1Y3RvciIsImd1aWxkT3JUb2dnbGVzQmlnaW50IiwiYml0ZmllbGQiLCJndWlsZCIsImZlYXR1cmVzIiwiYWRkIiwid2lkZ2V0X2VuYWJsZWQiLCJwcmVtaXVtX3Byb2dyZXNzX2Jhcl9lbmFibGVkIiwiaW5jbHVkZXMiLCJJbnZpdGVTcGxhc2giLCJWaXBSZWdpb25zIiwiVmFuaXR5VXJsIiwiVmVyaWZpZWQiLCJQYXJ0bmVyZWQiLCJDb21tdW5pdHkiLCJDcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCIsIkNyZWF0b3JTdG9yZVBhZ2UiLCJEZXZlbG9wZXJTdXBwb3J0U2VydmVyIiwiQW5pbWF0ZWRCYW5uZXIiLCJOZXdzIiwiRGlzY292ZXJhYmxlIiwiRmVhdHVyYWJsZSIsIkFuaW1hdGVkSWNvbiIsIkJhbm5lciIsIldlbGNvbWVTY3JlZW5FbmFibGVkIiwiTWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQiLCJQcmV2aWV3RW5hYmxlZCIsIlRpY2tldGVkRXZlbnRzRW5hYmxlZCIsIk1vcmVTdGlja2VycyIsIlJvbGVJY29ucyIsIlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJSb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJBdXRvTW9kZXJhdGlvbiIsIkludml0ZXNEaXNhYmxlZCIsImtleSIsIk9iamVjdCIsImtleXMiLCJjb250YWlucyIsInB1c2giLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInJlZHVjZSIsImEiLCJiIiwibGlzdCIsImpzb24iLCJ2YWx1ZSIsImVudHJpZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBMkIsb0JBQW1CO0FBQ3BFLFNBQVNDLG9CQUFvQixRQUFRLHNCQUFxQjtBQUUxRCxNQUFNQyxlQUFlO0lBQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxPQUFPLE1BQU1DLGNBQWM7SUFDekIsOENBQThDLEdBQzlDQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ2YseUNBQXlDLEdBQ3pDQyxlQUFlLEVBQUUsSUFBSSxFQUFFO0lBQ3ZCLDZDQUE2QyxHQUM3Q0MsT0FBTyxFQUFFLElBQUksRUFBRTtJQUNmLHVEQUF1RCxHQUN2REMsYUFBYSxFQUFFLElBQUksRUFBRTtJQUNyQix5REFBeUQsR0FDekRDLDJCQUEyQixFQUFFLElBQUksRUFBRTtJQUVuQyxnQ0FBZ0M7SUFFaEMsb0VBQW9FLEdBQ3BFQyxjQUFjLEVBQUUsSUFBSSxFQUFFO0lBQ3RCLGlHQUFpRyxHQUNqR0MsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNwQixxREFBcUQsR0FDckRDLFdBQVcsRUFBRSxJQUFJLEVBQUU7SUFDbkIsa0NBQWtDLEdBQ2xDQyxVQUFVLEVBQUUsSUFBSSxFQUFFO0lBQ2xCLG1DQUFtQyxHQUNuQ0MsV0FBVyxFQUFFLElBQUksRUFBRTtJQUNuQixvSUFBb0ksR0FDcElDLFdBQVcsRUFBRSxJQUFJLEdBQUc7SUFDcEIsZ0RBQWdELEdBQ2hEQywrQkFBK0IsRUFBRSxJQUFJ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
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9ndWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHdWlsZEZlYXR1cmVzLCB0eXBlIERpc2NvcmRHdWlsZCB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGRCaWdpbnQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBmZWF0dXJlTmFtZXMgPSBbXG4gICdhbmltYXRlZEJhbm5lcicsXG4gICdhbmltYXRlZEljb24nLFxuICAnYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMicsXG4gICdhdXRvTW9kZXJhdGlvbicsXG4gICdiYW5uZXInLFxuICAnY29tbXVuaXR5JyxcbiAgJ2NyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsJyxcbiAgJ2NyZWF0b3JTdG9yZVBhZ2UnLFxuICAnZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcicsXG4gICdkaXNjb3ZlcmFibGUnLFxuICAnZmVhdHVyYWJsZScsXG4gICdpbnZpdGVzRGlzYWJsZWQnLFxuICAnaW52aXRlU3BsYXNoJyxcbiAgJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJyxcbiAgJ21vcmVTdGlja2VycycsXG4gICduZXdzJyxcbiAgJ3BhcnRuZXJlZCcsXG4gICdwcmV2aWV3RW5hYmxlZCcsXG4gICdyYWlkQWxlcnRzRGlzYWJsZWQnLFxuICAncm9sZUljb25zJyxcbiAgJ3JvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UnLFxuICAncm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkJyxcbiAgJ3RpY2tldGVkRXZlbnRzRW5hYmxlZCcsXG4gICd2YW5pdHlVcmwnLFxuICAndmVyaWZpZWQnLFxuICAndmlwUmVnaW9ucycsXG4gICd3ZWxjb21lU2NyZWVuRW5hYmxlZCcsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBHdWlsZFRvZ2dsZSA9IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIG93bmVyOiAxbiA8PCAwbixcbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICB3aWRnZXRFbmFibGVkOiAxbiA8PCAxbixcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgbGFyZ2U6IDFuIDw8IDJuLFxuICAvKiogV2hldGhlciB0aGlzIGd1aWxkIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhbiBvdXRhZ2UgKi9cbiAgdW5hdmFpbGFibGU6IDFuIDw8IDNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkOiAxbiA8PCA0bixcblxuICAvLyBHVUlMRCBGRUFUVVJFUyBBUkUgQkVMT1cgVEhJU1xuICAvLyBNSVNTSU5HIFZBTFVFUyBJTiBUSEUgQklURklFTEQ6IDI0LCAyNSwgMjZcblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gYW5pbWF0ZWQgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGFuaW1hdGVkQmFubmVyOiAxbiA8PCAxMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBpY29uICovXG4gIGFuaW1hdGVkSWNvbjogMW4gPDwgMTZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgdXNpbmcgdGhlIG9sZCBwZXJtaXNzaW9ucyBjb25maWd1cmF0aW9uIGJlaGF2aW9yICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjI6IDFuIDw8IDE0bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBzZXQgdXAgYXV0byBtb2RlcmF0aW9uIHJ1bGVzICovXG4gIGF1dG9Nb2RlcmF0aW9uOiAxbiA8PCAyOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBiYW5uZXI6IDFuIDw8IDE3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgY29tbXVuaXR5OiAxbiA8PCAxMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsOiAxbiA8PCAzMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgY3JlYXRvclN0b3JlUGFnZTogMW4gPDwgMzJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGJlZW4gc2V0IGFzIGEgc3VwcG9ydCBzZXJ2ZXIgb24gdGhlIEFwcCBEaXJlY3RvcnkgKi9cbiAgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcjogMW4gPDwgMzBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBiZSBkaXNjb3ZlcmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZGlzY292ZXJhYmxlOiAxbiA8PCAxM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGZlYXR1cmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZmVhdHVyYWJsZTogMW4gPDwgMTVuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgaW52aXRlc0Rpc2FibGVkOiAxbiA8PCAyOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBpbnZpdGUgc3BsYXNoIGJhY2tncm91bmQgKi9cbiAgaW52aXRlU3BsYXNoOiAxbiA8PCA1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIFtNZW1iZXJzaGlwIFNjcmVlbmluZ10oaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21lbWJlcnNoaXAtc2NyZWVuaW5nLW9iamVjdCkgKi9cbiAgbWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQ6IDFuIDw8IDE5bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBpbmNyZWFzZWQgY3VzdG9tIHN0aWNrZXIgc2xvdHMgKi9cbiAgbW9yZVN0aWNrZXJzOiAxbiA8PCAyM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIGNyZWF0ZSBuZXdzIGNoYW5uZWxzICovXG4gIG5ld3M6IDFuIDw8IDEybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHBhcnRuZXJlZCAqL1xuICBwYXJ0bmVyZWQ6IDFuIDw8IDluLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGJlIHByZXZpZXdlZCBiZWZvcmUgam9pbmluZyB2aWEgTWVtYmVyc2hpcCBTY3JlZW5pbmcgb3IgdGhlIGRpcmVjdG9yeSAqL1xuICBwcmV2aWV3RW5hYmxlZDogMW4gPDwgMjBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGRpc2FibGVkIGFsZXJ0cyBmb3Igam9pbiByYWlkcyBpbiB0aGUgY29uZmlndXJlZCBzYWZldHkgYWxlcnRzIGNoYW5uZWwgKi9cbiAgcmFpZEFsZXJ0c0Rpc2FibGVkOiAxbiA8PCAyMm4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCByb2xlIGljb25zICovXG4gIHJvbGVJY29uczogMW4gPDwgMjduLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHJvbGUgc3Vic2NyaXB0aW9ucyB0aGF0IGNhbiBiZSBwdXJjaGFzZWQuICovXG4gIHJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2U6IDFuIDw8IDMzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHJvbGUgc3Vic2NyaXB0aW9ucy4gKi9cbiAgcm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkOiAxbiA8PCAzNG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aWNrZXRlZCBldmVudHMgKi9cbiAgdGlja2V0ZWRFdmVudHNFbmFibGVkOiAxbiA8PCAyMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIHZhbml0eSBVUkwgKi9cbiAgdmFuaXR5VXJsOiAxbiA8PCA3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiAxbiA8PCA4bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIHZpcFJlZ2lvbnM6IDFuIDw8IDZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIHdlbGNvbWVTY3JlZW5FbmFibGVkOiAxbiA8PCAxOG4sXG59XG5cbmV4cG9ydCBjbGFzcyBHdWlsZFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB7XG4gIGNvbnN0cnVjdG9yKGd1aWxkT3JUb2dnbGVzQmlnaW50OiBEaXNjb3JkR3VpbGQgfCBiaWdpbnQpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGd1aWxkT3JUb2dnbGVzQmlnaW50ID09PSAnYmlnaW50JykgdGhpcy5iaXRmaWVsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBndWlsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgICAvLyBDYXVzZSBkaXNjb3JkIGJlIHNtYXJ0IGxpa2UgdGhhdFxuICAgICAgaWYgKCFndWlsZC5mZWF0dXJlcykgZ3VpbGQuZmVhdHVyZXMgPSBbXVxuXG4gICAgICBpZiAoZ3VpbGQub3duZXIpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm93bmVyKVxuICAgICAgaWYgKGd1aWxkLndpZGdldF9lbmFibGVkKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS53aWRnZXRFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmxhcmdlKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5sYXJnZSlcbiAgICAgIGlmIChndWlsZC51bmF2YWlsYWJsZSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudW5hdmFpbGFibGUpXG4gICAgICBpZiAoZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZClcblxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQW5pbWF0ZWRCYW5uZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hbmltYXRlZEJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFuaW1hdGVkSWNvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkSWNvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQXV0b01vZGVyYXRpb24pKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hdXRvTW9kZXJhdGlvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNvbW11bml0eSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmNvbW11bml0eSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5DcmVhdG9yU3RvcmVQYWdlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvclN0b3JlUGFnZSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkRldmVsb3BlclN1cHBvcnRTZXJ2ZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5kZXZlbG9wZXJTdXBwb3J0U2VydmVyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRGlzY292ZXJhYmxlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZGlzY292ZXJhYmxlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRmVhdHVyYWJsZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmZlYXR1cmFibGUpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVzRGlzYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVzRGlzYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVTcGxhc2gpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVTcGxhc2gpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5NZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm1lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTW9yZVN0aWNrZXJzKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUubW9yZVN0aWNrZXJzKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTmV3cykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm5ld3MpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5QYXJ0bmVyZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5wYXJ0bmVyZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5QcmV2aWV3RW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnByZXZpZXdFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUmFpZEFsZXJ0c0Rpc2FibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucmFpZEFsZXJ0c0Rpc2FibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZUljb25zKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucm9sZUljb25zKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5Sb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5yb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5UaWNrZXRlZEV2ZW50c0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS50aWNrZXRlZEV2ZW50c0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WYW5pdHlVcmwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS52YW5pdHlVcmwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WZXJpZmllZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZlcmlmaWVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVmlwUmVnaW9ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZpcFJlZ2lvbnMpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5XZWxjb21lU2NyZWVuRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLndlbGNvbWVTY3JlZW5FbmFibGVkKVxuICAgIH1cbiAgfVxuXG4gIGdldCBmZWF0dXJlcygpOiBHdWlsZEZlYXR1cmVLZXlzW10ge1xuICAgIGNvbnN0IGZlYXR1cmVzOiBHdWlsZEZlYXR1cmVLZXlzW10gPSBbXVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAgaWYgKCFmZWF0dXJlTmFtZXMuaW5jbHVkZXMoa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpKSBjb250aW51ZVxuICAgICAgaWYgKCFzdXBlci5jb250YWlucyhHdWlsZFRvZ2dsZVtrZXkgYXMgR3VpbGRUb2dnbGVLZXlzXSkpIGNvbnRpbnVlXG5cbiAgICAgIGZlYXR1cmVzLnB1c2goa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYm90IGlzIHRoZSBvd25lciBvZiB0aGUgZ3VpbGQgKi9cbiAgZ2V0IG93bmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnb3duZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICBnZXQgd2lkZ2V0RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dpZGdldEVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgZ2V0IGxhcmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbGFyZ2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBndWlsZCBpcyB1bmF2YWlsYWJsZSBkdWUgdG8gYW4gb3V0YWdlICovXG4gIGdldCB1bmF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3VuYXZhaWxhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgdGhlIGJvb3N0IHByb2dyZXNzIGJhciBlbmFibGVkICovXG4gIGdldCBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gaW52aXRlIHNwbGFzaCBiYWNrZ3JvdW5kICovXG4gIGdldCBpbnZpdGVTcGxhc2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdpbnZpdGVTcGxhc2gnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIGdldCB2aXBSZWdpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndmlwUmVnaW9ucycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSB2YW5pdHkgVVJMICovXG4gIGdldCB2YW5pdHlVcmwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd2YW5pdHlVcmwnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIGdldCB2ZXJpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZlcmlmaWVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBwYXJ0bmVyZWQgKi9cbiAgZ2V0IHBhcnRuZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3BhcnRuZXJlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGVuYWJsZSB3ZWxjb21lIHNjcmVlbiwgTWVtYmVyc2hpcCBTY3JlZW5pbmcsIHN0YWdlIGNoYW5uZWxzIGFuZCBkaXNjb3ZlcnksIGFuZCByZWNlaXZlcyBjb21tdW5pdHkgdXBkYXRlcyAqL1xuICBnZXQgY29tbXVuaXR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnY29tbXVuaXR5JylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBHdWlsZCBoYXMgYmVlbiBzZXQgYXMgYSBzdXBwb3J0IHNlcnZlciBvbiB0aGUgQXBwIERpcmVjdG9yeSAqL1xuICBnZXQgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2RldmVsb3BlclN1cHBvcnRTZXJ2ZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBnZXQgYW5pbWF0ZWRCYW5uZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhbmltYXRlZEJhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBjcmVhdGUgbmV3cyBjaGFubmVscyAqL1xuICBnZXQgbmV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ25ld3MnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGdldCBkaXNjb3ZlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdkaXNjb3ZlcmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZmVhdHVyZWQgaW4gdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgZmVhdHVyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ZlYXR1cmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGljb24gKi9cbiAgZ2V0IGFuaW1hdGVkSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2FuaW1hdGVkSWNvbicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSBndWlsZCBiYW5uZXIgaW1hZ2UgKi9cbiAgZ2V0IGJhbm5lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2Jhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIGdldCB3ZWxjb21lU2NyZWVuRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dlbGNvbWVTY3JlZW5FbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBbTWVtYmVyc2hpcCBTY3JlZW5pbmddKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtZW1iZXJzaGlwLXNjcmVlbmluZy1vYmplY3QpICovXG4gIGdldCBtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBjYW4gYmUgcHJldmlld2VkIGJlZm9yZSBqb2luaW5nIHZpYSBNZW1iZXJzaGlwIFNjcmVlbmluZyBvciB0aGUgZGlyZWN0b3J5ICovXG4gIGdldCBwcmV2aWV3RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ByZXZpZXdFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aWNrZXRlZCBldmVudHMgKi9cbiAgZ2V0IHRpY2tldGVkRXZlbnRzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3RpY2tldGVkRXZlbnRzRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGluY3JlYXNlZCBjdXN0b20gc3RpY2tlciBzbG90cyAqL1xuICBnZXQgbW9yZVN0aWNrZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbW9yZVN0aWNrZXJzJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCByb2xlIGljb25zICovXG4gIGdldCByb2xlSWNvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyb2xlSWNvbnMnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBzZXQgdXAgYXV0byBtb2RlcmF0aW9uIHJ1bGVzICovXG4gIGdldCBhdXRvTW9kZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2F1dG9Nb2RlcmF0aW9uJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgcGF1c2VkIGludml0ZXMsIHByZXZlbnRpbmcgbmV3IHVzZXJzIGZyb20gam9pbmluZyAqL1xuICBnZXQgaW52aXRlc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnaW52aXRlc0Rpc2FibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB1c2luZyB0aGUgb2xkIHBlcm1pc3Npb25zIGNvbmZpZ3VyYXRpb24gYmVoYXZpb3IgKi9cbiAgZ2V0IGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGdldCBjcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2NyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgZ2V0IGNyZWF0b3JTdG9yZVBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdjcmVhdG9yU3RvcmVQYWdlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZGlzYWJsZWQgYWxlcnRzIGZvciBqb2luIHJhaWRzIGluIHRoZSBjb25maWd1cmVkIHNhZmV0eSBhbGVydHMgY2hhbm5lbCAqL1xuICBnZXQgcmFpZEFsZXJ0c0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncmFpZEFsZXJ0c0Rpc2FibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgcm9sZSBzdWJzY3JpcHRpb25zIHRoYXQgY2FuIGJlIHB1cmNoYXNlZC4gKi9cbiAgZ2V0IHJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyb2xlU3Vic2NyaXB0aW9uc0F2YWlsYWJsZUZvclB1cmNoYXNlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCByb2xlIHN1YnNjcmlwdGlvbnMuICovXG4gIGdldCByb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQnKVxuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgcGVybWlzc2lvbnMgZXhpc3QgaW4gdGhpcyAqL1xuICBoYXMocGVybWlzc2lvbnM6IEd1aWxkVG9nZ2xlS2V5cyB8IEd1aWxkVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKEd1aWxkVG9nZ2xlW3Blcm1pc3Npb25zXSlcblxuICAgIHJldHVybiBzdXBlci5jb250YWlucyhwZXJtaXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IChhIHw9IEd1aWxkVG9nZ2xlW2JdKSwgMG4pKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8R3VpbGRUb2dnbGVLZXlzLCBib29sZWFuPiB7XG4gICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAganNvbltrZXldID0gc3VwZXIuY29udGFpbnModmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb24gYXMgUmVjb3JkPEd1aWxkVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBHdWlsZFRvZ2dsZUtleXMgPSBrZXlvZiB0eXBlb2YgR3VpbGRUb2dnbGVcblxuZXhwb3J0IHR5cGUgR3VpbGRGZWF0dXJlS2V5cyA9ICh0eXBlb2YgZmVhdHVyZU5hbWVzKVtudW1iZXJdXG4iXSwibmFtZXMiOlsiR3VpbGRGZWF0dXJlcyIsIlRvZ2dsZUJpdGZpZWxkQmlnaW50IiwiZmVhdHVyZU5hbWVzIiwiR3VpbGRUb2dnbGUiLCJvd25lciIsIndpZGdldEVuYWJsZWQiLCJsYXJnZSIsInVuYXZhaWxhYmxlIiwicHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCIsImFuaW1hdGVkQmFubmVyIiwiYW5pbWF0ZWRJY29uIiwiYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMiIsImF1dG9Nb2RlcmF0aW9uIiwiYmFubmVyIiwiY29tbXVuaXR5IiwiY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwiLCJjcmVhdG9yU3RvcmVQYWdlIiwiZGV2ZWxvcGVyU3VwcG9ydFNlcnZlciIsImRpc2NvdmVyYWJsZSIsImZlYXR1cmFibGUiLCJpbnZpdGVzRGlzYWJsZWQiLCJpbnZpdGVTcGxhc2giLCJtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsIm1vcmVTdGlja2VycyIsIm5ld3MiLCJwYXJ0bmVyZWQiLCJwcmV2aWV3RW5hYmxlZCIsInJhaWRBbGVydHNEaXNhYmxlZCIsInJvbGVJY29ucyIsInJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJyb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJ0aWNrZXRlZEV2ZW50c0VuYWJsZWQiLCJ2YW5pdHlVcmwiLCJ2ZXJpZmllZCIsInZpcFJlZ2lvbnMiLCJ3ZWxjb21lU2NyZWVuRW5hYmxlZCIsIkd1aWxkVG9nZ2xlcyIsImNvbnN0cnVjdG9yIiwiZ3VpbGRPclRvZ2dsZXNCaWdpbnQiLCJiaXRmaWVsZCIsImd1aWxkIiwiZmVhdHVyZXMiLCJhZGQiLCJ3aWRnZXRfZW5hYmxlZCIsInByZW1pdW1fcHJvZ3Jlc3NfYmFyX2VuYWJsZWQiLCJpbmNsdWRlcyIsIkFuaW1hdGVkQmFubmVyIiwiQW5pbWF0ZWRJY29uIiwiQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMiIsIkF1dG9Nb2RlcmF0aW9uIiwiQmFubmVyIiwiQ29tbXVuaXR5IiwiQ3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwiLCJDcmVhdG9yU3RvcmVQYWdlIiwiRGV2ZWxvcGVyU3VwcG9ydFNlcnZlciIsIkRpc2NvdmVyYWJsZSIsIkZlYXR1cmFibGUiLCJJbnZpdGVzRGlzYWJsZWQiLCJJbnZpdGVTcGxhc2giLCJNZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsIk1vcmVTdGlja2VycyIsIk5ld3MiLCJQYXJ0bmVyZWQiLCJQcmV2aWV3RW5hYmxlZCIsIlJhaWRBbGVydHNEaXNhYmxlZCIsIlJvbGVJY29ucyIsIlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJSb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJUaWNrZXRlZEV2ZW50c0VuYWJsZWQiLCJWYW5pdHlVcmwiLCJWZXJpZmllZCIsIlZpcFJlZ2lvbnMiLCJXZWxjb21lU2NyZWVuRW5hYmxlZCIsImtleSIsIk9iamVjdCIsImtleXMiLCJjb250YWlucyIsInB1c2giLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInJlZHVjZSIsImEiLCJiIiwibGlzdCIsImpzb24iLCJ2YWx1ZSIsImVudHJpZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBMkIsb0JBQW1CO0FBQ3BFLFNBQVNDLG9CQUFvQixRQUFRLHNCQUFxQjtBQUUxRCxNQUFNQyxlQUFlO0lBQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsT0FBTyxNQUFNQyxjQUFjO0lBQ3pCLDhDQUE4QyxHQUM5Q0MsT0FBTyxFQUFFLElBQUksRUFBRTtJQUNmLHlDQUF5QyxHQUN6Q0MsZUFBZSxFQUFFLElBQUksRUFBRTtJQUN2Qiw2Q0FBNkMsR0FDN0NDLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDZix1REFBdUQsR0FDdkRDLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDckIseURBQXlELEdBQ3pEQywyQkFBMkIsRUFBRSxJQUFJLEVBQUU7SUFFbkMsZ0NBQWdDO0lBQ2hDLDZDQUE2QztJQUU3Qyx1RUFBdUUsR0FDdkVDLGdCQUFnQixFQUFFLElBQUksR0FBRztJQUN6QiwrREFBK0QsR0FDL0RDLGNBQWMsRUFBRSxJQUFJLEdBQUc7SUFDdkIsMEVBQTBFLEdBQzFFQyxpQ0FBaUMsRUFBRSxJQUFJLEdBQUc7SUFDMUMsdURBQXVELEdBQ3ZEQyxnQkFBZ0IsRUFBRSxJQUFJLEdBQUc7SUFDekIsNkRBQTZELEdBQzdEQyxRQUFRLEVBQUUsSUFBSSxHQUFHO0lBQ2pCLG9JQUFvSSxHQUNwSUMsV0FBVyxFQUFFLElBQUksR0FBRztJQUNwQixnREFBZ0QsR0FDaERDLCtCQUErQixFQUFFLElBQUksR0FBRztJQUN4QyxvRUFBb0Us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
|
|
@@ -35,9 +35,9 @@ export function transformUser(bot, payload) {
|
|
|
35
35
|
if (props.premiumType && payload.premium_type) user.premiumType = payload.premium_type;
|
|
36
36
|
if (props.avatar && payload.avatar) user.avatar = iconHashToBigInt(payload.avatar);
|
|
37
37
|
if (props.banner && payload.banner) user.banner = iconHashToBigInt(payload.banner);
|
|
38
|
-
if (props.avatarDecoration && payload.avatar_decoration) user.avatarDecoration = iconHashToBigInt(payload.avatar_decoration);
|
|
39
38
|
if (props.accentColor && payload.accent_color) user.accentColor = payload.accent_color;
|
|
39
|
+
if (props.avatarDecorationData && payload.avatar_decoration_data) user.avatarDecorationData = bot.transformers.avatarDecorationData(bot, payload.avatar_decoration_data);
|
|
40
40
|
return bot.transformers.customizers.user(bot, payload, user);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc2NvcmRVc2VyLCBQcmVtaXVtVHlwZXMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGljb25IYXNoVG9CaWdJbnQgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkLCBVc2VyVG9nZ2xlcywgdHlwZSBBdmF0YXJEZWNvcmF0aW9uRGF0YSwgdHlwZSBCb3QgfSBmcm9tICcuLi9pbmRleC5qcydcblxuY29uc3QgYmFzZVVzZXI6IFBhcnRpYWw8VXNlcj4gJiBCYXNlVXNlciA9IHtcbiAgZ2V0IHRhZygpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgcmV0dXJuIGAke3RoaXMudXNlcm5hbWV9IyR7dGhpcy5kaXNjcmltaW5hdG9yfWBcbiAgfSxcbiAgZ2V0IGJvdCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmhhcygnYm90JylcbiAgfSxcbiAgZ2V0IHN5c3RlbSgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lmhhcygnc3lzdGVtJylcbiAgfSxcbiAgZ2V0IG1mYUVuYWJsZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5oYXMoJ21mYUVuYWJsZWQnKVxuICB9LFxuICBnZXQgdmVyaWZpZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5oYXMoJ3ZlcmlmaWVkJylcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVzZXIoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRVc2VyKTogVXNlciB7XG4gIGNvbnN0IHVzZXI6IFVzZXIgPSBPYmplY3QuY3JlYXRlKGJhc2VVc2VyKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMudXNlclxuXG4gIGlmIChwcm9wcy5ib3QgfHwgcHJvcHMuc3lzdGVtIHx8IHByb3BzLm1mYUVuYWJsZWQgfHwgcHJvcHMudmVyaWZpZWQpIHtcbiAgICB1c2VyLnRvZ2dsZXMgPSBuZXcgVXNlclRvZ2dsZXMocGF5bG9hZClcbiAgfVxuICBpZiAocHJvcHMuZmxhZ3MpIHVzZXIuZmxhZ3MgPSBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC5mbGFncylcbiAgaWYgKHByb3BzLnB1YmxpY0ZsYWdzKSB1c2VyLnB1YmxpY0ZsYWdzID0gbmV3IFRvZ2dsZUJpdGZpZWxkKHBheWxvYWQucHVibGljX2ZsYWdzKVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgdXNlci5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy51c2VybmFtZSAmJiBwYXlsb2FkLnVzZXJuYW1lKSB1c2VyLnVzZXJuYW1lID0gcGF5bG9hZC51c2VybmFtZVxuICBpZiAocHJvcHMuZ2xvYmFsTmFtZSAmJiBwYXlsb2FkLmdsb2JhbF9uYW1lKSB1c2VyLmdsb2JhbE5hbWUgPSBwYXlsb2FkLmdsb2JhbF9uYW1lXG4gIGlmIChwcm9wcy5kaXNjcmltaW5hdG9yICYmIHBheWxvYWQuZGlzY3JpbWluYXRvcikgdXNlci5kaXNjcmltaW5hdG9yID0gcGF5bG9hZC5kaXNjcmltaW5hdG9yXG4gIGlmIChwcm9wcy5sb2NhbGUgJiYgcGF5bG9hZC5sb2NhbGUpIHVzZXIubG9jYWxlID0gcGF5bG9hZC5sb2NhbGVcbiAgaWYgKHByb3BzLmVtYWlsICYmIHBheWxvYWQuZW1haWwpIHVzZXIuZW1haWwgPSBwYXlsb2FkLmVtYWlsXG4gIGlmIChwcm9wcy5wcmVtaXVtVHlwZSAmJiBwYXlsb2FkLnByZW1pdW1fdHlwZSkgdXNlci5wcmVtaXVtVHlwZSA9IHBheWxvYWQucHJlbWl1bV90eXBlXG4gIGlmIChwcm9wcy5hdmF0YXIgJiYgcGF5bG9hZC5hdmF0YXIpIHVzZXIuYXZhdGFyID0gaWNvbkhhc2hUb0JpZ0ludChwYXlsb2FkLmF2YXRhcilcbiAgaWYgKHByb3BzLmJhbm5lciAmJiBwYXlsb2FkLmJhbm5lcikgdXNlci5iYW5uZXIgPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuYmFubmVyKVxuICBpZiAocHJvcHMuYWNjZW50Q29sb3IgJiYgcGF5bG9hZC5hY2NlbnRfY29sb3IpIHVzZXIuYWNjZW50Q29sb3IgPSBwYXlsb2FkLmFjY2VudF9jb2xvclxuICBpZiAocHJvcHMuYXZhdGFyRGVjb3JhdGlvbkRhdGEgJiYgcGF5bG9hZC5hdmF0YXJfZGVjb3JhdGlvbl9kYXRhKVxuICAgIHVzZXIuYXZhdGFyRGVjb3JhdGlvbkRhdGEgPSBib3QudHJhbnNmb3JtZXJzLmF2YXRhckRlY29yYXRpb25EYXRhKGJvdCwgcGF5bG9hZC5hdmF0YXJfZGVjb3JhdGlvbl9kYXRhKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLnVzZXIoYm90LCBwYXlsb2FkLCB1c2VyKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VVc2VyIHtcbiAgLyoqIFRoZSB1c2VyIHRhZyBpbiB0aGUgZm9ybSBvZiB1c2VybmFtZSNkaXNjcmltaW5hdG9yICovXG4gIHRhZzogc3RyaW5nXG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGJlbG9uZ3MgdG8gYW4gT0F1dGgyIGFwcGxpY2F0aW9uICovXG4gIGJvdDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbiBPZmZpY2lhbCBEaXNjb3JkIFN5c3RlbSB1c2VyIChwYXJ0IG9mIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0pICovXG4gIHN5c3RlbTogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgdXNlciBoYXMgdHdvIGZhY3RvciBlbmFibGVkIG9uIHRoZWlyIGFjY291bnQgKi9cbiAgbWZhRW5hYmxlZDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgZW1haWwgb24gdGhpcyBhY2NvdW50IGhhcyBiZWVuIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEJhc2VVc2VyIHtcbiAgLyoqIENvbXByZXNzZWQgdmVyc2lvbiBvZiBhbGwgdGhlIGJvb2xlYW5zIG9uIGEgdXNlci4gKi9cbiAgdG9nZ2xlcz86IFVzZXJUb2dnbGVzXG4gIC8qKiBUaGUgdXNlcidzIHVzZXJuYW1lLCBub3QgdW5pcXVlIGFjcm9zcyB0aGUgcGxhdGZvcm0gKi9cbiAgdXNlcm5hbWU6IHN0cmluZ1xuICAvKiogVGhlIHVzZXIncyBkaXNwbGF5IG5hbWUsIGlmIGl0IGlzIHNldC4gRm9yIGJvdHMsIHRoaXMgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUgKi9cbiAgZ2xvYmFsTmFtZT86IHN0cmluZ1xuICAvKiogVGhlIHVzZXIncyBjaG9zZW4gbGFuZ3VhZ2Ugb3B0aW9uICovXG4gIGxvY2FsZT86IHN0cmluZ1xuICAvKiogVGhlIGZsYWdzIG9uIGEgdXNlcidzIGFjY291bnQgKi9cbiAgZmxhZ3M/OiBUb2dnbGVCaXRmaWVsZFxuICAvKiogVGhlIHR5cGUgb2YgTml0cm8gc3Vic2NyaXB0aW9uIG9uIGEgdXNlcidzIGFjY291bnQgKi9cbiAgcHJlbWl1bVR5cGU/OiBQcmVtaXVtVHlwZXNcbiAgLyoqIFRoZSBwdWJsaWMgZmxhZ3Mgb24gYSB1c2VyJ3MgYWNjb3VudCAqL1xuICBwdWJsaWNGbGFncz86IFRvZ2dsZUJpdGZpZWxkXG4gIC8qKiB0aGUgdXNlcidzIGJhbm5lciBjb2xvciBlbmNvZGVkIGFzIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgaGV4YWRlY2ltYWwgY29sb3IgY29kZSAqL1xuICBhY2NlbnRDb2xvcj86IG51bWJlclxuICAvKiogVGhlIHVzZXIncyBpZCAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBUaGUgdXNlcidzIGRpc2NvcmQtdGFnICovXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZ1xuICAvKiogVGhlIHVzZXIncyBhdmF0YXIgaGFzaCAqL1xuICBhdmF0YXI/OiBiaWdpbnRcbiAgLyoqIFRoZSB1c2VyJ3MgZW1haWwgKi9cbiAgZW1haWw/OiBzdHJpbmdcbiAgLyoqIHRoZSB1c2VyJ3MgYmFubmVyLCBvciBudWxsIGlmIHVuc2V0ICovXG4gIGJhbm5lcj86IGJpZ2ludFxuICAvKiogZGF0YSBmb3IgdGhlIHVzZXIncyBhdmF0YXIgZGVjb3JhdGlvbiAqL1xuICBhdmF0YXJEZWNvcmF0aW9uRGF0YT86IEF2YXRhckRlY29yYXRpb25EYXRhXG59XG4iXSwibmFtZXMiOlsiaWNvbkhhc2hUb0JpZ0ludCIsIlRvZ2dsZUJpdGZpZWxkIiwiVXNlclRvZ2dsZXMiLCJiYXNlVXNlciIsInRhZyIsInVzZXJuYW1lIiwiZGlzY3JpbWluYXRvciIsImJvdCIsInRvZ2dsZXMiLCJoYXMiLCJzeXN0ZW0iLCJtZmFFbmFibGVkIiwidmVyaWZpZWQiLCJ0cmFuc2Zvcm1Vc2VyIiwicGF5bG9hZCIsInVzZXIiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiZmxhZ3MiLCJwdWJsaWNGbGFncyIsInB1YmxpY19mbGFncyIsImlkIiwic25vd2ZsYWtlIiwiZ2xvYmFsTmFtZSIsImdsb2JhbF9uYW1lIiwibG9jYWxlIiwiZW1haWwiLCJwcmVtaXVtVHlwZSIsInByZW1pdW1fdHlwZSIsImF2YXRhciIsImJhbm5lciIsImFjY2VudENvbG9yIiwiYWNjZW50X2NvbG9yIiwiYXZhdGFyRGVjb3JhdGlvbkRhdGEiLCJhdmF0YXJfZGVjb3JhdGlvbl9kYXRhIiwiY3VzdG9taXplcnMiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGdCQUFnQixRQUFRLG9CQUFtQjtBQUNwRCxTQUFTQyxjQUFjLEVBQUVDLFdBQVcsUUFBNkMsY0FBYTtBQUU5RixNQUFNQyxXQUFxQztJQUN6QyxJQUFJQyxPQUFNO1FBQ1IsNEVBQTRFO1FBQzVFLE9B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
|