@discordeno/bot 22.0.1-next.f2e8d7e → 22.0.1-next.f334bb8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/transformers/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mDAAmD,EAUxD,KAAK,wBAAwB,EAE9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEjF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,GAAG,mDAAmD,GAAG,SAAS,CAmD9I;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAYzG;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAStG"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/transformers/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAgBL,KAAK,uBAAuB,EAG5B,KAAK,uBAAuB,EAC5B,KAAK,mDAAmD,EAcxD,KAAK,wBAAwB,EAI9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEjF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,GAAG,mDAAmD,GAAG,SAAS,CAoE9I;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAYzG;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAStG"}
@@ -16,11 +16,19 @@ export function transformComponent(bot, payload) {
16
16
  component = transformInputTextComponent(bot, payload);
17
17
  break;
18
18
  case MessageComponentTypes.StringSelect:
19
+ component = transformStringSelectMenuComponent(bot, payload);
20
+ break;
19
21
  case MessageComponentTypes.UserSelect:
22
+ component = transformUserSelectMenuComponent(bot, payload);
23
+ break;
20
24
  case MessageComponentTypes.RoleSelect:
25
+ component = transformRoleSelectMenuComponent(bot, payload);
26
+ break;
21
27
  case MessageComponentTypes.MentionableSelect:
28
+ component = transformMentionableSelectMenuComponent(bot, payload);
29
+ break;
22
30
  case MessageComponentTypes.ChannelSelect:
23
- component = transformSelectMenuComponent(bot, payload);
31
+ component = transformChannelSelectMenuComponent(bot, payload);
24
32
  break;
25
33
  case MessageComponentTypes.Section:
26
34
  component = transformSectionComponent(bot, payload);
@@ -46,6 +54,15 @@ export function transformComponent(bot, payload) {
46
54
  case MessageComponentTypes.FileUpload:
47
55
  component = transformFileUploadComponent(bot, payload);
48
56
  break;
57
+ case MessageComponentTypes.RadioGroup:
58
+ component = transformRadioGroupComponent(bot, payload);
59
+ break;
60
+ case MessageComponentTypes.CheckboxGroup:
61
+ component = transformCheckboxGroupComponent(bot, payload);
62
+ break;
63
+ case MessageComponentTypes.Checkbox:
64
+ component = transformCheckboxComponent(bot, payload);
65
+ break;
49
66
  }
50
67
  return bot.transformers.customizers.component(bot, payload, component);
51
68
  }
@@ -94,6 +111,7 @@ function transformButtonComponent(bot, payload) {
94
111
  if (props.label && payload.label) button.label = payload.label;
95
112
  if (props.customId && payload.custom_id) button.customId = payload.custom_id;
96
113
  if (props.style && payload.style) button.style = payload.style;
114
+ // @ts-expect-error TODO: Deal with partials
97
115
  if (props.emoji && payload.emoji) button.emoji = bot.transformers.emoji(bot, payload.emoji);
98
116
  if (props.url && payload.url) button.url = payload.url;
99
117
  if (props.disabled && payload.disabled) button.disabled = payload.disabled;
@@ -118,7 +136,7 @@ function transformInputTextComponent(bot, payload) {
118
136
  }
119
137
  return input;
120
138
  }
121
- function transformSelectMenuComponent(bot, payload) {
139
+ function transformStringSelectMenuComponent(bot, payload) {
122
140
  const props = bot.transformers.desiredProperties.component;
123
141
  const select = {};
124
142
  if (props.type && payload.type) select.type = payload.type;
@@ -131,11 +149,6 @@ function transformSelectMenuComponent(bot, payload) {
131
149
  if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
132
150
  if (props.minValues && payload.min_values) select.minValues = payload.min_values;
133
151
  if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
134
- if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
135
- id: bot.transformers.snowflake(defaultValue.id),
136
- type: defaultValue.type
137
- }));
138
- if (props.channelTypes && payload.channel_types) select.channelTypes = payload.channel_types;
139
152
  if (props.options && payload.options) select.options = payload.options.map((option)=>({
140
153
  label: option.label,
141
154
  value: option.value,
@@ -151,6 +164,95 @@ function transformSelectMenuComponent(bot, payload) {
151
164
  }
152
165
  return select;
153
166
  }
167
+ function transformUserSelectMenuComponent(bot, payload) {
168
+ const props = bot.transformers.desiredProperties.component;
169
+ const select = {};
170
+ if (props.type && payload.type) select.type = payload.type;
171
+ if (props.id && payload.id) select.id = payload.id;
172
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
173
+ // Check if this is the user select response
174
+ if ('values' in payload) {
175
+ if (props.values && payload.values) select.values = payload.values;
176
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
177
+ } else {
178
+ if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
179
+ if (props.minValues && payload.min_values) select.minValues = payload.min_values;
180
+ if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
181
+ if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
182
+ id: bot.transformers.snowflake(defaultValue.id),
183
+ type: defaultValue.type
184
+ }));
185
+ if (props.disabled && payload.disabled) select.disabled = payload.disabled;
186
+ }
187
+ return select;
188
+ }
189
+ function transformRoleSelectMenuComponent(bot, payload) {
190
+ const props = bot.transformers.desiredProperties.component;
191
+ const select = {};
192
+ if (props.type && payload.type) select.type = payload.type;
193
+ if (props.id && payload.id) select.id = payload.id;
194
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
195
+ // Check if this is the role select response
196
+ if ('values' in payload) {
197
+ if (props.values && payload.values) select.values = payload.values;
198
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
199
+ } else {
200
+ if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
201
+ if (props.minValues && payload.min_values) select.minValues = payload.min_values;
202
+ if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
203
+ if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
204
+ id: bot.transformers.snowflake(defaultValue.id),
205
+ type: defaultValue.type
206
+ }));
207
+ if (props.disabled && payload.disabled) select.disabled = payload.disabled;
208
+ }
209
+ return select;
210
+ }
211
+ function transformMentionableSelectMenuComponent(bot, payload) {
212
+ const props = bot.transformers.desiredProperties.component;
213
+ const select = {};
214
+ if (props.type && payload.type) select.type = payload.type;
215
+ if (props.id && payload.id) select.id = payload.id;
216
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
217
+ // Check if this is the mentionable select response
218
+ if ('values' in payload) {
219
+ if (props.values && payload.values) select.values = payload.values;
220
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
221
+ } else {
222
+ if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
223
+ if (props.minValues && payload.min_values) select.minValues = payload.min_values;
224
+ if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
225
+ if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
226
+ id: bot.transformers.snowflake(defaultValue.id),
227
+ type: defaultValue.type
228
+ }));
229
+ if (props.disabled && payload.disabled) select.disabled = payload.disabled;
230
+ }
231
+ return select;
232
+ }
233
+ function transformChannelSelectMenuComponent(bot, payload) {
234
+ const props = bot.transformers.desiredProperties.component;
235
+ const select = {};
236
+ if (props.type && payload.type) select.type = payload.type;
237
+ if (props.id && payload.id) select.id = payload.id;
238
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
239
+ // Check if this is the channel select response
240
+ if ('values' in payload) {
241
+ if (props.values && payload.values) select.values = payload.values;
242
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
243
+ } else {
244
+ if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
245
+ if (props.minValues && payload.min_values) select.minValues = payload.min_values;
246
+ if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
247
+ if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
248
+ id: bot.transformers.snowflake(defaultValue.id),
249
+ type: defaultValue.type
250
+ }));
251
+ if (props.channelTypes && payload.channel_types) select.channelTypes = payload.channel_types;
252
+ if (props.disabled && payload.disabled) select.disabled = payload.disabled;
253
+ }
254
+ return select;
255
+ }
154
256
  function transformSectionComponent(bot, payload) {
155
257
  const props = bot.transformers.desiredProperties.component;
156
258
  const section = {};
@@ -238,5 +340,47 @@ function transformFileUploadComponent(bot, payload) {
238
340
  }
239
341
  return fileUpload;
240
342
  }
343
+ function transformRadioGroupComponent(bot, payload) {
344
+ const props = bot.transformers.desiredProperties.component;
345
+ const radioGroup = {};
346
+ if (props.type && payload.type) radioGroup.type = payload.type;
347
+ if (props.id && payload.id) radioGroup.id = payload.id;
348
+ if (props.customId && payload.custom_id) radioGroup.customId = payload.custom_id;
349
+ // Check if this is the component (has options) or the interaction response (modal submit, has value)
350
+ if ('options' in payload) {
351
+ if (props.options && payload.options) radioGroup.options = payload.options;
352
+ if (props.required && payload.required !== undefined) radioGroup.required = payload.required;
353
+ } else {
354
+ if (props.value) radioGroup.value = payload.value ?? undefined;
355
+ }
356
+ return radioGroup;
357
+ }
358
+ function transformCheckboxGroupComponent(bot, payload) {
359
+ const props = bot.transformers.desiredProperties.component;
360
+ const checkboxGroup = {};
361
+ if (props.type && payload.type) checkboxGroup.type = payload.type;
362
+ if (props.id && payload.id) checkboxGroup.id = payload.id;
363
+ if (props.customId && payload.custom_id) checkboxGroup.customId = payload.custom_id;
364
+ // Check if this is the component (has options) or the interaction response (modal submit, has values)
365
+ if ('options' in payload) {
366
+ if (props.options && payload.options) checkboxGroup.options = payload.options;
367
+ if (props.minValues && payload.min_values !== undefined) checkboxGroup.minValues = payload.min_values;
368
+ if (props.maxValues && payload.max_values !== undefined) checkboxGroup.maxValues = payload.max_values;
369
+ if (props.required && payload.required !== undefined) checkboxGroup.required = payload.required;
370
+ } else {
371
+ if (props.values && payload.values) checkboxGroup.values = payload.values;
372
+ }
373
+ return checkboxGroup;
374
+ }
375
+ function transformCheckboxComponent(bot, payload) {
376
+ const props = bot.transformers.desiredProperties.component;
377
+ const checkbox = {};
378
+ if (props.type && payload.type) checkbox.type = payload.type;
379
+ if (props.id && payload.id) checkbox.id = payload.id;
380
+ if (props.customId && payload.custom_id) checkbox.customId = payload.custom_id;
381
+ if (props.value && 'value' in payload) checkbox.value = payload.value;
382
+ if (props.default && 'default' in payload) checkbox.default = payload.default;
383
+ return checkbox;
384
+ }
241
385
 
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDb250YWluZXJDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZEZpbGVDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZEZpbGVVcGxvYWRDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZEZpbGVVcGxvYWRJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRMYWJlbENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTGFiZWxJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0sXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VDb21wb25lbnRGcm9tTW9kYWxJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRTZWN0aW9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRTZWxlY3RNZW51Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRTZXBhcmF0b3JDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFN0cmluZ1NlbGVjdEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRUZXh0RGlzcGxheUludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dElucHV0SW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgTWVzc2FnZUNvbXBvbmVudFR5cGVzLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2JvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IsIFNldHVwRGVzaXJlZFByb3BzLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyB9IGZyb20gJy4uL2Rlc2lyZWRQcm9wZXJ0aWVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50LCBNZWRpYUdhbGxlcnlJdGVtLCBVbmZ1cmxlZE1lZGlhSXRlbSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCB8IERpc2NvcmRNZXNzYWdlQ29tcG9uZW50RnJvbU1vZGFsSW50ZXJhY3Rpb25SZXNwb25zZSk6IENvbXBvbmVudCB7XG4gIGxldCBjb21wb25lbnQ6IFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIC8vIFRoaXMgc3dpdGNoIGlzIGV4aGF1c3RpdmUsIHNvIHdlIGRvbnQgbmVlZCB0aGUgZGVmYXVsdCBjYXNlIGFuZCBUUyBkb2VzIG5vdCBlcnJvciBvdXQgZm9yIHRoZSB1bi1pbml0aWFsaXplZCBjb21wb25lbnQgdmFyaWFibGVcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ29udGFpbmVyOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlN0cmluZ1NlbGVjdDpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Vc2VyU2VsZWN0OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlJvbGVTZWxlY3Q6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuTWVudGlvbmFibGVTZWxlY3Q6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hhbm5lbFNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlbGVjdE1lbnVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlY3Rpb246XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UaHVtYm5haWw6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLk1lZGlhR2FsbGVyeTpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybU1lZGlhR2FsbGVyeUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuRmlsZTpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUZpbGVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlcGFyYXRvcjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGV4dERpc3BsYXk6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1UZXh0RGlzcGxheUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuTGFiZWw6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1MYWJlbENvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuRmlsZVVwbG9hZDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUZpbGVVcGxvYWRDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuY29tcG9uZW50KGJvdCwgcGF5bG9hZCwgY29tcG9uZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVW5mdXJsZWRNZWRpYUl0ZW0pOiBVbmZ1cmxlZE1lZGlhSXRlbSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy51bmZ1cmxlZE1lZGlhSXRlbTtcbiAgY29uc3QgbWVkaWFJdGVtID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8VW5mdXJsZWRNZWRpYUl0ZW0sIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBtZWRpYUl0ZW0udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5wcm94eVVybCAmJiBwYXlsb2FkLnByb3h5X3VybCkgbWVkaWFJdGVtLnByb3h5VXJsID0gcGF5bG9hZC5wcm94eV91cmw7XG4gIGlmIChwcm9wcy5oZWlnaHQgJiYgcGF5bG9hZC5oZWlnaHQpIG1lZGlhSXRlbS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDtcbiAgaWYgKHByb3BzLndpZHRoICYmIHBheWxvYWQud2lkdGgpIG1lZGlhSXRlbS53aWR0aCA9IHBheWxvYWQud2lkdGg7XG4gIGlmIChwcm9wcy5jb250ZW50VHlwZSAmJiBwYXlsb2FkLmNvbnRlbnRfdHlwZSkgbWVkaWFJdGVtLmNvbnRlbnRUeXBlID0gcGF5bG9hZC5jb250ZW50X3R5cGU7XG4gIGlmIChwcm9wcy5hdHRhY2htZW50SWQgJiYgcGF5bG9hZC5hdHRhY2htZW50X2lkKSBtZWRpYUl0ZW0uYXR0YWNobWVudElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hdHRhY2htZW50X2lkKTtcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQsIG1lZGlhSXRlbSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbSk6IE1lZGlhR2FsbGVyeUl0ZW0ge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVkaWFHYWxsZXJ5SXRlbTtcbiAgY29uc3QgZ2FsbGVyeUl0ZW0gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxNZWRpYUdhbGxlcnlJdGVtLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIGdhbGxlcnlJdGVtLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgZ2FsbGVyeUl0ZW0uZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGdhbGxlcnlJdGVtLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXI7XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubWVkaWFHYWxsZXJ5SXRlbShib3QsIHBheWxvYWQsIGdhbGxlcnlJdGVtKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQWN0aW9uUm93KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkQWN0aW9uUm93KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGFjdGlvblJvdyA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYWN0aW9uUm93LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBhY3Rpb25Sb3cuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgYWN0aW9uUm93LmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGFjdGlvblJvdztcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkQ29udGFpbmVyQ29tcG9uZW50KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY29udGFpbmVyLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjb250YWluZXIuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuYWNjZW50Q29sb3IgJiYgcGF5bG9hZC5hY2NlbnRfY29sb3IpIGNvbnRhaW5lci5hY2NlbnRDb2xvciA9IHBheWxvYWQuYWNjZW50X2NvbG9yO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGNvbnRhaW5lci5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgY29udGFpbmVyLmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkQnV0dG9uQ29tcG9uZW50KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGJ1dHRvbiA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYnV0dG9uLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBidXR0b24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgYnV0dG9uLmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBidXR0b24uY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcbiAgaWYgKHByb3BzLnN0eWxlICYmIHBheWxvYWQuc3R5bGUpIGJ1dHRvbi5zdHlsZSA9IHBheWxvYWQuc3R5bGU7XG4gIGlmIChwcm9wcy5lbW9qaSAmJiBwYXlsb2FkLmVtb2ppKSBidXR0b24uZW1vamkgPSBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgcGF5bG9hZC5lbW9qaSk7XG4gIGlmIChwcm9wcy51cmwgJiYgcGF5bG9hZC51cmwpIGJ1dHRvbi51cmwgPSBwYXlsb2FkLnVybDtcbiAgaWYgKHByb3BzLmRpc2FibGVkICYmIHBheWxvYWQuZGlzYWJsZWQpIGJ1dHRvbi5kaXNhYmxlZCA9IHBheWxvYWQuZGlzYWJsZWQ7XG4gIGlmIChwcm9wcy5za3VJZCAmJiBwYXlsb2FkLnNrdV9pZCkgYnV0dG9uLnNrdUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5za3VfaWQpO1xuXG4gIHJldHVybiBidXR0b247XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUlucHV0VGV4dENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCB8IERpc2NvcmRUZXh0SW5wdXRJbnRlcmFjdGlvblJlc3BvbnNlKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGlucHV0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBpbnB1dC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgaW5wdXQuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMudmFsdWUgJiYgcGF5bG9hZC52YWx1ZSkgaW5wdXQudmFsdWUgPSBwYXlsb2FkLnZhbHVlO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGlucHV0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gQ2hlY2sgaWYgaXQgaXMgdGhlIGNvbXBvbmVudCBvciB0aGUgcmVzcG9uc2VcbiAgaWYgKCdzdHlsZScgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5zdHlsZSAmJiBwYXlsb2FkLnN0eWxlKSBpbnB1dC5zdHlsZSA9IHBheWxvYWQuc3R5bGU7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIHBheWxvYWQucmVxdWlyZWQpIGlucHV0LnJlcXVpcmVkID0gcGF5bG9hZC5yZXF1aXJlZDtcbiAgICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgaW5wdXQubGFiZWwgPSBwYXlsb2FkLmxhYmVsO1xuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBpbnB1dC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pbkxlbmd0aCAmJiBwYXlsb2FkLm1pbl9sZW5ndGgpIGlucHV0Lm1pbkxlbmd0aCA9IHBheWxvYWQubWluX2xlbmd0aDtcbiAgICBpZiAocHJvcHMubWF4TGVuZ3RoICYmIHBheWxvYWQubWF4X2xlbmd0aCkgaW5wdXQubWF4TGVuZ3RoID0gcGF5bG9hZC5tYXhfbGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkU2VsZWN0TWVudUNvbXBvbmVudCB8IERpc2NvcmRTdHJpbmdTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlbGVjdCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VsZWN0LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWxlY3QuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIHNlbGVjdC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIHN0cmluZyBzZWxlY3QgcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb3BzLnBsYWNlaG9sZGVyICYmIHBheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBwYXlsb2FkLm1pbl92YWx1ZXMpIHNlbGVjdC5taW5WYWx1ZXMgPSBwYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBwYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBwYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZXMgJiYgcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGRlZmF1bHRWYWx1ZS5pZCksXG4gICAgICAgIHR5cGU6IGRlZmF1bHRWYWx1ZS50eXBlLFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5jaGFubmVsVHlwZXMgJiYgcGF5bG9hZC5jaGFubmVsX3R5cGVzKSBzZWxlY3QuY2hhbm5lbFR5cGVzID0gcGF5bG9hZC5jaGFubmVsX3R5cGVzO1xuICAgIGlmIChwcm9wcy5vcHRpb25zICYmIHBheWxvYWQub3B0aW9ucylcbiAgICAgIHNlbGVjdC5vcHRpb25zID0gcGF5bG9hZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLmxhYmVsLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICBlbW9qaTogb3B0aW9uLmVtb2ppXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGlkOiBvcHRpb24uZW1vamkuaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShvcHRpb24uZW1vamkuaWQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24uZW1vamkubmFtZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGFuaW1hdGVkOiBvcHRpb24uZW1vamkuYW5pbWF0ZWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGRlZmF1bHQ6IG9wdGlvbi5kZWZhdWx0LFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VjdGlvbkNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFNlY3Rpb25Db21wb25lbnQpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VjdGlvbiA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VjdGlvbi50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VjdGlvbi5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jb21wb25lbnRzICYmIHBheWxvYWQuY29tcG9uZW50cykgc2VjdGlvbi5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpO1xuICBpZiAocHJvcHMuYWNjZXNzb3J5ICYmIHBheWxvYWQuYWNjZXNzb3J5KSBzZWN0aW9uLmFjY2Vzc29yeSA9IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgcGF5bG9hZC5hY2Nlc3NvcnkpO1xuXG4gIHJldHVybiBzZWN0aW9uO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUaHVtYm5haWxDb21wb25lbnQpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgdGh1bWJuYWlsID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSB0aHVtYm5haWwudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHRodW1ibmFpbC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5tZWRpYSAmJiBwYXlsb2FkLm1lZGlhKSB0aHVtYm5haWwubWVkaWEgPSBib3QudHJhbnNmb3JtZXJzLnVuZnVybGVkTWVkaWFJdGVtKGJvdCwgcGF5bG9hZC5tZWRpYSk7XG4gIGlmIChwcm9wcy5kZXNjcmlwdGlvbiAmJiBwYXlsb2FkLmRlc2NyaXB0aW9uKSB0aHVtYm5haWwuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIHRodW1ibmFpbC5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuXG4gIHJldHVybiB0aHVtYm5haWw7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1lZGlhR2FsbGVyeUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudCkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBtZWRpYUdhbGxlcnkgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIG1lZGlhR2FsbGVyeS50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbWVkaWFHYWxsZXJ5LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLml0ZW1zICYmIHBheWxvYWQuaXRlbXMpIG1lZGlhR2FsbGVyeS5pdGVtcyA9IHBheWxvYWQuaXRlbXMubWFwKChpdGVtKSA9PiBib3QudHJhbnNmb3JtZXJzLm1lZGlhR2FsbGVyeUl0ZW0oYm90LCBpdGVtKSk7XG5cbiAgcmV0dXJuIG1lZGlhR2FsbGVyeTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtRmlsZUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEZpbGVDb21wb25lbnQpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgZmlsZSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgZmlsZS50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgZmlsZS5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5maWxlICYmIHBheWxvYWQuZmlsZSkgZmlsZS5maWxlID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQuZmlsZSk7XG4gIGlmIChwcm9wcy5zcG9pbGVyICYmIHBheWxvYWQuc3BvaWxlcikgZmlsZS5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuICBpZiAocHJvcHMubmFtZSAmJiBwYXlsb2FkLm5hbWUpIGZpbGUubmFtZSA9IHBheWxvYWQubmFtZTtcbiAgaWYgKHByb3BzLnNpemUgJiYgcGF5bG9hZC5zaXplKSBmaWxlLnNpemUgPSBwYXlsb2FkLnNpemU7XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVRleHREaXNwbGF5Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVGV4dERpc3BsYXlDb21wb25lbnQgfCBEaXNjb3JkVGV4dERpc3BsYXlJbnRlcmFjdGlvblJlc3BvbnNlKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHRleHREaXNwbGF5ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSB0ZXh0RGlzcGxheS50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgdGV4dERpc3BsYXkuaWQgPSBwYXlsb2FkLmlkO1xuICAvLyBUaGF0IHRoYXQgdGhpcyBpc24ndCBhIHJlc3BvbnNlXG4gIGlmICgnY29udGVudCcgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5jb250ZW50ICYmIHBheWxvYWQuY29udGVudCkgdGV4dERpc3BsYXkuY29udGVudCA9IHBheWxvYWQuY29udGVudDtcbiAgfVxuXG4gIHJldHVybiB0ZXh0RGlzcGxheTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VwYXJhdG9yQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlcGFyYXRvciA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VwYXJhdG9yLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZXBhcmF0b3IuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuZGl2aWRlciAmJiBwYXlsb2FkLmRpdmlkZXIpIHNlcGFyYXRvci5kaXZpZGVyID0gcGF5bG9hZC5kaXZpZGVyO1xuICBpZiAocHJvcHMuc3BhY2luZyAmJiBwYXlsb2FkLnNwYWNpbmcpIHNlcGFyYXRvci5zcGFjaW5nID0gcGF5bG9hZC5zcGFjaW5nO1xuXG4gIHJldHVybiBzZXBhcmF0b3I7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUxhYmVsQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTGFiZWxDb21wb25lbnQgfCBEaXNjb3JkTGFiZWxJbnRlcmFjdGlvblJlc3BvbnNlKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGxhYmVsID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBsYWJlbC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbGFiZWwuaWQgPSBwYXlsb2FkLmlkO1xuICAvLyBDaGVjayB0aGF0IHRoaXMgaXNuJ3QgYSByZXNwb25zZVxuICBpZiAoJ2xhYmVsJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGxhYmVsLmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgbGFiZWwuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uO1xuICB9XG4gIGlmIChwcm9wcy5jb21wb25lbnQgJiYgcGF5bG9hZC5jb21wb25lbnQpIGxhYmVsLmNvbXBvbmVudCA9IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgcGF5bG9hZC5jb21wb25lbnQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtRmlsZVVwbG9hZENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEZpbGVVcGxvYWRDb21wb25lbnQgfCBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2UpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBmaWxlVXBsb2FkID0ge30gYXMgQ29tcG9uZW50O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgZmlsZVVwbG9hZC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgZmlsZVVwbG9hZC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgZmlsZVVwbG9hZC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIENoZWNrIHRoYXQgdGhpcyBpcyBhIHJlc3BvbnNlXG4gIGlmICgndmFsdWVzJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLnZhbHVlcyAmJiBwYXlsb2FkLnZhbHVlcykgZmlsZVVwbG9hZC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIHBheWxvYWQubWluX3ZhbHVlcykgZmlsZVVwbG9hZC5taW5WYWx1ZXMgPSBwYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBwYXlsb2FkLm1heF92YWx1ZXMpIGZpbGVVcGxvYWQubWF4VmFsdWVzID0gcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkKSBmaWxlVXBsb2FkLnJlcXVpcmVkID0gcGF5bG9hZC5yZXF1aXJlZDtcbiAgfVxuXG4gIHJldHVybiBmaWxlVXBsb2FkO1xufVxuIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb21wb25lbnRUeXBlcyIsInRyYW5zZm9ybUNvbXBvbmVudCIsImJvdCIsInBheWxvYWQiLCJjb21wb25lbnQiLCJ0eXBlIiwiQWN0aW9uUm93IiwidHJhbnNmb3JtQWN0aW9uUm93IiwiQnV0dG9uIiwidHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50IiwiQ29udGFpbmVyIiwidHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50IiwiVGV4dElucHV0IiwidHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50IiwiU3RyaW5nU2VsZWN0IiwiVXNlclNlbGVjdCIsIlJvbGVTZWxlY3QiLCJNZW50aW9uYWJsZVNlbGVjdCIsIkNoYW5uZWxTZWxlY3QiLCJ0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50IiwiU2VjdGlvbiIsInRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQiLCJUaHVtYm5haWwiLCJ0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQiLCJNZWRpYUdhbGxlcnkiLCJ0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQiLCJGaWxlIiwidHJhbnNmb3JtRmlsZUNvbXBvbmVudCIsIlNlcGFyYXRvciIsInRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudCIsIlRleHREaXNwbGF5IiwidHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQiLCJMYWJlbCIsInRyYW5zZm9ybUxhYmVsQ29tcG9uZW50IiwiRmlsZVVwbG9hZCIsInRyYW5zZm9ybUZpbGVVcGxvYWRDb21wb25lbnQiLCJ0cmFuc2Zvcm1lcnMiLCJjdXN0b21pemVycyIsInRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtIiwicHJvcHMiLCJkZXNpcmVkUHJvcGVydGllcyIsInVuZnVybGVkTWVkaWFJdGVtIiwibWVkaWFJdGVtIiwidXJsIiwicHJveHlVcmwiLCJwcm94eV91cmwiLCJoZWlnaHQiLCJ3aWR0aCIsImNvbnRlbnRUeXBlIiwiY29udGVudF90eXBlIiwiYXR0YWNobWVudElkIiwiYXR0YWNobWVudF9pZCIsInNub3dmbGFrZSIsInRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW0iLCJtZWRpYUdhbGxlcnlJdGVtIiwiZ2FsbGVyeUl0ZW0iLCJtZWRpYSIsImRlc2NyaXB0aW9uIiwic3BvaWxlciIsImFjdGlvblJvdyIsImlkIiwiY29tcG9uZW50cyIsIm1hcCIsImNvbnRhaW5lciIsImFjY2VudENvbG9yIiwiYWNjZW50X2NvbG9yIiwiYnV0dG9uIiwibGFiZWwiLCJjdXN0b21JZCIsImN1c3RvbV9pZCIsInN0eWxlIiwiZW1vamkiLCJkaXNhYmxlZCIsInNrdUlkIiwic2t1X2lkIiwiaW5wdXQiLCJ2YWx1ZSIsInJlcXVpcmVkIiwicGxhY2Vob2xkZXIiLCJtaW5MZW5ndGgiLCJtaW5fbGVuZ3RoIiwibWF4TGVuZ3RoIiwibWF4X2xlbmd0aCIsInNlbGVjdCIsInZhbHVlcyIsIm1pblZhbHVlcyIsIm1pbl92YWx1ZXMiLCJtYXhWYWx1ZXMiLCJtYXhfdmFsdWVzIiwiZGVmYXVsdFZhbHVlcyIsImRlZmF1bHRfdmFsdWVzIiwiZGVmYXVsdFZhbHVlIiwiY2hhbm5lbFR5cGVzIiwiY2hhbm5lbF90eXBlcyIsIm9wdGlvbnMiLCJvcHRpb24iLCJ1bmRlZmluZWQiLCJuYW1lIiwiYW5pbWF0ZWQiLCJkZWZhdWx0Iiwic2VjdGlvbiIsImFjY2Vzc29yeSIsInRodW1ibmFpbCIsIm1lZGlhR2FsbGVyeSIsIml0ZW1zIiwiaXRlbSIsImZpbGUiLCJzaXplIiwidGV4dERpc3BsYXkiLCJjb250ZW50Iiwic2VwYXJhdG9yIiwiZGl2aWRlciIsInNwYWNpbmciLCJmaWxlVXBsb2FkIl0sIm1hcHBpbmdzIjoiQUFBQSxTQXVCRUEscUJBQXFCLFFBQ2hCLG9CQUFvQjtBQUszQixPQUFPLFNBQVNDLG1CQUFtQkMsR0FBUSxFQUFFQyxPQUFzRjtJQUNqSSxJQUFJQztJQUVKLGtJQUFrSTtJQUNsSSxPQUFRRCxRQUFRRSxJQUFJO1FBQ2xCLEtBQUtMLHNCQUFzQk0sU0FBUztZQUNsQ0YsWUFBWUcsbUJBQW1CTCxLQUFLQztZQUNwQztRQUNGLEtBQUtILHNCQUFzQlEsTUFBTTtZQUMvQkosWUFBWUsseUJBQXlCUCxLQUFLQztZQUMxQztRQUNGLEtBQUtILHNCQUFzQlUsU0FBUztZQUNsQ04sWUFBWU8sNEJBQTRCVCxLQUFLQztZQUM3QztRQUNGLEtBQUtILHNCQUFzQlksU0FBUztZQUNsQ1IsWUFBWVMsNEJBQTRCWCxLQUFLQztZQUM3QztRQUNGLEtBQUtILHNCQUFzQmMsWUFBWTtRQUN2QyxLQUFLZCxzQkFBc0JlLFVBQVU7UUFDckMsS0FBS2Ysc0JBQXNCZ0IsVUFBVTtRQUNyQyxLQUFLaEIsc0JBQXNCaUIsaUJBQWlCO1FBQzVDLEtBQUtqQixzQkFBc0JrQixhQUFhO1lBQ3RDZCxZQUFZZSw2QkFBNkJqQixLQUFL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
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkQ2hlY2tib3hDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRDaGVja2JveEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZExhYmVsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRMYWJlbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbSxcbiAgdHlwZSBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lbnRpb25hYmxlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkU2VjdGlvbkNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRTdHJpbmdTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFN0cmluZ1NlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIHR5cGUgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRUZXh0RGlzcGxheUludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dElucHV0SW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIE1lc3NhZ2VDb21wb25lbnRUeXBlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuLi9ib3QuanMnO1xuaW1wb3J0IHR5cGUgeyBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLCBTZXR1cERlc2lyZWRQcm9wcywgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMgfSBmcm9tICcuLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCwgTWVkaWFHYWxsZXJ5SXRlbSwgVW5mdXJsZWRNZWRpYUl0ZW0gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lc3NhZ2VDb21wb25lbnQgfCBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2UpOiBDb21wb25lbnQge1xuICBsZXQgY29tcG9uZW50OiBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICAvLyBUaGlzIHN3aXRjaCBpcyBleGhhdXN0aXZlLCBzbyB3ZSBkb250IG5lZWQgdGhlIGRlZmF1bHQgY2FzZSBhbmQgVFMgZG9lcyBub3QgZXJyb3Igb3V0IGZvciB0aGUgdW4taW5pdGlhbGl6ZWQgY29tcG9uZW50IHZhcmlhYmxlXG4gIHN3aXRjaCAocGF5bG9hZC50eXBlKSB7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQWN0aW9uUm93OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQWN0aW9uUm93KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5CdXR0b246XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNvbnRhaW5lcjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNvbnRhaW5lckNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGV4dElucHV0OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TdHJpbmdTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TdHJpbmdTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Vc2VyU2VsZWN0OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVXNlclNlbGVjdE1lbnVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlJvbGVTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1Sb2xlU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuTWVudGlvbmFibGVTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1NZW50aW9uYWJsZVNlbGVjdE1lbnVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoYW5uZWxTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1DaGFubmVsU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VjdGlvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRodW1ibmFpbDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVRodW1ibmFpbENvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuTWVkaWFHYWxsZXJ5OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5GaWxlOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtRmlsZUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VwYXJhdG9yOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtU2VwYXJhdG9yQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0RGlzcGxheTpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVRleHREaXNwbGF5Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5MYWJlbDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUxhYmVsQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5GaWxlVXBsb2FkOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtRmlsZVVwbG9hZENvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuUmFkaW9Hcm91cDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVJhZGlvR3JvdXBDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoZWNrYm94R3JvdXA6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1DaGVja2JveEdyb3VwQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5DaGVja2JveDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoZWNrYm94Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQsIGNvbXBvbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1VbmZ1cmxlZE1lZGlhSXRlbShib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFVuZnVybGVkTWVkaWFJdGVtKTogVW5mdXJsZWRNZWRpYUl0ZW0ge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMudW5mdXJsZWRNZWRpYUl0ZW07XG4gIGNvbnN0IG1lZGlhSXRlbSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPFVuZnVybGVkTWVkaWFJdGVtLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnVybCAmJiBwYXlsb2FkLnVybCkgbWVkaWFJdGVtLnVybCA9IHBheWxvYWQudXJsO1xuICBpZiAocHJvcHMucHJveHlVcmwgJiYgcGF5bG9hZC5wcm94eV91cmwpIG1lZGlhSXRlbS5wcm94eVVybCA9IHBheWxvYWQucHJveHlfdXJsO1xuICBpZiAocHJvcHMuaGVpZ2h0ICYmIHBheWxvYWQuaGVpZ2h0KSBtZWRpYUl0ZW0uaGVpZ2h0ID0gcGF5bG9hZC5oZWlnaHQ7XG4gIGlmIChwcm9wcy53aWR0aCAmJiBwYXlsb2FkLndpZHRoKSBtZWRpYUl0ZW0ud2lkdGggPSBwYXlsb2FkLndpZHRoO1xuICBpZiAocHJvcHMuY29udGVudFR5cGUgJiYgcGF5bG9hZC5jb250ZW50X3R5cGUpIG1lZGlhSXRlbS5jb250ZW50VHlwZSA9IHBheWxvYWQuY29udGVudF90eXBlO1xuICBpZiAocHJvcHMuYXR0YWNobWVudElkICYmIHBheWxvYWQuYXR0YWNobWVudF9pZCkgbWVkaWFJdGVtLmF0dGFjaG1lbnRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXR0YWNobWVudF9pZCk7XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLCBtZWRpYUl0ZW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWVkaWFHYWxsZXJ5SXRlbShib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0pOiBNZWRpYUdhbGxlcnlJdGVtIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLm1lZGlhR2FsbGVyeUl0ZW07XG4gIGNvbnN0IGdhbGxlcnlJdGVtID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8TWVkaWFHYWxsZXJ5SXRlbSwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy5tZWRpYSAmJiBwYXlsb2FkLm1lZGlhKSBnYWxsZXJ5SXRlbS5tZWRpYSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLm1lZGlhKTtcbiAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIGdhbGxlcnlJdGVtLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSBnYWxsZXJ5SXRlbS5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLm1lZGlhR2FsbGVyeUl0ZW0oYm90LCBwYXlsb2FkLCBnYWxsZXJ5SXRlbSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUFjdGlvblJvdyhib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEFjdGlvblJvdykge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBhY3Rpb25Sb3cgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGFjdGlvblJvdy50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgYWN0aW9uUm93LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmNvbXBvbmVudHMgJiYgcGF5bG9hZC5jb21wb25lbnRzKVxuICAgIGFjdGlvblJvdy5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpO1xuXG4gIHJldHVybiBhY3Rpb25Sb3c7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNvbnRhaW5lckNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBjb250YWluZXIgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNvbnRhaW5lci50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY29udGFpbmVyLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmFjY2VudENvbG9yICYmIHBheWxvYWQuYWNjZW50X2NvbG9yKSBjb250YWluZXIuYWNjZW50Q29sb3IgPSBwYXlsb2FkLmFjY2VudF9jb2xvcjtcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSBjb250YWluZXIuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcbiAgaWYgKHByb3BzLmNvbXBvbmVudHMgJiYgcGF5bG9hZC5jb21wb25lbnRzKVxuICAgIGNvbnRhaW5lci5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpO1xuXG4gIHJldHVybiBjb250YWluZXI7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEJ1dHRvbkNvbXBvbmVudCkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBidXR0b24gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGJ1dHRvbi50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgYnV0dG9uLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGJ1dHRvbi5sYWJlbCA9IHBheWxvYWQubGFiZWw7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgYnV0dG9uLmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG4gIGlmIChwcm9wcy5zdHlsZSAmJiBwYXlsb2FkLnN0eWxlKSBidXR0b24uc3R5bGUgPSBwYXlsb2FkLnN0eWxlO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IERlYWwgd2l0aCBwYXJ0aWFsc1xuICBpZiAocHJvcHMuZW1vamkgJiYgcGF5bG9hZC5lbW9qaSkgYnV0dG9uLmVtb2ppID0gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHBheWxvYWQuZW1vamkpO1xuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBidXR0b24udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBidXR0b24uZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkO1xuICBpZiAocHJvcHMuc2t1SWQgJiYgcGF5bG9hZC5za3VfaWQpIGJ1dHRvbi5za3VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuc2t1X2lkKTtcblxuICByZXR1cm4gYnV0dG9uO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUZXh0SW5wdXRDb21wb25lbnQgfCBEaXNjb3JkVGV4dElucHV0SW50ZXJhY3Rpb25SZXNwb25zZSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBpbnB1dCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW5wdXQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGlucHV0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLnZhbHVlICYmIHBheWxvYWQudmFsdWUpIGlucHV0LnZhbHVlID0gcGF5bG9hZC52YWx1ZTtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBpbnB1dC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIENoZWNrIGlmIGl0IGlzIHRoZSBjb21wb25lbnQgb3IgdGhlIHJlc3BvbnNlXG4gIGlmICgnc3R5bGUnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuc3R5bGUgJiYgcGF5bG9hZC5zdHlsZSkgaW5wdXQuc3R5bGUgPSBwYXlsb2FkLnN0eWxlO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkKSBpbnB1dC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gICAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGlucHV0LmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgaW5wdXQucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5MZW5ndGggJiYgcGF5bG9hZC5taW5fbGVuZ3RoKSBpbnB1dC5taW5MZW5ndGggPSBwYXlsb2FkLm1pbl9sZW5ndGg7XG4gICAgaWYgKHByb3BzLm1heExlbmd0aCAmJiBwYXlsb2FkLm1heF9sZW5ndGgpIGlucHV0Lm1heExlbmd0aCA9IHBheWxvYWQubWF4X2xlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3RyaW5nU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFN0cmluZ1NlbGVjdENvbXBvbmVudCB8IERpc2NvcmRTdHJpbmdTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlbGVjdCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VsZWN0LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWxlY3QuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIHNlbGVjdC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIHN0cmluZyBzZWxlY3QgcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb3BzLnBsYWNlaG9sZGVyICYmIHBheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBwYXlsb2FkLm1pbl92YWx1ZXMpIHNlbGVjdC5taW5WYWx1ZXMgPSBwYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBwYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBwYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgJiYgcGF5bG9hZC5vcHRpb25zKVxuICAgICAgc2VsZWN0Lm9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24ubGFiZWwsXG4gICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgIGVtb2ppOiBvcHRpb24uZW1vamlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbi5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5lbW9qaS5uYW1lID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgYW5pbWF0ZWQ6IG9wdGlvbi5lbW9qaS5hbmltYXRlZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVmYXVsdDogb3B0aW9uLmRlZmF1bHQsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIHBheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IHBheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Vc2VyU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFVzZXJTZWxlY3RDb21wb25lbnQgfCBEaXNjb3JkVXNlclNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgdXNlciBzZWxlY3QgcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gcGF5bG9hZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIHBheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IHBheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIHBheWxvYWQubWF4X3ZhbHVlcykgc2VsZWN0Lm1heFZhbHVlcyA9IHBheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBwYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgICAgc2VsZWN0LmRlZmF1bHRWYWx1ZXMgPSBwYXlsb2FkLmRlZmF1bHRfdmFsdWVzLm1hcCgoZGVmYXVsdFZhbHVlKSA9PiAoe1xuICAgICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoZGVmYXVsdFZhbHVlLmlkKSxcbiAgICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIHBheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IHBheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Sb2xlU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFJvbGVTZWxlY3RDb21wb25lbnQgfCBEaXNjb3JkUm9sZVNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgcm9sZSBzZWxlY3QgcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gcGF5bG9hZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIHBheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IHBheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIHBheWxvYWQubWF4X3ZhbHVlcykgc2VsZWN0Lm1heFZhbHVlcyA9IHBheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBwYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgICAgc2VsZWN0LmRlZmF1bHRWYWx1ZXMgPSBwYXlsb2FkLmRlZmF1bHRfdmFsdWVzLm1hcCgoZGVmYXVsdFZhbHVlKSA9PiAoe1xuICAgICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoZGVmYXVsdFZhbHVlLmlkKSxcbiAgICAgICAgdHlwZTogZGVmYXVsdFZhbHVlLnR5cGUsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIHBheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IHBheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZW50aW9uYWJsZVNlbGVjdE1lbnVDb21wb25lbnQoXG4gIGJvdDogQm90LFxuICBwYXlsb2FkOiBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQgfCBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsLFxuKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlbGVjdCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VsZWN0LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWxlY3QuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIHNlbGVjdC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIG1lbnRpb25hYmxlIHNlbGVjdCByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBzZWxlY3QucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gcGF5bG9hZC5taW5fdmFsdWVzO1xuICAgIGlmIChwcm9wcy5tYXhWYWx1ZXMgJiYgcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzICYmIHBheWxvYWQuZGVmYXVsdF92YWx1ZXMpXG4gICAgICBzZWxlY3QuZGVmYXVsdFZhbHVlcyA9IHBheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgcGF5bG9hZC5kaXNhYmxlZCkgc2VsZWN0LmRpc2FibGVkID0gcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNoYW5uZWxTZWxlY3RNZW51Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkQ2hhbm5lbFNlbGVjdENvbXBvbmVudCB8IERpc2NvcmRDaGFubmVsU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSBjaGFubmVsIHNlbGVjdCByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBzZWxlY3QucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gcGF5bG9hZC5taW5fdmFsdWVzO1xuICAgIGlmIChwcm9wcy5tYXhWYWx1ZXMgJiYgcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzICYmIHBheWxvYWQuZGVmYXVsdF92YWx1ZXMpXG4gICAgICBzZWxlY3QuZGVmYXVsdFZhbHVlcyA9IHBheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuY2hhbm5lbFR5cGVzICYmIHBheWxvYWQuY2hhbm5lbF90eXBlcykgc2VsZWN0LmNoYW5uZWxUeXBlcyA9IHBheWxvYWQuY2hhbm5lbF90eXBlcztcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgcGF5bG9hZC5kaXNhYmxlZCkgc2VsZWN0LmRpc2FibGVkID0gcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRTZWN0aW9uQ29tcG9uZW50KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlY3Rpb24gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlY3Rpb24udHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlY3Rpb24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpIHNlY3Rpb24uY29tcG9uZW50cyA9IHBheWxvYWQuY29tcG9uZW50cy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKTtcbiAgaWYgKHByb3BzLmFjY2Vzc29yeSAmJiBwYXlsb2FkLmFjY2Vzc29yeSkgc2VjdGlvbi5hY2Nlc3NvcnkgPSBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQuYWNjZXNzb3J5KTtcblxuICByZXR1cm4gc2VjdGlvbjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHRodW1ibmFpbCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGh1bWJuYWlsLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSB0aHVtYm5haWwuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubWVkaWEgJiYgcGF5bG9hZC5tZWRpYSkgdGh1bWJuYWlsLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgdGh1bWJuYWlsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSB0aHVtYm5haWwuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcblxuICByZXR1cm4gdGh1bWJuYWlsO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgbWVkaWFHYWxsZXJ5ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBtZWRpYUdhbGxlcnkudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIG1lZGlhR2FsbGVyeS5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5pdGVtcyAmJiBwYXlsb2FkLml0ZW1zKSBtZWRpYUdhbGxlcnkuaXRlbXMgPSBwYXlsb2FkLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZWRpYUdhbGxlcnlJdGVtKGJvdCwgaXRlbSkpO1xuXG4gIHJldHVybiBtZWRpYUdhbGxlcnk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRGaWxlQ29tcG9uZW50KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGZpbGUgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGZpbGUudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGUuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuZmlsZSAmJiBwYXlsb2FkLmZpbGUpIGZpbGUuZmlsZSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLmZpbGUpO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGZpbGUuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5uYW1lKSBmaWxlLm5hbWUgPSBwYXlsb2FkLm5hbWU7XG4gIGlmIChwcm9wcy5zaXplICYmIHBheWxvYWQuc2l6ZSkgZmlsZS5zaXplID0gcGF5bG9hZC5zaXplO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UZXh0RGlzcGxheUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50IHwgRGlzY29yZFRleHREaXNwbGF5SW50ZXJhY3Rpb25SZXNwb25zZSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCB0ZXh0RGlzcGxheSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGV4dERpc3BsYXkudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHRleHREaXNwbGF5LmlkID0gcGF5bG9hZC5pZDtcbiAgLy8gVGhhdCB0aGF0IHRoaXMgaXNuJ3QgYSByZXNwb25zZVxuICBpZiAoJ2NvbnRlbnQnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuY29udGVudCAmJiBwYXlsb2FkLmNvbnRlbnQpIHRleHREaXNwbGF5LmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gdGV4dERpc3BsYXk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFNlcGFyYXRvckNvbXBvbmVudCkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZXBhcmF0b3IgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlcGFyYXRvci50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VwYXJhdG9yLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmRpdmlkZXIgJiYgcGF5bG9hZC5kaXZpZGVyKSBzZXBhcmF0b3IuZGl2aWRlciA9IHBheWxvYWQuZGl2aWRlcjtcbiAgaWYgKHByb3BzLnNwYWNpbmcgJiYgcGF5bG9hZC5zcGFjaW5nKSBzZXBhcmF0b3Iuc3BhY2luZyA9IHBheWxvYWQuc3BhY2luZztcblxuICByZXR1cm4gc2VwYXJhdG9yO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1MYWJlbENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZExhYmVsQ29tcG9uZW50IHwgRGlzY29yZExhYmVsSW50ZXJhY3Rpb25SZXNwb25zZSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBsYWJlbCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgbGFiZWwudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGxhYmVsLmlkID0gcGF5bG9hZC5pZDtcbiAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzbid0IGEgcmVzcG9uc2VcbiAgaWYgKCdsYWJlbCcgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5sYWJlbCAmJiBwYXlsb2FkLmxhYmVsKSBsYWJlbC5sYWJlbCA9IHBheWxvYWQubGFiZWw7XG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIGxhYmVsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgfVxuICBpZiAocHJvcHMuY29tcG9uZW50ICYmIHBheWxvYWQuY29tcG9uZW50KSBsYWJlbC5jb21wb25lbnQgPSBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQuY29tcG9uZW50KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVVcGxvYWRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRGaWxlVXBsb2FkQ29tcG9uZW50IHwgRGlzY29yZEZpbGVVcGxvYWRJbnRlcmFjdGlvblJlc3BvbnNlKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGZpbGVVcGxvYWQgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGZpbGVVcGxvYWQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGVVcGxvYWQuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGZpbGVVcGxvYWQuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBDaGVjayB0aGF0IHRoaXMgaXMgYSByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIGZpbGVVcGxvYWQudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBwYXlsb2FkLm1pbl92YWx1ZXMpIGZpbGVVcGxvYWQubWluVmFsdWVzID0gcGF5bG9hZC5taW5fdmFsdWVzO1xuICAgIGlmIChwcm9wcy5tYXhWYWx1ZXMgJiYgcGF5bG9hZC5tYXhfdmFsdWVzKSBmaWxlVXBsb2FkLm1heFZhbHVlcyA9IHBheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMucmVxdWlyZWQgJiYgcGF5bG9hZC5yZXF1aXJlZCkgZmlsZVVwbG9hZC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gIH1cblxuICByZXR1cm4gZmlsZVVwbG9hZDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFJhZGlvR3JvdXBDb21wb25lbnQgfCBEaXNjb3JkUmFkaW9Hcm91cEludGVyYWN0aW9uUmVzcG9uc2UpIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgcmFkaW9Hcm91cCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgcmFkaW9Hcm91cC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgcmFkaW9Hcm91cC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgcmFkaW9Hcm91cC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIENoZWNrIGlmIHRoaXMgaXMgdGhlIGNvbXBvbmVudCAoaGFzIG9wdGlvbnMpIG9yIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZSAobW9kYWwgc3VibWl0LCBoYXMgdmFsdWUpXG4gIGlmICgnb3B0aW9ucycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5vcHRpb25zICYmIHBheWxvYWQub3B0aW9ucykgcmFkaW9Hcm91cC5vcHRpb25zID0gcGF5bG9hZC5vcHRpb25zO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHJhZGlvR3JvdXAucmVxdWlyZWQgPSBwYXlsb2FkLnJlcXVpcmVkO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9wcy52YWx1ZSkgcmFkaW9Hcm91cC52YWx1ZSA9IHBheWxvYWQudmFsdWUgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHJhZGlvR3JvdXA7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNoZWNrYm94R3JvdXBDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRDaGVja2JveEdyb3VwQ29tcG9uZW50IHwgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlKSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNoZWNrYm94R3JvdXAgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNoZWNrYm94R3JvdXAudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNoZWNrYm94R3JvdXAuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGNoZWNrYm94R3JvdXAuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSBjb21wb25lbnQgKGhhcyBvcHRpb25zKSBvciB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2UgKG1vZGFsIHN1Ym1pdCwgaGFzIHZhbHVlcylcbiAgaWYgKCdvcHRpb25zJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgJiYgcGF5bG9hZC5vcHRpb25zKSBjaGVja2JveEdyb3VwLm9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnM7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBwYXlsb2FkLm1pbl92YWx1ZXMgIT09IHVuZGVmaW5lZCkgY2hlY2tib3hHcm91cC5taW5WYWx1ZXMgPSBwYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBwYXlsb2FkLm1heF92YWx1ZXMgIT09IHVuZGVmaW5lZCkgY2hlY2tib3hHcm91cC5tYXhWYWx1ZXMgPSBwYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIHBheWxvYWQucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkgY2hlY2tib3hHcm91cC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb3BzLnZhbHVlcyAmJiBwYXlsb2FkLnZhbHVlcykgY2hlY2tib3hHcm91cC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgfVxuXG4gIHJldHVybiBjaGVja2JveEdyb3VwO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1DaGVja2JveENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZENoZWNrYm94Q29tcG9uZW50IHwgRGlzY29yZENoZWNrYm94SW50ZXJhY3Rpb25SZXNwb25zZSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBjaGVja2JveCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY2hlY2tib3gudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGNoZWNrYm94LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBjaGVja2JveC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIGlmIChwcm9wcy52YWx1ZSAmJiAndmFsdWUnIGluIHBheWxvYWQpIGNoZWNrYm94LnZhbHVlID0gcGF5bG9hZC52YWx1ZTtcbiAgaWYgKHByb3BzLmRlZmF1bHQgJiYgJ2RlZmF1bHQnIGluIHBheWxvYWQpIGNoZWNrYm94LmRlZmF1bHQgPSBwYXlsb2FkLmRlZmF1bHQ7XG5cbiAgcmV0dXJuIGNoZWNrYm94O1xufVxuIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb21wb25lbnRUeXBlcyIsInRyYW5zZm9ybUNvbXBvbmVudCIsImJvdCIsInBheWxvYWQiLCJjb21wb25lbnQiLCJ0eXBlIiwiQWN0aW9uUm93IiwidHJhbnNmb3JtQWN0aW9uUm93IiwiQnV0dG9uIiwidHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50IiwiQ29udGFpbmVyIiwidHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50IiwiVGV4dElucHV0IiwidHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50IiwiU3RyaW5nU2VsZWN0IiwidHJhbnNmb3JtU3RyaW5nU2VsZWN0TWVudUNvbXBvbmVudCIsIlVzZXJTZWxlY3QiLCJ0cmFuc2Zvcm1Vc2VyU2VsZWN0TWVudUNvbXBvbmVudCIsIlJvbGVTZWxlY3QiLCJ0cmFuc2Zvcm1Sb2xlU2VsZWN0TWVudUNvbXBvbmVudCIsIk1lbnRpb25hYmxlU2VsZWN0IiwidHJhbnNmb3JtTWVudGlvbmFibGVTZWxlY3RNZW51Q29tcG9uZW50IiwiQ2hhbm5lbFNlbGVjdCIsInRyYW5zZm9ybUNoYW5uZWxTZWxlY3RNZW51Q29tcG9uZW50IiwiU2VjdGlvbiIsInRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQiLCJUaHVtYm5haWwiLCJ0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQiLCJNZWRpYUdhbGxlcnkiLCJ0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQiLCJGaWxlIiwidHJhbnNmb3JtRmlsZUNvbXBvbmVudCIsIlNlcGFyYXRvciIsInRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudCIsIlRleHREaXNwbGF5IiwidHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQiLCJMYWJlbCIsInRyYW5zZm9ybUxhYmVsQ29tcG9uZW50IiwiRmlsZVVwbG9hZCIsInRyYW5zZm9ybUZpbGVVcGxvYWRDb21wb25lbnQiLCJSYWRpb0dyb3VwIiwidHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudCIsIkNoZWNrYm94R3JvdXAiLCJ0cmFuc2Zvcm1DaGVja2JveEdyb3VwQ29tcG9uZW50IiwiQ2hlY2tib3giLCJ0cmFuc2Zvcm1DaGVja2JveENvbXBvbmVudCIsInRyYW5zZm9ybWVycyIsImN1c3RvbWl6ZXJzIiwidHJhbnNmb3JtVW5mdXJsZWRNZWRpYUl0ZW0iLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwidW5mdXJsZWRNZWRpYUl0ZW0iLCJtZWRpYUl0ZW0iLCJ1cmwiLCJwcm94eVVybCIsInByb3h5X3VybCIsImhlaWdodCIsIndpZHRoIiwiY29udGVudFR5cGUiLCJjb250ZW50X3R5cGUiLCJhdHRhY2htZW50SWQiLCJhdHRhY2htZW50X2lkIiwic25vd2ZsYWtlIiwidHJhbnNmb3JtTWVkaWFHYWxsZXJ5SXRlbSIsIm1lZGlhR2FsbGVyeUl0ZW0iLCJnYWxsZXJ5SXRlbSIsIm1lZGlhIiwiZGVzY3JpcHRpb24iLCJzcG9pbGVyIiwiYWN0aW9uUm93IiwiaWQiLCJjb21wb25lbnRzIiwibWFwIiwiY29udGFpbmVyIiwiYWNjZW50Q29sb3IiLCJhY2NlbnRfY29sb3IiLCJidXR0b24iLCJsYWJlbCIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwic3R5bGUiLCJlbW9qaSIsImRpc2FibGVkIiwic2t1SWQiLCJza3VfaWQiLCJpbnB1dCIsInZhbHVlIiwicmVxdWlyZWQiLCJwbGFjZWhvbGRlciIsIm1pbkxlbmd0aCIsIm1pbl9sZW5ndGgiLCJtYXhMZW5ndGgiLCJtYXhfbGVuZ3RoIiwic2VsZWN0IiwidmFsdWVzIiwibWluVmFsdWVzIiwibWluX3ZhbHVlcyIsIm1heFZhbHVlcyIsIm1heF92YWx1ZXMiLCJvcHRpb25zIiwib3B0aW9uIiwidW5kZWZpbmVkIiwibmFtZSIsImFuaW1hdGVkIiwiZGVmYXVsdCIsInJlc29sdmVkIiwiaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJkZWZhdWx0VmFsdWVzIiwiZGVmYXVsdF92YWx1ZXMiLCJkZWZhdWx0VmFsdWUiLCJjaGFubmVsVHlwZXMiLCJjaGFubmVsX3R5cGVzIiwic2VjdGlvbiIsImFjY2Vzc29yeSIsInRodW1ibmFpbCIsIm1lZGlhR2FsbGVyeSIsIml0ZW1zIiwiaXRlbSIsImZpbGUiLCJzaXplIiwidGV4dERpc3BsYXkiLCJjb250ZW50Iiwic2VwYXJhdG9yIiwiZGl2aWRlciIsInNwYWNpbmciLCJmaWxlVXBsb2FkIiwicmFkaW9Hcm91cCIsImNoZWNrYm94R3JvdXAiLCJjaGVja2JveCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FxQ0VBLHFCQUFxQixRQUNoQixvQkFBb0I7QUFLM0IsT0FBTyxTQUFTQyxtQkFBbUJDLEdBQVEsRUFBRUMsT0FBc0Y7SUFDakksSUFBSUM7SUFFSixrSUFBa0k7SUFDbEksT0FBUUQsUUFBUUUsSUFBSTtRQUNsQixLQUFLTCxzQkFBc0JNLFNBQVM7WUFDbENGLFlBQVlHLG1CQUFtQkwsS0FBS0M7WUFDcEM7UUFDRixLQUFLSCxzQkFBc0JR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
@@ -1 +1 @@
1
- {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/transformers/invite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqCpI"}
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/transformers/invite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAsCpI"}
@@ -27,6 +27,7 @@ export function transformInvite(bot, payload, extra) {
27
27
  invite.expiresAt = Date.parse(payload.expires_at);
28
28
  }
29
29
  if (props.flags && payload.flags) invite.flags = new ToggleBitfield(payload.flags);
30
+ // @ts-expect-error TODO: Partials
30
31
  if (props.roles && payload.roles) invite.roles = payload.roles.map((role)=>bot.transformers.role(bot, role));
31
32
  } else {
32
33
  if (props.channelId && payload.channel_id) invite.channelId = bot.transformers.snowflake(payload.channel_id);
@@ -35,4 +36,4 @@ export function transformInvite(bot, payload, extra) {
35
36
  return bot.transformers.customizers.invite(bot, payload, invite, extra);
36
37
  }
37
38
 
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW52aXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEludml0ZUNyZWF0ZSwgRGlzY29yZEludml0ZU1ldGFkYXRhIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgaXNJbnZpdGVXaXRoTWV0YWRhdGEgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2JvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IsIFNldHVwRGVzaXJlZFByb3BzLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyB9IGZyb20gJy4uL2Rlc2lyZWRQcm9wZXJ0aWVzLmpzJztcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi90b2dnbGVzL1RvZ2dsZUJpdGZpZWxkLmpzJztcbmltcG9ydCB0eXBlIHsgSW52aXRlIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnZpdGUoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRJbnZpdGVDcmVhdGUgfCBEaXNjb3JkSW52aXRlTWV0YWRhdGEsIGV4dHJhPzogeyBzaGFyZElkPzogbnVtYmVyIH0pOiBJbnZpdGUge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW52aXRlO1xuICBjb25zdCBpbnZpdGUgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxJbnZpdGUsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiAndHlwZScgaW4gcGF5bG9hZCkgaW52aXRlLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5jb2RlICYmIHBheWxvYWQuY29kZSkgaW52aXRlLmNvZGUgPSBwYXlsb2FkLmNvZGU7XG4gIGlmIChwcm9wcy5jcmVhdGVkQXQgJiYgcGF5bG9hZC5jcmVhdGVkX2F0KSBpbnZpdGUuY3JlYXRlZEF0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmNyZWF0ZWRfYXQpO1xuICBpZiAocHJvcHMuaW52aXRlciAmJiBwYXlsb2FkLmludml0ZXIpIGludml0ZS5pbnZpdGVyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC5pbnZpdGVyKTtcbiAgaWYgKHByb3BzLm1heEFnZSkgaW52aXRlLm1heEFnZSA9IHBheWxvYWQubWF4X2FnZTtcbiAgaWYgKHByb3BzLm1heFVzZXMpIGludml0ZS5tYXhVc2VzID0gcGF5bG9hZC5tYXhfdXNlcztcbiAgaWYgKHByb3BzLnRhcmdldFR5cGUgJiYgcGF5bG9hZC50YXJnZXRfdHlwZSkgaW52aXRlLnRhcmdldFR5cGUgPSBwYXlsb2FkLnRhcmdldF90eXBlO1xuICBpZiAocHJvcHMudGFyZ2V0VXNlciAmJiBwYXlsb2FkLnRhcmdldF91c2VyKSBpbnZpdGUudGFyZ2V0VXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQudGFyZ2V0X3VzZXIpO1xuICBpZiAocHJvcHMudGFyZ2V0QXBwbGljYXRpb24gJiYgcGF5bG9hZC50YXJnZXRfYXBwbGljYXRpb24pXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBQYXJ0aWFsc1xuICAgIGludml0ZS50YXJnZXRBcHBsaWNhdGlvbiA9IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb24oYm90LCBwYXlsb2FkLnRhcmdldF9hcHBsaWNhdGlvbiwgeyBzaGFyZElkOiBleHRyYT8uc2hhcmRJZCB9KTtcbiAgaWYgKHByb3BzLnRlbXBvcmFyeSAmJiBwYXlsb2FkLnRlbXBvcmFyeSkgaW52aXRlLnRlbXBvcmFyeSA9IHBheWxvYWQudGVtcG9yYXJ5O1xuICBpZiAocHJvcHMudXNlcyAmJiBwYXlsb2FkLnVzZXMpIGludml0ZS51c2VzID0gcGF5bG9hZC51c2VzO1xuXG4gIGlmIChpc0ludml0ZVdpdGhNZXRhZGF0YShwYXlsb2FkKSkge1xuICAgIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5jaGFubmVsPy5pZCkgaW52aXRlLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbC5pZCk7XG4gICAgaWYgKHByb3BzLmd1aWxkSWQgJiYgcGF5bG9hZC5ndWlsZD8uaWQpIGludml0ZS5ndWlsZElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5pZCk7XG4gICAgaWYgKHByb3BzLmFwcHJveGltYXRlTWVtYmVyQ291bnQgJiYgcGF5bG9hZC5hcHByb3hpbWF0ZV9tZW1iZXJfY291bnQpIGludml0ZS5hcHByb3hpbWF0ZU1lbWJlckNvdW50ID0gcGF5bG9hZC5hcHByb3hpbWF0ZV9tZW1iZXJfY291bnQ7XG4gICAgaWYgKHByb3BzLmFwcHJveGltYXRlUHJlc2VuY2VDb3VudCAmJiBwYXlsb2FkLmFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50ICE9PSB1bmRlZmluZWQpXG4gICAgICBpbnZpdGUuYXBwcm94aW1hdGVQcmVzZW5jZUNvdW50ID0gcGF5bG9hZC5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudDtcbiAgICBpZiAocHJvcHMuZ3VpbGRTY2hlZHVsZWRFdmVudCAmJiBwYXlsb2FkLmd1aWxkX3NjaGVkdWxlZF9ldmVudClcbiAgICAgIGludml0ZS5ndWlsZFNjaGVkdWxlZEV2ZW50ID0gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHBheWxvYWQuZ3VpbGRfc2NoZWR1bGVkX2V2ZW50KTtcbiAgICBpZiAocHJvcHMuZXhwaXJlc0F0ICYmIHBheWxvYWQuZXhwaXJlc19hdCkge1xuICAgICAgaW52aXRlLmV4cGlyZXNBdCA9IERhdGUucGFyc2UocGF5bG9hZC5leHBpcmVzX2F0KTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmZsYWdzICYmIHBheWxvYWQuZmxhZ3MpIGludml0ZS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKTtcbiAgICBpZiAocHJvcHMucm9sZXMgJiYgcGF5bG9hZC5yb2xlcykgaW52aXRlLnJvbGVzID0gcGF5bG9hZC5yb2xlcy5tYXAoKHJvbGUpID0+IGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHJvbGUpKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvcHMuY2hhbm5lbElkICYmIHBheWxvYWQuY2hhbm5lbF9pZCkgaW52aXRlLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbF9pZCk7XG4gICAgaWYgKHByb3BzLmd1aWxkSWQgJiYgcGF5bG9hZC5ndWlsZF9pZCkgaW52aXRlLmd1aWxkSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkX2lkKTtcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmludml0ZShib3QsIHBheWxvYWQsIGludml0ZSwgZXh0cmEpO1xufVxuIl0sIm5hbWVzIjpbImlzSW52aXRlV2l0aE1ldGFkYXRhIiwiVG9nZ2xlQml0ZmllbGQiLCJ0cmFuc2Zvcm1JbnZpdGUiLCJib3QiLCJwYXlsb2FkIiwiZXh0cmEiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiaW52aXRlIiwidHlwZSIsImNvZGUiLCJjcmVhdGVkQXQiLCJjcmVhdGVkX2F0IiwiRGF0ZSIsInBhcnNlIiwiaW52aXRlciIsInVzZXIiLCJtYXhBZ2UiLCJtYXhfYWdlIiwibWF4VXNlcyIsIm1heF91c2VzIiwidGFyZ2V0VHlwZSIsInRhcmdldF90eXBlIiwidGFyZ2V0VXNlciIsInRhcmdldF91c2VyIiwidGFyZ2V0QXBwbGljYXRpb24iLCJ0YXJnZXRfYXBwbGljYXRpb24iLCJhcHBsaWNhdGlvbiIsInNoYXJkSWQiLCJ0ZW1wb3JhcnkiLCJ1c2VzIiwiY2hhbm5lbElkIiwiY2hhbm5lbCIsImlkIiwic25vd2ZsYWtlIiwiZ3VpbGRJZCIsImd1aWxkIiwiYXBwcm94aW1hdGVNZW1iZXJDb3VudCIsImFwcHJveGltYXRlX21lbWJlcl9jb3VudCIsImFwcHJveGltYXRlUHJlc2VuY2VDb3VudCIsImFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50IiwidW5kZWZpbmVkIiwiZ3VpbGRTY2hlZHVsZWRFdmVudCIsImd1aWxkX3NjaGVkdWxlZF9ldmVudCIsInNjaGVkdWxlZEV2ZW50IiwiZXhwaXJlc0F0IiwiZXhwaXJlc19hdCIsImZsYWdzIiwicm9sZXMiLCJtYXAiLCJyb2xlIiwiY2hhbm5lbF9pZCIsImd1aWxkX2lkIiwiY3VzdG9taXplcnMiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLG9CQUFvQixRQUFRLG9CQUFvQjtBQUd6RCxTQUFTQyxjQUFjLFFBQVEsOEJBQThCO0FBRzdELE9BQU8sU0FBU0MsZ0JBQWdCQyxHQUFRLEVBQUVDLE9BQW9ELEVBQUVDLEtBQTRCO0lBQzFILE1BQU1DLFFBQVFILElBQUlJLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNDLE1BQU07SUFDdkQsTUFBTUEsU0FBUyxDQUFDO0lBRWhCLElBQUlILE1BQU1JLElBQUksSUFBSSxVQUFVTixTQUFTSyxPQUFPQyxJQUFJLEdBQUdOLFFBQVFNLElBQUk7SUFDL0QsSUFBSUosTUFBTUssSUFBSSxJQUFJUCxRQUFRTyxJQUFJLEVBQUVGLE9BQU9FLElBQUksR0FBR1AsUUFBUU8sSUFBSTtJQUMxRCxJQUFJTCxNQUFNTSxTQUFTLElBQUlSLFFBQVFTLFVBQVUsRUFBRUosT0FBT0csU0FBUyxHQUFHRSxLQUFLQyxLQUFLLENBQUNYLFFBQVFTLFVBQVU7SUFDM0YsSUFBSVAsTUFBTVUsT0FBTyxJQUFJWixRQUFRWSxPQUFPLEVBQUVQLE9BQU9PLE9BQU8sR0FBR2IsSUFBSUksWUFBWSxDQUFDVSxJQUFJLENBQUNkLEtBQUtDLFFBQVFZLE9BQU87SUFDakcsSUFBSVYsTUFB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
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW52aXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEludml0ZUNyZWF0ZSwgRGlzY29yZEludml0ZU1ldGFkYXRhIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgaXNJbnZpdGVXaXRoTWV0YWRhdGEgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2JvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IsIFNldHVwRGVzaXJlZFByb3BzLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyB9IGZyb20gJy4uL2Rlc2lyZWRQcm9wZXJ0aWVzLmpzJztcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi90b2dnbGVzL1RvZ2dsZUJpdGZpZWxkLmpzJztcbmltcG9ydCB0eXBlIHsgSW52aXRlIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnZpdGUoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRJbnZpdGVDcmVhdGUgfCBEaXNjb3JkSW52aXRlTWV0YWRhdGEsIGV4dHJhPzogeyBzaGFyZElkPzogbnVtYmVyIH0pOiBJbnZpdGUge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW52aXRlO1xuICBjb25zdCBpbnZpdGUgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxJbnZpdGUsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiAndHlwZScgaW4gcGF5bG9hZCkgaW52aXRlLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5jb2RlICYmIHBheWxvYWQuY29kZSkgaW52aXRlLmNvZGUgPSBwYXlsb2FkLmNvZGU7XG4gIGlmIChwcm9wcy5jcmVhdGVkQXQgJiYgcGF5bG9hZC5jcmVhdGVkX2F0KSBpbnZpdGUuY3JlYXRlZEF0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmNyZWF0ZWRfYXQpO1xuICBpZiAocHJvcHMuaW52aXRlciAmJiBwYXlsb2FkLmludml0ZXIpIGludml0ZS5pbnZpdGVyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC5pbnZpdGVyKTtcbiAgaWYgKHByb3BzLm1heEFnZSkgaW52aXRlLm1heEFnZSA9IHBheWxvYWQubWF4X2FnZTtcbiAgaWYgKHByb3BzLm1heFVzZXMpIGludml0ZS5tYXhVc2VzID0gcGF5bG9hZC5tYXhfdXNlcztcbiAgaWYgKHByb3BzLnRhcmdldFR5cGUgJiYgcGF5bG9hZC50YXJnZXRfdHlwZSkgaW52aXRlLnRhcmdldFR5cGUgPSBwYXlsb2FkLnRhcmdldF90eXBlO1xuICBpZiAocHJvcHMudGFyZ2V0VXNlciAmJiBwYXlsb2FkLnRhcmdldF91c2VyKSBpbnZpdGUudGFyZ2V0VXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQudGFyZ2V0X3VzZXIpO1xuICBpZiAocHJvcHMudGFyZ2V0QXBwbGljYXRpb24gJiYgcGF5bG9hZC50YXJnZXRfYXBwbGljYXRpb24pXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBQYXJ0aWFsc1xuICAgIGludml0ZS50YXJnZXRBcHBsaWNhdGlvbiA9IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb24oYm90LCBwYXlsb2FkLnRhcmdldF9hcHBsaWNhdGlvbiwgeyBzaGFyZElkOiBleHRyYT8uc2hhcmRJZCB9KTtcbiAgaWYgKHByb3BzLnRlbXBvcmFyeSAmJiBwYXlsb2FkLnRlbXBvcmFyeSkgaW52aXRlLnRlbXBvcmFyeSA9IHBheWxvYWQudGVtcG9yYXJ5O1xuICBpZiAocHJvcHMudXNlcyAmJiBwYXlsb2FkLnVzZXMpIGludml0ZS51c2VzID0gcGF5bG9hZC51c2VzO1xuXG4gIGlmIChpc0ludml0ZVdpdGhNZXRhZGF0YShwYXlsb2FkKSkge1xuICAgIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5jaGFubmVsPy5pZCkgaW52aXRlLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbC5pZCk7XG4gICAgaWYgKHByb3BzLmd1aWxkSWQgJiYgcGF5bG9hZC5ndWlsZD8uaWQpIGludml0ZS5ndWlsZElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5pZCk7XG4gICAgaWYgKHByb3BzLmFwcHJveGltYXRlTWVtYmVyQ291bnQgJiYgcGF5bG9hZC5hcHByb3hpbWF0ZV9tZW1iZXJfY291bnQpIGludml0ZS5hcHByb3hpbWF0ZU1lbWJlckNvdW50ID0gcGF5bG9hZC5hcHByb3hpbWF0ZV9tZW1iZXJfY291bnQ7XG4gICAgaWYgKHByb3BzLmFwcHJveGltYXRlUHJlc2VuY2VDb3VudCAmJiBwYXlsb2FkLmFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50ICE9PSB1bmRlZmluZWQpXG4gICAgICBpbnZpdGUuYXBwcm94aW1hdGVQcmVzZW5jZUNvdW50ID0gcGF5bG9hZC5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudDtcbiAgICBpZiAocHJvcHMuZ3VpbGRTY2hlZHVsZWRFdmVudCAmJiBwYXlsb2FkLmd1aWxkX3NjaGVkdWxlZF9ldmVudClcbiAgICAgIGludml0ZS5ndWlsZFNjaGVkdWxlZEV2ZW50ID0gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHBheWxvYWQuZ3VpbGRfc2NoZWR1bGVkX2V2ZW50KTtcbiAgICBpZiAocHJvcHMuZXhwaXJlc0F0ICYmIHBheWxvYWQuZXhwaXJlc19hdCkge1xuICAgICAgaW52aXRlLmV4cGlyZXNBdCA9IERhdGUucGFyc2UocGF5bG9hZC5leHBpcmVzX2F0KTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmZsYWdzICYmIHBheWxvYWQuZmxhZ3MpIGludml0ZS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKTtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IFBhcnRpYWxzXG4gICAgaWYgKHByb3BzLnJvbGVzICYmIHBheWxvYWQucm9sZXMpIGludml0ZS5yb2xlcyA9IHBheWxvYWQucm9sZXMubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCByb2xlKSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmNoYW5uZWxfaWQpIGludml0ZS5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWxfaWQpO1xuICAgIGlmIChwcm9wcy5ndWlsZElkICYmIHBheWxvYWQuZ3VpbGRfaWQpIGludml0ZS5ndWlsZElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZF9pZCk7XG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnZpdGUoYm90LCBwYXlsb2FkLCBpbnZpdGUsIGV4dHJhKTtcbn1cbiJdLCJuYW1lcyI6WyJpc0ludml0ZVdpdGhNZXRhZGF0YSIsIlRvZ2dsZUJpdGZpZWxkIiwidHJhbnNmb3JtSW52aXRlIiwiYm90IiwicGF5bG9hZCIsImV4dHJhIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsImludml0ZSIsInR5cGUiLCJjb2RlIiwiY3JlYXRlZEF0IiwiY3JlYXRlZF9hdCIsIkRhdGUiLCJwYXJzZSIsImludml0ZXIiLCJ1c2VyIiwibWF4QWdlIiwibWF4X2FnZSIsIm1heFVzZXMiLCJtYXhfdXNlcyIsInRhcmdldFR5cGUiLCJ0YXJnZXRfdHlwZSIsInRhcmdldFVzZXIiLCJ0YXJnZXRfdXNlciIsInRhcmdldEFwcGxpY2F0aW9uIiwidGFyZ2V0X2FwcGxpY2F0aW9uIiwiYXBwbGljYXRpb24iLCJzaGFyZElkIiwidGVtcG9yYXJ5IiwidXNlcyIsImNoYW5uZWxJZCIsImNoYW5uZWwiLCJpZCIsInNub3dmbGFrZSIsImd1aWxkSWQiLCJndWlsZCIsImFwcHJveGltYXRlTWVtYmVyQ291bnQiLCJhcHByb3hpbWF0ZV9tZW1iZXJfY291bnQiLCJhcHByb3hpbWF0ZVByZXNlbmNlQ291bnQiLCJhcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudCIsInVuZGVmaW5lZCIsImd1aWxkU2NoZWR1bGVkRXZlbnQiLCJndWlsZF9zY2hlZHVsZWRfZXZlbnQiLCJzY2hlZHVsZWRFdmVudCIsImV4cGlyZXNBdCIsImV4cGlyZXNfYXQiLCJmbGFncyIsInJvbGVzIiwibWFwIiwicm9sZSIsImNoYW5uZWxfaWQiLCJndWlsZF9pZCIsImN1c3RvbWl6ZXJzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxvQkFBb0IsUUFBUSxvQkFBb0I7QUFHekQsU0FBU0MsY0FBYyxRQUFRLDhCQUE4QjtBQUc3RCxPQUFPLFNBQVNDLGdCQUFnQkMsR0FBUSxFQUFFQyxPQUFvRCxFQUFFQyxLQUE0QjtJQUMxSCxNQUFNQyxRQUFRSCxJQUFJSSxZQUFZLENBQUNDLGlCQUFpQixDQUFDQyxNQUFNO0lBQ3ZELE1BQU1BLFNBQVMsQ0FBQztJQUVoQixJQUFJSCxNQUFNSSxJQUFJLElBQUksVUFBVU4sU0FBU0ssT0FBT0MsSUFBSSxHQUFHTixRQUFRTSxJQUFJO0lBQy9ELElBQUlKLE1BQU1LLElBQUksSUFBSVAsUUFBUU8sSUFBSSxFQUFFRixPQUFPRSxJQUFJLEdBQUdQLFFBQVFPLElBQUk7SUFDMUQsSUFBSUwsTUFBTU0sU0FBUyxJQUFJUixRQUFRUyxVQUFVLEVBQUVKLE9BQU9HLFNBQVMsR0FBR0UsS0FBS0MsS0FBSyxDQUFDWCxRQUFRUyxVQUFVO0lBQzNGLElBQUlQLE1BQU1VLE9BQU8sSUFBSVosUUFBUVksT0FBTyxFQUFFUCxPQUFPTyxPQUFPLEdBQUdiLElBQUlJLFlBQVksQ0FBQ1UsSUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/transformers/reverse/component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mDAAmD,EAQxD,KAAK,wBAAwB,EAG9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAElF,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,SAAS,GACjB,uBAAuB,GAAG,mDAAmD,CAkC/E;AAED,wBAAgB,oDAAoD,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,wBAAwB,CASnI;AAED,wBAAgB,kDAAkD,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,uBAAuB,CAM/H"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/transformers/reverse/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,uBAAuB,EAG5B,KAAK,uBAAuB,EAC5B,KAAK,mDAAmD,EAWxD,KAAK,wBAAwB,EAM9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAElF,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,SAAS,GACjB,uBAAuB,GAAG,mDAAmD,CA4C/E;AAED,wBAAgB,oDAAoD,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,wBAAwB,CASnI;AAED,wBAAgB,kDAAkD,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,uBAAuB,CAM/H"}