@discordeno/bot 19.0.0-next.2def050 → 19.0.0-next.2f89d4d

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.
@@ -8,9 +8,12 @@ Object.defineProperty(exports, "handleInteractionCreate", {
8
8
  return handleInteractionCreate;
9
9
  }
10
10
  });
11
- async function handleInteractionCreate(bot, data) {
11
+ async function handleInteractionCreate(bot, data, shardId) {
12
12
  if (!bot.events.interactionCreate) return;
13
- bot.events.interactionCreate(bot.transformers.interaction(bot, data.d));
13
+ bot.events.interactionCreate(bot.transformers.interaction(bot, {
14
+ interaction: data.d,
15
+ shardId
16
+ }));
14
17
  }
15
18
 
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oYW5kbGVycy9pbnRlcmFjdGlvbnMvSU5URVJBQ1RJT05fQ1JFQVRFLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBEaXNjb3JkSW50ZXJhY3Rpb24gfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB0eXBlIHsgQm90IH0gZnJvbSAnLi4vLi4vaW5kZXguanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZShib3Q6IEJvdCwgZGF0YTogRGlzY29yZEdhdGV3YXlQYXlsb2FkKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghYm90LmV2ZW50cy5pbnRlcmFjdGlvbkNyZWF0ZSkgcmV0dXJuXG5cbiAgYm90LmV2ZW50cy5pbnRlcmFjdGlvbkNyZWF0ZShib3QudHJhbnNmb3JtZXJzLmludGVyYWN0aW9uKGJvdCwgZGF0YS5kIGFzIERpc2NvcmRJbnRlcmFjdGlvbikpXG59XG4iXSwibmFtZXMiOlsiaGFuZGxlSW50ZXJhY3Rpb25DcmVhdGUiLCJib3QiLCJkYXRhIiwiZXZlbnRzIiwiaW50ZXJhY3Rpb25DcmVhdGUiLCJ0cmFuc2Zvcm1lcnMiLCJpbnRlcmFjdGlvbiIsImQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR3NCQTs7O2VBQUFBOzs7QUFBZixlQUFlQSx3QkFBd0JDLEdBQVEsRUFBRUMsSUFBMkI7SUFDakYsSUFBSSxDQUFDRCxJQUFJRSxNQUFNLENBQUNDLGlCQUFpQixFQUFFO0lBRW5DSCxJQUFJRSxNQUFNLENBQUNDLGlCQUFpQixDQUFDSCxJQUFJSSxZQUFZLENBQUNDLFdBQVcsQ0FBQ0wsS0FBS0MsS0FBS0ssQ0FBQztBQUN2RSJ9
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oYW5kbGVycy9pbnRlcmFjdGlvbnMvSU5URVJBQ1RJT05fQ1JFQVRFLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBEaXNjb3JkSW50ZXJhY3Rpb24gfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB0eXBlIHsgQm90IH0gZnJvbSAnLi4vLi4vaW5kZXguanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZShib3Q6IEJvdCwgZGF0YTogRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBzaGFyZElkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFib3QuZXZlbnRzLmludGVyYWN0aW9uQ3JlYXRlKSByZXR1cm5cblxuICBib3QuZXZlbnRzLmludGVyYWN0aW9uQ3JlYXRlKFxuICAgIGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb24oYm90LCB7XG4gICAgICBpbnRlcmFjdGlvbjogZGF0YS5kIGFzIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgICAgIHNoYXJkSWQsXG4gICAgfSksXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZSIsImJvdCIsImRhdGEiLCJzaGFyZElkIiwiZXZlbnRzIiwiaW50ZXJhY3Rpb25DcmVhdGUiLCJ0cmFuc2Zvcm1lcnMiLCJpbnRlcmFjdGlvbiIsImQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR3NCQTs7O2VBQUFBOzs7QUFBZixlQUFlQSx3QkFBd0JDLEdBQVEsRUFBRUMsSUFBMkIsRUFBRUMsT0FBZTtJQUNsRyxJQUFJLENBQUNGLElBQUlHLE1BQU0sQ0FBQ0MsaUJBQWlCLEVBQUU7SUFFbkNKLElBQUlHLE1BQU0sQ0FBQ0MsaUJBQWlCLENBQzFCSixJQUFJSyxZQUFZLENBQUNDLFdBQVcsQ0FBQ04sS0FBSztRQUNoQ00sYUFBYUwsS0FBS00sQ0FBQztRQUNuQkw7SUFDRjtBQUVKIn0=
@@ -13,12 +13,15 @@ const _utils = require("@discordeno/utils");
13
13
  const _guild = require("./toggles/guild.cjs");
14
14
  const baseGuild = {
15
15
  get threads () {
16
- if (!this.channels) return;
16
+ if (!this.channels) return new _utils.Collection();
17
17
  const threads = this.channels.array().filter((x)=>x.type === _types.ChannelTypes.PublicThread || x.type === _types.ChannelTypes.PrivateThread || x.type === _types.ChannelTypes.AnnouncementThread);
18
18
  return new _utils.Collection(threads.map((x)=>[
19
19
  x.id,
20
20
  x
21
21
  ]));
22
+ },
23
+ get features () {
24
+ return this.toggles.features;
22
25
  }
23
26
  };
24
27
  function transformGuild(bot, payload) {
@@ -140,4 +143,4 @@ function transformGuild(bot, payload) {
140
143
  return bot.transformers.customizers.guild(bot, payload.guild, guild);
141
144
  }
142
145
 
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZ3VpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbm5lbFR5cGVzLFxuICB0eXBlIERlZmF1bHRNZXNzYWdlTm90aWZpY2F0aW9uTGV2ZWxzLFxuICB0eXBlIERpc2NvcmRHdWlsZCxcbiAgdHlwZSBEaXNjb3JkUHJlc2VuY2VVcGRhdGUsXG4gIHR5cGUgRXhwbGljaXRDb250ZW50RmlsdGVyTGV2ZWxzLFxuICB0eXBlIEd1aWxkRmVhdHVyZXMsXG4gIHR5cGUgR3VpbGROc2Z3TGV2ZWwsXG4gIHR5cGUgTWZhTGV2ZWxzLFxuICB0eXBlIFByZW1pdW1UaWVycyxcbiAgdHlwZSBTeXN0ZW1DaGFubmVsRmxhZ3MsXG4gIHR5cGUgVmVyaWZpY2F0aW9uTGV2ZWxzLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IENvbGxlY3Rpb24sIGljb25IYXNoVG9CaWdJbnQgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB0eXBlIHsgQm90LCBDaGFubmVsLCBNZW1iZXIsIFByZXNlbmNlVXBkYXRlLCBSb2xlLCBTdGFnZUluc3RhbmNlLCBTdGlja2VyLCBWb2ljZVN0YXRlLCBXZWxjb21lU2NyZWVuIH0gZnJvbSAnLi4vaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IEVtb2ppIH0gZnJvbSAnLi4vdHJhbnNmb3JtZXJzL2Vtb2ppLmpzJ1xuaW1wb3J0IHsgR3VpbGRUb2dnbGVzIH0gZnJvbSAnLi90b2dnbGVzL2d1aWxkLmpzJ1xuXG5jb25zdCBiYXNlR3VpbGQgPSB7XG4gIGdldCB0aHJlYWRzKCkge1xuICAgIGlmICghdGhpcy5jaGFubmVscykgcmV0dXJuXG5cbiAgICBjb25zdCB0aHJlYWRzID0gdGhpcy5jaGFubmVsc1xuICAgICAgLmFycmF5KClcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgudHlwZSA9PT0gQ2hhbm5lbFR5cGVzLlB1YmxpY1RocmVhZCB8fCB4LnR5cGUgPT09IENoYW5uZWxUeXBlcy5Qcml2YXRlVGhyZWFkIHx8IHgudHlwZSA9PT0gQ2hhbm5lbFR5cGVzLkFubm91bmNlbWVudFRocmVhZClcblxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aHJlYWRzLm1hcCgoeCkgPT4gW3guaWQsIHhdKSlcbiAgfSxcbn0gYXMgR3VpbGRcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUd1aWxkKGJvdDogQm90LCBwYXlsb2FkOiB7IGd1aWxkOiBEaXNjb3JkR3VpbGQgfSAmIHsgc2hhcmRJZDogbnVtYmVyIH0pOiBHdWlsZCB7XG4gIGNvbnN0IGd1aWxkSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLmlkKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuZ3VpbGRcbiAgY29uc3QgZ3VpbGQ6IEd1aWxkID0gT2JqZWN0LmNyZWF0ZShiYXNlR3VpbGQpXG5cbiAgaWYgKHByb3BzLmFma1RpbWVvdXQgJiYgcGF5bG9hZC5ndWlsZC5hZmtfdGltZW91dCkgZ3VpbGQuYWZrVGltZW91dCA9IHBheWxvYWQuZ3VpbGQuYWZrX3RpbWVvdXRcbiAgaWYgKHByb3BzLmFwcHJveGltYXRlTWVtYmVyQ291bnQgJiYgcGF5bG9hZC5ndWlsZC5hcHByb3hpbWF0ZV9tZW1iZXJfY291bnQpIGd1aWxkLmFwcHJveGltYXRlTWVtYmVyQ291bnQgPSBwYXlsb2FkLmd1aWxkLmFwcHJveGltYXRlX21lbWJlcl9jb3VudFxuICBpZiAocHJvcHMuYXBwcm94aW1hdGVQcmVzZW5jZUNvdW50ICYmIHBheWxvYWQuZ3VpbGQuYXBwcm94aW1hdGVfcHJlc2VuY2VfY291bnQpXG4gICAgZ3VpbGQuYXBwcm94aW1hdGVQcmVzZW5jZUNvdW50ID0gcGF5bG9hZC5ndWlsZC5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudFxuICBpZiAocHJvcHMuZGVmYXVsdE1lc3NhZ2VOb3RpZmljYXRpb25zKSBndWlsZC5kZWZhdWx0TWVzc2FnZU5vdGlmaWNhdGlvbnMgPSBwYXlsb2FkLmd1aWxkLmRlZmF1bHRfbWVzc2FnZV9ub3RpZmljYXRpb25zXG4gIGlmIChwcm9wcy5kZXNjcmlwdGlvbiAmJiBwYXlsb2FkLmd1aWxkLmRlc2NyaXB0aW9uKSBndWlsZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZ3VpbGQuZGVzY3JpcHRpb25cbiAgaWYgKHByb3BzLnRvZ2dsZXMpIGd1aWxkLnRvZ2dsZXMgPSBuZXcgR3VpbGRUb2dnbGVzKHBheWxvYWQuZ3VpbGQpXG4gIGlmIChwcm9wcy5leHBsaWNpdENvbnRlbnRGaWx0ZXIpIGd1aWxkLmV4cGxpY2l0Q29udGVudEZpbHRlciA9IHBheWxvYWQuZ3VpbGQuZXhwbGljaXRfY29udGVudF9maWx0ZXJcbiAgaWYgKHByb3BzLm1heE1lbWJlcnMgJiYgcGF5bG9hZC5ndWlsZC5tYXhfbWVtYmVycykgZ3VpbGQubWF4TWVtYmVycyA9IHBheWxvYWQuZ3VpbGQubWF4X21lbWJlcnNcbiAgaWYgKHByb3BzLm1heFByZXNlbmNlcyAmJiBwYXlsb2FkLmd1aWxkLm1heF9wcmVzZW5jZXMpIGd1aWxkLm1heFByZXNlbmNlcyA9IHBheWxvYWQuZ3VpbGQubWF4X3ByZXNlbmNlcyA/PyB1bmRlZmluZWRcbiAgaWYgKHByb3BzLm1heFZpZGVvQ2hhbm5lbFVzZXJzICYmIHBheWxvYWQuZ3VpbGQubWF4X3ZpZGVvX2NoYW5uZWxfdXNlcnMpIGd1aWxkLm1heFZpZGVvQ2hhbm5lbFVzZXJzID0gcGF5bG9hZC5ndWlsZC5tYXhfdmlkZW9fY2hhbm5lbF91c2Vyc1xuICBpZiAocHJvcHMubWZhTGV2ZWwpIGd1aWxkLm1mYUxldmVsID0gcGF5bG9hZC5ndWlsZC5tZmFfbGV2ZWxcbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5ndWlsZC5uYW1lKSBndWlsZC5uYW1lID0gcGF5bG9hZC5ndWlsZC5uYW1lXG4gIGlmIChwcm9wcy5uc2Z3TGV2ZWwpIGd1aWxkLm5zZndMZXZlbCA9IHBheWxvYWQuZ3VpbGQubnNmd19sZXZlbFxuICBpZiAocHJvcHMucHJlZmVycmVkTG9jYWxlICYmIHBheWxvYWQuZ3VpbGQucHJlZmVycmVkX2xvY2FsZSkgZ3VpbGQucHJlZmVycmVkTG9jYWxlID0gcGF5bG9hZC5ndWlsZC5wcmVmZXJyZWRfbG9jYWxlXG4gIGlmIChwcm9wcy5wcmVtaXVtU3Vic2NyaXB0aW9uQ291bnQgJiYgcGF5bG9hZC5ndWlsZC5wcmVtaXVtX3N1YnNjcmlwdGlvbl9jb3VudCAhPT0gdW5kZWZpbmVkKVxuICAgIGd1aWxkLnByZW1pdW1TdWJzY3JpcHRpb25Db3VudCA9IHBheWxvYWQuZ3VpbGQucHJlbWl1bV9zdWJzY3JpcHRpb25fY291bnRcbiAgaWYgKHByb3BzLnByZW1pdW1UaWVyKSBndWlsZC5wcmVtaXVtVGllciA9IHBheWxvYWQuZ3VpbGQucHJlbWl1bV90aWVyXG4gIGlmIChwcm9wcy5zdGFnZUluc3RhbmNlcyAmJiBwYXlsb2FkLmd1aWxkLnN0YWdlX2luc3RhbmNlcylcbiAgICBndWlsZC5zdGFnZUluc3RhbmNlcyA9IHBheWxvYWQuZ3VpbGQuc3RhZ2VfaW5zdGFuY2VzLm1hcCgoc2kpID0+ICh7XG4gICAgICAvKiogVGhlIGlkIG9mIHRoaXMgU3RhZ2UgaW5zdGFuY2UgKi9cbiAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShzaS5pZCksXG4gICAgICAvKiogVGhlIGd1aWxkIGlkIG9mIHRoZSBhc3NvY2lhdGVkIFN0YWdlIGNoYW5uZWwgKi9cbiAgICAgIGd1aWxkSWQsXG4gICAgICAvKiogVGhlIGlkIG9mIHRoZSBhc3NvY2lhdGVkIFN0YWdlIGNoYW5uZWwgKi9cbiAgICAgIGNoYW5uZWxJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoc2kuY2hhbm5lbF9pZCksXG4gICAgICAvKiogVGhlIHRvcGljIG9mIHRoZSBTdGFnZSBpbnN0YW5jZSAoMS0xMjAgY2hhcmFjdGVycykgKi9cbiAgICAgIHRvcGljOiBzaS50b3BpYyxcbiAgICB9KSlcbiAgaWYgKHByb3BzLmNoYW5uZWxzICYmICghIXBheWxvYWQuZ3VpbGQuY2hhbm5lbHMgfHwgISFwYXlsb2FkLmd1aWxkLnRocmVhZHMpKVxuICAgIGd1aWxkLmNoYW5uZWxzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBbLi4uKHBheWxvYWQuZ3VpbGQuY2hhbm5lbHMgPz8gW10pLCAuLi4ocGF5bG9hZC5ndWlsZC50aHJlYWRzID8/IFtdKV0ubWFwKChjaGFubmVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbCwgZ3VpbGRJZCB9KVxuICAgICAgICByZXR1cm4gW3Jlc3VsdC5pZCwgcmVzdWx0XVxuICAgICAgfSksXG4gICAgKVxuICBpZiAocHJvcHMubWVtYmVycyAmJiBwYXlsb2FkLmd1aWxkLm1lbWJlcnMpXG4gICAgZ3VpbGQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgcGF5bG9hZC5ndWlsZC5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgbWVtYmVyLCBndWlsZElkLCBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShtZW1iZXIudXNlciEuaWQpKVxuICAgICAgICByZXR1cm4gW3Jlc3VsdC5pZCwgcmVzdWx0XVxuICAgICAgfSksXG4gICAgKVxuICBpZiAocHJvcHMucm9sZXMgJiYgcGF5bG9hZC5ndWlsZC5yb2xlcylcbiAgICBndWlsZC5yb2xlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgcGF5bG9hZC5ndWlsZC5yb2xlcy5tYXAoKHJvbGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgeyByb2xlLCBndWlsZElkIH0pXG4gICAgICAgIHJldHVybiBbcmVzdWx0LmlkLCByZXN1bHRdXG4gICAgICB9KSxcbiAgICApXG4gIGlmIChwcm9wcy5lbW9qaXMgJiYgcGF5bG9hZC5ndWlsZC5lbW9qaXMpXG4gICAgZ3VpbGQuZW1vamlzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBwYXlsb2FkLmd1aWxkLmVtb2ppcy5tYXAoKGVtb2ppKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBlbW9qaSlcbiAgICAgICAgcmV0dXJuIFtyZXN1bHQuaWQhLCByZXN1bHRdXG4gICAgICB9KSxcbiAgICApXG4gIGlmIChwcm9wcy52b2ljZVN0YXRlcyAmJiBwYXlsb2FkLmd1aWxkLnZvaWNlX3N0YXRlcylcbiAgICBndWlsZC52b2ljZVN0YXRlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgcGF5bG9hZC5ndWlsZC52b2ljZV9zdGF0ZXMubWFwKCh2b2ljZVN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGJvdC50cmFuc2Zvcm1lcnMudm9pY2VTdGF0ZShib3QsIHsgdm9pY2VTdGF0ZSwgZ3VpbGRJZCB9KVxuICAgICAgICByZXR1cm4gW3Jlc3VsdC51c2VySWQsIHJlc3VsdF1cbiAgICAgIH0pLFxuICAgIClcbiAgaWYgKHByb3BzLnN0aWNrZXJzICYmIHBheWxvYWQuZ3VpbGQuc3RpY2tlcnMpXG4gICAgZ3VpbGQuc3RpY2tlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIHBheWxvYWQuZ3VpbGQuc3RpY2tlcnM/Lm1hcCgoc3RpY2tlcikgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCBzdGlja2VyKVxuICAgICAgICByZXR1cm4gW3Jlc3VsdC5pZCwgcmVzdWx0XVxuICAgICAgfSksXG4gICAgKVxuICBpZiAocHJvcHMuc3lzdGVtQ2hhbm5lbEZsYWdzICYmIHBheWxvYWQuZ3VpbGQuc3lzdGVtX2NoYW5uZWxfZmxhZ3MpIGd1aWxkLnN5c3RlbUNoYW5uZWxGbGFncyA9IHBheWxvYWQuZ3VpbGQuc3lzdGVtX2NoYW5uZWxfZmxhZ3NcbiAgaWYgKHByb3BzLnZhbml0eVVybENvZGUgJiYgcGF5bG9hZC5ndWlsZC52YW5pdHlfdXJsX2NvZGUpIGd1aWxkLnZhbml0eVVybENvZGUgPSBwYXlsb2FkLmd1aWxkLnZhbml0eV91cmxfY29kZVxuICBpZiAocHJvcHMudmVyaWZpY2F0aW9uTGV2ZWwpIGd1aWxkLnZlcmlmaWNhdGlvbkxldmVsID0gcGF5bG9hZC5ndWlsZC52ZXJpZmljYXRpb25fbGV2ZWxcbiAgaWYgKHByb3BzLndlbGNvbWVTY3JlZW4gJiYgcGF5bG9hZC5ndWlsZC53ZWxjb21lX3NjcmVlbilcbiAgICBndWlsZC53ZWxjb21lU2NyZWVuID0ge1xuICAgICAgZGVzY3JpcHRpb246IHBheWxvYWQuZ3VpbGQud2VsY29tZV9zY3JlZW4uZGVzY3JpcHRpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgd2VsY29tZUNoYW5uZWxzOiBwYXlsb2FkLmd1aWxkLndlbGNvbWVfc2NyZWVuLndlbGNvbWVfY2hhbm5lbHMubWFwKCh3YykgPT4gKHtcbiAgICAgICAgY2hhbm5lbElkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh3Yy5jaGFubmVsX2lkKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHdjLmRlc2NyaXB0aW9uLFxuICAgICAgICBlbW9qaUlkOiB3Yy5lbW9qaV9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHdjLmVtb2ppX2lkKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZW1vamlOYW1lOiB3Yy5lbW9qaV9uYW1lID8/IHVuZGVmaW5lZCxcbiAgICAgIH0pKSxcbiAgICB9XG4gIGlmIChwcm9wcy5kaXNjb3ZlcnlTcGxhc2ggJiYgcGF5bG9hZC5ndWlsZC5kaXNjb3Zlcnlfc3BsYXNoKSBndWlsZC5kaXNjb3ZlcnlTcGxhc2ggPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuZ3VpbGQuZGlzY292ZXJ5X3NwbGFzaClcbiAgaWYgKHByb3BzLmpvaW5lZEF0ICYmIHBheWxvYWQuZ3VpbGQuam9pbmVkX2F0KSBndWlsZC5qb2luZWRBdCA9IERhdGUucGFyc2UocGF5bG9hZC5ndWlsZC5qb2luZWRfYXQpXG4gIGlmIChwcm9wcy5tZW1iZXJDb3VudCAmJiBwYXlsb2FkLmd1aWxkLm1lbWJlcl9jb3VudCkgZ3VpbGQubWVtYmVyQ291bnQgPSBwYXlsb2FkLmd1aWxkLm1lbWJlcl9jb3VudCA/PyAwXG4gIGlmIChwcm9wcy5zaGFyZElkKSBndWlsZC5zaGFyZElkID0gcGF5bG9hZC5zaGFyZElkXG4gIGlmIChwcm9wcy5pY29uICYmIHBheWxvYWQuZ3VpbGQuaWNvbikgZ3VpbGQuaWNvbiA9IGljb25IYXNoVG9CaWdJbnQocGF5bG9hZC5ndWlsZC5pY29uKVxuICBpZiAocHJvcHMuYmFubmVyICYmIHBheWxvYWQuZ3VpbGQuYmFubmVyKSBndWlsZC5iYW5uZXIgPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuZ3VpbGQuYmFubmVyKVxuICBpZiAocHJvcHMuc3BsYXNoICYmIHBheWxvYWQuZ3VpbGQuc3BsYXNoKSBndWlsZC5zcGxhc2ggPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuZ3VpbGQuc3BsYXNoKVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5ndWlsZC5pZCkgZ3VpbGQuaWQgPSBndWlsZElkXG4gIGlmIChwcm9wcy5vd25lcklkICYmIHBheWxvYWQuZ3VpbGQub3duZXJfaWQpIGd1aWxkLm93bmVySWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLm93bmVyX2lkKVxuICBpZiAocHJvcHMucGVybWlzc2lvbnMgJiYgcGF5bG9hZC5ndWlsZC5wZXJtaXNzaW9ucykgZ3VpbGQucGVybWlzc2lvbnMgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLnBlcm1pc3Npb25zKVxuICBpZiAocHJvcHMuYWZrQ2hhbm5lbElkICYmIHBheWxvYWQuZ3VpbGQuYWZrX2NoYW5uZWxfaWQpIGd1aWxkLmFma0NoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGQuYWZrX2NoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy53aWRnZXRDaGFubmVsSWQgJiYgcGF5bG9hZC5ndWlsZC53aWRnZXRfY2hhbm5lbF9pZCkgZ3VpbGQud2lkZ2V0Q2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC53aWRnZXRfY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLmFwcGxpY2F0aW9uSWQgJiYgcGF5bG9hZC5ndWlsZC5hcHBsaWNhdGlvbl9pZCkgZ3VpbGQuYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGQuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy5zeXN0ZW1DaGFubmVsSWQgJiYgcGF5bG9hZC5ndWlsZC5zeXN0ZW1fY2hhbm5lbF9pZCkgZ3VpbGQuc3lzdGVtQ2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5zeXN0ZW1fY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLnJ1bGVzQ2hhbm5lbElkICYmIHBheWxvYWQuZ3VpbGQucnVsZXNfY2hhbm5lbF9pZCkgZ3VpbGQucnVsZXNDaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLnJ1bGVzX2NoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5wdWJsaWNVcGRhdGVzQ2hhbm5lbElkICYmIHBheWxvYWQuZ3VpbGQucHVibGljX3VwZGF0ZXNfY2hhbm5lbF9pZClcbiAgICBndWlsZC5wdWJsaWNVcGRhdGVzQ2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5wdWJsaWNfdXBkYXRlc19jaGFubmVsX2lkKVxuICBpZiAocHJvcHMucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCAmJiBwYXlsb2FkLmd1aWxkLnByZW1pdW1fcHJvZ3Jlc3NfYmFyX2VuYWJsZWQpXG4gICAgZ3VpbGQucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCA9IHBheWxvYWQuZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZFxuICBpZiAocHJvcHMubGFyZ2UgJiYgcGF5bG9hZC5ndWlsZC5sYXJnZSkgZ3VpbGQubGFyZ2UgPSBwYXlsb2FkLmd1aWxkLmxhcmdlXG4gIGlmIChwcm9wcy5vd25lciAmJiBwYXlsb2FkLmd1aWxkLm93bmVyKSBndWlsZC5vd25lciA9IHBheWxvYWQuZ3VpbGQub3duZXJcbiAgaWYgKHByb3BzLndpZGdldEVuYWJsZWQgJiYgcGF5bG9hZC5ndWlsZC53aWRnZXRfZW5hYmxlZCkgZ3VpbGQud2lkZ2V0RW5hYmxlZCA9IHBheWxvYWQuZ3VpbGQud2lkZ2V0X2VuYWJsZWRcbiAgaWYgKHByb3BzLnVuYXZhaWxhYmxlICYmIHBheWxvYWQuZ3VpbGQudW5hdmFpbGFibGUpIGd1aWxkLnVuYXZhaWxhYmxlID0gcGF5bG9hZC5ndWlsZC51bmF2YWlsYWJsZVxuICBpZiAocHJvcHMuaWNvbkhhc2ggJiYgcGF5bG9hZC5ndWlsZC5pY29uX2hhc2gpIGd1aWxkLmljb25IYXNoID0gaWNvbkhhc2hUb0JpZ0ludChwYXlsb2FkLmd1aWxkLmljb25faGFzaClcbiAgaWYgKHByb3BzLnByZXNlbmNlcyAmJiBwYXlsb2FkLmd1aWxkLnByZXNlbmNlcylcbiAgICBndWlsZC5wcmVzZW5jZXMgPSBwYXlsb2FkLmd1aWxkLnByZXNlbmNlcz8ubWFwKChwcmVzZW5jZSkgPT4gYm90LnRyYW5zZm9ybWVycy5wcmVzZW5jZShib3QsIHByZXNlbmNlIGFzIERpc2NvcmRQcmVzZW5jZVVwZGF0ZSkpXG4gIGlmIChwcm9wcy5zYWZldHlBbGVydHNDaGFubmVsSWQgJiYgcGF5bG9hZC5ndWlsZC5zYWZldHlfYWxlcnRzX2NoYW5uZWxfaWQpXG4gICAgZ3VpbGQuc2FmZXR5QWxlcnRzQ2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5zYWZldHlfYWxlcnRzX2NoYW5uZWxfaWQpXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuZ3VpbGQoYm90LCBwYXlsb2FkLmd1aWxkLCBndWlsZClcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHdWlsZCB7XG4gIC8qKiBHdWlsZCBuYW1lICgyLTEwMCBjaGFyYWN0ZXJzLCBleGNsdWRpbmcgdHJhaWxpbmcgYW5kIGxlYWRpbmcgd2hpdGVzcGFjZSkgKi9cbiAgbmFtZTogc3RyaW5nXG4gIC8qKiBUcnVlIGlmIHRoZSB1c2VyIGlzIHRoZSBvd25lciBvZiB0aGUgZ3VpbGQgKi9cbiAgb3duZXI6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgLyoqIEFmayB0aW1lb3V0IGluIHNlY29uZHMgKi9cbiAgYWZrVGltZW91dDogbnVtYmVyXG4gIC8qKiBUcnVlIGlmIHRoZSBzZXJ2ZXIgd2lkZ2V0IGlzIGVuYWJsZWQgKi9cbiAgd2lkZ2V0RW5hYmxlZD86IGJvb2xlYW5cbiAgLyoqIFZlcmlmaWNhdGlvbiBsZXZlbCByZXF1aXJlZCBmb3IgdGhlIGd1aWxkICovXG4gIHZlcmlmaWNhdGlvbkxldmVsOiBWZXJpZmljYXRpb25MZXZlbHNcbiAgLyoqIERlZmF1bHQgbWVzc2FnZSBub3RpZmljYXRpb25zIGxldmVsICovXG4gIGRlZmF1bHRNZXNzYWdlTm90aWZpY2F0aW9uczogRGVmYXVsdE1lc3NhZ2VOb3RpZmljYXRpb25MZXZlbHNcbiAgLyoqIEV4cGxpY2l0IGNvbnRlbnQgZmlsdGVyIGxldmVsICovXG4gIGV4cGxpY2l0Q29udGVudEZpbHRlcjogRXhwbGljaXRDb250ZW50RmlsdGVyTGV2ZWxzXG4gIC8qKiBFbmFibGVkIGd1aWxkIGZlYXR1cmVzICovXG4gIGZlYXR1cmVzOiBHdWlsZEZlYXR1cmVzW11cbiAgLyoqIFJlcXVpcmVkIE1GQSBsZXZlbCBmb3IgdGhlIGd1aWxkICovXG4gIG1mYUxldmVsOiBNZmFMZXZlbHNcbiAgLyoqIFN5c3RlbSBjaGFubmVsIGZsYWdzICovXG4gIHN5c3RlbUNoYW5uZWxGbGFnczogU3lzdGVtQ2hhbm5lbEZsYWdzXG4gIC8qKiBUcnVlIGlmIHRoaXMgaXMgY29uc2lkZXJlZCBhIGxhcmdlIGd1aWxkICovXG4gIGxhcmdlPzogYm9vbGVhblxuICAvKiogVHJ1ZSBpZiB0aGlzIGd1aWxkIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhbiBvdXRhZ2UgKi9cbiAgdW5hdmFpbGFibGU/OiBib29sZWFuXG4gIC8qKiBUb3RhbCBudW1iZXIgb2YgbWVtYmVycyBpbiB0aGlzIGd1aWxkICovXG4gIG1lbWJlckNvdW50OiBudW1iZXJcbiAgLyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwcmVzZW5jZXMgZm9yIHRoZSBndWlsZCAodGhlIGRlZmF1bHQgdmFsdWUsIGN1cnJlbnRseSAyNTAwMCwgaXMgaW4gZWZmZWN0IHdoZW4gbnVsbCBpcyByZXR1cm5lZCkgKi9cbiAgbWF4UHJlc2VuY2VzPzogbnVtYmVyXG4gIC8qKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyBmb3IgdGhlIGd1aWxkICovXG4gIG1heE1lbWJlcnM/OiBudW1iZXJcbiAgLyoqIFRoZSB2YW5pdHkgdXJsIGNvZGUgZm9yIHRoZSBndWlsZCAqL1xuICB2YW5pdHlVcmxDb2RlPzogc3RyaW5nXG4gIC8qKiBUaGUgZGVzY3JpcHRpb24gb2YgYSBndWlsZCAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0b2dnbGVzOiBHdWlsZFRvZ2dsZXNcbiAgc2hhcmRJZDogbnVtYmVyXG4gIC8qKiBQcmVtaXVtIHRpZXIgKFNlcnZlciBCb29zdCBsZXZlbCkgKi9cbiAgcHJlbWl1bVRpZXI6IFByZW1pdW1UaWVyc1xuICAvKiogVGhlIG51bWJlciBvZiBib29zdHMgdGhpcyBndWlsZCBjdXJyZW50bHkgaGFzICovXG4gIHByZW1pdW1TdWJzY3JpcHRpb25Db3VudD86IG51bWJlclxuICAvKiogVGhlIG1heGltdW0gYW1vdW50IG9mIHVzZXJzIGluIGEgdmlkZW8gY2hhbm5lbCAqL1xuICBtYXhWaWRlb0NoYW5uZWxVc2Vycz86IG51bWJlclxuICAvKiogTWF4aW11bSBhbW91bnQgb2YgdXNlcnMgaW4gYSBzdGFnZSB2aWRlbyBjaGFubmVsICovXG4gIG1heFN0YWdlVmlkZW9DaGFubmVsVXNlcnM/OiBudW1iZXJcbiAgLyoqIEFwcHJveGltYXRlIG51bWJlciBvZiBtZW1iZXJzIGluIHRoaXMgZ3VpbGQsIHJldHVybmVkIGZyb20gdGhlIEdFVCAvZ3VpbGRzL2lkIGVuZHBvaW50IHdoZW4gd2l0aF9jb3VudHMgaXMgdHJ1ZSAqL1xuICBhcHByb3hpbWF0ZU1lbWJlckNvdW50PzogbnVtYmVyXG4gIC8qKiBBcHByb3hpbWF0ZSBudW1iZXIgb2Ygbm9uLW9mZmxpbmUgbWVtYmVycyBpbiB0aGlzIGd1aWxkLCByZXR1cm5lZCBmcm9tIHRoZSBHRVQgL2d1aWxkcy9pZCBlbmRwb2ludCB3aGVuIHdpdGhfY291bnRzIGlzIHRydWUgKi9cbiAgYXBwcm94aW1hdGVQcmVzZW5jZUNvdW50PzogbnVtYmVyXG4gIC8qKiBHdWlsZCBOU0ZXIGxldmVsICovXG4gIG5zZndMZXZlbDogR3VpbGROc2Z3TGV2ZWxcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyB0aGUgYm9vc3QgcHJvZ3Jlc3MgYmFyIGVuYWJsZWQgKi9cbiAgcHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZDogYm9vbGVhblxuICAvKiogR3VpbGQgaWQgKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogSWNvbiBoYXNoICovXG4gIGljb24/OiBiaWdpbnRcbiAgLyoqIEljb24gaGFzaCwgcmV0dXJuZWQgd2hlbiBpbiB0aGUgdGVtcGxhdGUgb2JqZWN0ICovXG4gIGljb25IYXNoPzogYmlnaW50XG4gIC8qKiBTcGxhc2ggaGFzaCAqL1xuICBzcGxhc2g/OiBiaWdpbnRcbiAgLyoqIERpc2NvdmVyeSBzcGxhc2ggaGFzaDsgb25seSBwcmVzZW50IGZvciBndWlsZHMgd2l0aCB0aGUgXCJESVNDT1ZFUkFCTEVcIiBmZWF0dXJlICovXG4gIGRpc2NvdmVyeVNwbGFzaD86IGJpZ2ludFxuICAvKiogSWQgb2YgdGhlIG93bmVyICovXG4gIG93bmVySWQ6IGJpZ2ludFxuICAvKiogVG90YWwgcGVybWlzc2lvbnMgZm9yIHRoZSB1c2VyIGluIHRoZSBndWlsZCAoZXhjbHVkZXMgb3ZlcndyaXRlcyBhbmQgaW1wbGljaXQgcGVybWlzc2lvbnMpICovXG4gIHBlcm1pc3Npb25zOiBiaWdpbnRcbiAgLyoqIElkIG9mIGFmayBjaGFubmVsICovXG4gIGFma0NoYW5uZWxJZD86IGJpZ2ludFxuICAvKiogVGhlIGNoYW5uZWwgaWQgdGhhdCB0aGUgd2lkZ2V0IHdpbGwgZ2VuZXJhdGUgYW4gaW52aXRlIHRvLCBvciBudWxsIGlmIHNldCB0byBubyBpbnZpdGUgKi9cbiAgd2lkZ2V0Q2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBSb2xlcyBpbiB0aGUgZ3VpbGQgKi9cbiAgcm9sZXM6IENvbGxlY3Rpb248YmlnaW50LCBSb2xlPlxuICAvKiogQ3VzdG9tIGd1aWxkIGVtb2ppcyAqL1xuICBlbW9qaXM6IENvbGxlY3Rpb248YmlnaW50LCBFbW9qaT5cbiAgLyoqIEFwcGxpY2F0aW9uIGlkIG9mIHRoZSBndWlsZCBjcmVhdG9yIGlmIGl0IGlzIGJvdC1jcmVhdGVkICovXG4gIGFwcGxpY2F0aW9uSWQ/OiBiaWdpbnRcbiAgLyoqIFRoZSBpZCBvZiB0aGUgY2hhbm5lbCB3aGVyZSBndWlsZCBub3RpY2VzIHN1Y2ggYXMgd2VsY29tZSBtZXNzYWdlcyBhbmQgYm9vc3QgZXZlbnRzIGFyZSBwb3N0ZWQgKi9cbiAgc3lzdGVtQ2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGNoYW5uZWwgd2hlcmUgY29tbXVuaXR5IGd1aWxkcyBjYW4gZGlzcGxheSBydWxlcyBhbmQvb3IgZ3VpZGVsaW5lcyAqL1xuICBydWxlc0NoYW5uZWxJZD86IGJpZ2ludFxuICAvKiogV2hlbiB0aGlzIGd1aWxkIHdhcyBqb2luZWQgYXQgKi9cbiAgam9pbmVkQXQ/OiBudW1iZXJcbiAgLyoqIFN0YXRlcyBvZiBtZW1iZXJzIGN1cnJlbnRseSBpbiB2b2ljZSBjaGFubmVsczsgbGFja3MgdGhlIGd1aWxkX2lkIGtleSAqL1xuICB2b2ljZVN0YXRlczogQ29sbGVjdGlvbjxiaWdpbnQsIFZvaWNlU3RhdGU+XG4gIC8qKiBVc2VycyBpbiB0aGUgZ3VpbGQgKi9cbiAgbWVtYmVyczogQ29sbGVjdGlvbjxiaWdpbnQsIE1lbWJlcj5cbiAgLyoqIENoYW5uZWxzIGluIHRoZSBndWlsZCAqL1xuICBjaGFubmVsczogQ29sbGVjdGlvbjxiaWdpbnQsIENoYW5uZWw+XG4gIC8qKiBBbGwgYWN0aXZlIHRocmVhZHMgaW4gdGhlIGd1aWxkIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byB2aWV3ICovXG4gIHRocmVhZHM6IENvbGxlY3Rpb248YmlnaW50LCBDaGFubmVsPlxuICAvKiogUHJlc2VuY2VzIG9mIHRoZSBtZW1iZXJzIGluIHRoZSBndWlsZCwgd2lsbCBvbmx5IGluY2x1ZGUgbm9uLW9mZmxpbmUgbWVtYmVycyBpZiB0aGUgc2l6ZSBpcyBncmVhdGVyIHRoYW4gbGFyZ2UgdGhyZXNob2xkICovXG4gIHByZXNlbmNlcz86IFByZXNlbmNlVXBkYXRlW11cbiAgLyoqIEJhbm5lciBoYXNoICovXG4gIGJhbm5lcj86IGJpZ2ludFxuICAvKiogVGhlIHByZWZlcnJlZCBsb2NhbGUgb2YgYSBDb21tdW5pdHkgZ3VpbGQ7IHVzZWQgaW4gc2VydmVyIGRpc2NvdmVyeSBhbmQgbm90aWNlcyBmcm9tIERpc2NvcmQ7IGRlZmF1bHRzIHRvIFwiZW4tVVNcIiAqL1xuICBwcmVmZXJyZWRMb2NhbGU6IHN0cmluZ1xuICAvKiogVGhlIGlkIG9mIHRoZSBjaGFubmVsIHdoZXJlIGFkbWlucyBhbmQgbW9kZXJhdG9ycyBvZiBDb21tdW5pdHkgZ3VpbGRzIHJlY2VpdmUgbm90aWNlcyBmcm9tIERpc2NvcmQgKi9cbiAgcHVibGljVXBkYXRlc0NoYW5uZWxJZD86IGJpZ2ludFxuICAvKiogVGhlIHdlbGNvbWUgc2NyZWVuIG9mIGEgQ29tbXVuaXR5IGd1aWxkLCBzaG93biB0byBuZXcgbWVtYmVycywgcmV0dXJuZWQgaW4gYW4gSW52aXRlJ3MgZ3VpbGQgb2JqZWN0ICovXG4gIHdlbGNvbWVTY3JlZW4/OiBXZWxjb21lU2NyZWVuXG4gIC8qKiBTdGFnZSBpbnN0YW5jZXMgaW4gdGhlIGd1aWxkICovXG4gIHN0YWdlSW5zdGFuY2VzPzogU3RhZ2VJbnN0YW5jZVtdXG4gIC8qKiBDdXN0b20gZ3VpbGQgc3RpY2tlcnMgKi9cbiAgc3RpY2tlcnM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgU3RpY2tlcj5cbiAgLyoqIFRoZSBpZCBvZiB0aGUgY2hhbm5lbCB3aGVyZSBhZG1pbnMgYW5kIG1vZGVyYXRvcnMgb2YgQ29tbXVuaXR5IGd1aWxkcyByZWNlaXZlIHNhZmV0eSBhbGVydHMgZnJvbSBEaXNjb3JkICovXG4gIHNhZmV0eUFsZXJ0c0NoYW5uZWxJZD86IGJpZ2ludFxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUd1aWxkIiwiYmFzZUd1aWxkIiwidGhyZWFkcyIsImNoYW5uZWxzIiwiYXJyYXkiLCJmaWx0ZXIiLCJ4IiwidHlwZSIsIkNoYW5uZWxUeXBlcyIsIlB1YmxpY1RocmVhZCIsIlByaXZhdGVUaHJlYWQiLCJBbm5vdW5jZW1lbnRUaHJlYWQiLCJDb2xsZWN0aW9uIiwibWFwIiwiaWQiLCJib3QiLCJwYXlsb2FkIiwiZ3VpbGRJZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsImd1aWxkIiwicHJvcHMiLCJkZXNpcmVkUHJvcGVydGllcyIsIk9iamVjdCIsImNyZWF0ZSIsImFma1RpbWVvdXQiLCJhZmtfdGltZW91dCIsImFwcHJveGltYXRlTWVtYmVyQ291bnQiLCJhcHByb3hpbWF0ZV9tZW1iZXJfY291bnQiLCJhcHByb3hpbWF0ZVByZXNlbmNlQ291bnQiLCJhcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudCIsImRlZmF1bHRNZXNzYWdlTm90aWZpY2F0aW9ucyIsImRlZmF1bHRfbWVzc2FnZV9ub3RpZmljYXRpb25zIiwiZGVzY3JpcHRpb24iLCJ0b2dnbGVzIiwiR3VpbGRUb2dnbGVzIiwiZXhwbGljaXRDb250ZW50RmlsdGVyIiwiZXhwbGljaXRfY29udGVudF9maWx0ZXIiLCJtYXhNZW1iZXJzIiwibWF4X21lbWJlcnMiLCJtYXhQcmVzZW5jZXMiLCJtYXhfcHJlc2VuY2VzIiwidW5kZWZpbmVkIiwibWF4VmlkZW9DaGFubmVsVXNlcnMiLCJtYXhfdmlkZW9fY2hhbm5lbF91c2VycyIsIm1mYUxldmVsIiwibWZhX2xldmVsIiwibmFtZSIsIm5zZndMZXZlbCIsIm5zZndfbGV2ZWwiLCJwcmVmZXJyZWRMb2NhbGUiLCJwcmVmZXJyZWRfbG9jYWxlIiwicHJlbWl1bVN1YnNjcmlwdGlvbkNvdW50IiwicHJlbWl1bV9zdWJzY3JpcHRpb25fY291bnQiLCJwcmVtaXVtVGllciIsInByZW1pdW1fdGllciIsInN0YWdlSW5zdGFuY2VzIiwic3RhZ2VfaW5zdGFuY2VzIiwic2kiLCJjaGFubmVsSWQiLCJjaGFubmVsX2lkIiwidG9waWMiLCJjaGFubmVsIiwicmVzdWx0IiwibWVtYmVycyIsIm1lbWJlciIsInVzZXIiLCJyb2xlcyIsInJvbGUiLCJlbW9qaXMiLCJlbW9qaSIsInZvaWNlU3RhdGVzIiwidm9pY2Vfc3RhdGVzIiwidm9pY2VTdGF0ZSIsInVzZXJJZCIsInN0aWNrZXJzIiwic3RpY2tlciIsInN5c3RlbUNoYW5uZWxGbGFncyIsInN5c3RlbV9jaGFubmVsX2ZsYWdzIiwidmFuaXR5VXJsQ29kZSIsInZhbml0eV91cmxfY29kZSIsInZlcmlmaWNhdGlvbkxldmVsIiwidmVyaWZpY2F0aW9uX2xldmVsIiwid2VsY29tZVNjcmVlbiIsIndlbGNvbWVfc2NyZWVuIiwid2VsY29tZUNoYW5uZWxzIiwid2VsY29tZV9jaGFubmVscyIsIndjIiwiZW1vamlJZCIsImVtb2ppX2lkIiwiZW1vamlOYW1lIiwiZW1vamlfbmFtZSIsImRpc2NvdmVyeVNwbGFzaCIsImRpc2NvdmVyeV9zcGxhc2giLCJpY29uSGFzaFRvQmlnSW50Iiwiam9pbmVkQXQiLCJqb2luZWRfYXQiLCJEYXRlIiwicGFyc2UiLCJtZW1iZXJDb3VudCIsIm1lbWJlcl9jb3VudCIsInNoYXJkSWQiLCJpY29uIiwiYmFubmVyIiwic3BsYXNoIiwib3duZXJJZCIsIm93bmVyX2lkIiwicGVybWlzc2lvbnMiLCJhZmtDaGFubmVsSWQiLCJhZmtfY2hhbm5lbF9pZCIsIndpZGdldENoYW5uZWxJZCIsIndpZGdldF9jaGFubmVsX2lkIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwic3lzdGVtQ2hhbm5lbElkIiwic3lzdGVtX2NoYW5uZWxfaWQiLCJydWxlc0NoYW5uZWxJZCIsInJ1bGVzX2NoYW5uZWxfaWQiLCJwdWJsaWNVcGRhdGVzQ2hhbm5lbElkIiwicHVibGljX3VwZGF0ZXNfY2hhbm5lbF9pZCIsInByZW1pdW1Qcm9ncmVzc0JhckVuYWJsZWQiLCJwcmVtaXVtX3Byb2dyZXNzX2Jhcl9lbmFibGVkIiwibGFyZ2UiLCJvd25lciIsIndpZGdldEVuYWJsZWQiLCJ3aWRnZXRfZW5hYmxlZCIsInVuYXZhaWxhYmxlIiwiaWNvbkhhc2giLCJpY29uX2hhc2giLCJwcmVzZW5jZXMiLCJwcmVzZW5jZSIsInNhZmV0eUFsZXJ0c0NoYW5uZWxJZCIsInNhZmV0eV9hbGVydHNfY2hhbm5lbF9pZCIsImN1c3RvbWl6ZXJzIl0sIm1hcHBpbmdzIjoiOzs7OytCQThCZ0JBOzs7ZUFBQUE7Ozt1QkFsQlQ7dUJBQ3NDO3VCQUdoQjtBQUU3QixNQUFNQyxZQUFZO0lBQ2hCLElBQUlDLFdBQVU7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDQyxRQUFRLEVBQUU7UUFFcEIsTUFBTUQsVUFBVSxJQUFJLENBQUNDLFFBQVEsQ0FDMUJDLEtBQUssR0FDTEMsTUFBTSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLElBQUksS0FBS0MsbUJBQVksQ0FBQ0MsWUFBWSxJQUFJSCxFQUFFQyxJQUFJLEtBQUtDLG1CQUFZLENBQUNFLGFBQWEsSUFB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
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZ3VpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbm5lbFR5cGVzLFxuICB0eXBlIERlZmF1bHRNZXNzYWdlTm90aWZpY2F0aW9uTGV2ZWxzLFxuICB0eXBlIERpc2NvcmRHdWlsZCxcbiAgdHlwZSBEaXNjb3JkUHJlc2VuY2VVcGRhdGUsXG4gIHR5cGUgRXhwbGljaXRDb250ZW50RmlsdGVyTGV2ZWxzLFxuICB0eXBlIEd1aWxkTnNmd0xldmVsLFxuICB0eXBlIE1mYUxldmVscyxcbiAgdHlwZSBQcmVtaXVtVGllcnMsXG4gIHR5cGUgU3lzdGVtQ2hhbm5lbEZsYWdzLFxuICB0eXBlIFZlcmlmaWNhdGlvbkxldmVscyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBpY29uSGFzaFRvQmlnSW50IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEJvdCwgQ2hhbm5lbCwgR3VpbGRGZWF0dXJlS2V5cywgTWVtYmVyLCBQcmVzZW5jZVVwZGF0ZSwgUm9sZSwgU3RhZ2VJbnN0YW5jZSwgU3RpY2tlciwgVm9pY2VTdGF0ZSwgV2VsY29tZVNjcmVlbiB9IGZyb20gJy4uL2luZGV4LmpzJ1xuaW1wb3J0IHR5cGUgeyBFbW9qaSB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy9lbW9qaS5qcydcbmltcG9ydCB7IEd1aWxkVG9nZ2xlcyB9IGZyb20gJy4vdG9nZ2xlcy9ndWlsZC5qcydcblxuY29uc3QgYmFzZUd1aWxkID0ge1xuICBnZXQgdGhyZWFkcygpIHtcbiAgICBpZiAoIXRoaXMuY2hhbm5lbHMpIHJldHVybiBuZXcgQ29sbGVjdGlvbjxiaWdpbnQsIENoYW5uZWw+KClcblxuICAgIGNvbnN0IHRocmVhZHMgPSB0aGlzLmNoYW5uZWxzXG4gICAgICAuYXJyYXkoKVxuICAgICAgLmZpbHRlcigoeCkgPT4geC50eXBlID09PSBDaGFubmVsVHlwZXMuUHVibGljVGhyZWFkIHx8IHgudHlwZSA9PT0gQ2hhbm5lbFR5cGVzLlByaXZhdGVUaHJlYWQgfHwgeC50eXBlID09PSBDaGFubmVsVHlwZXMuQW5ub3VuY2VtZW50VGhyZWFkKVxuXG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKHRocmVhZHMubWFwKCh4KSA9PiBbeC5pZCwgeF0pKVxuICB9LFxuICBnZXQgZmVhdHVyZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlcy5mZWF0dXJlc1xuICB9LFxufSBhcyBHdWlsZFxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtR3VpbGQoYm90OiBCb3QsIHBheWxvYWQ6IHsgZ3VpbGQ6IERpc2NvcmRHdWlsZCB9ICYgeyBzaGFyZElkOiBudW1iZXIgfSk6IEd1aWxkIHtcbiAgY29uc3QgZ3VpbGRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGQuaWQpXG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5ndWlsZFxuICBjb25zdCBndWlsZDogR3VpbGQgPSBPYmplY3QuY3JlYXRlKGJhc2VHdWlsZClcblxuICBpZiAocHJvcHMuYWZrVGltZW91dCAmJiBwYXlsb2FkLmd1aWxkLmFma190aW1lb3V0KSBndWlsZC5hZmtUaW1lb3V0ID0gcGF5bG9hZC5ndWlsZC5hZmtfdGltZW91dFxuICBpZiAocHJvcHMuYXBwcm94aW1hdGVNZW1iZXJDb3VudCAmJiBwYXlsb2FkLmd1aWxkLmFwcHJveGltYXRlX21lbWJlcl9jb3VudCkgZ3VpbGQuYXBwcm94aW1hdGVNZW1iZXJDb3VudCA9IHBheWxvYWQuZ3VpbGQuYXBwcm94aW1hdGVfbWVtYmVyX2NvdW50XG4gIGlmIChwcm9wcy5hcHByb3hpbWF0ZVByZXNlbmNlQ291bnQgJiYgcGF5bG9hZC5ndWlsZC5hcHByb3hpbWF0ZV9wcmVzZW5jZV9jb3VudClcbiAgICBndWlsZC5hcHByb3hpbWF0ZVByZXNlbmNlQ291bnQgPSBwYXlsb2FkLmd1aWxkLmFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50XG4gIGlmIChwcm9wcy5kZWZhdWx0TWVzc2FnZU5vdGlmaWNhdGlvbnMpIGd1aWxkLmRlZmF1bHRNZXNzYWdlTm90aWZpY2F0aW9ucyA9IHBheWxvYWQuZ3VpbGQuZGVmYXVsdF9tZXNzYWdlX25vdGlmaWNhdGlvbnNcbiAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZ3VpbGQuZGVzY3JpcHRpb24pIGd1aWxkLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5ndWlsZC5kZXNjcmlwdGlvblxuICBpZiAocHJvcHMudG9nZ2xlcykgZ3VpbGQudG9nZ2xlcyA9IG5ldyBHdWlsZFRvZ2dsZXMocGF5bG9hZC5ndWlsZClcbiAgaWYgKHByb3BzLmV4cGxpY2l0Q29udGVudEZpbHRlcikgZ3VpbGQuZXhwbGljaXRDb250ZW50RmlsdGVyID0gcGF5bG9hZC5ndWlsZC5leHBsaWNpdF9jb250ZW50X2ZpbHRlclxuICBpZiAocHJvcHMubWF4TWVtYmVycyAmJiBwYXlsb2FkLmd1aWxkLm1heF9tZW1iZXJzKSBndWlsZC5tYXhNZW1iZXJzID0gcGF5bG9hZC5ndWlsZC5tYXhfbWVtYmVyc1xuICBpZiAocHJvcHMubWF4UHJlc2VuY2VzICYmIHBheWxvYWQuZ3VpbGQubWF4X3ByZXNlbmNlcykgZ3VpbGQubWF4UHJlc2VuY2VzID0gcGF5bG9hZC5ndWlsZC5tYXhfcHJlc2VuY2VzID8/IHVuZGVmaW5lZFxuICBpZiAocHJvcHMubWF4VmlkZW9DaGFubmVsVXNlcnMgJiYgcGF5bG9hZC5ndWlsZC5tYXhfdmlkZW9fY2hhbm5lbF91c2VycykgZ3VpbGQubWF4VmlkZW9DaGFubmVsVXNlcnMgPSBwYXlsb2FkLmd1aWxkLm1heF92aWRlb19jaGFubmVsX3VzZXJzXG4gIGlmIChwcm9wcy5tZmFMZXZlbCkgZ3VpbGQubWZhTGV2ZWwgPSBwYXlsb2FkLmd1aWxkLm1mYV9sZXZlbFxuICBpZiAocHJvcHMubmFtZSAmJiBwYXlsb2FkLmd1aWxkLm5hbWUpIGd1aWxkLm5hbWUgPSBwYXlsb2FkLmd1aWxkLm5hbWVcbiAgaWYgKHByb3BzLm5zZndMZXZlbCkgZ3VpbGQubnNmd0xldmVsID0gcGF5bG9hZC5ndWlsZC5uc2Z3X2xldmVsXG4gIGlmIChwcm9wcy5wcmVmZXJyZWRMb2NhbGUgJiYgcGF5bG9hZC5ndWlsZC5wcmVmZXJyZWRfbG9jYWxlKSBndWlsZC5wcmVmZXJyZWRMb2NhbGUgPSBwYXlsb2FkLmd1aWxkLnByZWZlcnJlZF9sb2NhbGVcbiAgaWYgKHByb3BzLnByZW1pdW1TdWJzY3JpcHRpb25Db3VudCAmJiBwYXlsb2FkLmd1aWxkLnByZW1pdW1fc3Vic2NyaXB0aW9uX2NvdW50ICE9PSB1bmRlZmluZWQpXG4gICAgZ3VpbGQucHJlbWl1bVN1YnNjcmlwdGlvbkNvdW50ID0gcGF5bG9hZC5ndWlsZC5wcmVtaXVtX3N1YnNjcmlwdGlvbl9jb3VudFxuICBpZiAocHJvcHMucHJlbWl1bVRpZXIpIGd1aWxkLnByZW1pdW1UaWVyID0gcGF5bG9hZC5ndWlsZC5wcmVtaXVtX3RpZXJcbiAgaWYgKHByb3BzLnN0YWdlSW5zdGFuY2VzICYmIHBheWxvYWQuZ3VpbGQuc3RhZ2VfaW5zdGFuY2VzKVxuICAgIGd1aWxkLnN0YWdlSW5zdGFuY2VzID0gcGF5bG9hZC5ndWlsZC5zdGFnZV9pbnN0YW5jZXMubWFwKChzaSkgPT4gKHtcbiAgICAgIC8qKiBUaGUgaWQgb2YgdGhpcyBTdGFnZSBpbnN0YW5jZSAqL1xuICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHNpLmlkKSxcbiAgICAgIC8qKiBUaGUgZ3VpbGQgaWQgb2YgdGhlIGFzc29jaWF0ZWQgU3RhZ2UgY2hhbm5lbCAqL1xuICAgICAgZ3VpbGRJZCxcbiAgICAgIC8qKiBUaGUgaWQgb2YgdGhlIGFzc29jaWF0ZWQgU3RhZ2UgY2hhbm5lbCAqL1xuICAgICAgY2hhbm5lbElkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShzaS5jaGFubmVsX2lkKSxcbiAgICAgIC8qKiBUaGUgdG9waWMgb2YgdGhlIFN0YWdlIGluc3RhbmNlICgxLTEyMCBjaGFyYWN0ZXJzKSAqL1xuICAgICAgdG9waWM6IHNpLnRvcGljLFxuICAgIH0pKVxuICBpZiAocHJvcHMuY2hhbm5lbHMgJiYgKCEhcGF5bG9hZC5ndWlsZC5jaGFubmVscyB8fCAhIXBheWxvYWQuZ3VpbGQudGhyZWFkcykpXG4gICAgZ3VpbGQuY2hhbm5lbHMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIFsuLi4ocGF5bG9hZC5ndWlsZC5jaGFubmVscyA/PyBbXSksIC4uLihwYXlsb2FkLmd1aWxkLnRocmVhZHMgPz8gW10pXS5tYXAoKGNoYW5uZWwpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgeyBjaGFubmVsLCBndWlsZElkIH0pXG4gICAgICAgIHJldHVybiBbcmVzdWx0LmlkLCByZXN1bHRdXG4gICAgICB9KSxcbiAgICApXG4gIGlmIChwcm9wcy5tZW1iZXJzICYmIHBheWxvYWQuZ3VpbGQubWVtYmVycylcbiAgICBndWlsZC5tZW1iZXJzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBwYXlsb2FkLmd1aWxkLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBtZW1iZXIsIGd1aWxkSWQsIGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG1lbWJlci51c2VyIS5pZCkpXG4gICAgICAgIHJldHVybiBbcmVzdWx0LmlkLCByZXN1bHRdXG4gICAgICB9KSxcbiAgICApXG4gIGlmIChwcm9wcy5yb2xlcyAmJiBwYXlsb2FkLmd1aWxkLnJvbGVzKVxuICAgIGd1aWxkLnJvbGVzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBwYXlsb2FkLmd1aWxkLnJvbGVzLm1hcCgocm9sZSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGUsIGd1aWxkSWQgfSlcbiAgICAgICAgcmV0dXJuIFtyZXN1bHQuaWQsIHJlc3VsdF1cbiAgICAgIH0pLFxuICAgIClcbiAgaWYgKHByb3BzLmVtb2ppcyAmJiBwYXlsb2FkLmd1aWxkLmVtb2ppcylcbiAgICBndWlsZC5lbW9qaXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIHBheWxvYWQuZ3VpbGQuZW1vamlzLm1hcCgoZW1vamkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIGVtb2ppKVxuICAgICAgICByZXR1cm4gW3Jlc3VsdC5pZCEsIHJlc3VsdF1cbiAgICAgIH0pLFxuICAgIClcbiAgaWYgKHByb3BzLnZvaWNlU3RhdGVzICYmIHBheWxvYWQuZ3VpbGQudm9pY2Vfc3RhdGVzKVxuICAgIGd1aWxkLnZvaWNlU3RhdGVzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBwYXlsb2FkLmd1aWxkLnZvaWNlX3N0YXRlcy5tYXAoKHZvaWNlU3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYm90LnRyYW5zZm9ybWVycy52b2ljZVN0YXRlKGJvdCwgeyB2b2ljZVN0YXRlLCBndWlsZElkIH0pXG4gICAgICAgIHJldHVybiBbcmVzdWx0LnVzZXJJZCwgcmVzdWx0XVxuICAgICAgfSksXG4gICAgKVxuICBpZiAocHJvcHMuc3RpY2tlcnMgJiYgcGF5bG9hZC5ndWlsZC5zdGlja2VycylcbiAgICBndWlsZC5zdGlja2VycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgcGF5bG9hZC5ndWlsZC5zdGlja2Vycz8ubWFwKChzdGlja2VyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHN0aWNrZXIpXG4gICAgICAgIHJldHVybiBbcmVzdWx0LmlkLCByZXN1bHRdXG4gICAgICB9KSxcbiAgICApXG4gIGlmIChwcm9wcy5zeXN0ZW1DaGFubmVsRmxhZ3MgJiYgcGF5bG9hZC5ndWlsZC5zeXN0ZW1fY2hhbm5lbF9mbGFncykgZ3VpbGQuc3lzdGVtQ2hhbm5lbEZsYWdzID0gcGF5bG9hZC5ndWlsZC5zeXN0ZW1fY2hhbm5lbF9mbGFnc1xuICBpZiAocHJvcHMudmFuaXR5VXJsQ29kZSAmJiBwYXlsb2FkLmd1aWxkLnZhbml0eV91cmxfY29kZSkgZ3VpbGQudmFuaXR5VXJsQ29kZSA9IHBheWxvYWQuZ3VpbGQudmFuaXR5X3VybF9jb2RlXG4gIGlmIChwcm9wcy52ZXJpZmljYXRpb25MZXZlbCkgZ3VpbGQudmVyaWZpY2F0aW9uTGV2ZWwgPSBwYXlsb2FkLmd1aWxkLnZlcmlmaWNhdGlvbl9sZXZlbFxuICBpZiAocHJvcHMud2VsY29tZVNjcmVlbiAmJiBwYXlsb2FkLmd1aWxkLndlbGNvbWVfc2NyZWVuKVxuICAgIGd1aWxkLndlbGNvbWVTY3JlZW4gPSB7XG4gICAgICBkZXNjcmlwdGlvbjogcGF5bG9hZC5ndWlsZC53ZWxjb21lX3NjcmVlbi5kZXNjcmlwdGlvbiA/PyB1bmRlZmluZWQsXG4gICAgICB3ZWxjb21lQ2hhbm5lbHM6IHBheWxvYWQuZ3VpbGQud2VsY29tZV9zY3JlZW4ud2VsY29tZV9jaGFubmVscy5tYXAoKHdjKSA9PiAoe1xuICAgICAgICBjaGFubmVsSWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHdjLmNoYW5uZWxfaWQpLFxuICAgICAgICBkZXNjcmlwdGlvbjogd2MuZGVzY3JpcHRpb24sXG4gICAgICAgIGVtb2ppSWQ6IHdjLmVtb2ppX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uod2MuZW1vamlfaWQpIDogdW5kZWZpbmVkLFxuICAgICAgICBlbW9qaU5hbWU6IHdjLmVtb2ppX25hbWUgPz8gdW5kZWZpbmVkLFxuICAgICAgfSkpLFxuICAgIH1cbiAgaWYgKHByb3BzLmRpc2NvdmVyeVNwbGFzaCAmJiBwYXlsb2FkLmd1aWxkLmRpc2NvdmVyeV9zcGxhc2gpIGd1aWxkLmRpc2NvdmVyeVNwbGFzaCA9IGljb25IYXNoVG9CaWdJbnQocGF5bG9hZC5ndWlsZC5kaXNjb3Zlcnlfc3BsYXNoKVxuICBpZiAocHJvcHMuam9pbmVkQXQgJiYgcGF5bG9hZC5ndWlsZC5qb2luZWRfYXQpIGd1aWxkLmpvaW5lZEF0ID0gRGF0ZS5wYXJzZShwYXlsb2FkLmd1aWxkLmpvaW5lZF9hdClcbiAgaWYgKHByb3BzLm1lbWJlckNvdW50ICYmIHBheWxvYWQuZ3VpbGQubWVtYmVyX2NvdW50KSBndWlsZC5tZW1iZXJDb3VudCA9IHBheWxvYWQuZ3VpbGQubWVtYmVyX2NvdW50ID8/IDBcbiAgaWYgKHByb3BzLnNoYXJkSWQpIGd1aWxkLnNoYXJkSWQgPSBwYXlsb2FkLnNoYXJkSWRcbiAgaWYgKHByb3BzLmljb24gJiYgcGF5bG9hZC5ndWlsZC5pY29uKSBndWlsZC5pY29uID0gaWNvbkhhc2hUb0JpZ0ludChwYXlsb2FkLmd1aWxkLmljb24pXG4gIGlmIChwcm9wcy5iYW5uZXIgJiYgcGF5bG9hZC5ndWlsZC5iYW5uZXIpIGd1aWxkLmJhbm5lciA9IGljb25IYXNoVG9CaWdJbnQocGF5bG9hZC5ndWlsZC5iYW5uZXIpXG4gIGlmIChwcm9wcy5zcGxhc2ggJiYgcGF5bG9hZC5ndWlsZC5zcGxhc2gpIGd1aWxkLnNwbGFzaCA9IGljb25IYXNoVG9CaWdJbnQocGF5bG9hZC5ndWlsZC5zcGxhc2gpXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmd1aWxkLmlkKSBndWlsZC5pZCA9IGd1aWxkSWRcbiAgaWYgKHByb3BzLm93bmVySWQgJiYgcGF5bG9hZC5ndWlsZC5vd25lcl9pZCkgZ3VpbGQub3duZXJJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGQub3duZXJfaWQpXG4gIGlmIChwcm9wcy5wZXJtaXNzaW9ucyAmJiBwYXlsb2FkLmd1aWxkLnBlcm1pc3Npb25zKSBndWlsZC5wZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGQucGVybWlzc2lvbnMpXG4gIGlmIChwcm9wcy5hZmtDaGFubmVsSWQgJiYgcGF5bG9hZC5ndWlsZC5hZmtfY2hhbm5lbF9pZCkgZ3VpbGQuYWZrQ2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5hZmtfY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLndpZGdldENoYW5uZWxJZCAmJiBwYXlsb2FkLmd1aWxkLndpZGdldF9jaGFubmVsX2lkKSBndWlsZC53aWRnZXRDaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLndpZGdldF9jaGFubmVsX2lkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmd1aWxkLmFwcGxpY2F0aW9uX2lkKSBndWlsZC5hcHBsaWNhdGlvbklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZC5hcHBsaWNhdGlvbl9pZClcbiAgaWYgKHByb3BzLnN5c3RlbUNoYW5uZWxJZCAmJiBwYXlsb2FkLmd1aWxkLnN5c3RlbV9jaGFubmVsX2lkKSBndWlsZC5zeXN0ZW1DaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLnN5c3RlbV9jaGFubmVsX2lkKVxuICBpZiAocHJvcHMucnVsZXNDaGFubmVsSWQgJiYgcGF5bG9hZC5ndWlsZC5ydWxlc19jaGFubmVsX2lkKSBndWlsZC5ydWxlc0NoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGQucnVsZXNfY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLnB1YmxpY1VwZGF0ZXNDaGFubmVsSWQgJiYgcGF5bG9hZC5ndWlsZC5wdWJsaWNfdXBkYXRlc19jaGFubmVsX2lkKVxuICAgIGd1aWxkLnB1YmxpY1VwZGF0ZXNDaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLnB1YmxpY191cGRhdGVzX2NoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5wcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkICYmIHBheWxvYWQuZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZClcbiAgICBndWlsZC5wcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkID0gcGF5bG9hZC5ndWlsZC5wcmVtaXVtX3Byb2dyZXNzX2Jhcl9lbmFibGVkXG4gIGlmIChwcm9wcy5sYXJnZSAmJiBwYXlsb2FkLmd1aWxkLmxhcmdlKSBndWlsZC5sYXJnZSA9IHBheWxvYWQuZ3VpbGQubGFyZ2VcbiAgaWYgKHByb3BzLm93bmVyICYmIHBheWxvYWQuZ3VpbGQub3duZXIpIGd1aWxkLm93bmVyID0gcGF5bG9hZC5ndWlsZC5vd25lclxuICBpZiAocHJvcHMud2lkZ2V0RW5hYmxlZCAmJiBwYXlsb2FkLmd1aWxkLndpZGdldF9lbmFibGVkKSBndWlsZC53aWRnZXRFbmFibGVkID0gcGF5bG9hZC5ndWlsZC53aWRnZXRfZW5hYmxlZFxuICBpZiAocHJvcHMudW5hdmFpbGFibGUgJiYgcGF5bG9hZC5ndWlsZC51bmF2YWlsYWJsZSkgZ3VpbGQudW5hdmFpbGFibGUgPSBwYXlsb2FkLmd1aWxkLnVuYXZhaWxhYmxlXG4gIGlmIChwcm9wcy5pY29uSGFzaCAmJiBwYXlsb2FkLmd1aWxkLmljb25faGFzaCkgZ3VpbGQuaWNvbkhhc2ggPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuZ3VpbGQuaWNvbl9oYXNoKVxuICBpZiAocHJvcHMucHJlc2VuY2VzICYmIHBheWxvYWQuZ3VpbGQucHJlc2VuY2VzKVxuICAgIGd1aWxkLnByZXNlbmNlcyA9IHBheWxvYWQuZ3VpbGQucHJlc2VuY2VzPy5tYXAoKHByZXNlbmNlKSA9PiBib3QudHJhbnNmb3JtZXJzLnByZXNlbmNlKGJvdCwgcHJlc2VuY2UgYXMgRGlzY29yZFByZXNlbmNlVXBkYXRlKSlcbiAgaWYgKHByb3BzLnNhZmV0eUFsZXJ0c0NoYW5uZWxJZCAmJiBwYXlsb2FkLmd1aWxkLnNhZmV0eV9hbGVydHNfY2hhbm5lbF9pZClcbiAgICBndWlsZC5zYWZldHlBbGVydHNDaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkLnNhZmV0eV9hbGVydHNfY2hhbm5lbF9pZClcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5ndWlsZChib3QsIHBheWxvYWQuZ3VpbGQsIGd1aWxkKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEd1aWxkIHtcbiAgLyoqIEd1aWxkIG5hbWUgKDItMTAwIGNoYXJhY3RlcnMsIGV4Y2x1ZGluZyB0cmFpbGluZyBhbmQgbGVhZGluZyB3aGl0ZXNwYWNlKSAqL1xuICBuYW1lOiBzdHJpbmdcbiAgLyoqIFRydWUgaWYgdGhlIHVzZXIgaXMgdGhlIG93bmVyIG9mIHRoZSBndWlsZCAqL1xuICBvd25lcjogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAvKiogQWZrIHRpbWVvdXQgaW4gc2Vjb25kcyAqL1xuICBhZmtUaW1lb3V0OiBudW1iZXJcbiAgLyoqIFRydWUgaWYgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICB3aWRnZXRFbmFibGVkPzogYm9vbGVhblxuICAvKiogVmVyaWZpY2F0aW9uIGxldmVsIHJlcXVpcmVkIGZvciB0aGUgZ3VpbGQgKi9cbiAgdmVyaWZpY2F0aW9uTGV2ZWw6IFZlcmlmaWNhdGlvbkxldmVsc1xuICAvKiogRGVmYXVsdCBtZXNzYWdlIG5vdGlmaWNhdGlvbnMgbGV2ZWwgKi9cbiAgZGVmYXVsdE1lc3NhZ2VOb3RpZmljYXRpb25zOiBEZWZhdWx0TWVzc2FnZU5vdGlmaWNhdGlvbkxldmVsc1xuICAvKiogRXhwbGljaXQgY29udGVudCBmaWx0ZXIgbGV2ZWwgKi9cbiAgZXhwbGljaXRDb250ZW50RmlsdGVyOiBFeHBsaWNpdENvbnRlbnRGaWx0ZXJMZXZlbHNcbiAgLyoqIEVuYWJsZWQgZ3VpbGQgZmVhdHVyZXMgKi9cbiAgZmVhdHVyZXM6IEd1aWxkRmVhdHVyZUtleXNbXVxuICAvKiogUmVxdWlyZWQgTUZBIGxldmVsIGZvciB0aGUgZ3VpbGQgKi9cbiAgbWZhTGV2ZWw6IE1mYUxldmVsc1xuICAvKiogU3lzdGVtIGNoYW5uZWwgZmxhZ3MgKi9cbiAgc3lzdGVtQ2hhbm5lbEZsYWdzOiBTeXN0ZW1DaGFubmVsRmxhZ3NcbiAgLyoqIFRydWUgaWYgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgbGFyZ2U/OiBib29sZWFuXG4gIC8qKiBUcnVlIGlmIHRoaXMgZ3VpbGQgaXMgdW5hdmFpbGFibGUgZHVlIHRvIGFuIG91dGFnZSAqL1xuICB1bmF2YWlsYWJsZT86IGJvb2xlYW5cbiAgLyoqIFRvdGFsIG51bWJlciBvZiBtZW1iZXJzIGluIHRoaXMgZ3VpbGQgKi9cbiAgbWVtYmVyQ291bnQ6IG51bWJlclxuICAvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIHByZXNlbmNlcyBmb3IgdGhlIGd1aWxkICh0aGUgZGVmYXVsdCB2YWx1ZSwgY3VycmVudGx5IDI1MDAwLCBpcyBpbiBlZmZlY3Qgd2hlbiBudWxsIGlzIHJldHVybmVkKSAqL1xuICBtYXhQcmVzZW5jZXM/OiBudW1iZXJcbiAgLyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIGZvciB0aGUgZ3VpbGQgKi9cbiAgbWF4TWVtYmVycz86IG51bWJlclxuICAvKiogVGhlIHZhbml0eSB1cmwgY29kZSBmb3IgdGhlIGd1aWxkICovXG4gIHZhbml0eVVybENvZGU/OiBzdHJpbmdcbiAgLyoqIFRoZSBkZXNjcmlwdGlvbiBvZiBhIGd1aWxkICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHRvZ2dsZXM6IEd1aWxkVG9nZ2xlc1xuICBzaGFyZElkOiBudW1iZXJcbiAgLyoqIFByZW1pdW0gdGllciAoU2VydmVyIEJvb3N0IGxldmVsKSAqL1xuICBwcmVtaXVtVGllcjogUHJlbWl1bVRpZXJzXG4gIC8qKiBUaGUgbnVtYmVyIG9mIGJvb3N0cyB0aGlzIGd1aWxkIGN1cnJlbnRseSBoYXMgKi9cbiAgcHJlbWl1bVN1YnNjcmlwdGlvbkNvdW50PzogbnVtYmVyXG4gIC8qKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdXNlcnMgaW4gYSB2aWRlbyBjaGFubmVsICovXG4gIG1heFZpZGVvQ2hhbm5lbFVzZXJzPzogbnVtYmVyXG4gIC8qKiBNYXhpbXVtIGFtb3VudCBvZiB1c2VycyBpbiBhIHN0YWdlIHZpZGVvIGNoYW5uZWwgKi9cbiAgbWF4U3RhZ2VWaWRlb0NoYW5uZWxVc2Vycz86IG51bWJlclxuICAvKiogQXBwcm94aW1hdGUgbnVtYmVyIG9mIG1lbWJlcnMgaW4gdGhpcyBndWlsZCwgcmV0dXJuZWQgZnJvbSB0aGUgR0VUIC9ndWlsZHMvaWQgZW5kcG9pbnQgd2hlbiB3aXRoX2NvdW50cyBpcyB0cnVlICovXG4gIGFwcHJveGltYXRlTWVtYmVyQ291bnQ/OiBudW1iZXJcbiAgLyoqIEFwcHJveGltYXRlIG51bWJlciBvZiBub24tb2ZmbGluZSBtZW1iZXJzIGluIHRoaXMgZ3VpbGQsIHJldHVybmVkIGZyb20gdGhlIEdFVCAvZ3VpbGRzL2lkIGVuZHBvaW50IHdoZW4gd2l0aF9jb3VudHMgaXMgdHJ1ZSAqL1xuICBhcHByb3hpbWF0ZVByZXNlbmNlQ291bnQ/OiBudW1iZXJcbiAgLyoqIEd1aWxkIE5TRlcgbGV2ZWwgKi9cbiAgbnNmd0xldmVsOiBHdWlsZE5zZndMZXZlbFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkOiBib29sZWFuXG4gIC8qKiBHdWlsZCBpZCAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBJY29uIGhhc2ggKi9cbiAgaWNvbj86IGJpZ2ludFxuICAvKiogSWNvbiBoYXNoLCByZXR1cm5lZCB3aGVuIGluIHRoZSB0ZW1wbGF0ZSBvYmplY3QgKi9cbiAgaWNvbkhhc2g/OiBiaWdpbnRcbiAgLyoqIFNwbGFzaCBoYXNoICovXG4gIHNwbGFzaD86IGJpZ2ludFxuICAvKiogRGlzY292ZXJ5IHNwbGFzaCBoYXNoOyBvbmx5IHByZXNlbnQgZm9yIGd1aWxkcyB3aXRoIHRoZSBcIkRJU0NPVkVSQUJMRVwiIGZlYXR1cmUgKi9cbiAgZGlzY292ZXJ5U3BsYXNoPzogYmlnaW50XG4gIC8qKiBJZCBvZiB0aGUgb3duZXIgKi9cbiAgb3duZXJJZDogYmlnaW50XG4gIC8qKiBUb3RhbCBwZXJtaXNzaW9ucyBmb3IgdGhlIHVzZXIgaW4gdGhlIGd1aWxkIChleGNsdWRlcyBvdmVyd3JpdGVzIGFuZCBpbXBsaWNpdCBwZXJtaXNzaW9ucykgKi9cbiAgcGVybWlzc2lvbnM6IGJpZ2ludFxuICAvKiogSWQgb2YgYWZrIGNoYW5uZWwgKi9cbiAgYWZrQ2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBUaGUgY2hhbm5lbCBpZCB0aGF0IHRoZSB3aWRnZXQgd2lsbCBnZW5lcmF0ZSBhbiBpbnZpdGUgdG8sIG9yIG51bGwgaWYgc2V0IHRvIG5vIGludml0ZSAqL1xuICB3aWRnZXRDaGFubmVsSWQ/OiBiaWdpbnRcbiAgLyoqIFJvbGVzIGluIHRoZSBndWlsZCAqL1xuICByb2xlczogQ29sbGVjdGlvbjxiaWdpbnQsIFJvbGU+XG4gIC8qKiBDdXN0b20gZ3VpbGQgZW1vamlzICovXG4gIGVtb2ppczogQ29sbGVjdGlvbjxiaWdpbnQsIEVtb2ppPlxuICAvKiogQXBwbGljYXRpb24gaWQgb2YgdGhlIGd1aWxkIGNyZWF0b3IgaWYgaXQgaXMgYm90LWNyZWF0ZWQgKi9cbiAgYXBwbGljYXRpb25JZD86IGJpZ2ludFxuICAvKiogVGhlIGlkIG9mIHRoZSBjaGFubmVsIHdoZXJlIGd1aWxkIG5vdGljZXMgc3VjaCBhcyB3ZWxjb21lIG1lc3NhZ2VzIGFuZCBib29zdCBldmVudHMgYXJlIHBvc3RlZCAqL1xuICBzeXN0ZW1DaGFubmVsSWQ/OiBiaWdpbnRcbiAgLyoqIFRoZSBpZCBvZiB0aGUgY2hhbm5lbCB3aGVyZSBjb21tdW5pdHkgZ3VpbGRzIGNhbiBkaXNwbGF5IHJ1bGVzIGFuZC9vciBndWlkZWxpbmVzICovXG4gIHJ1bGVzQ2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBXaGVuIHRoaXMgZ3VpbGQgd2FzIGpvaW5lZCBhdCAqL1xuICBqb2luZWRBdD86IG51bWJlclxuICAvKiogU3RhdGVzIG9mIG1lbWJlcnMgY3VycmVudGx5IGluIHZvaWNlIGNoYW5uZWxzOyBsYWNrcyB0aGUgZ3VpbGRfaWQga2V5ICovXG4gIHZvaWNlU3RhdGVzOiBDb2xsZWN0aW9uPGJpZ2ludCwgVm9pY2VTdGF0ZT5cbiAgLyoqIFVzZXJzIGluIHRoZSBndWlsZCAqL1xuICBtZW1iZXJzOiBDb2xsZWN0aW9uPGJpZ2ludCwgTWVtYmVyPlxuICAvKiogQ2hhbm5lbHMgaW4gdGhlIGd1aWxkICovXG4gIGNoYW5uZWxzOiBDb2xsZWN0aW9uPGJpZ2ludCwgQ2hhbm5lbD5cbiAgLyoqIEFsbCBhY3RpdmUgdGhyZWFkcyBpbiB0aGUgZ3VpbGQgdGhhdCB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHZpZXcgKi9cbiAgdGhyZWFkczogQ29sbGVjdGlvbjxiaWdpbnQsIENoYW5uZWw+XG4gIC8qKiBQcmVzZW5jZXMgb2YgdGhlIG1lbWJlcnMgaW4gdGhlIGd1aWxkLCB3aWxsIG9ubHkgaW5jbHVkZSBub24tb2ZmbGluZSBtZW1iZXJzIGlmIHRoZSBzaXplIGlzIGdyZWF0ZXIgdGhhbiBsYXJnZSB0aHJlc2hvbGQgKi9cbiAgcHJlc2VuY2VzPzogUHJlc2VuY2VVcGRhdGVbXVxuICAvKiogQmFubmVyIGhhc2ggKi9cbiAgYmFubmVyPzogYmlnaW50XG4gIC8qKiBUaGUgcHJlZmVycmVkIGxvY2FsZSBvZiBhIENvbW11bml0eSBndWlsZDsgdXNlZCBpbiBzZXJ2ZXIgZGlzY292ZXJ5IGFuZCBub3RpY2VzIGZyb20gRGlzY29yZDsgZGVmYXVsdHMgdG8gXCJlbi1VU1wiICovXG4gIHByZWZlcnJlZExvY2FsZTogc3RyaW5nXG4gIC8qKiBUaGUgaWQgb2YgdGhlIGNoYW5uZWwgd2hlcmUgYWRtaW5zIGFuZCBtb2RlcmF0b3JzIG9mIENvbW11bml0eSBndWlsZHMgcmVjZWl2ZSBub3RpY2VzIGZyb20gRGlzY29yZCAqL1xuICBwdWJsaWNVcGRhdGVzQ2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBUaGUgd2VsY29tZSBzY3JlZW4gb2YgYSBDb21tdW5pdHkgZ3VpbGQsIHNob3duIHRvIG5ldyBtZW1iZXJzLCByZXR1cm5lZCBpbiBhbiBJbnZpdGUncyBndWlsZCBvYmplY3QgKi9cbiAgd2VsY29tZVNjcmVlbj86IFdlbGNvbWVTY3JlZW5cbiAgLyoqIFN0YWdlIGluc3RhbmNlcyBpbiB0aGUgZ3VpbGQgKi9cbiAgc3RhZ2VJbnN0YW5jZXM/OiBTdGFnZUluc3RhbmNlW11cbiAgLyoqIEN1c3RvbSBndWlsZCBzdGlja2VycyAqL1xuICBzdGlja2Vycz86IENvbGxlY3Rpb248YmlnaW50LCBTdGlja2VyPlxuICAvKiogVGhlIGlkIG9mIHRoZSBjaGFubmVsIHdoZXJlIGFkbWlucyBhbmQgbW9kZXJhdG9ycyBvZiBDb21tdW5pdHkgZ3VpbGRzIHJlY2VpdmUgc2FmZXR5IGFsZXJ0cyBmcm9tIERpc2NvcmQgKi9cbiAgc2FmZXR5QWxlcnRzQ2hhbm5lbElkPzogYmlnaW50XG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtR3VpbGQiLCJiYXNlR3VpbGQiLCJ0aHJlYWRzIiwiY2hhbm5lbHMiLCJDb2xsZWN0aW9uIiwiYXJyYXkiLCJmaWx0ZXIiLCJ4IiwidHlwZSIsIkNoYW5uZWxUeXBlcyIsIlB1YmxpY1RocmVhZCIsIlByaXZhdGVUaHJlYWQiLCJBbm5vdW5jZW1lbnRUaHJlYWQiLCJtYXAiLCJpZCIsImZlYXR1cmVzIiwidG9nZ2xlcyIsImJvdCIsInBheWxvYWQiLCJndWlsZElkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwiZ3VpbGQiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiT2JqZWN0IiwiY3JlYXRlIiwiYWZrVGltZW91dCIsImFma190aW1lb3V0IiwiYXBwcm94aW1hdGVNZW1iZXJDb3VudCIsImFwcHJveGltYXRlX21lbWJlcl9jb3VudCIsImFwcHJveGltYXRlUHJlc2VuY2VDb3VudCIsImFwcHJveGltYXRlX3ByZXNlbmNlX2NvdW50IiwiZGVmYXVsdE1lc3NhZ2VOb3RpZmljYXRpb25zIiwiZGVmYXVsdF9tZXNzYWdlX25vdGlmaWNhdGlvbnMiLCJkZXNjcmlwdGlvbiIsIkd1aWxkVG9nZ2xlcyIsImV4cGxpY2l0Q29udGVudEZpbHRlciIsImV4cGxpY2l0X2NvbnRlbnRfZmlsdGVyIiwibWF4TWVtYmVycyIsIm1heF9tZW1iZXJzIiwibWF4UHJlc2VuY2VzIiwibWF4X3ByZXNlbmNlcyIsInVuZGVmaW5lZCIsIm1heFZpZGVvQ2hhbm5lbFVzZXJzIiwibWF4X3ZpZGVvX2NoYW5uZWxfdXNlcnMiLCJtZmFMZXZlbCIsIm1mYV9sZXZlbCIsIm5hbWUiLCJuc2Z3TGV2ZWwiLCJuc2Z3X2xldmVsIiwicHJlZmVycmVkTG9jYWxlIiwicHJlZmVycmVkX2xvY2FsZSIsInByZW1pdW1TdWJzY3JpcHRpb25Db3VudCIsInByZW1pdW1fc3Vic2NyaXB0aW9uX2NvdW50IiwicHJlbWl1bVRpZXIiLCJwcmVtaXVtX3RpZXIiLCJzdGFnZUluc3RhbmNlcyIsInN0YWdlX2luc3RhbmNlcyIsInNpIiwiY2hhbm5lbElkIiwiY2hhbm5lbF9pZCIsInRvcGljIiwiY2hhbm5lbCIsInJlc3VsdCIsIm1lbWJlcnMiLCJtZW1iZXIiLCJ1c2VyIiwicm9sZXMiLCJyb2xlIiwiZW1vamlzIiwiZW1vamkiLCJ2b2ljZVN0YXRlcyIsInZvaWNlX3N0YXRlcyIsInZvaWNlU3RhdGUiLCJ1c2VySWQiLCJzdGlja2VycyIsInN0aWNrZXIiLCJzeXN0ZW1DaGFubmVsRmxhZ3MiLCJzeXN0ZW1fY2hhbm5lbF9mbGFncyIsInZhbml0eVVybENvZGUiLCJ2YW5pdHlfdXJsX2NvZGUiLCJ2ZXJpZmljYXRpb25MZXZlbCIsInZlcmlmaWNhdGlvbl9sZXZlbCIsIndlbGNvbWVTY3JlZW4iLCJ3ZWxjb21lX3NjcmVlbiIsIndlbGNvbWVDaGFubmVscyIsIndlbGNvbWVfY2hhbm5lbHMiLCJ3YyIsImVtb2ppSWQiLCJlbW9qaV9pZCIsImVtb2ppTmFtZSIsImVtb2ppX25hbWUiLCJkaXNjb3ZlcnlTcGxhc2giLCJkaXNjb3Zlcnlfc3BsYXNoIiwiaWNvbkhhc2hUb0JpZ0ludCIsImpvaW5lZEF0Iiwiam9pbmVkX2F0IiwiRGF0ZSIsInBhcnNlIiwibWVtYmVyQ291bnQiLCJtZW1iZXJfY291bnQiLCJzaGFyZElkIiwiaWNvbiIsImJhbm5lciIsInNwbGFzaCIsIm93bmVySWQiLCJvd25lcl9pZCIsInBlcm1pc3Npb25zIiwiYWZrQ2hhbm5lbElkIiwiYWZrX2NoYW5uZWxfaWQiLCJ3aWRnZXRDaGFubmVsSWQiLCJ3aWRnZXRfY2hhbm5lbF9pZCIsImFwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbl9pZCIsInN5c3RlbUNoYW5uZWxJZCIsInN5c3RlbV9jaGFubmVsX2lkIiwicnVsZXNDaGFubmVsSWQiLCJydWxlc19jaGFubmVsX2lkIiwicHVibGljVXBkYXRlc0NoYW5uZWxJZCIsInB1YmxpY191cGRhdGVzX2NoYW5uZWxfaWQiLCJwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkIiwicHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCIsImxhcmdlIiwib3duZXIiLCJ3aWRnZXRFbmFibGVkIiwid2lkZ2V0X2VuYWJsZWQiLCJ1bmF2YWlsYWJsZSIsImljb25IYXNoIiwiaWNvbl9oYXNoIiwicHJlc2VuY2VzIiwicHJlc2VuY2UiLCJzYWZldHlBbGVydHNDaGFubmVsSWQiLCJzYWZldHlfYWxlcnRzX2NoYW5uZWxfaWQiLCJjdXN0b21pemVycyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFnQ2dCQTs7O2VBQUFBOzs7dUJBckJUO3VCQUNzQzt1QkFHaEI7QUFFN0IsTUFBTUMsWUFBWTtJQUNoQixJQUFJQyxXQUFVO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQ0MsUUFBUSxFQUFFLE9BQU8sSUFBSUMsaUJBQVU7UUFFekMsTUFBTUYsVUFBVSxJQUFJLENBQUNDLFFB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
@@ -88,47 +88,52 @@ const baseInteraction = {
88
88
  }
89
89
  };
90
90
  function transformInteraction(bot, payload) {
91
- const guildId = payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined;
92
- const user = bot.transformers.user(bot, payload.member?.user ?? payload.user);
91
+ const guildId = payload.interaction.guild_id ? bot.transformers.snowflake(payload.interaction.guild_id) : undefined;
92
+ const user = bot.transformers.user(bot, payload.interaction.member?.user ?? payload.interaction.user);
93
93
  const interaction = Object.create(baseInteraction);
94
94
  const props = bot.transformers.desiredProperties.interaction;
95
95
  interaction.bot = bot;
96
96
  interaction.acknowledged = false;
97
- if (props.id && payload.id) interaction.id = bot.transformers.snowflake(payload.id);
98
- if (props.applicationId && payload.application_id) interaction.applicationId = bot.transformers.snowflake(payload.application_id);
99
- if (props.type && payload.type) interaction.type = payload.type;
100
- if (props.token && payload.token) interaction.token = payload.token;
101
- if (props.version && payload.version) interaction.version = payload.version;
102
- if (props.locale && payload.locale) interaction.locale = payload.locale;
103
- if (props.guildLocale && payload.guild_locale) interaction.guildLocale = payload.guild_locale;
97
+ if (props.id && payload.interaction.id) interaction.id = bot.transformers.snowflake(payload.interaction.id);
98
+ if (props.applicationId && payload.interaction.application_id) interaction.applicationId = bot.transformers.snowflake(payload.interaction.application_id);
99
+ if (props.type && payload.interaction.type) interaction.type = payload.interaction.type;
100
+ if (props.token && payload.interaction.token) interaction.token = payload.interaction.token;
101
+ if (props.version && payload.interaction.version) interaction.version = payload.interaction.version;
102
+ if (props.locale && payload.interaction.locale) interaction.locale = payload.interaction.locale;
103
+ if (props.guildLocale && payload.interaction.guild_locale) interaction.guildLocale = payload.interaction.guild_locale;
104
+ if (props.guild && payload.interaction.guild) // @ts-expect-error payload.interaction.guild is a Partial<DiscordGuild>
105
+ interaction.guild = bot.transformers.guild(bot, {
106
+ guild: payload.interaction.guild,
107
+ shardId: payload.shardId
108
+ });
104
109
  if (props.guildId && guildId) interaction.guildId = guildId;
105
110
  if (props.user && user) interaction.user = user;
106
- if (props.appPermissions && payload.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.app_permissions);
107
- if (props.message && payload.message) interaction.message = bot.transformers.message(bot, payload.message);
108
- if (props.channel && payload.channel) interaction.channel = bot.transformers.channel(bot, {
109
- channel: payload.channel,
111
+ if (props.appPermissions && payload.interaction.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.interaction.app_permissions);
112
+ if (props.message && payload.interaction.message) interaction.message = bot.transformers.message(bot, payload.interaction.message);
113
+ if (props.channel && payload.interaction.channel) interaction.channel = bot.transformers.channel(bot, {
114
+ channel: payload.interaction.channel,
110
115
  guildId
111
116
  });
112
- if (props.channelId && payload.channel_id) interaction.channelId = bot.transformers.snowflake(payload.channel_id);
113
- if (props.member && guildId && payload.member) interaction.member = bot.transformers.member(bot, payload.member, guildId, user.id);
114
- if (props.authorizingIntegrationOwners && payload.authorizing_integration_owners) {
117
+ if (props.channelId && payload.interaction.channel_id) interaction.channelId = bot.transformers.snowflake(payload.interaction.channel_id);
118
+ if (props.member && guildId && payload.interaction.member) interaction.member = bot.transformers.member(bot, payload.interaction.member, guildId, user.id);
119
+ if (props.authorizingIntegrationOwners && payload.interaction.authorizing_integration_owners) {
115
120
  interaction.authorizingIntegrationOwners = {};
116
- if (payload.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.authorizing_integration_owners['0']);
117
- if (payload.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.authorizing_integration_owners['1']);
121
+ if (payload.interaction.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['0']);
122
+ if (payload.interaction.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['1']);
118
123
  }
119
- if (props.context && payload.context) interaction.context = payload.context;
120
- if (props.data && payload.data) {
124
+ if (props.context && payload.interaction.context) interaction.context = payload.interaction.context;
125
+ if (props.data && payload.interaction.data) {
121
126
  interaction.data = {
122
- type: payload.data.type,
123
- componentType: payload.data.component_type,
124
- customId: payload.data.custom_id,
125
- components: payload.data.components?.map((component)=>bot.transformers.component(bot, component)),
126
- values: payload.data.values,
127
- id: payload.data.id ? bot.transformers.snowflake(payload.data.id) : undefined,
128
- name: payload.data.name,
129
- resolved: payload.data.resolved ? transformInteractionDataResolved(bot, payload.data.resolved, guildId) : undefined,
130
- options: payload.data.options?.map((opt)=>bot.transformers.interactionDataOptions(bot, opt)),
131
- targetId: payload.data.target_id ? bot.transformers.snowflake(payload.data.target_id) : undefined
127
+ type: payload.interaction.data.type,
128
+ componentType: payload.interaction.data.component_type,
129
+ customId: payload.interaction.data.custom_id,
130
+ components: payload.interaction.data.components?.map((component)=>bot.transformers.component(bot, component)),
131
+ values: payload.interaction.data.values,
132
+ id: payload.interaction.data.id ? bot.transformers.snowflake(payload.interaction.data.id) : undefined,
133
+ name: payload.interaction.data.name,
134
+ resolved: payload.interaction.data.resolved ? transformInteractionDataResolved(bot, payload.interaction.data.resolved, guildId) : undefined,
135
+ options: payload.interaction.data.options?.map((opt)=>bot.transformers.interactionDataOptions(bot, opt)),
136
+ targetId: payload.interaction.data.target_id ? bot.transformers.snowflake(payload.interaction.data.target_id) : undefined
132
137
  };
133
138
  }
134
139
  return bot.transformers.customizers.interaction(bot, payload, interaction);
@@ -211,4 +216,4 @@ function transformInteractionDataResolved(bot, resolved, guildId) {
211
216
  return transformed;
212
217
  }
213
218
 
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLFxuICBJbnRlcmFjdGlvblR5cGVzLFxuICBNZXNzYWdlRmxhZ3MsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXMsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kVHlwZXMsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENoYW5uZWxUeXBlcyxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgdHlwZSBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgdHlwZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIEJvdCxcbiAgdHlwZSBDaGFubmVsLFxuICB0eXBlIENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkQ2hhbm5lbCxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25Db250ZXh0VHlwZSxcbn0gZnJvbSAnLi4vaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB9IGZyb20gJy4uL3R5cGluZ3MuanMnXG5pbXBvcnQgdHlwZSB7IEF0dGFjaG1lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4vbWVtYmVyLmpzJ1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLmpzJ1xuaW1wb3J0IHR5cGUgeyBSb2xlIH0gZnJvbSAnLi9yb2xlLmpzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIGV4dGVuZHMgQmFzZUludGVyYWN0aW9uIHtcbiAgLyoqIFRoZSBib3Qgb2JqZWN0ICovXG4gIGJvdDogQm90XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGludGVyYWN0aW9uIGhhcyBiZWVuIHJlc3BvbmRlZCB0by4gKi9cbiAgYWNrbm93bGVkZ2VkOiBib29sZWFuXG4gIC8qKiBJZCBvZiB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogSWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRoaXMgaW50ZXJhY3Rpb24gaXMgZm9yICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gKi9cbiAgdHlwZTogSW50ZXJhY3Rpb25UeXBlc1xuICAvKiogVGhlIGd1aWxkIGl0IHdhcyBzZW50IGZyb20gKi9cbiAgZ3VpbGRJZD86IGJpZ2ludFxuICAvKiogVGhlIGNoYW5uZWwgaXQgd2FzIHNlbnQgZnJvbSAqL1xuICBjaGFubmVsOiBQYXJ0aWFsPENoYW5uZWw+XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgY2hhbm5lbCBpdCB3YXMgc2VudCBmcm9tXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGJlZ2luIHVzaW5nIHRoaXMgY2hhbm5lbCBmaWVsZCB0byBpZGVudGlmeSB0aGUgc291cmNlIGNoYW5uZWwgb2YgdGhlIGludGVyYWN0aW9uIGFzIHRoZXkgbWF5IGRlcHJlY2F0ZSB0aGUgZXhpc3RpbmcgY2hhbm5lbF9pZCBmaWVsZCBpbiB0aGUgZnV0dXJlLlxuICAgKi9cbiAgY2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBHdWlsZCBtZW1iZXIgZGF0YSBmb3IgdGhlIGludm9raW5nIHVzZXIsIGluY2x1ZGluZyBwZXJtaXNzaW9ucyAqL1xuICBtZW1iZXI/OiBNZW1iZXJcbiAgLyoqIFVzZXIgb2JqZWN0IGZvciB0aGUgaW52b2tpbmcgdXNlciwgaWYgaW52b2tlZCBpbiBhIERNICovXG4gIHVzZXI6IFVzZXJcbiAgLyoqIEEgY29udGludWF0aW9uIHRva2VuIGZvciByZXNwb25kaW5nIHRvIHRoZSBpbnRlcmFjdGlvbiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBSZWFkLW9ubHkgcHJvcGVydHksIGFsd2F5cyBgMWAgKi9cbiAgdmVyc2lvbjogMVxuICAvKiogRm9yIHRoZSBtZXNzYWdlIHRoZSBidXR0b24gd2FzIGF0dGFjaGVkIHRvICovXG4gIG1lc3NhZ2U/OiBNZXNzYWdlXG4gIC8qKiB0aGUgY29tbWFuZCBkYXRhIHBheWxvYWQgKi9cbiAgZGF0YT86IHtcbiAgICB0eXBlPzogQXBwbGljYXRpb25Db21tYW5kVHlwZXNcbiAgICBjb21wb25lbnRUeXBlPzogTWVzc2FnZUNvbXBvbmVudFR5cGVzXG4gICAgY3VzdG9tSWQ/OiBzdHJpbmdcbiAgICBjb21wb25lbnRzPzogQ29tcG9uZW50W11cbiAgICB2YWx1ZXM/OiBzdHJpbmdbXVxuICAgIG5hbWU6IHN0cmluZ1xuICAgIHJlc29sdmVkPzogSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWRcbiAgICBvcHRpb25zPzogSW50ZXJhY3Rpb25EYXRhT3B0aW9uW11cbiAgICBpZD86IGJpZ2ludFxuICAgIHRhcmdldElkPzogYmlnaW50XG4gICAgLy8gZ3VpbGRJZD86IGJpZ2ludFxuICB9XG4gIC8qKiBUaGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugb2YgdGhlIGludm9raW5nIHVzZXIgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKiBUaGUgZ3VpbGQncyBwcmVmZXJyZWQgbG9jYWxlLCBpZiBpbnZva2VkIGluIGEgZ3VpbGQgKi9cbiAgZ3VpbGRMb2NhbGU/OiBzdHJpbmdcbiAgLyoqIFRoZSBjb21wdXRlZCBwZXJtaXNzaW9ucyBmb3IgYSBib3Qgb3IgYXBwIGluIHRoZSBjb250ZXh0IG9mIGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24gKGluY2x1ZGluZyBjaGFubmVsIG92ZXJ3cml0ZXMpICovXG4gIGFwcFBlcm1pc3Npb25zOiBiaWdpbnRcbiAgLyoqIE1hcHBpbmcgb2YgaW5zdGFsbGF0aW9uIGNvbnRleHRzIHRoYXQgdGhlIGludGVyYWN0aW9uIHdhcyBhdXRob3JpemVkIGZvciB0byByZWxhdGVkIHVzZXIgb3IgZ3VpbGQgSURzLiAqL1xuICBhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzOiBQYXJ0aWFsPFJlY29yZDxEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUsIGJpZ2ludD4+XG4gIC8qKiBDb250ZXh0IHdoZXJlIHRoZSBpbnRlcmFjdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20gKi9cbiAgY29udGV4dD86IERpc2NvcmRJbnRlcmFjdGlvbkNvbnRleHRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUludGVyYWN0aW9uIHtcbiAgLyoqXG4gICAqIFNlbmRzIGEgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBzZW5kIGEge0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2V9LCB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdH0gb3Ige0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbH0gcmVzcG9uc2UgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIGludGVyYWN0aW9uIHlvdSBhcmUgcmVzcG9uZGluZyB0by5cbiAgICpcbiAgICogSWYgdGhlIGludGVyYWN0aW9uIGhhcyBiZWVuIGFscmVhZHkgYWNrbm93bGVkZ2VkLCBpbmRpY2F0ZWQgYnkge0BsaW5rIEludGVyYWN0aW9uLmFja25vd2xlZGdlZH0sIGl0IHdpbGwgc2VuZCBhIGZvbGxvd3VwIG1lc3NhZ2UgaW5zdGVhZC5cbiAgICpcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAsIGBpbnRlcmFjdGlvbi50b2tlbmAgYW5kIGBpbnRlcmFjdGlvbi5pZGAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVzcG9uZDogKHJlc3BvbnNlOiBzdHJpbmcgfCBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KSA9PiBQcm9taXNlPE1lc3NhZ2UgfCB2b2lkPlxuICAvKipcbiAgICogRWRpdCB0aGUgb3JpZ2luYWwgcmVzcG9uc2Ugb2YgYW4gaW50ZXJhY3Rpb24gb3IgYSBmb2xsb3d1cCBpZiB0aGUgbWVzc2FnZSBpZCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIGVkaXQgdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uIHJlc3BvbnNlIG9yLCBpZiB0aGUgaW50ZXJhY3Rpb24gaGFzIG5vdCB5ZXQgYmVlbiBhY2tub3dsZWRnZWQgYW5kIHRoZSB0eXBlIG9mIHRoZSBpbnRlcmFjdGlvbiBpcyB7QGxpbmsgSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50fSBpdCB3aWxsIGluc3RlYWQgc2VuZCBhIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuVXBkYXRlTWVzc2FnZX0gcmVzcG9uc2UgaW5zdGVhZC5cbiAgICpcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAsIGBpbnRlcmFjdGlvbi50b2tlbmAgYW5kIGBpbnRlcmFjdGlvbi5pZGAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgZWRpdDogKHJlc3BvbnNlOiBzdHJpbmcgfCBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSwgbWVzc2FnZUlkPzogQmlnU3RyaW5nKSA9PiBQcm9taXNlPE1lc3NhZ2UgfCB2b2lkPlxuICAvKipcbiAgICogRGVmZXIgdGhlIGludGVyYWN0aW9uIGZvciB1cGRhdGluZyB0aGUgcmVmZXJlbmNlZCBtZXNzYWdlIGF0IGEgbGF0ZXIgdGltZSB3aXRoIHtAbGluayBlZGl0fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIHNlbmQgYSB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkVXBkYXRlTWVzc2FnZX0gcmVzcG9uc2UuXG4gICAqXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgLCBgaW50ZXJhY3Rpb24udG9rZW5gIGFuZCBgaW50ZXJhY3Rpb24uaWRgLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIGRlZmVyRWRpdDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVmZXIgdGhlIGludGVyYWN0aW9uIGZvciB1cGRhdGluZyB0aGUgcmVzcG9uc2UgYXQgYSBsYXRlciB0aW1lIHdpdGgge0BsaW5rIGVkaXR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgc2VuZCBhIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2V9IHJlc3BvbnNlLlxuICAgKlxuICAgKiBVc2VzIGBpbnRlcmFjdGlvbi50eXBlYCwgYGludGVyYWN0aW9uLnRva2VuYCBhbmQgYGludGVyYWN0aW9uLmlkYCwgbWlzc2luZyBvbmUgb2YgdGhlc2UgaW4gdGhlIGRlc2lyZWQgcHJvcHJpZXRpZXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAqL1xuICBkZWZlcjogKGlzUHJpdmF0ZT86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24gcmVzcG9uc2Ugb3IgYSBmb2xsb3d1cCBpZiB0aGUgbWVzc2FnZSBpZCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAgYW5kIGBpbnRlcmFjdGlvbi50b2tlbmAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgZGVsZXRlOiAobWVzc2FnZUlkPzogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmNvbnN0IGJhc2VJbnRlcmFjdGlvbjogUGFydGlhbDxJbnRlcmFjdGlvbj4gJiBCYXNlSW50ZXJhY3Rpb24gPSB7XG4gIGFzeW5jIHJlc3BvbmQocmVzcG9uc2UsIG9wdGlvbnMpIHtcbiAgICBsZXQgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2VcblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYSBzdHJpbmcsIGNoYW5nZSBpdCB0byBhIHJlc3BvbnNlIG9iamVjdFxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnKSByZXNwb25zZSA9IHsgY29udGVudDogcmVzcG9uc2UgfVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhbiBvYmplY3QsIGRldGVybWluZSBpZiBpdCBzaG91bGQgYmUgYW4gYXV0b2NvbXBsZXRlIG9yIGEgbW9kYWwgcmVzcG9uc2VcbiAgICBpZiAocmVzcG9uc2UudGl0bGUpIHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuTW9kYWxcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHRcbiAgICBpZiAodHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSAmJiBvcHRpb25zPy5pc1ByaXZhdGUpIHJlc3BvbnNlLmZsYWdzID0gTWVzc2FnZUZsYWdzLkVwaGVtZXJhbFxuXG4gICAgLy8gU2luY2UgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGdpdmVuIGEgcmVzcG9uc2UsIGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBtdXN0IGJlIGZvbGxvd3Vwcy5cbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5zZW5kRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4hLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9KVxuICB9LFxuICBhc3luYyBlZGl0KHJlc3BvbnNlLCBtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYSBzdHJpbmcsIGNoYW5nZSBpdCB0byBhIHJlc3BvbnNlIG9iamVjdFxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnKSByZXNwb25zZSA9IHsgY29udGVudDogcmVzcG9uc2UgfVxuXG4gICAgaWYgKG1lc3NhZ2VJZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90Py5oZWxwZXJzLmVkaXRGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiEsIG1lc3NhZ2VJZCwgcmVzcG9uc2UpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFja25vd2xlZGdlZCkge1xuICAgICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGludGVyYWN0aW9uIGhhcyBub3QgYmVlbiByZXNwb25kZWQgdG8geWV0IGFuZCB0aGlzIGlzbid0IGEgTWVzc2FnZUNvbXBvbmVudCBpbnRlcmFjdGlvbi5cIilcblxuICAgICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCEsIHRoaXMudG9rZW4hLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5lZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4hLCByZXNwb25zZSlcbiAgfSxcbiAgYXN5bmMgZGVmZXJFZGl0KCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCEsIHRoaXMudG9rZW4hLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSlcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwge1xuICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgZGF0YToge1xuICAgICAgICBmbGFnczogaXNQcml2YXRlID8gTWVzc2FnZUZsYWdzLkVwaGVtZXJhbCA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSxcbiAgYXN5bmMgZGVsZXRlKG1lc3NhZ2VJZCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWxldGUgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uJylcblxuICAgIGlmIChtZXNzYWdlSWQpIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiEsIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiEpXG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uKTogSW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG4gIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLm1lbWJlcj8udXNlciA/PyBwYXlsb2FkLnVzZXIhKVxuXG4gIGNvbnN0IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiA9IE9iamVjdC5jcmVhdGUoYmFzZUludGVyYWN0aW9uKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25cbiAgaW50ZXJhY3Rpb24uYm90ID0gYm90XG4gIGludGVyYWN0aW9uLmFja25vd2xlZGdlZCA9IGZhbHNlXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGludGVyYWN0aW9uLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLmFwcGxpY2F0aW9uSWQgJiYgcGF5bG9hZC5hcHBsaWNhdGlvbl9pZCkgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQudmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQudmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkSWQgJiYgZ3VpbGRJZCkgaW50ZXJhY3Rpb24uZ3VpbGRJZCA9IGd1aWxkSWRcbiAgaWYgKHByb3BzLnVzZXIgJiYgdXNlcikgaW50ZXJhY3Rpb24udXNlciA9IHVzZXJcbiAgaWYgKHByb3BzLmFwcFBlcm1pc3Npb25zICYmIHBheWxvYWQuYXBwX3Blcm1pc3Npb25zKSBpbnRlcmFjdGlvbi5hcHBQZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwX3Blcm1pc3Npb25zKVxuICBpZiAocHJvcHMubWVzc2FnZSAmJiBwYXlsb2FkLm1lc3NhZ2UpIGludGVyYWN0aW9uLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBwYXlsb2FkLm1lc3NhZ2UpXG4gIGlmIChwcm9wcy5jaGFubmVsICYmIHBheWxvYWQuY2hhbm5lbCkgaW50ZXJhY3Rpb24uY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC5jaGFubmVsIGFzIERpc2NvcmRDaGFubmVsLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5jaGFubmVsX2lkKSBpbnRlcmFjdGlvbi5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLm1lbWJlcikgaW50ZXJhY3Rpb24ubWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBwYXlsb2FkLm1lbWJlciwgZ3VpbGRJZCwgdXNlci5pZClcbiAgaWYgKHByb3BzLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgJiYgcGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMpIHtcbiAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzID0ge31cblxuICAgIGlmIChwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMCddKVxuICAgICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc1tEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuR3VpbGRJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMCddLFxuICAgICAgKVxuICAgIGlmIChwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddKVxuICAgICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc1tEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuVXNlckluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10sXG4gICAgICApXG4gIH1cbiAgaWYgKHByb3BzLmNvbnRleHQgJiYgcGF5bG9hZC5jb250ZXh0KSBpbnRlcmFjdGlvbi5jb250ZXh0ID0gcGF5bG9hZC5jb250ZXh0XG4gIGlmIChwcm9wcy5kYXRhICYmIHBheWxvYWQuZGF0YSkge1xuICAgIGludGVyYWN0aW9uLmRhdGEgPSB7XG4gICAgICB0eXBlOiBwYXlsb2FkLmRhdGEudHlwZSxcbiAgICAgIGNvbXBvbmVudFR5cGU6IHBheWxvYWQuZGF0YS5jb21wb25lbnRfdHlwZSxcbiAgICAgIGN1c3RvbUlkOiBwYXlsb2FkLmRhdGEuY3VzdG9tX2lkLFxuICAgICAgY29tcG9uZW50czogcGF5bG9hZC5kYXRhLmNvbXBvbmVudHM/Lm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpLFxuICAgICAgdmFsdWVzOiBwYXlsb2FkLmRhdGEudmFsdWVzLFxuICAgICAgaWQ6IHBheWxvYWQuZGF0YS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZGF0YS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiBwYXlsb2FkLmRhdGEubmFtZSxcbiAgICAgIHJlc29sdmVkOiBwYXlsb2FkLmRhdGEucmVzb2x2ZWQgPyB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQuZGF0YS5yZXNvbHZlZCwgZ3VpbGRJZCkgOiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zOiBwYXlsb2FkLmRhdGEub3B0aW9ucz8ubWFwKChvcHQpID0+IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdCkpLFxuICAgICAgdGFyZ2V0SWQ6IHBheWxvYWQuZGF0YS50YXJnZXRfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmRhdGEudGFyZ2V0X2lkKSA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIGd1aWxkSWQ6IHBheWxvYWQuZGF0YS5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZGF0YS5ndWlsZF9pZCkgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb24oYm90LCBwYXlsb2FkLCBpbnRlcmFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbihib3Q6IEJvdCwgb3B0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhT3B0aW9uKTogSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgY29uc3Qgb3B0ID0ge1xuICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgb3B0aW9uczogb3B0aW9uLm9wdGlvbnMsXG4gICAgZm9jdXNlZDogb3B0aW9uLmZvY3VzZWQsXG4gIH0gYXMgSW50ZXJhY3Rpb25EYXRhT3B0aW9uXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdGlvbiwgb3B0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90OiBCb3QsIHJlc29sdmVkOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsIGd1aWxkSWQ/OiBiaWdpbnQpOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIGNvbnN0IHRyYW5zZm9ybWVkOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCA9IHt9XG5cbiAgaWYgKHJlc29sdmVkLm1lc3NhZ2VzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVzc2FnZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLm1lc3NhZ2VzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFttZXNzYWdlLmlkLCBtZXNzYWdlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHJlc29sdmVkLnVzZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQudXNlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLnVzZXJzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFt1c2VyLmlkLCB1c2VyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKGd1aWxkSWQgJiYgcmVzb2x2ZWQubWVtYmVycykge1xuICAgIHRyYW5zZm9ybWVkLm1lbWJlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLm1lbWJlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVyOiBNZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHZhbHVlLCBndWlsZElkLCBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCkpXG4gICAgICAgIHJldHVybiBbbWVtYmVyLmlkLCBtZW1iZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAoZ3VpbGRJZCAmJiByZXNvbHZlZC5yb2xlcykge1xuICAgIHRyYW5zZm9ybWVkLnJvbGVzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZC5yb2xlcykubWFwKChbaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCByb2xlID0gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgeyByb2xlOiB2YWx1ZSwgZ3VpbGRJZCB9KVxuICAgICAgICByZXR1cm4gW3JvbGUuaWQsIHJvbGVdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocmVzb2x2ZWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQuY2hhbm5lbHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICBjb25zdCBjaGFubmVsID0gdmFsdWUgYXMge1xuICAgICAgICAgIGlkOiBzdHJpbmdcbiAgICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgICB0eXBlOiBDaGFubmVsVHlwZXNcbiAgICAgICAgICBwZXJtaXNzaW9uczogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG5hbWU6IGNoYW5uZWwubmFtZSxcbiAgICAgICAgICAgIHR5cGU6IGNoYW5uZWwudHlwZSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShjaGFubmVsLnBlcm1pc3Npb25zKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocmVzb2x2ZWQuYXR0YWNobWVudHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5hdHRhY2htZW50cyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQuYXR0YWNobWVudHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICByZXR1cm4gW2lkLCBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCB2YWx1ZSldXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gdHJhbnNmb3JtZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIG1lc3NhZ2VzPzogQ29sbGVjdGlvbjxiaWdpbnQsIE1lc3NhZ2U+XG4gIHVzZXJzPzogQ29sbGVjdGlvbjxiaWdpbnQsIFVzZXI+XG4gIG1lbWJlcnM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgTWVtYmVyPlxuICByb2xlcz86IENvbGxlY3Rpb248YmlnaW50LCBSb2xlPlxuICBjaGFubmVscz86IENvbGxlY3Rpb248YmlnaW50LCB7IGlkOiBiaWdpbnQ7IG5hbWU6IHN0cmluZzsgdHlwZTogQ2hhbm5lbFR5cGVzOyBwZXJtaXNzaW9uczogYmlnaW50IH0+XG4gIGF0dGFjaG1lbnRzPzogQ29sbGVjdGlvbjxiaWdpbnQsIEF0dGFjaG1lbnQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6IEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICBvcHRpb25zPzogSW50ZXJhY3Rpb25EYXRhT3B0aW9uW11cbiAgZm9jdXNlZD86IGJvb2xlYW5cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1JbnRlcmFjdGlvbiIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbiIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwiYmFzZUludGVyYWN0aW9uIiwicmVzcG9uZCIsInJlc3BvbnNlIiwib3B0aW9ucyIsInR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJjb250ZW50IiwidGl0bGUiLCJNb2RhbCIsIkludGVyYWN0aW9uVHlwZXMiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIk1lc3NhZ2VGbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJ1bmRlZmluZWQiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJwYXlsb2FkIiwiZ3VpbGRJZCIsImd1aWxkX2lkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwidXNlciIsIm1lbWJlciIsImludGVyYWN0aW9uIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvcHMiLCJkZXNpcmVkUHJvcGVydGllcyIsImFwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbl9pZCIsInZlcnNpb24iLCJsb2NhbGUiLCJndWlsZExvY2FsZSIsImd1aWxkX2xvY2FsZSIsImFwcFBlcm1pc3Npb25zIiwiYXBwX3Blcm1pc3Npb25zIiwibWVzc2FnZSIsImNoYW5uZWwiLCJjaGFubmVsSWQiLCJjaGFubmVsX2lkIiwiYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyIsImF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycyIsIkRpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZSIsIkd1aWxkSW5zdGFsbCIsIlVzZXJJbnN0YWxsIiwiY29udGV4dCIsImNvbXBvbmVudFR5cGUiLCJjb21wb25lbnRfdHlwZSIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwiY29tcG9uZW50cyIsIm1hcCIsImNvbXBvbmVudCIsInZhbHVlcyIsIm5hbWUiLCJyZXNvbHZlZCIsIm9wdCIsImludGVyYWN0aW9uRGF0YU9wdGlvbnMiLCJ0YXJnZXRJZCIsInRhcmdldF9pZCIsImN1c3RvbWl6ZXJzIiwib3B0aW9uIiwidmFsdWUiLCJmb2N1c2VkIiwidHJhbnNmb3JtZWQiLCJtZXNzYWdlcyIsIkNvbGxlY3Rpb24iLCJlbnRyaWVzIiwidXNlcnMiLCJtZW1iZXJzIiwicm9sZXMiLCJyb2xlIiwiY2hhbm5lbHMiLCJrZXkiLCJwZXJtaXNzaW9ucyIsImF0dGFjaG1lbnRzIiwiYXR0YWNobWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUE4TWdCQSxvQkFBb0I7ZUFBcEJBOztJQXVEQUMsOEJBQThCO2VBQTlCQTs7SUFZQUMsZ0NBQWdDO2VBQWhDQTs7O3VCQXJRVDt1QkFDb0I7dUJBUXBCO0FBa0hQLE1BQU1DLGtCQUEwRDtJQUM5RCxNQUFNQyxTQUFRQyxRQUFRLEVBQUVDLE9BQU87UUFDN0IsSUFBSUMsT0FBT0MsK0JBQXdCLENBQUNDLHdCQUF3QjtRQUU1RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUFPSixhQUFhLFVBQVVBLFdBQVc7WUFBRUssU0FBU0w7UUFBUztRQUVqRSw0RkFBNEY7UUFDNUYsSUFBSUEsU0FBU00sS0FBSyxFQUFFSixPQUFPQywrQkFBd0IsQ0FBQ0ksS0FBSztRQUN6RCxJQUFJLElBQUksQ0FBQ0wsSUFBSSxLQUFLTSx1QkFBZ0IsQ0FBQ0MsOEJBQThCLEVBQUVQLE9BQU9DLCtCQUF3QixDQUFDTyxvQ0FBb0M7UUFDdkksSUFBSVIs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
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLFxuICBJbnRlcmFjdGlvblR5cGVzLFxuICBNZXNzYWdlRmxhZ3MsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXMsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kVHlwZXMsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENoYW5uZWxUeXBlcyxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgdHlwZSBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgdHlwZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIEJvdCxcbiAgdHlwZSBDaGFubmVsLFxuICB0eXBlIENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkQ2hhbm5lbCxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25Db250ZXh0VHlwZSxcbiAgdHlwZSBHdWlsZCxcbn0gZnJvbSAnLi4vaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB9IGZyb20gJy4uL3R5cGluZ3MuanMnXG5pbXBvcnQgdHlwZSB7IEF0dGFjaG1lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4vbWVtYmVyLmpzJ1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLmpzJ1xuaW1wb3J0IHR5cGUgeyBSb2xlIH0gZnJvbSAnLi9yb2xlLmpzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIGV4dGVuZHMgQmFzZUludGVyYWN0aW9uIHtcbiAgLyoqIFRoZSBib3Qgb2JqZWN0ICovXG4gIGJvdDogQm90XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGludGVyYWN0aW9uIGhhcyBiZWVuIHJlc3BvbmRlZCB0by4gKi9cbiAgYWNrbm93bGVkZ2VkOiBib29sZWFuXG4gIC8qKiBJZCBvZiB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogSWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRoaXMgaW50ZXJhY3Rpb24gaXMgZm9yICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gKi9cbiAgdHlwZTogSW50ZXJhY3Rpb25UeXBlc1xuICAvKiogR3VpbGQgdGhhdCB0aGUgaW50ZXJhY3Rpb24gd2FzIHNlbnQgZnJvbSAqL1xuICBndWlsZDogR3VpbGRcbiAgLyoqIFRoZSBndWlsZCBpdCB3YXMgc2VudCBmcm9tICovXG4gIGd1aWxkSWQ/OiBiaWdpbnRcbiAgLyoqIFRoZSBjaGFubmVsIGl0IHdhcyBzZW50IGZyb20gKi9cbiAgY2hhbm5lbDogUGFydGlhbDxDaGFubmVsPlxuICAvKipcbiAgICogVGhlIElEIG9mIGNoYW5uZWwgaXQgd2FzIHNlbnQgZnJvbVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBiZWdpbiB1c2luZyB0aGlzIGNoYW5uZWwgZmllbGQgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBjaGFubmVsIG9mIHRoZSBpbnRlcmFjdGlvbiBhcyB0aGV5IG1heSBkZXByZWNhdGUgdGhlIGV4aXN0aW5nIGNoYW5uZWxfaWQgZmllbGQgaW4gdGhlIGZ1dHVyZS5cbiAgICovXG4gIGNoYW5uZWxJZD86IGJpZ2ludFxuICAvKiogR3VpbGQgbWVtYmVyIGRhdGEgZm9yIHRoZSBpbnZva2luZyB1c2VyLCBpbmNsdWRpbmcgcGVybWlzc2lvbnMgKi9cbiAgbWVtYmVyPzogTWVtYmVyXG4gIC8qKiBVc2VyIG9iamVjdCBmb3IgdGhlIGludm9raW5nIHVzZXIsIGlmIGludm9rZWQgaW4gYSBETSAqL1xuICB1c2VyOiBVc2VyXG4gIC8qKiBBIGNvbnRpbnVhdGlvbiB0b2tlbiBmb3IgcmVzcG9uZGluZyB0byB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogUmVhZC1vbmx5IHByb3BlcnR5LCBhbHdheXMgYDFgICovXG4gIHZlcnNpb246IDFcbiAgLyoqIEZvciB0aGUgbWVzc2FnZSB0aGUgYnV0dG9uIHdhcyBhdHRhY2hlZCB0byAqL1xuICBtZXNzYWdlPzogTWVzc2FnZVxuICAvKiogdGhlIGNvbW1hbmQgZGF0YSBwYXlsb2FkICovXG4gIGRhdGE/OiB7XG4gICAgdHlwZT86IEFwcGxpY2F0aW9uQ29tbWFuZFR5cGVzXG4gICAgY29tcG9uZW50VHlwZT86IE1lc3NhZ2VDb21wb25lbnRUeXBlc1xuICAgIGN1c3RvbUlkPzogc3RyaW5nXG4gICAgY29tcG9uZW50cz86IENvbXBvbmVudFtdXG4gICAgdmFsdWVzPzogc3RyaW5nW11cbiAgICBuYW1lOiBzdHJpbmdcbiAgICByZXNvbHZlZD86IEludGVyYWN0aW9uRGF0YVJlc29sdmVkXG4gICAgb3B0aW9ucz86IEludGVyYWN0aW9uRGF0YU9wdGlvbltdXG4gICAgaWQ/OiBiaWdpbnRcbiAgICB0YXJnZXRJZD86IGJpZ2ludFxuICAgIC8vIGd1aWxkSWQ/OiBiaWdpbnRcbiAgfVxuICAvKiogVGhlIHNlbGVjdGVkIGxhbmd1YWdlIG9mIHRoZSBpbnZva2luZyB1c2VyICovXG4gIGxvY2FsZT86IHN0cmluZ1xuICAvKiogVGhlIGd1aWxkJ3MgcHJlZmVycmVkIGxvY2FsZSwgaWYgaW52b2tlZCBpbiBhIGd1aWxkICovXG4gIGd1aWxkTG9jYWxlPzogc3RyaW5nXG4gIC8qKiBUaGUgY29tcHV0ZWQgcGVybWlzc2lvbnMgZm9yIGEgYm90IG9yIGFwcCBpbiB0aGUgY29udGV4dCBvZiBhIHNwZWNpZmljIGludGVyYWN0aW9uIChpbmNsdWRpbmcgY2hhbm5lbCBvdmVyd3JpdGVzKSAqL1xuICBhcHBQZXJtaXNzaW9uczogYmlnaW50XG4gIC8qKiBNYXBwaW5nIG9mIGluc3RhbGxhdGlvbiBjb250ZXh0cyB0aGF0IHRoZSBpbnRlcmFjdGlvbiB3YXMgYXV0aG9yaXplZCBmb3IgdG8gcmVsYXRlZCB1c2VyIG9yIGd1aWxkIElEcy4gKi9cbiAgYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyczogUGFydGlhbDxSZWNvcmQ8RGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLCBiaWdpbnQ+PlxuICAvKiogQ29udGV4dCB3aGVyZSB0aGUgaW50ZXJhY3Rpb24gd2FzIHRyaWdnZXJlZCBmcm9tICovXG4gIGNvbnRleHQ/OiBEaXNjb3JkSW50ZXJhY3Rpb25Db250ZXh0VHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VJbnRlcmFjdGlvbiB7XG4gIC8qKlxuICAgKiBTZW5kcyBhIHJlc3BvbnNlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgc2VuZCBhIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlfSwge0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHR9IG9yIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuTW9kYWx9IHJlc3BvbnNlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBpbnRlcmFjdGlvbiB5b3UgYXJlIHJlc3BvbmRpbmcgdG8uXG4gICAqXG4gICAqIElmIHRoZSBpbnRlcmFjdGlvbiBoYXMgYmVlbiBhbHJlYWR5IGFja25vd2xlZGdlZCwgaW5kaWNhdGVkIGJ5IHtAbGluayBJbnRlcmFjdGlvbi5hY2tub3dsZWRnZWR9LCBpdCB3aWxsIHNlbmQgYSBmb2xsb3d1cCBtZXNzYWdlIGluc3RlYWQuXG4gICAqXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgLCBgaW50ZXJhY3Rpb24udG9rZW5gIGFuZCBgaW50ZXJhY3Rpb24uaWRgLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIHJlc3BvbmQ6IChyZXNwb25zZTogc3RyaW5nIHwgSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSkgPT4gUHJvbWlzZTxNZXNzYWdlIHwgdm9pZD5cbiAgLyoqXG4gICAqIEVkaXQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlIG9mIGFuIGludGVyYWN0aW9uIG9yIGEgZm9sbG93dXAgaWYgdGhlIG1lc3NhZ2UgaWQgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBlZGl0IHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbiByZXNwb25zZSBvciwgaWYgdGhlIGludGVyYWN0aW9uIGhhcyBub3QgeWV0IGJlZW4gYWNrbm93bGVkZ2VkIGFuZCB0aGUgdHlwZSBvZiB0aGUgaW50ZXJhY3Rpb24gaXMge0BsaW5rIEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudH0gaXQgd2lsbCBpbnN0ZWFkIHNlbmQgYSB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLlVwZGF0ZU1lc3NhZ2V9IHJlc3BvbnNlIGluc3RlYWQuXG4gICAqXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgLCBgaW50ZXJhY3Rpb24udG9rZW5gIGFuZCBgaW50ZXJhY3Rpb24uaWRgLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIGVkaXQ6IChyZXNwb25zZTogc3RyaW5nIHwgSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsIG1lc3NhZ2VJZD86IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxNZXNzYWdlIHwgdm9pZD5cbiAgLyoqXG4gICAqIERlZmVyIHRoZSBpbnRlcmFjdGlvbiBmb3IgdXBkYXRpbmcgdGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBhdCBhIGxhdGVyIHRpbWUgd2l0aCB7QGxpbmsgZWRpdH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBzZW5kIGEge0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2V9IHJlc3BvbnNlLlxuICAgKlxuICAgKiBVc2VzIGBpbnRlcmFjdGlvbi50eXBlYCwgYGludGVyYWN0aW9uLnRva2VuYCBhbmQgYGludGVyYWN0aW9uLmlkYCwgbWlzc2luZyBvbmUgb2YgdGhlc2UgaW4gdGhlIGRlc2lyZWQgcHJvcHJpZXRpZXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAqL1xuICBkZWZlckVkaXQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlZmVyIHRoZSBpbnRlcmFjdGlvbiBmb3IgdXBkYXRpbmcgdGhlIHJlc3BvbnNlIGF0IGEgbGF0ZXIgdGltZSB3aXRoIHtAbGluayBlZGl0fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIHNlbmQgYSB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlfSByZXNwb25zZS5cbiAgICpcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAsIGBpbnRlcmFjdGlvbi50b2tlbmAgYW5kIGBpbnRlcmFjdGlvbi5pZGAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgZGVmZXI6IChpc1ByaXZhdGU/OiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uIHJlc3BvbnNlIG9yIGEgZm9sbG93dXAgaWYgdGhlIG1lc3NhZ2UgaWQgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgIGFuZCBgaW50ZXJhY3Rpb24udG9rZW5gLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIGRlbGV0ZTogKG1lc3NhZ2VJZD86IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5jb25zdCBiYXNlSW50ZXJhY3Rpb246IFBhcnRpYWw8SW50ZXJhY3Rpb24+ICYgQmFzZUludGVyYWN0aW9uID0ge1xuICBhc3luYyByZXNwb25kKHJlc3BvbnNlLCBvcHRpb25zKSB7XG4gICAgbGV0IHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlXG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGEgc3RyaW5nLCBjaGFuZ2UgaXQgdG8gYSByZXNwb25zZSBvYmplY3RcbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykgcmVzcG9uc2UgPSB7IGNvbnRlbnQ6IHJlc3BvbnNlIH1cblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYW4gb2JqZWN0LCBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIGJlIGFuIGF1dG9jb21wbGV0ZSBvciBhIG1vZGFsIHJlc3BvbnNlXG4gICAgaWYgKHJlc3BvbnNlLnRpdGxlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlUmVzdWx0XG4gICAgaWYgKHR5cGUgPT09IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UgJiYgb3B0aW9ucz8uaXNQcml2YXRlKSByZXNwb25zZS5mbGFncyA9IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWxcblxuICAgIC8vIFNpbmNlIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBnaXZlbiBhIHJlc3BvbnNlLCBhbnkgZnVydGhlciByZXNwb25zZXMgbXVzdCBiZSBmb2xsb3d1cHMuXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuISwgcmVzcG9uc2UpXG5cbiAgICAvLyBNb2RhbHMgY2Fubm90IGJlIGNoYWluZWRcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLk1vZGFsU3VibWl0ICYmIHR5cGUgPT09IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbClcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlc3BvbmQgdG8gYSBtb2RhbCBpbnRlcmFjdGlvbiB3aXRoIGFub3RoZXIgbW9kYWwuJylcblxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkISwgdGhpcy50b2tlbiEsIHsgdHlwZSwgZGF0YTogcmVzcG9uc2UgfSlcbiAgfSxcbiAgYXN5bmMgZWRpdChyZXNwb25zZSwgbWVzc2FnZUlkKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGEgc3RyaW5nLCBjaGFuZ2UgaXQgdG8gYSByZXNwb25zZSBvYmplY3RcbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykgcmVzcG9uc2UgPSB7IGNvbnRlbnQ6IHJlc3BvbnNlIH1cblxuICAgIGlmIChtZXNzYWdlSWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5lZGl0Rm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4hLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBpbnRlcmFjdGlvbiBoYXMgbm90IGJlZW4gcmVzcG9uZGVkIHRvIHlldCBhbmQgdGhpcyBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuVXBkYXRlTWVzc2FnZSwgZGF0YTogcmVzcG9uc2UgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLnRva2VuISwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdCgpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlZmVyIGFuIGFscmVhZHkgcmVzcG9uZGVkIGludGVyYWN0aW9uLicpXG5cbiAgICBpZiAodGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1lc3NhZ2VDb21wb25lbnQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGVmZXIgdG8gdGhlbiBlZGl0IGFuIGludGVyYWN0aW9uIHRoYXQgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IGludGVyYWN0aW9uLlwiKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRVcGRhdGVNZXNzYWdlIH0pXG4gIH0sXG4gIGFzeW5jIGRlZmVyKGlzUHJpdmF0ZSkge1xuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkISwgdGhpcy50b2tlbiEsIHtcbiAgICAgIHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pXG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4hLCBtZXNzYWdlSWQpXG4gICAgZWxzZSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4hKVxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb24oYm90OiBCb3QsIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb246IERpc2NvcmRJbnRlcmFjdGlvbjsgc2hhcmRJZDogbnVtYmVyIH0pOiBJbnRlcmFjdGlvbiB7XG4gIGNvbnN0IGd1aWxkSWQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCkgOiB1bmRlZmluZWRcbiAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyPy51c2VyID8/IHBheWxvYWQuaW50ZXJhY3Rpb24udXNlciEpXG5cbiAgY29uc3QgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uID0gT2JqZWN0LmNyZWF0ZShiYXNlSW50ZXJhY3Rpb24pXG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblxuICBpbnRlcmFjdGlvbi5ib3QgPSBib3RcbiAgaW50ZXJhY3Rpb24uYWNrbm93bGVkZ2VkID0gZmFsc2VcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5pZCkgaW50ZXJhY3Rpb24uaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmlkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICAgIGludGVyYWN0aW9uLmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGUpIGludGVyYWN0aW9uLnR5cGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGVcbiAgaWYgKHByb3BzLnRva2VuICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udG9rZW4pIGludGVyYWN0aW9uLnRva2VuID0gcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlblxuICBpZiAocHJvcHMudmVyc2lvbiAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb24pIGludGVyYWN0aW9uLnZlcnNpb24gPSBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb25cbiAgaWYgKHByb3BzLmxvY2FsZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZSkgaW50ZXJhY3Rpb24ubG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkTG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlKSBpbnRlcmFjdGlvbi5ndWlsZExvY2FsZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlXG4gIGlmIChwcm9wcy5ndWlsZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCBpcyBhIFBhcnRpYWw8RGlzY29yZEd1aWxkPlxuICAgIGludGVyYWN0aW9uLmd1aWxkID0gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHsgZ3VpbGQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICBpZiAocHJvcHMuZ3VpbGRJZCAmJiBndWlsZElkKSBpbnRlcmFjdGlvbi5ndWlsZElkID0gZ3VpbGRJZFxuICBpZiAocHJvcHMudXNlciAmJiB1c2VyKSBpbnRlcmFjdGlvbi51c2VyID0gdXNlclxuICBpZiAocHJvcHMuYXBwUGVybWlzc2lvbnMgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBfcGVybWlzc2lvbnMpXG4gICAgaW50ZXJhY3Rpb24uYXBwUGVybWlzc2lvbnMgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlKSBpbnRlcmFjdGlvbi5tZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlKVxuICBpZiAocHJvcHMuY2hhbm5lbCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwpXG4gICAgaW50ZXJhY3Rpb24uY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsIGFzIERpc2NvcmRDaGFubmVsLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsX2lkKSBpbnRlcmFjdGlvbi5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcilcbiAgICBpbnRlcmFjdGlvbi5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyLCBndWlsZElkLCB1c2VyLmlkKVxuICBpZiAocHJvcHMuYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycykge1xuICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgPSB7fVxuXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5HdWlsZEluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10sXG4gICAgICApXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5Vc2VySW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSxcbiAgICAgIClcbiAgfVxuICBpZiAocHJvcHMuY29udGV4dCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHQpIGludGVyYWN0aW9uLmNvbnRleHQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHRcbiAgaWYgKHByb3BzLmRhdGEgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhKSB7XG4gICAgaW50ZXJhY3Rpb24uZGF0YSA9IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50eXBlLFxuICAgICAgY29tcG9uZW50VHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmNvbXBvbmVudF90eXBlLFxuICAgICAgY3VzdG9tSWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jdXN0b21faWQsXG4gICAgICBjb21wb25lbnRzOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50cz8ubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSksXG4gICAgICB2YWx1ZXM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS52YWx1ZXMsXG4gICAgICBpZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5uYW1lLFxuICAgICAgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZCA/IHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkLCBndWlsZElkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG9wdGlvbnM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5vcHRpb25zPy5tYXAoKG9wdCkgPT4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0KSksXG4gICAgICB0YXJnZXRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50YXJnZXRfaWQpIDogdW5kZWZpbmVkLFxuICAgICAgLy8gZ3VpbGRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmd1aWxkX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmd1aWxkX2lkKSA6IHVuZGVmaW5lZCxcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbihib3QsIHBheWxvYWQsIGludGVyYWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uKGJvdDogQm90LCBvcHRpb246IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24pOiBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBjb25zdCBvcHQgPSB7XG4gICAgbmFtZTogb3B0aW9uLm5hbWUsXG4gICAgdHlwZTogb3B0aW9uLnR5cGUsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICBmb2N1c2VkOiBvcHRpb24uZm9jdXNlZCxcbiAgfSBhcyBJbnRlcmFjdGlvbkRhdGFPcHRpb25cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0aW9uLCBvcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3Q6IEJvdCwgcmVzb2x2ZWQ6IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCwgZ3VpbGRJZD86IGJpZ2ludCk6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgY29uc3QgdHJhbnNmb3JtZWQ6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkID0ge31cblxuICBpZiAocmVzb2x2ZWQubWVzc2FnZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZXNzYWdlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQubWVzc2FnZXMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHZhbHVlKVxuICAgICAgICByZXR1cm4gW21lc3NhZ2UuaWQsIG1lc3NhZ2VdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocmVzb2x2ZWQudXNlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC51c2VycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQudXNlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHZhbHVlKVxuICAgICAgICByZXR1cm4gW3VzZXIuaWQsIHVzZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAoZ3VpbGRJZCAmJiByZXNvbHZlZC5tZW1iZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQubWVtYmVycykubWFwKChbaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBtZW1iZXI6IE1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgdmFsdWUsIGd1aWxkSWQsIGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGlkKSlcbiAgICAgICAgcmV0dXJuIFttZW1iZXIuaWQsIG1lbWJlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChndWlsZElkICYmIHJlc29sdmVkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLnJvbGVzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHZhbHVlLCBndWlsZElkIH0pXG4gICAgICAgIHJldHVybiBbcm9sZS5pZCwgcm9sZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChyZXNvbHZlZC5jaGFubmVscykge1xuICAgIHRyYW5zZm9ybWVkLmNoYW5uZWxzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZC5jaGFubmVscykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSB2YWx1ZSBhcyB7XG4gICAgICAgICAgaWQ6IHN0cmluZ1xuICAgICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICAgIHR5cGU6IENoYW5uZWxUeXBlc1xuICAgICAgICAgIHBlcm1pc3Npb25zOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbmFtZTogY2hhbm5lbC5uYW1lLFxuICAgICAgICAgICAgdHlwZTogY2hhbm5lbC50eXBlLFxuICAgICAgICAgICAgcGVybWlzc2lvbnM6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGNoYW5uZWwucGVybWlzc2lvbnMpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChyZXNvbHZlZC5hdHRhY2htZW50cykge1xuICAgIHRyYW5zZm9ybWVkLmF0dGFjaG1lbnRzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZC5hdHRhY2htZW50cykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIHJldHVybiBbaWQsIGJvdC50cmFuc2Zvcm1lcnMuYXR0YWNobWVudChib3QsIHZhbHVlKV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiB0cmFuc2Zvcm1lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgbWVzc2FnZXM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgTWVzc2FnZT5cbiAgdXNlcnM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgVXNlcj5cbiAgbWVtYmVycz86IENvbGxlY3Rpb248YmlnaW50LCBNZW1iZXI+XG4gIHJvbGVzPzogQ29sbGVjdGlvbjxiaWdpbnQsIFJvbGU+XG4gIGNoYW5uZWxzPzogQ29sbGVjdGlvbjxiaWdpbnQsIHsgaWQ6IGJpZ2ludDsgbmFtZTogc3RyaW5nOyB0eXBlOiBDaGFubmVsVHlwZXM7IHBlcm1pc3Npb25zOiBiaWdpbnQgfT5cbiAgYXR0YWNobWVudHM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgQXR0YWNobWVudD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXNcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXG4gIG9wdGlvbnM/OiBJbnRlcmFjdGlvbkRhdGFPcHRpb25bXVxuICBmb2N1c2VkPzogYm9vbGVhblxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUludGVyYWN0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJiYXNlSW50ZXJhY3Rpb24iLCJyZXNwb25kIiwicmVzcG9uc2UiLCJvcHRpb25zIiwidHlwZSIsIkludGVyYWN0aW9uUmVzcG9uc2VUeXBlcyIsIkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSIsImNvbnRlbnQiLCJ0aXRsZSIsIk1vZGFsIiwiSW50ZXJhY3Rpb25UeXBlcyIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdCIsImlzUHJpdmF0ZSIsImZsYWdzIiwiTWVzc2FnZUZsYWdzIiwiRXBoZW1lcmFsIiwiYWNrbm93bGVkZ2VkIiwiYm90IiwiaGVscGVycyIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIk1vZGFsU3VibWl0IiwiRXJyb3IiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImlkIiwiZGF0YSIsImVkaXQiLCJtZXNzYWdlSWQiLCJlZGl0Rm9sbG93dXBNZXNzYWdlIiwiTWVzc2FnZUNvbXBvbmVudCIsIlVwZGF0ZU1lc3NhZ2UiLCJlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZGVmZXJFZGl0IiwiRGVmZXJyZWRVcGRhdGVNZXNzYWdlIiwiZGVmZXIiLCJEZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSIsInVuZGVmaW5lZCIsImRlbGV0ZSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsInBheWxvYWQiLCJndWlsZElkIiwiaW50ZXJhY3Rpb24iLCJndWlsZF9pZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsInVzZXIiLCJtZW1iZXIiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwidmVyc2lvbiIsImxvY2FsZSIsImd1aWxkTG9jYWxlIiwiZ3VpbGRfbG9jYWxlIiwiZ3VpbGQiLCJzaGFyZElkIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiY29tcG9uZW50VHlwZSIsImNvbXBvbmVudF90eXBlIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJjb21wb25lbnRzIiwibWFwIiwiY29tcG9uZW50IiwidmFsdWVzIiwibmFtZSIsInJlc29sdmVkIiwib3B0IiwiaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyIsInRhcmdldElkIiwidGFyZ2V0X2lkIiwiY3VzdG9taXplcnMiLCJvcHRpb24iLCJ2YWx1ZSIsImZvY3VzZWQiLCJ0cmFuc2Zvcm1lZCIsIm1lc3NhZ2VzIiwiQ29sbGVjdGlvbiIsImVudHJpZXMiLCJ1c2VycyIsIm1lbWJlcnMiLCJyb2xlcyIsInJvbGUiLCJjaGFubmVscyIsImtleSIsInBlcm1pc3Npb25zIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWlOZ0JBLG9CQUFvQjtlQUFwQkE7O0lBOERBQyw4QkFBOEI7ZUFBOUJBOztJQVlBQyxnQ0FBZ0M7ZUFBaENBOzs7dUJBL1FUO3VCQUNvQjt1QkFTcEI7QUFvSFAsTUFBTUMsa0JBQTBEO0lBQzlELE1BQU1DLFNBQVFDLFFBQVEsRUFBRUMsT0FBTztRQUM3QixJQUFJQyxPQUFPQywrQkFBd0IsQ0FBQ0Msd0JBQXdCO1FBRTVELDREQUE0RDtRQUM1RCxJQUFJLE9BQU9KLGFBQWEsVUFBVUEsV0FBVztZQUFFSyxTQUFTTDtRQUFTO1FBRWpFLDRGQUE0RjtRQUM1RixJQUFJQSxTQUFTTSxLQUFLLEVBQUVKLE9BQU9DLCtCQUF3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