@discordeno/gateway 20.0.0 → 21.0.0-next.ceec87f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { randomBytes } from 'node:crypto';
1
2
  import { GatewayIntents, GatewayOpcodes } from '@discordeno/types';
2
3
  import { Collection, delay, logger } from '@discordeno/utils';
3
4
  import Shard from './Shard.js';
@@ -421,7 +422,17 @@ export function createGatewayManager(options) {
421
422
  gateway.logger.debug(`[Gateway] requestMembers guildId: ${guildId} -> setting user limit based on userIds length: ${options.userIds.length}`);
422
423
  options.limit = options.userIds.length;
423
424
  }
424
- const members = !gateway.cache.requestMembers.enabled || !options?.nonce ? [] : new Promise((resolve, reject)=>{
425
+ if (!options?.nonce) {
426
+ let nonce = '';
427
+ while(!nonce || gateway.cache.requestMembers.pending.has(nonce)){
428
+ nonce = randomBytes(16).toString('hex');
429
+ }
430
+ options ??= {
431
+ limit: 0
432
+ };
433
+ options.nonce = nonce;
434
+ }
435
+ const members = !gateway.cache.requestMembers.enabled ? [] : new Promise((resolve, reject)=>{
425
436
  // Should never happen.
426
437
  if (!gateway.cache.requestMembers.enabled || !options?.nonce) {
427
438
  reject(new Error("Can't request the members without the nonce or with the feature disabled."));
@@ -484,4 +495,4 @@ export function createGatewayManager(options) {
484
495
  return gateway;
485
496
  }
486
497
 
487
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQXRMZWFzdE9uZSxcbiAgdHlwZSBCaWdTdHJpbmcsXG4gIHR5cGUgQ2FtZWxpemUsXG4gIHR5cGUgRGlzY29yZEdldEdhdGV3YXlCb3QsXG4gIHR5cGUgRGlzY29yZE1lbWJlcldpdGhVc2VyLFxuICB0eXBlIERpc2NvcmRSZWFkeSxcbiAgR2F0ZXdheUludGVudHMsXG4gIEdhdGV3YXlPcGNvZGVzLFxuICB0eXBlIFJlcXVlc3RHdWlsZE1lbWJlcnMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgZGVsYXksIGxvZ2dlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IFNoYXJkIGZyb20gJy4vU2hhcmQuanMnXG5pbXBvcnQge1xuICB0eXBlIEJvdFN0YXR1c1VwZGF0ZSxcbiAgdHlwZSBTaGFyZEV2ZW50cyxcbiAgU2hhcmRTb2NrZXRDbG9zZUNvZGVzLFxuICB0eXBlIFNoYXJkU29ja2V0UmVxdWVzdCxcbiAgdHlwZSBTdGF0dXNVcGRhdGUsXG4gIHR5cGUgVHJhbnNwb3J0Q29tcHJlc3Npb24sXG4gIHR5cGUgVXBkYXRlVm9pY2VTdGF0ZSxcbn0gZnJvbSAnLi90eXBlcy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdhdGV3YXlNYW5hZ2VyKG9wdGlvbnM6IENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyk6IEdhdGV3YXlNYW5hZ2VyIHtcbiAgY29uc3QgY29ubmVjdGlvbk9wdGlvbnMgPSBvcHRpb25zLmNvbm5lY3Rpb24gPz8ge1xuICAgIHVybDogJ3dzczovL2dhdGV3YXkuZGlzY29yZC5nZycsXG4gICAgc2hhcmRzOiAxLFxuICAgIHNlc3Npb25TdGFydExpbWl0OiB7XG4gICAgICBtYXhDb25jdXJyZW5jeTogMSxcbiAgICAgIHJlbWFpbmluZzogMTAwMCxcbiAgICAgIHRvdGFsOiAxMDAwLFxuICAgICAgcmVzZXRBZnRlcjogMTAwMCAqIDYwICogNjAgKiAyNCxcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgZ2F0ZXdheTogR2F0ZXdheU1hbmFnZXIgPSB7XG4gICAgZXZlbnRzOiBvcHRpb25zLmV2ZW50cyA/PyB7fSxcbiAgICBjb21wcmVzczogb3B0aW9ucy5jb21wcmVzcyA/PyBmYWxzZSxcbiAgICB0cmFuc3BvcnRDb21wcmVzc2lvbjogb3B0aW9ucy50cmFuc3BvcnRDb21wcmVzc2lvbiA/PyBudWxsLFxuICAgIGludGVudHM6IG9wdGlvbnMuaW50ZW50cyA/PyAwLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIG9zOiBvcHRpb25zLnByb3BlcnRpZXM/Lm9zID8/IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICBicm93c2VyOiBvcHRpb25zLnByb3BlcnRpZXM/LmJyb3dzZXIgPz8gJ0Rpc2NvcmRlbm8nLFxuICAgICAgZGV2aWNlOiBvcHRpb25zLnByb3BlcnRpZXM/LmRldmljZSA/PyAnRGlzY29yZGVubycsXG4gICAgfSxcbiAgICB0b2tlbjogb3B0aW9ucy50b2tlbixcbiAgICB1cmw6IG9wdGlvbnMudXJsID8/IGNvbm5lY3Rpb25PcHRpb25zLnVybCA/PyAnd3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnJyxcbiAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gMTAsXG4gICAgY29ubmVjdGlvbjogY29ubmVjdGlvbk9wdGlvbnMsXG4gICAgdG90YWxTaGFyZHM6IG9wdGlvbnMudG90YWxTaGFyZHMgPz8gY29ubmVjdGlvbk9wdGlvbnMuc2hhcmRzID8/IDEsXG4gICAgbGFzdFNoYXJkSWQ6IG9wdGlvbnMubGFzdFNoYXJkSWQgPz8gKG9wdGlvbnMudG90YWxTaGFyZHMgPyBvcHRpb25zLnRvdGFsU2hhcmRzIC0gMSA6IGNvbm5lY3Rpb25PcHRpb25zID8gY29ubmVjdGlvbk9wdGlvbnMuc2hhcmRzIC0gMSA6IDApLFxuICAgIGZpcnN0U2hhcmRJZDogb3B0aW9ucy5maXJzdFNoYXJkSWQgPz8gMCxcbiAgICB0b3RhbFdvcmtlcnM6IG9wdGlvbnMudG90YWxXb3JrZXJzID8/IDQsXG4gICAgc2hhcmRzUGVyV29ya2VyOiBvcHRpb25zLnNoYXJkc1BlcldvcmtlciA/PyAyNSxcbiAgICBzcGF3blNoYXJkRGVsYXk6IG9wdGlvbnMuc3Bhd25TaGFyZERlbGF5ID8/IDUzMDAsXG4gICAgcHJlZmVyU25ha2VDYXNlOiBvcHRpb25zLnByZWZlclNuYWtlQ2FzZSA/PyBmYWxzZSxcbiAgICBzaGFyZHM6IG5ldyBNYXAoKSxcbiAgICBidWNrZXRzOiBuZXcgTWFwKCksXG4gICAgY2FjaGU6IHtcbiAgICAgIHJlcXVlc3RNZW1iZXJzOiB7XG4gICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuY2FjaGU/LnJlcXVlc3RNZW1iZXJzPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICBwZW5kaW5nOiBuZXcgQ29sbGVjdGlvbigpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIgPz8gbG9nZ2VyLFxuICAgIG1ha2VQcmVzZW5jZTogb3B0aW9ucy5tYWtlUHJlc2VuY2UgPz8gKCgpID0+IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpKSxcbiAgICByZXNoYXJkaW5nOiB7XG4gICAgICBlbmFibGVkOiBvcHRpb25zLnJlc2hhcmRpbmc/LmVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgIHNoYXJkc0Z1bGxQZXJjZW50YWdlOiBvcHRpb25zLnJlc2hhcmRpbmc/LnNoYXJkc0Z1bGxQZXJjZW50YWdlID8/IDgwLFxuICAgICAgY2hlY2tJbnRlcnZhbDogb3B0aW9ucy5yZXNoYXJkaW5nPy5jaGVja0ludGVydmFsID8/IDI4ODAwMDAwLCAvLyA4IGhvdXJzXG4gICAgICBzaGFyZHM6IG5ldyBDb2xsZWN0aW9uKCksXG4gICAgICBwZW5kaW5nU2hhcmRzOiBuZXcgQ29sbGVjdGlvbigpLFxuICAgICAgZ2V0U2Vzc2lvbkluZm86IG9wdGlvbnMucmVzaGFyZGluZz8uZ2V0U2Vzc2lvbkluZm8sXG4gICAgICB1cGRhdGVHdWlsZHNTaGFyZElkOiBvcHRpb25zLnJlc2hhcmRpbmc/LnVwZGF0ZUd1aWxkc1NoYXJkSWQsXG4gICAgICBhc3luYyBjaGVja0lmUmVzaGFyZGluZ0lzTmVlZGVkKCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIENoZWNraW5nIGlmIHJlc2hhcmRpbmcgaXMgbmVlZGVkLicpXG5cbiAgICAgICAgaWYgKCFnYXRld2F5LnJlc2hhcmRpbmcuZW5hYmxlZCkge1xuICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKCdbUmVzaGFyZGluZ10gUmVzaGFyZGluZyBpcyBkaXNhYmxlZC4nKVxuXG4gICAgICAgICAgcmV0dXJuIHsgbmVlZGVkOiBmYWxzZSB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWdhdGV3YXkucmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIltSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIGlzIGVuYWJsZWQgYnV0IG5vICdyZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKCknIGlzIG5vdCBwcm92aWRlZC5cIilcbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKCdbUmVzaGFyZGluZ10gUmVzaGFyZGluZyBpcyBlbmFibGVkLicpXG5cbiAgICAgICAgY29uc3Qgc2Vzc2lvbkluZm8gPSBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8oKVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gU2Vzc2lvbiBpbmZvIHJldHJpZXZlZDogJHtKU09OLnN0cmluZ2lmeShzZXNzaW9uSW5mbyl9YClcblxuICAgICAgICAvLyBEb24ndCBoYXZlIGVub3VnaCBpZGVudGlmeSBsaW1pdHMgdG8gdHJ5IHJlc2hhcmRpbmdcbiAgICAgICAgaWYgKHNlc3Npb25JbmZvLnNlc3Npb25TdGFydExpbWl0LnJlbWFpbmluZyA8IHNlc3Npb25JbmZvLnNoYXJkcykge1xuICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKCdbUmVzaGFyZGluZ10gTm90IGVub3VnaCBzZXNzaW9uIHN0YXJ0IGxpbWl0cyBsZWZ0IHRvIHJlc2hhcmQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UsIGluZm86IHNlc3Npb25JbmZvIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKCdbUmVzaGFyZGluZ10gQWJsZSB0byByZXNoYXJkLCBjaGVja2luZyB3aGV0aGVyIG5lY2Vzc2FyeSBub3cuJylcblxuICAgICAgICAvLyAyNTAwIGlzIHRoZSBtYXggYW1vdW50IG9mIGd1aWxkcyBhIHNpbmdsZSBzaGFyZCBjYW4gaGFuZGxlXG4gICAgICAgIC8vIDEwMDAgaXMgdGhlIGFtb3VudCBvZiBndWlsZHMgZGlzY29yZCB1c2VzIHRvIGRldGVybWluZSBob3cgbWFueSBzaGFyZHMgdG8gcmVjb21tZW5kLlxuICAgICAgICAvLyBUaGlzIGFsZ28gaGVscHMgY2hlY2sgaWYgeW91ciBib3QgaGFzIGdyb3duIGVub3VnaCB0byByZXNoYXJkLlxuICAgICAgICAvLyBXaGlsZSB0aGlzIGlzIGltcHJlY2lzZSBhcyBkaXNjb3JkIGNoYW5nZXMgdGhlIHJlY29tbWVuZGVkIG51bWJlciBvZiBzaGFyZCBldmVyeSAxMDAwIGd1aWxkcyBpdCBpcyBnb29kIGVub3VnaFxuICAgICAgICAvLyBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gc3RvcmUgdGhlIGd1aWxkIGNvdW50IGZvciBlYWNoIHNoYXJkIGFuZCByZXF1aXJlIHRoZSBHdWlsZHMgaW50ZW50IGZvciBgR1VJTERfQ1JFQVRFYCBhbmQgYEdVSUxEX0RFTEVURWAgZXZlbnRzXG4gICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSAoc2Vzc2lvbkluZm8uc2hhcmRzIC8gKChnYXRld2F5LnRvdGFsU2hhcmRzICogMjUwMCkgLyAxMDAwKSkgKiAxMDBcblxuICAgICAgICAvLyBMZXNzIHRoYW4gbmVjZXNzYXJ5JSBiZWluZyB1c2VkIHNvIGRvIG5vdGhpbmdcbiAgICAgICAgaWYgKHBlcmNlbnRhZ2UgPCBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzRnVsbFBlcmNlbnRhZ2UpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgbm90IG5lZWRlZC4nKVxuXG4gICAgICAgICAgcmV0dXJuIHsgbmVlZGVkOiBmYWxzZSwgaW5mbzogc2Vzc2lvbkluZm8gfVxuICAgICAgICB9XG5cbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuaW5mbygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgbmVlZGVkLicpXG5cbiAgICAgICAgcmV0dXJuIHsgbmVlZGVkOiB0cnVlLCBpbmZvOiBzZXNzaW9uSW5mbyB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgcmVzaGFyZChpbmZvKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBTdGFydGluZyB0aGUgcmVzaGFyZCBwcm9jZXNzLiBQcmV2aW91cyB0b3RhbCBzaGFyZHM6ICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICAvLyBTZXQgdmFsdWVzIG9uIGdhdGV3YXlcbiAgICAgICAgZ2F0ZXdheS50b3RhbFNoYXJkcyA9IGluZm8uc2hhcmRzXG4gICAgICAgIC8vIEhhbmRsZXMgcHJlcGFyaW5nIG1pZCBzaXplZCBib3RzIGZvciBMQlNcbiAgICAgICAgZ2F0ZXdheS50b3RhbFNoYXJkcyA9IGdhdGV3YXkuY2FsY3VsYXRlVG90YWxTaGFyZHMoKVxuICAgICAgICAvLyBTZXQgZmlyc3Qgc2hhcmQgaWQgaWYgcHJvdmlkZWQgaW4gaW5mb1xuICAgICAgICBpZiAodHlwZW9mIGluZm8uZmlyc3RTaGFyZElkID09PSAnbnVtYmVyJykgZ2F0ZXdheS5maXJzdFNoYXJkSWQgPSBpbmZvLmZpcnN0U2hhcmRJZFxuICAgICAgICAvLyBTZXQgbGFzdCBzaGFyZCBpZCBpZiBwcm92aWRlZCBpbiBpbmZvXG4gICAgICAgIGlmICh0eXBlb2YgaW5mby5sYXN0U2hhcmRJZCA9PT0gJ251bWJlcicpIGdhdGV3YXkubGFzdFNoYXJkSWQgPSBpbmZvLmxhc3RTaGFyZElkXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBTdGFydGluZyB0aGUgcmVzaGFyZCBwcm9jZXNzLiBOZXcgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcblxuICAgICAgICAvLyBSZXNldHRpbmcgYnVja2V0c1xuICAgICAgICBnYXRld2F5LmJ1Y2tldHMuY2xlYXIoKVxuICAgICAgICAvLyBSZWZpbGxpbmcgYnVja2V0cyB3aXRoIG5ldyB2YWx1ZXNcbiAgICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgICAgLy8gU1BSRUFEIFRISVMgT1VUIFRPIERJRkZFUkVOVCBXT1JLRVJTIFRPIEJFR0lOIFNUQVJUSU5HIFVQXG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5mb3JFYWNoKGFzeW5jIChidWNrZXQsIGJ1Y2tldElkKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCB3b3JrZXIgb2YgYnVja2V0LndvcmtlcnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2hhcmRJZCBvZiB3b3JrZXIucXVldWUpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLnRlbGxXb3JrZXJUb1ByZXBhcmUod29ya2VyLmlkLCBzaGFyZElkLCBidWNrZXRJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgYXN5bmMgdGVsbFdvcmtlclRvUHJlcGFyZSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtSZXNoYXJkaW5nXSBUZWxsaW5nIHdvcmtlciB0byBwcmVwYXJlLiBXb3JrZXI6ICR7d29ya2VySWR9IHwgU2hhcmQ6ICR7c2hhcmRJZH0gfCBCdWNrZXQ6ICR7YnVja2V0SWR9LmApXG4gICAgICAgIGNvbnN0IHNoYXJkID0gbmV3IFNoYXJkKHtcbiAgICAgICAgICBpZDogc2hhcmRJZCxcbiAgICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgICBjb21wcmVzczogZ2F0ZXdheS5jb21wcmVzcyxcbiAgICAgICAgICAgIHRyYW5zcG9ydENvbXByZXNzaW9uOiBnYXRld2F5LnRyYW5zcG9ydENvbXByZXNzaW9uID8/IG51bGwsXG4gICAgICAgICAgICBpbnRlbnRzOiBnYXRld2F5LmludGVudHMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBnYXRld2F5LnByb3BlcnRpZXMsXG4gICAgICAgICAgICB0b2tlbjogZ2F0ZXdheS50b2tlbixcbiAgICAgICAgICAgIHRvdGFsU2hhcmRzOiBnYXRld2F5LnRvdGFsU2hhcmRzLFxuICAgICAgICAgICAgdXJsOiBnYXRld2F5LnVybCxcbiAgICAgICAgICAgIHZlcnNpb246IGdhdGV3YXkudmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIElnbm9yZSBldmVudHMgdW50aWwgd2UgYXJlIHJlYWR5XG4gICAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgICBhc3luYyBtZXNzYWdlKF9zaGFyZCwgcGF5bG9hZCkge1xuICAgICAgICAgICAgICBpZiAocGF5bG9hZC50ID09PSAnUkVBRFknKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLnVwZGF0ZUd1aWxkc1NoYXJkSWQ/LihcbiAgICAgICAgICAgICAgICAgIChwYXlsb2FkLmQgYXMgRGlzY29yZFJlYWR5KS5ndWlsZHMubWFwKChnKSA9PiBnLmlkKSxcbiAgICAgICAgICAgICAgICAgIHNoYXJkSWQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9nZ2VyOiBnYXRld2F5LmxvZ2dlcixcbiAgICAgICAgICByZXF1ZXN0SWRlbnRpZnk6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkuaWRlbnRpZnkoc2hhcmRJZClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNoYXJkSXNSZWFkeTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtTaGFyZF0gU2hhcmQgIyR7c2hhcmRJZH0gaXMgcmVhZHlgKVxuICAgICAgICAgICAgYXdhaXQgZGVsYXkoZ2F0ZXdheS5zcGF3blNoYXJkRGVsYXkpXG4gICAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSBSZXNvbHZpbmcgc2hhcmQgaWRlbnRpZnkgcmVxdWVzdGApXG4gICAgICAgICAgICBnYXRld2F5LmJ1Y2tldHMuZ2V0KHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpIS5pZGVudGlmeVJlcXVlc3RzLnNoaWZ0KCk/LigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYWtlUHJlc2VuY2U6IGdhdGV3YXkubWFrZVByZXNlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChnYXRld2F5LnByZWZlclNuYWtlQ2FzZSkge1xuICAgICAgICAgIHNoYXJkLmZvcndhcmRUb0JvdCA9IGFzeW5jIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBzaGFyZC5ldmVudHM/Lm1lc3NhZ2U/LihzaGFyZCwgcGF5bG9hZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzLnNldChzaGFyZElkLCBzaGFyZClcblxuICAgICAgICBjb25zdCBidWNrZXQgPSBnYXRld2F5LmJ1Y2tldHMuZ2V0KHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG4gICAgICAgIGlmICghYnVja2V0KSByZXR1cm5cblxuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAvLyBNYXJrIHRoYXQgd2UgYXJlIG1ha2luZyBhbiBpZGVudGlmeSByZXF1ZXN0IHNvIGFub3RoZXIgaXMgbm90IG1hZGUuXG4gICAgICAgICAgYnVja2V0LmlkZW50aWZ5UmVxdWVzdHMucHVzaChyZXNvbHZlKVxuICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gSWRlbnRpZnlpbmcgU2hhcmQgIyR7c2hhcmRJZH0uYClcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBpZGVudGlmeSBhbmQgd2hlbiBSRUFEWSBpcyByZWNlaXZlZCBpdCB3aWxsIHJlc29sdmUgdGhlIGFib3ZlIHJlcXVlc3QuXG4gICAgICAgICAgc2hhcmQ/LmlkZW50aWZ5KCkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAvLyBUZWxsIHRoZSBtYW5hZ2VyIHRoYXQgdGhpcyBzaGFyZCBpcyBvbmxpbmVcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRJc1BlbmRpbmcoc2hhcmQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBhc3luYyBzaGFyZElzUGVuZGluZyhzaGFyZCkge1xuICAgICAgICAvLyBTYXZlIHRoaXMgaW4gcGVuZGluZyBhdCB0aGUgbW9tZW50LCB1bnRpbCBhbGwgc2hhcmRzIGFyZSBvbmxpbmVcbiAgICAgICAgZ2F0ZXdheS5yZXNoYXJkaW5nLnBlbmRpbmdTaGFyZHMuc2V0KHNoYXJkLmlkLCBzaGFyZClcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtSZXNoYXJkaW5nXSBTaGFyZCAjJHtzaGFyZC5pZH0gaXMgbm93IHBlbmRpbmcuYClcblxuICAgICAgICAvLyBDaGVjayBpZiBhbGwgc2hhcmRzIGFyZSBub3cgb25saW5lLlxuICAgICAgICBpZiAoZ2F0ZXdheS5sYXN0U2hhcmRJZCAtIGdhdGV3YXkuZmlyc3RTaGFyZElkID49IGdhdGV3YXkucmVzaGFyZGluZy5wZW5kaW5nU2hhcmRzLnNpemUpIHJldHVyblxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBBbGwgc2hhcmRzIGFyZSBub3cgb25saW5lLmApXG5cbiAgICAgICAgLy8gTmV3IHNoYXJkcyBzdGFydCBwcm9jZXNzaW5nIGV2ZW50c1xuICAgICAgICBmb3IgKGNvbnN0IHNoYXJkIG9mIGdhdGV3YXkucmVzaGFyZGluZy5zaGFyZHMudmFsdWVzKCkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IGluIG9wdGlvbnMuZXZlbnRzKSB7XG4gICAgICAgICAgICBzaGFyZC5ldmVudHNbZXZlbnQgYXMga2V5b2YgU2hhcmRFdmVudHNdID0gb3B0aW9ucy5ldmVudHNbZXZlbnQgYXMga2V5b2YgU2hhcmRFdmVudHNdIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd25cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbGQgc2hhcmRzIHN0b3AgcHJvY2Vzc2luZyBldmVudHNcbiAgICAgICAgZm9yIChjb25zdCBzaGFyZCBvZiBnYXRld2F5LnNoYXJkcy52YWx1ZXMoKSkge1xuICAgICAgICAgIGNvbnN0IG9sZEhhbmRsZXIgPSBzaGFyZC5ldmVudHMubWVzc2FnZVxuXG4gICAgICAgICAgLy8gQ2hhbmdlIHdpdGggc3ByZWFkIG9wZXJhdG9yIHRvIG5vdCBhZmZlY3QgbmV3IHNoYXJkcywgYXMgY2hhbmdpbmcgYW55dGhpbmcgb24gc2hhcmQuZXZlbnRzIHdpbGwgZGlyZWN0bHkgY2hhbmdlIG9wdGlvbnMuZXZlbnRzLCB3aGljaCBjaGFuZ2VzIG5ldyBzaGFyZHMnIGV2ZW50c1xuICAgICAgICAgIHNoYXJkLmV2ZW50cyA9IHtcbiAgICAgICAgICAgIC4uLnNoYXJkLmV2ZW50cyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGFzeW5jIGZ1bmN0aW9uIChfLCBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgIC8vIE1lbWJlciBjaGVja3MgbmVlZCB0byBjb250aW51ZSBidXQgb3RoZXJzIGNhbiBzdG9wXG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnQgPT09ICdHVUlMRF9NRU1CRVJTX0NIVU5LJykge1xuICAgICAgICAgICAgICAgIG9sZEhhbmRsZXI/LihzaGFyZCwgbWVzc2FnZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gU2h1dHRpbmcgZG93biBvbGQgc2hhcmRzLmApXG4gICAgICAgIC8vIENsb3NlIG9sZCBzaGFyZHNcbiAgICAgICAgYXdhaXQgZ2F0ZXdheS5zaHV0ZG93bihTaGFyZFNvY2tldENsb3NlQ29kZXMuUmVzaGFyZGVkLCAnUmVzaGFyZGVkIScsIGZhbHNlKVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oYFtSZXNoYXJkaW5nXSBDb21wbGV0ZWQuYClcblxuICAgICAgICAvLyBSZXBsYWNlIG9sZCBzaGFyZHNcbiAgICAgICAgZ2F0ZXdheS5zaGFyZHMgPSBuZXcgQ29sbGVjdGlvbihnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzKVxuXG4gICAgICAgIC8vIENsZWFyIG91ciBjb2xsZWN0aW9ucyBhbmQga2VlcCBvbmx5IG9uZSByZWZlcmVuY2UgdG8gdGhlIHNoYXJkcywgdGhlIG9uZSBpbiBnYXRld2F5LnNoYXJkc1xuICAgICAgICBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzLmNsZWFyKClcbiAgICAgICAgZ2F0ZXdheS5yZXNoYXJkaW5nLnBlbmRpbmdTaGFyZHMuY2xlYXIoKVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY2FsY3VsYXRlVG90YWxTaGFyZHMoKSB7XG4gICAgICAvLyBCb3RzIHVuZGVyIDEwMGsgc2VydmVycyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gTEJTLlxuICAgICAgaWYgKGdhdGV3YXkudG90YWxTaGFyZHMgPCAxMDApIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB0b3RhbCBzaGFyZHM6ICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIENhbGN1bGF0aW5nIHRvdGFsIHNoYXJkc2AsIGdhdGV3YXkudG90YWxTaGFyZHMsIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSlcbiAgICAgIC8vIENhbGN1bGF0ZSBhIG11bHRpcGxlIG9mIGBtYXhDb25jdXJyZW5jeWAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgZ2F0ZXdheS5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIE1hdGguY2VpbChcbiAgICAgICAgICBnYXRld2F5LnRvdGFsU2hhcmRzIC9cbiAgICAgICAgICAgIC8vIElmIGBtYXhDb25jdXJyZW5jeWAgaXMgMSwgd2UgY2FuIHNhZmVseSB1c2UgMTYgdG8gZ2V0IGB0b3RhbFNoYXJkc2AgdG8gYmUgaW4gYSBtdWx0aXBsZSBvZiAxNiBzbyB0aGF0IHdlIGNhbiBwcmVwYXJlIGJvdHMgd2l0aCAxMDBrIHNlcnZlcnMgZm9yIExCUy5cbiAgICAgICAgICAgIChnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgPT09IDEgPyAxNiA6IGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSksXG4gICAgICAgICkgKiAoZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5ID09PSAxID8gMTYgOiBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG4gICAgICApXG4gICAgfSxcbiAgICBjYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKSB7XG4gICAgICBjb25zdCB3b3JrZXJJZCA9IE1hdGgubWluKHNoYXJkSWQgJSBnYXRld2F5LnNoYXJkc1BlcldvcmtlciwgZ2F0ZXdheS50b3RhbFdvcmtlcnMgLSAxKVxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBbR2F0ZXdheV0gQ2FsY3VsYXRpbmcgd29ya2VySWQ6IFNoYXJkOiAke3NoYXJkSWR9IC0+IFdvcmtlcjogJHt3b3JrZXJJZH0gLT4gUGVyIFdvcmtlcjogJHtnYXRld2F5LnNoYXJkc1Blcldvcmtlcn0gLT4gVG90YWw6ICR7Z2F0ZXdheS50b3RhbFdvcmtlcnN9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiB3b3JrZXJJZFxuICAgIH0sXG4gICAgcHJlcGFyZUJ1Y2tldHMoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeTsgKytpKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gUHJlcGFyaW5nIGJ1Y2tldHMgZm9yIGNvbmN1cnJlbmN5OiAke2l9YClcbiAgICAgICAgZ2F0ZXdheS5idWNrZXRzLnNldChpLCB7XG4gICAgICAgICAgd29ya2VyczogW10sXG4gICAgICAgICAgaWRlbnRpZnlSZXF1ZXN0czogW10sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9SR0FOSVpFIEFMTCBTSEFSRFMgSU5UTyBUSEVJUiBPV04gQlVDS0VUU1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFByZXBhcmluZyBidWNrZXRzIGZvciBzaGFyZDogJHtzaGFyZElkfWApXG4gICAgICAgIGlmIChzaGFyZElkID49IGdhdGV3YXkudG90YWxTaGFyZHMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJkIChpZDogJHtzaGFyZElkfSkgaXMgYmlnZ2VyIG9yIGVxdWFsIHRvIHRoZSB1c2VkIGFtb3VudCBvZiB1c2VkIHNoYXJkcyB3aGljaCBpcyAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1Y2tldElkID0gc2hhcmRJZCAlIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeVxuICAgICAgICBjb25zdCBidWNrZXQgPSBnYXRld2F5LmJ1Y2tldHMuZ2V0KGJ1Y2tldElkKVxuICAgICAgICBpZiAoIWJ1Y2tldCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIGdvdCBhc3NpZ25lZCB0byBhbiBpbGxlZ2FsIGJ1Y2tldCBpZDogJHtidWNrZXRJZH0sIGV4cGVjdGVkIGEgYnVja2V0IGlkIGJldHdlZW4gMCBhbmQgJHtcbiAgICAgICAgICAgICAgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5IC0gMVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRklORCBBIFFVRVVFIElOIFRISVMgQlVDS0VUIFRIQVQgSEFTIFNQQUNFXG4gICAgICAgIC8vIGNvbnN0IHdvcmtlciA9IGJ1Y2tldC53b3JrZXJzLmZpbmQoKHcpID0+IHcucXVldWUubGVuZ3RoIDwgZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIpO1xuICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGdhdGV3YXkuY2FsY3VsYXRlV29ya2VySWQoc2hhcmRJZClcbiAgICAgICAgY29uc3Qgd29ya2VyID0gYnVja2V0LndvcmtlcnMuZmluZCgodykgPT4gdy5pZCA9PT0gd29ya2VySWQpXG4gICAgICAgIGlmICh3b3JrZXIpIHtcbiAgICAgICAgICAvLyBJRiBUSEUgUVVFVUUgSEFTIFNQQUNFIEpVU1QgQUREIElUIFRPIFRISVMgUVVFVUVcbiAgICAgICAgICB3b3JrZXIucXVldWUucHVzaChzaGFyZElkKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1Y2tldC53b3JrZXJzLnB1c2goeyBpZDogd29ya2VySWQsIHF1ZXVlOiBbc2hhcmRJZF0gfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGJ1Y2tldCBvZiBnYXRld2F5LmJ1Y2tldHMudmFsdWVzKCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB3b3JrZXIgb2YgYnVja2V0LndvcmtlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgICB3b3JrZXIucXVldWUgPSB3b3JrZXIucXVldWUuc29ydCgoYSwgYikgPT4gYSAtIGIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNwYXduU2hhcmRzKCkge1xuICAgICAgLy8gUFJFUEFSRVMgQUxMIFNIQVJEUyBJTiBTUEVDSUZJQyBCVUNLRVRTXG4gICAgICBnYXRld2F5LnByZXBhcmVCdWNrZXRzKClcblxuICAgICAgLy8gUHJlZmVyIGNvbmN1cnJlbmN5IG9mIGZvckVhY2ggaW5zdGVhZCBvZiBmb3JvZlxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIFsuLi5nYXRld2F5LmJ1Y2tldHMuZW50cmllcygpXS5tYXAoYXN5bmMgKFtidWNrZXRJZCwgYnVja2V0XSkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qgd29ya2VyIG9mIGJ1Y2tldC53b3JrZXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNoYXJkSWQgb2Ygd29ya2VyLnF1ZXVlKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkudGVsbFdvcmtlclRvSWRlbnRpZnkod29ya2VyLmlkLCBzaGFyZElkLCBidWNrZXRJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKVxuXG4gICAgICAvLyBDaGVjayBhbmQgcmVzaGFyZCBhdXRvbWF0aWNhbGx5IGlmIGF1dG8gcmVzaGFyZGluZyBpcyBlbmFibGVkLlxuICAgICAgaWYgKGdhdGV3YXkucmVzaGFyZGluZy5lbmFibGVkICYmIGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsICE9PSAtMSkge1xuICAgICAgICAvLyBJdCBpcyBiZXR0ZXIgdG8gZW5zdXJlIHRoZXJlIGlzIGFsd2F5cyBvbmx5IG9uZVxuICAgICAgICBjbGVhckludGVydmFsKGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsSWQpXG5cbiAgICAgICAgaWYgKCFnYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8pIHtcbiAgICAgICAgICBnYXRld2F5LnJlc2hhcmRpbmcuZW5hYmxlZCA9IGZhbHNlXG4gICAgICAgICAgZ2F0ZXdheS5sb2dnZXIud2FybihcIltSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIGlzIGVuYWJsZWQgYnV0ICdyZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKCknIHdhcyBub3QgcHJvdmlkZWQuIERpc2FibGluZyByZXNoYXJkaW5nLlwiKVxuXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc2hhcmRpbmdJbmZvID0gYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWQoKVxuXG4gICAgICAgICAgaWYgKHJlc2hhcmRpbmdJbmZvLm5lZWRlZCAmJiByZXNoYXJkaW5nSW5mby5pbmZvKSBhd2FpdCBnYXRld2F5LnJlc2hhcmRpbmcucmVzaGFyZChyZXNoYXJkaW5nSW5mby5pbmZvKVxuICAgICAgICB9LCBnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJbnRlcnZhbClcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNodXRkb3duKGNvZGUsIHJlYXNvbiwgY2xlYXJSZXNoYXJkaW5nSW50ZXJ2YWwgPSB0cnVlKSB7XG4gICAgICBpZiAoY2xlYXJSZXNoYXJkaW5nSW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwoZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWxJZClcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShnYXRld2F5LnNoYXJkcy52YWx1ZXMoKSkubWFwKChzaGFyZCkgPT4gc2hhcmQuY2xvc2UoY29kZSwgcmVhc29uKSkpXG4gICAgfSxcbiAgICBhc3luYyBzZW5kUGF5bG9hZChzaGFyZElkLCBwYXlsb2FkKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IGdhdGV3YXkuc2hhcmRzLmdldChzaGFyZElkKVxuXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9IG5vdCBmb3VuZGApXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHNoYXJkLnNlbmQocGF5bG9hZClcbiAgICB9LFxuICAgIGFzeW5jIHRlbGxXb3JrZXJUb0lkZW50aWZ5KHdvcmtlcklkLCBzaGFyZElkLCBidWNrZXRJZCkge1xuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBUZWxsIHdvcmtlciB0byBpZGVudGlmeSAoJHt3b3JrZXJJZH0sICR7c2hhcmRJZH0sICR7YnVja2V0SWR9KWApXG4gICAgICBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBJZGVudGlmeWluZyAke3NoYXJkID8gJ2V4aXN0aW5nJyA6ICduZXcnfSBzaGFyZCAoJHtzaGFyZElkfSlgKVxuXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHNoYXJkID0gbmV3IFNoYXJkKHtcbiAgICAgICAgICBpZDogc2hhcmRJZCxcbiAgICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgICBjb21wcmVzczogdGhpcy5jb21wcmVzcyxcbiAgICAgICAgICAgIHRyYW5zcG9ydENvbXByZXNzaW9uOiBnYXRld2F5LnRyYW5zcG9ydENvbXByZXNzaW9uLFxuICAgICAgICAgICAgaW50ZW50czogdGhpcy5pbnRlbnRzLFxuICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXG4gICAgICAgICAgICB0b3RhbFNoYXJkczogdGhpcy50b3RhbFNoYXJkcyxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzID8/IHt9LFxuICAgICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgICAgcmVxdWVzdElkZW50aWZ5OiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaGFyZElzUmVhZHk6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbU2hhcmRdIFNoYXJkICMke3NoYXJkSWR9IGlzIHJlYWR5YClcbiAgICAgICAgICAgIGF3YWl0IGRlbGF5KGdhdGV3YXkuc3Bhd25TaGFyZERlbGF5KVxuICAgICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtTaGFyZF0gUmVzb2x2aW5nIHNoYXJkIGlkZW50aWZ5IHJlcXVlc3RgKVxuICAgICAgICAgICAgZ2F0ZXdheS5idWNrZXRzLmdldChzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KSEuaWRlbnRpZnlSZXF1ZXN0cy5zaGlmdCgpPy4oKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWFrZVByZXNlbmNlOiBnYXRld2F5Lm1ha2VQcmVzZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGhpcy5wcmVmZXJTbmFrZUNhc2UpIHtcbiAgICAgICAgICBzaGFyZC5mb3J3YXJkVG9Cb3QgPSBhc3luYyAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgc2hhcmQhLmV2ZW50cy5tZXNzYWdlPy4oc2hhcmQhLCBwYXlsb2FkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hhcmRzLnNldChzaGFyZElkLCBzaGFyZClcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KVxuICAgICAgaWYgKCFidWNrZXQpIHJldHVyblxuXG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gTWFyayB0aGF0IHdlIGFyZSBtYWtpbmcgYW4gaWRlbnRpZnkgcmVxdWVzdCBzbyBhbm90aGVyIGlzIG5vdCBtYWRlLlxuICAgICAgICBidWNrZXQuaWRlbnRpZnlSZXF1ZXN0cy5wdXNoKHJlc29sdmUpXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gSWRlbnRpZnlpbmcgU2hhcmQgIyR7c2hhcmRJZH0uYClcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgaWRlbnRpZnkgYW5kIHdoZW4gUkVBRFkgaXMgcmVjZWl2ZWQgaXQgd2lsbCByZXNvbHZlIHRoZSBhYm92ZSByZXF1ZXN0LlxuICAgICAgICBzaGFyZD8uaWRlbnRpZnkoKVxuICAgICAgfSlcbiAgICB9LFxuICAgIGFzeW5jIGtpbGwoc2hhcmRJZDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICByZXR1cm4gZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBBIGtpbGwgZm9yIFNoYXJkICMke3NoYXJkSWR9IHdhcyByZXF1ZXN0ZWQsIGJ1dCB0aGUgc2hhcmQgY291bGQgbm90IGJlIGZvdW5kYClcbiAgICAgIH1cblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBLaWxsaW5nIFNoYXJkICMke3NoYXJkSWR9YClcbiAgICAgIHRoaXMuc2hhcmRzLmRlbGV0ZShzaGFyZElkKVxuICAgICAgYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG4gICAgYXN5bmMgcmVxdWVzdElkZW50aWZ5KF9zaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gUmVxdWVzdGluZyBpZGVudGlmeWApXG4gICAgfSxcblxuICAgIC8vIEhlbHBlcnMgbWV0aG9kcyBiZWxvdyB0aGlzXG5cbiAgICBjYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQsIHRvdGFsU2hhcmRzKSB7XG4gICAgICAvLyBJZiBub25lIGlzIHByb3ZpZGVkLCB1c2UgdGhlIHRvdGFsIHNoYXJkcyBudW1iZXIgZnJvbSBnYXRld2F5IG9iamVjdC5cbiAgICAgIGlmICghdG90YWxTaGFyZHMpIHRvdGFsU2hhcmRzID0gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgLy8gSWYgaXQgaXMgb25seSAxIHNoYXJkLCBpdCB3aWxsIGFsd2F5cyBiZSBzaGFyZCBpZCAwXG4gICAgICBpZiAodG90YWxTaGFyZHMgPT09IDEpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBjYWxjdWxhdGVTaGFyZElkICgxIHNoYXJkKWApXG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gY2FsY3VsYXRlU2hhcmRJZCAoZ3VpbGRJZDogJHtndWlsZElkfSwgdG90YWxTaGFyZHM6ICR7dG90YWxTaGFyZHN9KWApXG4gICAgICByZXR1cm4gTnVtYmVyKChCaWdJbnQoZ3VpbGRJZCkgPj4gMjJuKSAlIEJpZ0ludCh0b3RhbFNoYXJkcykpXG4gICAgfSxcblxuICAgIGFzeW5jIGpvaW5Wb2ljZUNoYW5uZWwoZ3VpbGRJZCwgY2hhbm5lbElkLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gam9pblZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IGNoYW5uZWxJZDogJHtjaGFubmVsSWR9YClcblxuICAgICAgYXdhaXQgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5Wb2ljZVN0YXRlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgZ3VpbGRfaWQ6IGd1aWxkSWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsSWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBzZWxmX211dGU6IG9wdGlvbnM/LnNlbGZNdXRlID8/IGZhbHNlLFxuICAgICAgICAgIHNlbGZfZGVhZjogb3B0aW9ucz8uc2VsZkRlYWYgPz8gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRCb3RTdGF0dXMoZGF0YSkge1xuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBlZGl0Qm90U3RhdHVzIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIFsuLi5nYXRld2F5LnNoYXJkcy52YWx1ZXMoKV0ubWFwKGFzeW5jIChzaGFyZCkgPT4ge1xuICAgICAgICAgIGdhdGV3YXkuZWRpdFNoYXJkU3RhdHVzKHNoYXJkLmlkLCBkYXRhKVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9LFxuXG4gICAgYXN5bmMgZWRpdFNoYXJkU3RhdHVzKHNoYXJkSWQsIGRhdGEpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gZWRpdFNoYXJkU3RhdHVzIHNoYXJkSWQ6ICR7c2hhcmRJZH0gLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlByZXNlbmNlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgc2luY2U6IG51bGwsXG4gICAgICAgICAgYWZrOiBmYWxzZSxcbiAgICAgICAgICBhY3Rpdml0aWVzOiBkYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcblxuICAgICAgaWYgKGdhdGV3YXkuaW50ZW50cyAmJiAoIW9wdGlvbnM/LmxpbWl0IHx8IG9wdGlvbnMubGltaXQgPiAxKSAmJiAhKGdhdGV3YXkuaW50ZW50cyAmIEdhdGV3YXlJbnRlbnRzLkd1aWxkTWVtYmVycykpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZldGNoIG1vcmUgdGhlbiAxIG1lbWJlciB3aXRob3V0IHRoZSBHVUlMRF9NRU1CRVJTIGludGVudCcpXG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBkYXRhOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG5cbiAgICAgIGlmIChvcHRpb25zPy51c2VySWRzPy5sZW5ndGgpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0TWVtYmVycyBndWlsZElkOiAke2d1aWxkSWR9IC0+IHNldHRpbmcgdXNlciBsaW1pdCBiYXNlZCBvbiB1c2VySWRzIGxlbmd0aDogJHtvcHRpb25zLnVzZXJJZHMubGVuZ3RofWApXG5cbiAgICAgICAgb3B0aW9ucy5saW1pdCA9IG9wdGlvbnMudXNlcklkcy5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVtYmVycyA9XG4gICAgICAgICFnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzLmVuYWJsZWQgfHwgIW9wdGlvbnM/Lm5vbmNlXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogbmV3IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgICAgICAgIGlmICghZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkIHx8ICFvcHRpb25zPy5ub25jZSkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJDYW4ndCByZXF1ZXN0IHRoZSBtZW1iZXJzIHdpdGhvdXQgdGhlIG5vbmNlIG9yIHdpdGggdGhlIGZlYXR1cmUgZGlzYWJsZWQuXCIpKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5wZW5kaW5nLnNldChvcHRpb25zLm5vbmNlLCB7XG4gICAgICAgICAgICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJzOiBbXSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdEd1aWxkTWVtYmVycyxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgLy8gSWYgYSBxdWVyeSBpcyBwcm92aWRlZCB1c2UgaXQsIE9SIGlmIGEgbGltaXQgaXMgTk9UIHByb3ZpZGVkIHVzZSBcIlwiXG4gICAgICAgICAgcXVlcnk6IG9wdGlvbnM/LnF1ZXJ5ID8/IChvcHRpb25zPy5saW1pdCA/IHVuZGVmaW5lZCA6ICcnKSxcbiAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICBwcmVzZW5jZXM6IG9wdGlvbnM/LnByZXNlbmNlcyA/PyBmYWxzZSxcbiAgICAgICAgICB1c2VyX2lkczogb3B0aW9ucz8udXNlcklkcz8ubWFwKChpZCkgPT4gaWQudG9TdHJpbmcoKSksXG4gICAgICAgICAgbm9uY2U6IG9wdGlvbnM/Lm5vbmNlLFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIGF3YWl0IG1lbWJlcnNcbiAgICB9LFxuXG4gICAgYXN5bmMgbGVhdmVWb2ljZUNoYW5uZWwoZ3VpbGRJZCkge1xuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGxlYXZlVm9pY2VDaGFubmVsIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gU2hhcmQgJHtzaGFyZElkfWApXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogbnVsbCxcbiAgICAgICAgICBzZWxmX211dGU6IGZhbHNlLFxuICAgICAgICAgIHNlbGZfZGVhZjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0U291bmRib2FyZFNvdW5kcyhndWlsZElkcykge1xuICAgICAgLyoqXG4gICAgICAgKiBEaXNjb3JkIHdpbGwgc2VuZCB0aGUgZXZlbnRzIGZvciB0aGUgZ3VpbGRzIHRoYXQgYXJlIFwidW5kZXIgdGhlIHNoYXJkXCIgdGhhdCBzZW5kcyB0aGUgb3Bjb2RlLlxuICAgICAgICogRm9yIHRoaXMgcmVhc29uIHdlIG5lZWQgdG8gZ3JvdXAgdGhlIGlkcyB3aXRoIHRoZSBzaGFyZCB0aGUgY2FsY3VsYXRlU2hhcmRJZCBtZXRob2QgZ2l2ZXNcbiAgICAgICAqL1xuXG4gICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgQmlnU3RyaW5nW10+KClcblxuICAgICAgZm9yIChjb25zdCBndWlsZElkIG9mIGd1aWxkSWRzKSB7XG4gICAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcblxuICAgICAgICBjb25zdCBpZHMgPSBtYXAuZ2V0KHNoYXJkSWQpID8/IFtdXG4gICAgICAgIG1hcC5zZXQoc2hhcmRJZCwgaWRzKVxuXG4gICAgICAgIGlkcy5wdXNoKGd1aWxkSWQpXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4ubWFwLmVudHJpZXMoKV0ubWFwKChbc2hhcmRJZCwgaWRzXSkgPT5cbiAgICAgICAgICBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0U291bmRib2FyZFNvdW5kcyxcbiAgICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgICAgZ3VpbGRfaWRzOiBpZHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gZ2F0ZXdheVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgZmlyc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgZmlyc3RTaGFyZElkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgbGFzdCBTaGFyZCB3aGljaCBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgYnkgdGhpcyBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBsYXN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNwYXduaW5nIG5leHQgc2hhcmQuIE9QVElNQUwgSVMgQUJPVkUgNTEwMC4gWU9VIERPTidUIFdBTlQgVE8gSElUIFRIRSBSQVRFIExJTUlUISEhXG4gICAqIEBkZWZhdWx0IDUzMDBcbiAgICovXG4gIHNwYXduU2hhcmREZWxheT86IG51bWJlclxuICAvKipcbiAgICogV2hldGhlciB0byBzZW5kIHRoZSBkaXNjb3JkIHBhY2tldHMgaW4gc25ha2UgY2FzZSBmb3JtLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJlZmVyU25ha2VDYXNlPzogYm9vbGVhblxuICAvKipcbiAgICogVG90YWwgYW1vdW50IG9mIHNoYXJkcyB5b3VyIGJvdCB1c2VzLiBVc2VmdWwgZm9yIHplcm8tZG93bnRpbWUgdXBkYXRlcyBvciByZXNoYXJkaW5nLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkcz86IG51bWJlclxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBzaGFyZHMgdG8gbG9hZCBwZXIgd29ya2VyLlxuICAgKiBAZGVmYXVsdCAyNVxuICAgKi9cbiAgc2hhcmRzUGVyV29ya2VyPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgYW1vdW50IG9mIHdvcmtlcnMgdG8gdXNlIGZvciB5b3VyIGJvdC5cbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgdG90YWxXb3JrZXJzPzogbnVtYmVyXG4gIC8qKiBJbXBvcnRhbnQgZGF0YSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBtYW5hZ2VyIHRvIGNvbm5lY3Qgc2hhcmRzIHRvIHRoZSBnYXRld2F5LiAqL1xuICBjb25uZWN0aW9uPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzcz86IGJvb2xlYW5cbiAgLyoqIFdoYXQgdHJhbnNwb3J0IGNvbXByZXNzaW9uIHNob3VsZCBiZSB1c2VkICovXG4gIHRyYW5zcG9ydENvbXByZXNzaW9uPzogVHJhbnNwb3J0Q29tcHJlc3Npb24gfCBudWxsXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM/OiBudW1iZXJcbiAgLyoqIElkZW50aWZ5IHByb3BlcnRpZXMgdG8gdXNlICovXG4gIHByb3BlcnRpZXM/OiB7XG4gICAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdGhlIHNoYXJkIHJ1bnMgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImRhcndpblwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCJcbiAgICAgKi9cbiAgICBvczogc3RyaW5nXG4gICAgLyoqIFRoZSBcImJyb3dzZXJcIiB3aGVyZSB0aGlzIHNoYXJkIGlzIHJ1bm5pbmcgb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGJyb3dzZXI6IHN0cmluZ1xuICAgIC8qKiBUaGUgZGV2aWNlIG9uIHdoaWNoIHRoZSBzaGFyZCBpcyBydW5uaW5nLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBkZXZpY2U6IHN0cmluZ1xuICB9XG4gIC8qKiBCb3QgdG9rZW4gd2hpY2ggaXMgdXNlZCB0byBjb25uZWN0IHRvIERpc2NvcmQgKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogVGhlIFVSTCBvZiB0aGUgZ2F0ZXdheSB3aGljaCBzaG91bGQgYmUgY29ubmVjdGVkIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIndzczovL2dhdGV3YXkuZGlzY29yZC5nZ1wiXG4gICAqL1xuICB1cmw/OiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uPzogbnVtYmVyXG4gIC8qKiBUaGUgZXZlbnRzIGhhbmRsZXJzICovXG4gIGV2ZW50cz86IFNoYXJkRXZlbnRzXG4gIC8qKiBUaGlzIG1hbmFnZXJzIGNhY2hlIHJlbGF0ZWQgc2V0dGluZ3MuICovXG4gIGNhY2hlPzoge1xuICAgIHJlcXVlc3RNZW1iZXJzPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIG9yIG5vdCByZXF1ZXN0IG1lbWJlciByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkLlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBsb2dnZXIgdGhhdCB0aGUgZ2F0ZXdheSBtYW5hZ2VyIHdpbGwgdXNlLlxuICAgKiBAZGVmYXVsdCBsb2dnZXIgLy8gVGhlIGxvZ2dlciBleHBvcnRlZCBieSBgQGRpc2NvcmRlbm8vdXRpbHNgXG4gICAqL1xuICBsb2dnZXI/OiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIHByZXNlbmNlIGZvciB3aGVuIHRoZSBib3QgY29ubmVjdHMgdG8gdGhlIGdhdGV3YXlcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBlYWNoIHRpbWUgYSBTaGFyZCBpcyBnb2luZyB0byBpZGVudGlmeVxuICAgKi9cbiAgbWFrZVByZXNlbmNlPzogKCkgPT4gUHJvbWlzZTxCb3RTdGF0dXNVcGRhdGUgfCB1bmRlZmluZWQ+XG4gIC8qKiBPcHRpb25zIHJlbGF0ZWQgdG8gcmVzaGFyZGluZy4gKi9cbiAgcmVzaGFyZGluZz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhdXRvbWF0ZWQgcmVzaGFyZGluZyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZDogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFRoZSAlIG9mIGhvdyBmdWxsIGEgc2hhcmQgaXMgd2hlbiByZXNoYXJkaW5nIHNob3VsZCBiZSB0cmlnZ2VyZWQuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFdlIHVzZSBkaXNjb3JkIHJlY29tbWVuZGVkIHNoYXJkIHZhbHVlIHRvIGdldCBhbiAqKmFwcHJveGltYXRpb24qKiBvZiB0aGUgc2hhcmQgZnVsbCBwZXJjZW50YWdlIHRvIGNvbXBhcmUgd2l0aCB0aGlzIHZhbHVlIHNvIHRoZSBib3QgbWF5IG5vdCByZXNoYXJkIGF0IHRoZSBleGFjdCBwZXJjZW50YWdlIHByb3ZpZGVkIGJ1dCBtYXkgcmVzaGFyZCB3aGVuIGl0IGlzIGEgYml0IGhpZ2hlciB0aGFuIHRoZSBwcm92aWRlZCBwZXJjZW50YWdlLlxuICAgICAqIEZvciBhY2N1cmF0ZSBjYWxjdWxhdGlvbiwgeW91IG1heSBvdmVycmlkZSB0aGUgYGNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWRgIGZ1bmN0aW9uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCA4MCBhcyBpbiA4MCVcbiAgICAgKi9cbiAgICBzaGFyZHNGdWxsUGVyY2VudGFnZTogbnVtYmVyXG4gICAgLyoqXG4gICAgICogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcywgb2YgaG93IG9mdGVuIHRvIGNoZWNrIHdoZXRoZXIgcmVzaGFyZGluZyBpcyBuZWVkZWQgYW5kIHJlc2hhcmQgYXV0b21hdGljYWxseS4gU2V0IHRvIC0xIHRvIGRpc2FibGUgYXV0byByZXNoYXJkaW5nLlxuICAgICAqIEBkZWZhdWx0IDI4ODAwMDAwICg4IGhvdXJzKVxuICAgICAqL1xuICAgIGNoZWNrSW50ZXJ2YWw6IG51bWJlclxuICAgIC8qKiBIYW5kbGVyIHRvIGdldCBzaGFyZCBjb3VudCBhbmQgb3RoZXIgc2Vzc2lvbiBpbmZvLiAqL1xuICAgIGdldFNlc3Npb25JbmZvPzogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4+XG4gICAgLyoqIEhhbmRsZXIgdG8gZWRpdCB0aGUgc2hhcmQgaWQgb24gYW55IGNhY2hlZCBndWlsZHMuICovXG4gICAgdXBkYXRlR3VpbGRzU2hhcmRJZD86IChndWlsZElkczogc3RyaW5nW10sIHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICAvKiogUmVxdWVzdHMgdG8gaWRlbnRpZnkgc2hhcmRzIGFyZSBtYWRlIGJhc2VkIG9uIHdoZXRoZXIgaXQgaXMgYXZhaWxhYmxlIHRvIGJlIG1hZGUuICovXG4gICAgICBpZGVudGlmeVJlcXVlc3RzOiBBcnJheTwodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZD5cbiAgICB9XG4gID5cbiAgLyoqIFRoZSBzaGFyZHMgdGhhdCBhcmUgY3JlYXRlZC4gKi9cbiAgc2hhcmRzOiBNYXA8bnVtYmVyLCBTaGFyZD5cbiAgLyoqIFRoZSBsb2dnZXIgZm9yIHRoZSBnYXRld2F5IG1hbmFnZXIuICovXG4gIGxvZ2dlcjogUGljazx0eXBlb2YgbG9nZ2VyLCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdmYXRhbCc+XG4gIC8qKiBFdmVyeXRoaW5nIHJlbGF0ZWQgdG8gcmVzaGFyZGluZy4gKi9cbiAgcmVzaGFyZGluZzogQ3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zWydyZXNoYXJkaW5nJ10gJiB7XG4gICAgLyoqXG4gICAgICogVGhlIGludGVydmFsIGlkIG9mIHRoZSBjaGVjayBpbnRlcnZhbC4gVGhpcyBpcyB1c2VkIHRvIGNsZWFyIHRoZSBpbnRlcnZhbCB3aGVuIHRoZSBtYW5hZ2VyIGlzIHNodXRkb3duLlxuICAgICAqL1xuICAgIGNoZWNrSW50ZXJ2YWxJZD86IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkXG4gICAgLyoqIEhvbGRzIHRoZSBzaGFyZHMgdGhhdCByZXNoYXJkaW5nIGhhcyBjcmVhdGVkLiBPbmNlIHJlc2hhcmRpbmcgaXMgZG9uZSwgdGhpcyByZXBsYWNlcyB0aGUgZ2F0ZXdheS5zaGFyZHMgKi9cbiAgICBzaGFyZHM6IENvbGxlY3Rpb248bnVtYmVyLCBTaGFyZD5cbiAgICAvKiogSG9sZHMgdGhlIHBlbmRpbmcgc2hhcmRzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgYW5kIGFyZSBwZW5kaW5nIGFsbCBzaGFyZHMgZmluaXNoIGxvYWRpbmcuICovXG4gICAgcGVuZGluZ1NoYXJkczogQ29sbGVjdGlvbjxudW1iZXIsIFNoYXJkPlxuICAgIC8qKiBIYW5kbGVyIHRvIGNoZWNrIGlmIHJlc2hhcmRpbmcgaXMgbmVjZXNzYXJ5LiAqL1xuICAgIGNoZWNrSWZSZXNoYXJkaW5nSXNOZWVkZWQ6ICgpID0+IFByb21pc2U8eyBuZWVkZWQ6IGJvb2xlYW47IGluZm8/OiBDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4gfT5cbiAgICAvKiogSGFuZGxlciB0byBiZWdpbiByZXNoYXJkaW5nLiAqL1xuICAgIHJlc2hhcmQ6IChpbmZvOiBDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4gJiB7IGZpcnN0U2hhcmRJZD86IG51bWJlcjsgbGFzdFNoYXJkSWQ/OiBudW1iZXIgfSkgPT4gUHJvbWlzZTx2b2lkPlxuICAgIC8qKiBIYW5kbGVyIHRvIGNvbW11bmljYXRlIHRvIGEgd29ya2VyIHRoYXQgYSBzaGFyZCBuZWVkcyB0byBiZSBjcmVhdGVkLiAqL1xuICAgIHRlbGxXb3JrZXJUb1ByZXBhcmU6ICh3b3JrZXJJZDogbnVtYmVyLCBzaGFyZElkOiBudW1iZXIsIGJ1Y2tldElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgICAvKiogSGFuZGxlciB0byBhbGVydCB0aGUgZ2F0ZXdheSB0aGF0IGEgc2hhcmQocmVzaGFyZGVkKSBpcyBvbmxpbmUuIEl0IHNob3VsZCBub3cgd2FpdCBmb3IgYWxsIHNoYXJkcyB0byBiZSBwZW5kaW5nIGJlZm9yZSBzaHV0dGluZyBvZmYgb2xkIHNoYXJkcy4gKi9cbiAgICBzaGFyZElzUGVuZGluZzogKHNoYXJkOiBTaGFyZCkgPT4gUHJvbWlzZTx2b2lkPlxuICB9XG4gIC8qKiBEZXRlcm1pbmUgbWF4IG51bWJlciBvZiBzaGFyZHMgdG8gdXNlIGJhc2VkIHVwb24gdGhlIG1heCBjb25jdXJyZW5jeS4gKi9cbiAgY2FsY3VsYXRlVG90YWxTaGFyZHM6ICgpID0+IG51bWJlclxuICAvKiogRGV0ZXJtaW5lIHRoZSBpZCBvZiB0aGUgd29ya2VyIHdoaWNoIGlzIGhhbmRsaW5nIGEgc2hhcmQuICovXG4gIGNhbGN1bGF0ZVdvcmtlcklkOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBudW1iZXJcbiAgLyoqIFByZXBhcmVzIGFsbCB0aGUgYnVja2V0cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGlkZW50aWZ5aW5nIHRoZSBzaGFyZHMuICovXG4gIHByZXBhcmVCdWNrZXRzOiAoKSA9PiB2b2lkXG4gIC8qKiBTdGFydCBpZGVudGlmeWluZyBhbGwgdGhlIHNoYXJkcy4gKi9cbiAgc3Bhd25TaGFyZHM6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFNodXRkb3duIGFsbCBzaGFyZHMuICovXG4gIHNodXRkb3duOiAoY29kZTogbnVtYmVyLCByZWFzb246IHN0cmluZywgY2xlYXJSZXNoYXJkaW5nSW50ZXJ2YWw/OiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNlbmRQYXlsb2FkOiAoc2hhcmRJZDogbnVtYmVyLCBwYXlsb2FkOiBTaGFyZFNvY2tldFJlcXVlc3QpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEFsbG93cyB1c2VycyB0byBob29rIGluIGFuZCBjaGFuZ2UgdG8gY29tbXVuaWNhdGUgdG8gZGlmZmVyZW50IHdvcmtlcnMgYWNyb3NzIGRpZmZlcmVudCBzZXJ2ZXJzIG9yIGFueXRoaW5nIHRoZXkgbGlrZS4gRm9yIGV4YW1wbGUgdXNpbmcgcmVkaXMgcHVic3ViIHRvIHRhbGsgdG8gb3RoZXIgc2VydmVycy4gKi9cbiAgdGVsbFdvcmtlclRvSWRlbnRpZnk6ICh3b3JrZXJJZDogbnVtYmVyLCBzaGFyZElkOiBudW1iZXIsIGJ1Y2tldElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRlbGwgdGhlIG1hbmFnZXIgdG8gaWRlbnRpZnkgYSBTaGFyZC4gSWYgdGhpcyBTaGFyZCBpcyBub3QgYWxyZWFkeSBtYW5hZ2VkIHRoaXMgd2lsbCBhbHNvIGFkZCB0aGUgU2hhcmQgdG8gdGhlIG1hbmFnZXIuICovXG4gIGlkZW50aWZ5OiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBLaWxsIGEgc2hhcmQuIENsb3NlIGEgc2hhcmRzIGNvbm5lY3Rpb24gdG8gRGlzY29yZCdzIGdhdGV3YXkgKGlmIGFueSkgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBtYW5hZ2VyLiAqL1xuICBraWxsOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhhdCB0aGUgYnVja2V0IGlzIGFsbG93ZWQgdG8gbWFrZSB0aGUgbmV4dCBpZGVudGlmeSByZXF1ZXN0LiAqL1xuICByZXF1ZXN0SWRlbnRpZnk6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBzaGFyZHMgYmFzZWQgb24gdGhlIGd1aWxkIGlkIGFuZCB0b3RhbCBzaGFyZHMuICovXG4gIGNhbGN1bGF0ZVNoYXJkSWQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHRvdGFsU2hhcmRzPzogbnVtYmVyKSA9PiBudW1iZXJcbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBib3QgdXNlciB0byBhIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgeW91IHdhbnQgdG8gam9pbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBDT05ORUNUYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9Wb2ljZSBTdGF0ZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGpvaW5Wb2ljZUNoYW5uZWw6IChndWlsZElkOiBCaWdTdHJpbmcsIGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQXRMZWFzdE9uZTxPbWl0PFVwZGF0ZVZvaWNlU3RhdGUsICdndWlsZElkJyB8ICdjaGFubmVsSWQnPj4pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBib3Qgc3RhdHVzIGluIGFsbCBzaGFyZHMgdGhhdCB0aGlzIGdhdGV3YXkgbWFuYWdlcy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIHN0YXR1cyBkYXRhIHRvIHNldCB0aGUgYm90cyBzdGF0dXMgdG8uXG4gICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICovXG4gIGVkaXRCb3RTdGF0dXM6IChkYXRhOiBTdGF0dXNVcGRhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBib3QncyBzdGF0dXMgb24gb25lIHNoYXJkLlxuICAgKlxuICAgKiBAcGFyYW0gc2hhcmRJZCBUaGUgc2hhcmQgaWQgdG8gZWRpdCB0aGUgc3RhdHVzIGZvci5cbiAgICogQHBhcmFtIGRhdGEgVGhlIHN0YXR1cyBkYXRhIHRvIHNldCB0aGUgYm90cyBzdGF0dXMgdG8uXG4gICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICovXG4gIGVkaXRTaGFyZFN0YXR1czogKHNoYXJkSWQ6IG51bWJlciwgZGF0YTogU3RhdHVzVXBkYXRlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yIGEgZ3VpbGQgb3ZlciB0aGUgZ2F0ZXdheS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZW1iZXJzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiByZXF1ZXN0aW5nIHRoZSBlbnRpcmUgbWVtYmVyIGxpc3Q6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9NRU1CRVJTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgcHJlc2VuY2VzICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5wcmVzZW5jZXMgfCBwcmVzZW5jZXN9IHNldCB0byBgdHJ1ZWApOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfUFJFU0VOQ0VTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSBwcmVmaXggKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnF1ZXJ5IHwgcXVlcnl9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSB1c2VycyBieSBJRCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMudXNlcklkcyB8IHVzZXJJZHN9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlcnMgQ2h1bmtfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IDEwMDAgbWVtYmVycyBmZXRjaGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSNyZXF1ZXN0LWd1aWxkLW1lbWJlcnN9XG4gICAqL1xuICByZXF1ZXN0TWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IE9taXQ8UmVxdWVzdEd1aWxkTWVtYmVycywgJ2d1aWxkSWQnPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT4+XG4gIC8qKlxuICAgKiBMZWF2ZXMgdGhlIHZvaWNlIGNoYW5uZWwgdGhlIGJvdCB1c2VyIGlzIGN1cnJlbnRseSBpbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfVm9pY2UgU3RhdGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN1cGRhdGUtdm9pY2Utc3RhdGV9XG4gICAqL1xuICBsZWF2ZVZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogVXNlZCB0byByZXF1ZXN0IHNvdW5kYm9hcmQgc291bmRzIGZvciBhIGxpc3Qgb2YgZ3VpbGRzLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIG11bHRpcGxlIChzZWUgcmVtYXJrcykgX1JlcXVlc3QgU291bmRib2FyZCBTb3VuZHNfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZHMgLSBUaGUgZ3VpbGRzIHRvIGdldCB0aGUgc291bmRzIGZyb21cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfU291bmRib2FyZCBTb3VuZHNfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIOKaoO+4jyBEaXNjb3JkIHdpbGwgc2VuZCB0aGUgX1NvdW5kYm9hcmQgU291bmRzXyBmb3IgZWFjaCBvZiB0aGUgZ3VpbGQgaWRzXG4gICAqIGhvd2V2ZXIgeW91IG1heSBub3QgcmVjZWl2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZXZlbnRzIGFzIHRoZSBpZHMgcGFzc2VkIHRvIF9SZXF1ZXN0IFNvdW5kYm9hcmQgU291bmRzXyBmb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29uczpcbiAgICogLSBUaGUgYm90IGlzIG5vdCBpbiB0aGUgc2VydmVyIHByb3ZpZGVkXG4gICAqIC0gVGhlIHNoYXJkIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHNlbnQgZnJvbSBkb2VzIG5vdCByZWNlaXZlIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBndWlsZFxuICAgKlxuICAgKiBUbyBhdm9pZCB0aGlzIERpc2NvcmRlbm8gd2lsbCBhdXRvbWF0aWNhbGx5IHRyeSB0byBncm91cCB0aGUgaWRzIGJhc2VkIG9uIHdoYXQgc2hhcmQgdGhleSB3aWxsIG5lZWQgdG8gYmUgc2VudCwgYnV0IHRoaXMgaW52b2x2ZXMgc2VuZGluZyBtdWx0aXBsZSBtZXNzYWdlcyBpbiBtdWx0aXBsZSBzaGFyZHNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI3JlcXVlc3Qtc291bmRib2FyZC1zb3VuZHN9XG4gICAqL1xuICByZXF1ZXN0U291bmRib2FyZFNvdW5kczogKGd1aWxkSWRzOiBCaWdTdHJpbmdbXSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZToge1xuICAgIHJlcXVlc3RNZW1iZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgb3Igbm90IHJlcXVlc3QgbWVtYmVyIHJlcXVlc3RzIHNob3VsZCBiZSBjYWNoZWQuXG4gICAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAgICovXG4gICAgICBlbmFibGVkOiBib29sZWFuXG4gICAgICAvKiogVGhlIHBlbmRpbmcgcmVxdWVzdHMuICovXG4gICAgICBwZW5kaW5nOiBDb2xsZWN0aW9uPHN0cmluZywgUmVxdWVzdE1lbWJlclJlcXVlc3Q+XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE1lbWJlclJlcXVlc3Qge1xuICAvKiogVGhlIHVuaXF1ZSBub25jZSBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBub25jZTogc3RyaW5nXG4gIC8qKiBUaGUgcmVzb2x2ZXIgaGFuZGxlciB0byBydW4gd2hlbiBhbGwgbWVtYmVycyBhcnJpdmUuICovXG4gIHJlc29sdmU6ICh2YWx1ZTogQ2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+IHwgUHJvbWlzZUxpa2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PikgPT4gdm9pZFxuICAvKiogVGhlIG1lbWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgYXJyaXZlZCBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBtZW1iZXJzOiBEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXVxufVxuIl0sIm5hbWVzIjpbIkdhdGV3YXlJbnRlbnRzIiwiR2F0ZXdheU9wY29kZXMiLCJDb2xsZWN0aW9uIiwiZGVsYXkiLCJsb2dnZXIiLCJTaGFyZCIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsImNyZWF0ZUdhdGV3YXlNYW5hZ2VyIiwib3B0aW9ucyIsImNvbm5lY3Rpb25PcHRpb25zIiwiY29ubmVjdGlvbiIsInVybCIsInNoYXJkcyIsInNlc3Npb25TdGFydExpbWl0IiwibWF4Q29uY3VycmVuY3kiLCJyZW1haW5pbmciLCJ0b3RhbCIsInJlc2V0QWZ0ZXIiLCJnYXRld2F5IiwiZXZlbnRzIiwiY29tcHJlc3MiLCJ0cmFuc3BvcnRDb21wcmVzc2lvbiIsImludGVudHMiLCJwcm9wZXJ0aWVzIiwib3MiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJicm93c2VyIiwiZGV2aWNlIiwidG9rZW4iLCJ2ZXJzaW9uIiwidG90YWxTaGFyZHMiLCJsYXN0U2hhcmRJZCIsImZpcnN0U2hhcmRJZCIsInRvdGFsV29ya2VycyIsInNoYXJkc1BlcldvcmtlciIsInNwYXduU2hhcmREZWxheSIsInByZWZlclNuYWtlQ2FzZSIsIk1hcCIsImJ1Y2tldHMiLCJjYWNoZSIsInJlcXVlc3RNZW1iZXJzIiwiZW5hYmxlZCIsInBlbmRpbmciLCJtYWtlUHJlc2VuY2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuZGVmaW5lZCIsInJlc2hhcmRpbmciLCJzaGFyZHNGdWxsUGVyY2VudGFnZSIsImNoZWNrSW50ZXJ2YWwiLCJwZW5kaW5nU2hhcmRzIiwiZ2V0U2Vzc2lvbkluZm8iLCJ1cGRhdGVHdWlsZHNTaGFyZElkIiwiY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCIsImRlYnVnIiwibmVlZGVkIiwiRXJyb3IiLCJzZXNzaW9uSW5mbyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbmZvIiwicGVyY2VudGFnZSIsInJlc2hhcmQiLCJjYWxjdWxhdGVUb3RhbFNoYXJkcyIsImNsZWFyIiwicHJlcGFyZUJ1Y2tldHMiLCJmb3JFYWNoIiwiYnVja2V0IiwiYnVja2V0SWQiLCJ3b3JrZXIiLCJ3b3JrZXJzIiwic2hhcmRJZCIsInF1ZXVlIiwidGVsbFdvcmtlclRvUHJlcGFyZSIsImlkIiwid29ya2VySWQiLCJzaGFyZCIsIm1lc3NhZ2UiLCJfc2hhcmQiLCJwYXlsb2FkIiwidCIsImQiLCJndWlsZHMiLCJtYXAiLCJnIiwicmVxdWVzdElkZW50aWZ5IiwiaWRlbnRpZnkiLCJzaGFyZElzUmVhZHkiLCJnZXQiLCJpZGVudGlmeVJlcXVlc3RzIiwic2hpZnQiLCJmb3J3YXJkVG9Cb3QiLCJzZXQiLCJwdXNoIiwidGhlbiIsInNoYXJkSXNQZW5kaW5nIiwic2l6ZSIsInZhbHVlcyIsImV2ZW50Iiwib2xkSGFuZGxlciIsIl8iLCJzaHV0ZG93biIsIlJlc2hhcmRlZCIsIk1hdGgiLCJjZWlsIiwiY2FsY3VsYXRlV29ya2VySWQiLCJtaW4iLCJpIiwiZmluZCIsInciLCJzb3J0IiwiYSIsImIiLCJzcGF3blNoYXJkcyIsImFsbCIsImVudHJpZXMiLCJ0ZWxsV29ya2VyVG9JZGVudGlmeSIsImNsZWFySW50ZXJ2YWwiLCJjaGVja0ludGVydmFsSWQiLCJ3YXJuIiwic2V0SW50ZXJ2YWwiLCJyZXNoYXJkaW5nSW5mbyIsImNvZGUiLCJyZWFzb24iLCJjbGVhclJlc2hhcmRpbmdJbnRlcnZhbCIsIkFycmF5IiwiZnJvbSIsImNsb3NlIiwic2VuZFBheWxvYWQiLCJzZW5kIiwia2lsbCIsImRlbGV0ZSIsIl9zaGFyZElkIiwiY2FsY3VsYXRlU2hhcmRJZCIsImd1aWxkSWQiLCJOdW1iZXIiLCJCaWdJbnQiLCJqb2luVm9pY2VDaGFubmVsIiwiY2hhbm5lbElkIiwib3AiLCJWb2ljZVN0YXRlVXBkYXRlIiwiZ3VpbGRfaWQiLCJ0b1N0cmluZyIsImNoYW5uZWxfaWQiLCJzZWxmX211dGUiLCJzZWxmTXV0ZSIsInNlbGZfZGVhZiIsInNlbGZEZWFmIiwiZWRpdEJvdFN0YXR1cyIsImRhdGEiLCJlZGl0U2hhcmRTdGF0dXMiLCJQcmVzZW5jZVVwZGF0ZSIsInNpbmNlIiwiYWZrIiwiYWN0aXZpdGllcyIsInN0YXR1cyIsImxpbWl0IiwiR3VpbGRNZW1iZXJzIiwidXNlcklkcyIsImxlbmd0aCIsIm1lbWJlcnMiLCJub25jZSIsInJlamVjdCIsIlJlcXVlc3RHdWlsZE1lbWJlcnMiLCJxdWVyeSIsInByZXNlbmNlcyIsInVzZXJfaWRzIiwibGVhdmVWb2ljZUNoYW5uZWwiLCJyZXF1ZXN0U291bmRib2FyZFNvdW5kcyIsImd1aWxkSWRzIiwiaWRzIiwiUmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMiLCJndWlsZF9pZHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBT0VBLGNBQWMsRUFDZEMsY0FBYyxRQUVULG9CQUFtQjtBQUMxQixTQUFTQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxRQUFRLG9CQUFtQjtBQUM3RCxPQUFPQyxXQUFXLGFBQVk7QUFDOUIsU0FHRUMscUJBQXFCLFFBS2hCLGFBQVk7QUFFbkIsT0FBTyxTQUFTQyxxQkFBcUJDLE9BQW9DO0lBQ3ZFLE1BQU1DLG9CQUFvQkQsUUFBUUUsVUFBVSxJQUFJO1FBQzlDQyxLQUFLO1FBQ0xDLFFBQVE7UUFDUkMsbUJBQW1CO1lBQ2pCQyxnQkFBZ0I7WUFDaEJDLFdBQVc7WUFDWEMsT0FBTztZQUNQQyxZQUFZLE9BQU8sS0FBSyxLQUFLO1FBQy9CO0lBQ0Y7SUFFQSxNQUFNQyxVQUEwQjtRQUM5QkMsUUFBUVgsUUFBUVcsTUFBTSxJQUFJLENBQUM7UUFDM0JDLFVBQVVaLFFBQVFZLFFBQVEsSUFBSTtRQUM5QkMsc0JBQXNCYixRQUFRYSxvQkFBb0IsSUFBSTtRQUN0REMsU0FBU2QsUUFBUWMsT0FBTyxJQUFJO1FBQzVCQyxZQUFZO1lBQ1ZDLElBQUloQixRQUFRZSxVQUFVLEVBQUVDLE1BQU1DLFFBQVFDLFFBQVE7WUFDOUNDLFNBQVNuQixRQUFRZSxVQUFVLEVBQUVJLFdBQVc7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
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQge1xuICB0eXBlIEF0TGVhc3RPbmUsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENhbWVsaXplLFxuICB0eXBlIERpc2NvcmRHZXRHYXRld2F5Qm90LFxuICB0eXBlIERpc2NvcmRNZW1iZXJXaXRoVXNlcixcbiAgdHlwZSBEaXNjb3JkUmVhZHksXG4gIEdhdGV3YXlJbnRlbnRzLFxuICBHYXRld2F5T3Bjb2RlcyxcbiAgdHlwZSBSZXF1ZXN0R3VpbGRNZW1iZXJzLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IENvbGxlY3Rpb24sIGRlbGF5LCBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBCb3RTdGF0dXNVcGRhdGUsXG4gIHR5cGUgU2hhcmRFdmVudHMsXG4gIFNoYXJkU29ja2V0Q2xvc2VDb2RlcyxcbiAgdHlwZSBTaGFyZFNvY2tldFJlcXVlc3QsXG4gIHR5cGUgU3RhdHVzVXBkYXRlLFxuICB0eXBlIFRyYW5zcG9ydENvbXByZXNzaW9uLFxuICB0eXBlIFVwZGF0ZVZvaWNlU3RhdGUsXG59IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMpOiBHYXRld2F5TWFuYWdlciB7XG4gIGNvbnN0IGNvbm5lY3Rpb25PcHRpb25zID0gb3B0aW9ucy5jb25uZWN0aW9uID8/IHtcbiAgICB1cmw6ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgIHNoYXJkczogMSxcbiAgICBzZXNzaW9uU3RhcnRMaW1pdDoge1xuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgICByZW1haW5pbmc6IDEwMDAsXG4gICAgICB0b3RhbDogMTAwMCxcbiAgICAgIHJlc2V0QWZ0ZXI6IDEwMDAgKiA2MCAqIDYwICogMjQsXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IGdhdGV3YXk6IEdhdGV3YXlNYW5hZ2VyID0ge1xuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMgPz8ge30sXG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gZmFsc2UsXG4gICAgdHJhbnNwb3J0Q29tcHJlc3Npb246IG9wdGlvbnMudHJhbnNwb3J0Q29tcHJlc3Npb24gPz8gbnVsbCxcbiAgICBpbnRlbnRzOiBvcHRpb25zLmludGVudHMgPz8gMCxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBvczogb3B0aW9ucy5wcm9wZXJ0aWVzPy5vcyA/PyBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgYnJvd3Nlcjogb3B0aW9ucy5wcm9wZXJ0aWVzPy5icm93c2VyID8/ICdEaXNjb3JkZW5vJyxcbiAgICAgIGRldmljZTogb3B0aW9ucy5wcm9wZXJ0aWVzPy5kZXZpY2UgPz8gJ0Rpc2NvcmRlbm8nLFxuICAgIH0sXG4gICAgdG9rZW46IG9wdGlvbnMudG9rZW4sXG4gICAgdXJsOiBvcHRpb25zLnVybCA/PyBjb25uZWN0aW9uT3B0aW9ucy51cmwgPz8gJ3dzczovL2dhdGV3YXkuZGlzY29yZC5nZycsXG4gICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IDEwLFxuICAgIGNvbm5lY3Rpb246IGNvbm5lY3Rpb25PcHRpb25zLFxuICAgIHRvdGFsU2hhcmRzOiBvcHRpb25zLnRvdGFsU2hhcmRzID8/IGNvbm5lY3Rpb25PcHRpb25zLnNoYXJkcyA/PyAxLFxuICAgIGxhc3RTaGFyZElkOiBvcHRpb25zLmxhc3RTaGFyZElkID8/IChvcHRpb25zLnRvdGFsU2hhcmRzID8gb3B0aW9ucy50b3RhbFNoYXJkcyAtIDEgOiBjb25uZWN0aW9uT3B0aW9ucyA/IGNvbm5lY3Rpb25PcHRpb25zLnNoYXJkcyAtIDEgOiAwKSxcbiAgICBmaXJzdFNoYXJkSWQ6IG9wdGlvbnMuZmlyc3RTaGFyZElkID8/IDAsXG4gICAgdG90YWxXb3JrZXJzOiBvcHRpb25zLnRvdGFsV29ya2VycyA/PyA0LFxuICAgIHNoYXJkc1Blcldvcmtlcjogb3B0aW9ucy5zaGFyZHNQZXJXb3JrZXIgPz8gMjUsXG4gICAgc3Bhd25TaGFyZERlbGF5OiBvcHRpb25zLnNwYXduU2hhcmREZWxheSA/PyA1MzAwLFxuICAgIHByZWZlclNuYWtlQ2FzZTogb3B0aW9ucy5wcmVmZXJTbmFrZUNhc2UgPz8gZmFsc2UsXG4gICAgc2hhcmRzOiBuZXcgTWFwKCksXG4gICAgYnVja2V0czogbmV3IE1hcCgpLFxuICAgIGNhY2hlOiB7XG4gICAgICByZXF1ZXN0TWVtYmVyczoge1xuICAgICAgICBlbmFibGVkOiBvcHRpb25zLmNhY2hlPy5yZXF1ZXN0TWVtYmVycz8uZW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgcGVuZGluZzogbmV3IENvbGxlY3Rpb24oKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyID8/IGxvZ2dlcixcbiAgICBtYWtlUHJlc2VuY2U6IG9wdGlvbnMubWFrZVByZXNlbmNlID8/ICgoKSA9PiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKSksXG4gICAgcmVzaGFyZGluZzoge1xuICAgICAgZW5hYmxlZDogb3B0aW9ucy5yZXNoYXJkaW5nPy5lbmFibGVkID8/IHRydWUsXG4gICAgICBzaGFyZHNGdWxsUGVyY2VudGFnZTogb3B0aW9ucy5yZXNoYXJkaW5nPy5zaGFyZHNGdWxsUGVyY2VudGFnZSA/PyA4MCxcbiAgICAgIGNoZWNrSW50ZXJ2YWw6IG9wdGlvbnMucmVzaGFyZGluZz8uY2hlY2tJbnRlcnZhbCA/PyAyODgwMDAwMCwgLy8gOCBob3Vyc1xuICAgICAgc2hhcmRzOiBuZXcgQ29sbGVjdGlvbigpLFxuICAgICAgcGVuZGluZ1NoYXJkczogbmV3IENvbGxlY3Rpb24oKSxcbiAgICAgIGdldFNlc3Npb25JbmZvOiBvcHRpb25zLnJlc2hhcmRpbmc/LmdldFNlc3Npb25JbmZvLFxuICAgICAgdXBkYXRlR3VpbGRzU2hhcmRJZDogb3B0aW9ucy5yZXNoYXJkaW5nPy51cGRhdGVHdWlsZHNTaGFyZElkLFxuICAgICAgYXN5bmMgY2hlY2tJZlJlc2hhcmRpbmdJc05lZWRlZCgpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoJ1tSZXNoYXJkaW5nXSBDaGVja2luZyBpZiByZXNoYXJkaW5nIGlzIG5lZWRlZC4nKVxuXG4gICAgICAgIGlmICghZ2F0ZXdheS5yZXNoYXJkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZGlzYWJsZWQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFnYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbUmVzaGFyZGluZ10gUmVzaGFyZGluZyBpcyBlbmFibGVkIGJ1dCBubyAncmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbygpJyBpcyBub3QgcHJvdmlkZWQuXCIpXG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIFJlc2hhcmRpbmcgaXMgZW5hYmxlZC4nKVxuXG4gICAgICAgIGNvbnN0IHNlc3Npb25JbmZvID0gYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKClcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1Jlc2hhcmRpbmddIFNlc3Npb24gaW5mbyByZXRyaWV2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoc2Vzc2lvbkluZm8pfWApXG5cbiAgICAgICAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2ggaWRlbnRpZnkgbGltaXRzIHRvIHRyeSByZXNoYXJkaW5nXG4gICAgICAgIGlmIChzZXNzaW9uSW5mby5zZXNzaW9uU3RhcnRMaW1pdC5yZW1haW5pbmcgPCBzZXNzaW9uSW5mby5zaGFyZHMpIHtcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIE5vdCBlbm91Z2ggc2Vzc2lvbiBzdGFydCBsaW1pdHMgbGVmdCB0byByZXNoYXJkLicpXG5cbiAgICAgICAgICByZXR1cm4geyBuZWVkZWQ6IGZhbHNlLCBpbmZvOiBzZXNzaW9uSW5mbyB9XG4gICAgICAgIH1cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZygnW1Jlc2hhcmRpbmddIEFibGUgdG8gcmVzaGFyZCwgY2hlY2tpbmcgd2hldGhlciBuZWNlc3Nhcnkgbm93LicpXG5cbiAgICAgICAgLy8gMjUwMCBpcyB0aGUgbWF4IGFtb3VudCBvZiBndWlsZHMgYSBzaW5nbGUgc2hhcmQgY2FuIGhhbmRsZVxuICAgICAgICAvLyAxMDAwIGlzIHRoZSBhbW91bnQgb2YgZ3VpbGRzIGRpc2NvcmQgdXNlcyB0byBkZXRlcm1pbmUgaG93IG1hbnkgc2hhcmRzIHRvIHJlY29tbWVuZC5cbiAgICAgICAgLy8gVGhpcyBhbGdvIGhlbHBzIGNoZWNrIGlmIHlvdXIgYm90IGhhcyBncm93biBlbm91Z2ggdG8gcmVzaGFyZC5cbiAgICAgICAgLy8gV2hpbGUgdGhpcyBpcyBpbXByZWNpc2UgYXMgZGlzY29yZCBjaGFuZ2VzIHRoZSByZWNvbW1lbmRlZCBudW1iZXIgb2Ygc2hhcmQgZXZlcnkgMTAwMCBndWlsZHMgaXQgaXMgZ29vZCBlbm91Z2hcbiAgICAgICAgLy8gVGhlIGFsdGVybmF0aXZlIGlzIHRvIHN0b3JlIHRoZSBndWlsZCBjb3VudCBmb3IgZWFjaCBzaGFyZCBhbmQgcmVxdWlyZSB0aGUgR3VpbGRzIGludGVudCBmb3IgYEdVSUxEX0NSRUFURWAgYW5kIGBHVUlMRF9ERUxFVEVgIGV2ZW50c1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gKHNlc3Npb25JbmZvLnNoYXJkcyAvICgoZ2F0ZXdheS50b3RhbFNoYXJkcyAqIDI1MDApIC8gMTAwMCkpICogMTAwXG5cbiAgICAgICAgLy8gTGVzcyB0aGFuIG5lY2Vzc2FyeSUgYmVpbmcgdXNlZCBzbyBkbyBub3RoaW5nXG4gICAgICAgIGlmIChwZXJjZW50YWdlIDwgZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkc0Z1bGxQZXJjZW50YWdlKSB7XG4gICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoJ1tSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIG5vdCBuZWVkZWQuJylcblxuICAgICAgICAgIHJldHVybiB7IG5lZWRlZDogZmFsc2UsIGluZm86IHNlc3Npb25JbmZvIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmluZm8oJ1tSZXNoYXJkaW5nXSBSZXNoYXJkaW5nIGlzIG5lZWRlZC4nKVxuXG4gICAgICAgIHJldHVybiB7IG5lZWRlZDogdHJ1ZSwgaW5mbzogc2Vzc2lvbkluZm8gfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHJlc2hhcmQoaW5mbykge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gU3RhcnRpbmcgdGhlIHJlc2hhcmQgcHJvY2Vzcy4gUHJldmlvdXMgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcbiAgICAgICAgLy8gU2V0IHZhbHVlcyBvbiBnYXRld2F5XG4gICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgPSBpbmZvLnNoYXJkc1xuICAgICAgICAvLyBIYW5kbGVzIHByZXBhcmluZyBtaWQgc2l6ZWQgYm90cyBmb3IgTEJTXG4gICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgPSBnYXRld2F5LmNhbGN1bGF0ZVRvdGFsU2hhcmRzKClcbiAgICAgICAgLy8gU2V0IGZpcnN0IHNoYXJkIGlkIGlmIHByb3ZpZGVkIGluIGluZm9cbiAgICAgICAgaWYgKHR5cGVvZiBpbmZvLmZpcnN0U2hhcmRJZCA9PT0gJ251bWJlcicpIGdhdGV3YXkuZmlyc3RTaGFyZElkID0gaW5mby5maXJzdFNoYXJkSWRcbiAgICAgICAgLy8gU2V0IGxhc3Qgc2hhcmQgaWQgaWYgcHJvdmlkZWQgaW4gaW5mb1xuICAgICAgICBpZiAodHlwZW9mIGluZm8ubGFzdFNoYXJkSWQgPT09ICdudW1iZXInKSBnYXRld2F5Lmxhc3RTaGFyZElkID0gaW5mby5sYXN0U2hhcmRJZFxuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gU3RhcnRpbmcgdGhlIHJlc2hhcmQgcHJvY2Vzcy4gTmV3IHRvdGFsIHNoYXJkczogJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApXG5cbiAgICAgICAgLy8gUmVzZXR0aW5nIGJ1Y2tldHNcbiAgICAgICAgZ2F0ZXdheS5idWNrZXRzLmNsZWFyKClcbiAgICAgICAgLy8gUmVmaWxsaW5nIGJ1Y2tldHMgd2l0aCBuZXcgdmFsdWVzXG4gICAgICAgIGdhdGV3YXkucHJlcGFyZUJ1Y2tldHMoKVxuXG4gICAgICAgIC8vIFNQUkVBRCBUSElTIE9VVCBUTyBESUZGRVJFTlQgV09SS0VSUyBUTyBCRUdJTiBTVEFSVElORyBVUFxuICAgICAgICBnYXRld2F5LmJ1Y2tldHMuZm9yRWFjaChhc3luYyAoYnVja2V0LCBidWNrZXRJZCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qgd29ya2VyIG9mIGJ1Y2tldC53b3JrZXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNoYXJkSWQgb2Ygd29ya2VyLnF1ZXVlKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy50ZWxsV29ya2VyVG9QcmVwYXJlKHdvcmtlci5pZCwgc2hhcmRJZCwgYnVja2V0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHRlbGxXb3JrZXJUb1ByZXBhcmUod29ya2VySWQsIHNoYXJkSWQsIGJ1Y2tldElkKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gVGVsbGluZyB3b3JrZXIgdG8gcHJlcGFyZS4gV29ya2VyOiAke3dvcmtlcklkfSB8IFNoYXJkOiAke3NoYXJkSWR9IHwgQnVja2V0OiAke2J1Y2tldElkfS5gKVxuICAgICAgICBjb25zdCBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IGdhdGV3YXkuY29tcHJlc3MsXG4gICAgICAgICAgICB0cmFuc3BvcnRDb21wcmVzc2lvbjogZ2F0ZXdheS50cmFuc3BvcnRDb21wcmVzc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgaW50ZW50czogZ2F0ZXdheS5pbnRlbnRzLFxuICAgICAgICAgICAgcHJvcGVydGllczogZ2F0ZXdheS5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdG9rZW46IGdhdGV3YXkudG9rZW4sXG4gICAgICAgICAgICB0b3RhbFNoYXJkczogZ2F0ZXdheS50b3RhbFNoYXJkcyxcbiAgICAgICAgICAgIHVybDogZ2F0ZXdheS51cmwsXG4gICAgICAgICAgICB2ZXJzaW9uOiBnYXRld2F5LnZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBJZ25vcmUgZXZlbnRzIHVudGlsIHdlIGFyZSByZWFkeVxuICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgYXN5bmMgbWVzc2FnZShfc2hhcmQsIHBheWxvYWQpIHtcbiAgICAgICAgICAgICAgaWYgKHBheWxvYWQudCA9PT0gJ1JFQURZJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy51cGRhdGVHdWlsZHNTaGFyZElkPy4oXG4gICAgICAgICAgICAgICAgICAocGF5bG9hZC5kIGFzIERpc2NvcmRSZWFkeSkuZ3VpbGRzLm1hcCgoZykgPT4gZy5pZCksXG4gICAgICAgICAgICAgICAgICBzaGFyZElkLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvZ2dlcjogZ2F0ZXdheS5sb2dnZXIsXG4gICAgICAgICAgcmVxdWVzdElkZW50aWZ5OiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaGFyZElzUmVhZHk6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbU2hhcmRdIFNoYXJkICMke3NoYXJkSWR9IGlzIHJlYWR5YClcbiAgICAgICAgICAgIGF3YWl0IGRlbGF5KGdhdGV3YXkuc3Bhd25TaGFyZERlbGF5KVxuICAgICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtTaGFyZF0gUmVzb2x2aW5nIHNoYXJkIGlkZW50aWZ5IHJlcXVlc3RgKVxuICAgICAgICAgICAgZ2F0ZXdheS5idWNrZXRzLmdldChzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KSEuaWRlbnRpZnlSZXF1ZXN0cy5zaGlmdCgpPy4oKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWFrZVByZXNlbmNlOiBnYXRld2F5Lm1ha2VQcmVzZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoZ2F0ZXdheS5wcmVmZXJTbmFrZUNhc2UpIHtcbiAgICAgICAgICBzaGFyZC5mb3J3YXJkVG9Cb3QgPSBhc3luYyAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgc2hhcmQuZXZlbnRzPy5tZXNzYWdlPy4oc2hhcmQsIHBheWxvYWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkcy5zZXQoc2hhcmRJZCwgc2hhcmQpXG5cbiAgICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KVxuICAgICAgICBpZiAoIWJ1Y2tldCkgcmV0dXJuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgLy8gTWFyayB0aGF0IHdlIGFyZSBtYWtpbmcgYW4gaWRlbnRpZnkgcmVxdWVzdCBzbyBhbm90aGVyIGlzIG5vdCBtYWRlLlxuICAgICAgICAgIGJ1Y2tldC5pZGVudGlmeVJlcXVlc3RzLnB1c2gocmVzb2x2ZSlcbiAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIElkZW50aWZ5aW5nIFNoYXJkICMke3NoYXJkSWR9LmApXG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgaWRlbnRpZnkgYW5kIHdoZW4gUkVBRFkgaXMgcmVjZWl2ZWQgaXQgd2lsbCByZXNvbHZlIHRoZSBhYm92ZSByZXF1ZXN0LlxuICAgICAgICAgIHNoYXJkPy5pZGVudGlmeSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gVGVsbCB0aGUgbWFuYWdlciB0aGF0IHRoaXMgc2hhcmQgaXMgb25saW5lXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkSXNQZW5kaW5nKHNoYXJkKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgYXN5bmMgc2hhcmRJc1BlbmRpbmcoc2hhcmQpIHtcbiAgICAgICAgLy8gU2F2ZSB0aGlzIGluIHBlbmRpbmcgYXQgdGhlIG1vbWVudCwgdW50aWwgYWxsIHNoYXJkcyBhcmUgb25saW5lXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5wZW5kaW5nU2hhcmRzLnNldChzaGFyZC5pZCwgc2hhcmQpXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbUmVzaGFyZGluZ10gU2hhcmQgIyR7c2hhcmQuaWR9IGlzIG5vdyBwZW5kaW5nLmApXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYWxsIHNoYXJkcyBhcmUgbm93IG9ubGluZS5cbiAgICAgICAgaWYgKGdhdGV3YXkubGFzdFNoYXJkSWQgLSBnYXRld2F5LmZpcnN0U2hhcmRJZCA+PSBnYXRld2F5LnJlc2hhcmRpbmcucGVuZGluZ1NoYXJkcy5zaXplKSByZXR1cm5cblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gQWxsIHNoYXJkcyBhcmUgbm93IG9ubGluZS5gKVxuXG4gICAgICAgIC8vIE5ldyBzaGFyZHMgc3RhcnQgcHJvY2Vzc2luZyBldmVudHNcbiAgICAgICAgZm9yIChjb25zdCBzaGFyZCBvZiBnYXRld2F5LnJlc2hhcmRpbmcuc2hhcmRzLnZhbHVlcygpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBldmVudCBpbiBvcHRpb25zLmV2ZW50cykge1xuICAgICAgICAgICAgc2hhcmQuZXZlbnRzW2V2ZW50IGFzIGtleW9mIFNoYXJkRXZlbnRzXSA9IG9wdGlvbnMuZXZlbnRzW2V2ZW50IGFzIGtleW9mIFNoYXJkRXZlbnRzXSBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT2xkIHNoYXJkcyBzdG9wIHByb2Nlc3NpbmcgZXZlbnRzXG4gICAgICAgIGZvciAoY29uc3Qgc2hhcmQgb2YgZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCkpIHtcbiAgICAgICAgICBjb25zdCBvbGRIYW5kbGVyID0gc2hhcmQuZXZlbnRzLm1lc3NhZ2VcblxuICAgICAgICAgIC8vIENoYW5nZSB3aXRoIHNwcmVhZCBvcGVyYXRvciB0byBub3QgYWZmZWN0IG5ldyBzaGFyZHMsIGFzIGNoYW5naW5nIGFueXRoaW5nIG9uIHNoYXJkLmV2ZW50cyB3aWxsIGRpcmVjdGx5IGNoYW5nZSBvcHRpb25zLmV2ZW50cywgd2hpY2ggY2hhbmdlcyBuZXcgc2hhcmRzJyBldmVudHNcbiAgICAgICAgICBzaGFyZC5ldmVudHMgPSB7XG4gICAgICAgICAgICAuLi5zaGFyZC5ldmVudHMsXG4gICAgICAgICAgICBtZXNzYWdlOiBhc3luYyBmdW5jdGlvbiAoXywgbWVzc2FnZSkge1xuICAgICAgICAgICAgICAvLyBNZW1iZXIgY2hlY2tzIG5lZWQgdG8gY29udGludWUgYnV0IG90aGVycyBjYW4gc3RvcFxuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50ID09PSAnR1VJTERfTUVNQkVSU19DSFVOSycpIHtcbiAgICAgICAgICAgICAgICBvbGRIYW5kbGVyPy4oc2hhcmQsIG1lc3NhZ2UpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuaW5mbyhgW1Jlc2hhcmRpbmddIFNodXR0aW5nIGRvd24gb2xkIHNoYXJkcy5gKVxuICAgICAgICAvLyBDbG9zZSBvbGQgc2hhcmRzXG4gICAgICAgIGF3YWl0IGdhdGV3YXkuc2h1dGRvd24oU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlJlc2hhcmRlZCwgJ1Jlc2hhcmRlZCEnLCBmYWxzZSlcblxuICAgICAgICBnYXRld2F5LmxvZ2dlci5pbmZvKGBbUmVzaGFyZGluZ10gQ29tcGxldGVkLmApXG5cbiAgICAgICAgLy8gUmVwbGFjZSBvbGQgc2hhcmRzXG4gICAgICAgIGdhdGV3YXkuc2hhcmRzID0gbmV3IENvbGxlY3Rpb24oZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkcylcblxuICAgICAgICAvLyBDbGVhciBvdXIgY29sbGVjdGlvbnMgYW5kIGtlZXAgb25seSBvbmUgcmVmZXJlbmNlIHRvIHRoZSBzaGFyZHMsIHRoZSBvbmUgaW4gZ2F0ZXdheS5zaGFyZHNcbiAgICAgICAgZ2F0ZXdheS5yZXNoYXJkaW5nLnNoYXJkcy5jbGVhcigpXG4gICAgICAgIGdhdGV3YXkucmVzaGFyZGluZy5wZW5kaW5nU2hhcmRzLmNsZWFyKClcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIGNhbGN1bGF0ZVRvdGFsU2hhcmRzKCkge1xuICAgICAgLy8gQm90cyB1bmRlciAxMDBrIHNlcnZlcnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIExCUy5cbiAgICAgIGlmIChnYXRld2F5LnRvdGFsU2hhcmRzIDwgMTAwKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gQ2FsY3VsYXRpbmcgdG90YWwgc2hhcmRzOiAke2dhdGV3YXkudG90YWxTaGFyZHN9YClcbiAgICAgICAgcmV0dXJuIGdhdGV3YXkudG90YWxTaGFyZHNcbiAgICAgIH1cblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB0b3RhbCBzaGFyZHNgLCBnYXRld2F5LnRvdGFsU2hhcmRzLCBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpXG4gICAgICAvLyBDYWxjdWxhdGUgYSBtdWx0aXBsZSBvZiBgbWF4Q29uY3VycmVuY3lgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgZ2F0ZXdheS50b3RhbFNoYXJkcyAvXG4gICAgICAgICAgICAvLyBJZiBgbWF4Q29uY3VycmVuY3lgIGlzIDEsIHdlIGNhbiBzYWZlbHkgdXNlIDE2IHRvIGdldCBgdG90YWxTaGFyZHNgIHRvIGJlIGluIGEgbXVsdGlwbGUgb2YgMTYgc28gdGhhdCB3ZSBjYW4gcHJlcGFyZSBib3RzIHdpdGggMTAwayBzZXJ2ZXJzIGZvciBMQlMuXG4gICAgICAgICAgICAoZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5ID09PSAxID8gMTYgOiBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpLFxuICAgICAgICApICogKGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSA9PT0gMSA/IDE2IDogZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KVxuICAgICAgKVxuICAgIH0sXG4gICAgY2FsY3VsYXRlV29ya2VySWQoc2hhcmRJZCkge1xuICAgICAgY29uc3Qgd29ya2VySWQgPSBNYXRoLm1pbihzaGFyZElkICUgZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIsIGdhdGV3YXkudG90YWxXb3JrZXJzIC0gMSlcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgW0dhdGV3YXldIENhbGN1bGF0aW5nIHdvcmtlcklkOiBTaGFyZDogJHtzaGFyZElkfSAtPiBXb3JrZXI6ICR7d29ya2VySWR9IC0+IFBlciBXb3JrZXI6ICR7Z2F0ZXdheS5zaGFyZHNQZXJXb3JrZXJ9IC0+IFRvdGFsOiAke2dhdGV3YXkudG90YWxXb3JrZXJzfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gd29ya2VySWRcbiAgICB9LFxuICAgIHByZXBhcmVCdWNrZXRzKCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3k7ICsraSkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFByZXBhcmluZyBidWNrZXRzIGZvciBjb25jdXJyZW5jeTogJHtpfWApXG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5zZXQoaSwge1xuICAgICAgICAgIHdvcmtlcnM6IFtdLFxuICAgICAgICAgIGlkZW50aWZ5UmVxdWVzdHM6IFtdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBPUkdBTklaRSBBTEwgU0hBUkRTIElOVE8gVEhFSVIgT1dOIEJVQ0tFVFNcbiAgICAgIGZvciAobGV0IHNoYXJkSWQgPSBnYXRld2F5LmZpcnN0U2hhcmRJZDsgc2hhcmRJZCA8PSBnYXRld2F5Lmxhc3RTaGFyZElkOyArK3NoYXJkSWQpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBQcmVwYXJpbmcgYnVja2V0cyBmb3Igc2hhcmQ6ICR7c2hhcmRJZH1gKVxuICAgICAgICBpZiAoc2hhcmRJZCA+PSBnYXRld2F5LnRvdGFsU2hhcmRzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIGlzIGJpZ2dlciBvciBlcXVhbCB0byB0aGUgdXNlZCBhbW91bnQgb2YgdXNlZCBzaGFyZHMgd2hpY2ggaXMgJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWNrZXRJZCA9IHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3lcbiAgICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChidWNrZXRJZClcbiAgICAgICAgaWYgKCFidWNrZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBnb3QgYXNzaWduZWQgdG8gYW4gaWxsZWdhbCBidWNrZXQgaWQ6ICR7YnVja2V0SWR9LCBleHBlY3RlZCBhIGJ1Y2tldCBpZCBiZXR3ZWVuIDAgYW5kICR7XG4gICAgICAgICAgICAgIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSAtIDFcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZJTkQgQSBRVUVVRSBJTiBUSElTIEJVQ0tFVCBUSEFUIEhBUyBTUEFDRVxuICAgICAgICAvLyBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LnF1ZXVlLmxlbmd0aCA8IGdhdGV3YXkuc2hhcmRzUGVyV29ya2VyKTtcbiAgICAgICAgY29uc3Qgd29ya2VySWQgPSBnYXRld2F5LmNhbGN1bGF0ZVdvcmtlcklkKHNoYXJkSWQpXG4gICAgICAgIGNvbnN0IHdvcmtlciA9IGJ1Y2tldC53b3JrZXJzLmZpbmQoKHcpID0+IHcuaWQgPT09IHdvcmtlcklkKVxuICAgICAgICBpZiAod29ya2VyKSB7XG4gICAgICAgICAgLy8gSUYgVEhFIFFVRVVFIEhBUyBTUEFDRSBKVVNUIEFERCBJVCBUTyBUSElTIFFVRVVFXG4gICAgICAgICAgd29ya2VyLnF1ZXVlLnB1c2goc2hhcmRJZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBidWNrZXQud29ya2Vycy5wdXNoKHsgaWQ6IHdvcmtlcklkLCBxdWV1ZTogW3NoYXJkSWRdIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBidWNrZXQgb2YgZ2F0ZXdheS5idWNrZXRzLnZhbHVlcygpKSB7XG4gICAgICAgIGZvciAoY29uc3Qgd29ya2VyIG9mIGJ1Y2tldC53b3JrZXJzLnZhbHVlcygpKSB7XG4gICAgICAgICAgd29ya2VyLnF1ZXVlID0gd29ya2VyLnF1ZXVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFBSRVBBUkVTIEFMTCBTSEFSRFMgSU4gU1BFQ0lGSUMgQlVDS0VUU1xuICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgIC8vIFByZWZlciBjb25jdXJyZW5jeSBvZiBmb3JFYWNoIGluc3RlYWQgb2YgZm9yb2ZcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKV0ubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnRlbGxXb3JrZXJUb0lkZW50aWZ5KHdvcmtlci5pZCwgc2hhcmRJZCwgYnVja2V0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgLy8gQ2hlY2sgYW5kIHJlc2hhcmQgYXV0b21hdGljYWxseSBpZiBhdXRvIHJlc2hhcmRpbmcgaXMgZW5hYmxlZC5cbiAgICAgIGlmIChnYXRld2F5LnJlc2hhcmRpbmcuZW5hYmxlZCAmJiBnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJbnRlcnZhbCAhPT0gLTEpIHtcbiAgICAgICAgLy8gSXQgaXMgYmV0dGVyIHRvIGVuc3VyZSB0aGVyZSBpcyBhbHdheXMgb25seSBvbmVcbiAgICAgICAgY2xlYXJJbnRlcnZhbChnYXRld2F5LnJlc2hhcmRpbmcuY2hlY2tJbnRlcnZhbElkKVxuXG4gICAgICAgIGlmICghZ2F0ZXdheS5yZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKSB7XG4gICAgICAgICAgZ2F0ZXdheS5yZXNoYXJkaW5nLmVuYWJsZWQgPSBmYWxzZVxuICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLndhcm4oXCJbUmVzaGFyZGluZ10gUmVzaGFyZGluZyBpcyBlbmFibGVkIGJ1dCAncmVzaGFyZGluZy5nZXRTZXNzaW9uSW5mbygpJyB3YXMgbm90IHByb3ZpZGVkLiBEaXNhYmxpbmcgcmVzaGFyZGluZy5cIilcblxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCByZXNoYXJkaW5nSW5mbyA9IGF3YWl0IGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0lmUmVzaGFyZGluZ0lzTmVlZGVkKClcblxuICAgICAgICAgIGlmIChyZXNoYXJkaW5nSW5mby5uZWVkZWQgJiYgcmVzaGFyZGluZ0luZm8uaW5mbykgYXdhaXQgZ2F0ZXdheS5yZXNoYXJkaW5nLnJlc2hhcmQocmVzaGFyZGluZ0luZm8uaW5mbylcbiAgICAgICAgfSwgZ2F0ZXdheS5yZXNoYXJkaW5nLmNoZWNrSW50ZXJ2YWwpXG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzaHV0ZG93bihjb2RlLCByZWFzb24sIGNsZWFyUmVzaGFyZGluZ0ludGVydmFsID0gdHJ1ZSkge1xuICAgICAgaWYgKGNsZWFyUmVzaGFyZGluZ0ludGVydmFsKSBjbGVhckludGVydmFsKGdhdGV3YXkucmVzaGFyZGluZy5jaGVja0ludGVydmFsSWQpXG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCkpLm1hcCgoc2hhcmQpID0+IHNoYXJkLmNsb3NlKGNvZGUsIHJlYXNvbikpKVxuICAgIH0sXG4gICAgYXN5bmMgc2VuZFBheWxvYWQoc2hhcmRJZCwgcGF5bG9hZCkge1xuICAgICAgY29uc3Qgc2hhcmQgPSBnYXRld2F5LnNoYXJkcy5nZXQoc2hhcmRJZClcblxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJkIChpZDogJHtzaGFyZElkfSBub3QgZm91bmRgKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzaGFyZC5zZW5kKHBheWxvYWQpXG4gICAgfSxcbiAgICBhc3luYyB0ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gVGVsbCB3b3JrZXIgdG8gaWRlbnRpZnkgKCR7d29ya2VySWR9LCAke3NoYXJkSWR9LCAke2J1Y2tldElkfSlgKVxuICAgICAgYXdhaXQgZ2F0ZXdheS5pZGVudGlmeShzaGFyZElkKVxuICAgIH0sXG4gICAgYXN5bmMgaWRlbnRpZnkoc2hhcmRJZDogbnVtYmVyKSB7XG4gICAgICBsZXQgc2hhcmQgPSB0aGlzLnNoYXJkcy5nZXQoc2hhcmRJZClcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gSWRlbnRpZnlpbmcgJHtzaGFyZCA/ICdleGlzdGluZycgOiAnbmV3J30gc2hhcmQgKCR7c2hhcmRJZH0pYClcblxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IHRoaXMuY29tcHJlc3MsXG4gICAgICAgICAgICB0cmFuc3BvcnRDb21wcmVzc2lvbjogZ2F0ZXdheS50cmFuc3BvcnRDb21wcmVzc2lvbixcbiAgICAgICAgICAgIGludGVudHM6IHRoaXMuaW50ZW50cyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMucHJvcGVydGllcyxcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxuICAgICAgICAgICAgdG90YWxTaGFyZHM6IHRoaXMudG90YWxTaGFyZHMsXG4gICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXZlbnRzOiBvcHRpb25zLmV2ZW50cyA/PyB7fSxcbiAgICAgICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgICAgICAgIHJlcXVlc3RJZGVudGlmeTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgZ2F0ZXdheS5pZGVudGlmeShzaGFyZElkKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hhcmRJc1JlYWR5OiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSBTaGFyZCAjJHtzaGFyZElkfSBpcyByZWFkeWApXG4gICAgICAgICAgICBhd2FpdCBkZWxheShnYXRld2F5LnNwYXduU2hhcmREZWxheSlcbiAgICAgICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbU2hhcmRdIFJlc29sdmluZyBzaGFyZCBpZGVudGlmeSByZXF1ZXN0YClcbiAgICAgICAgICAgIGdhdGV3YXkuYnVja2V0cy5nZXQoc2hhcmRJZCAlIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSkhLmlkZW50aWZ5UmVxdWVzdHMuc2hpZnQoKT8uKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1ha2VQcmVzZW5jZTogZ2F0ZXdheS5tYWtlUHJlc2VuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHRoaXMucHJlZmVyU25ha2VDYXNlKSB7XG4gICAgICAgICAgc2hhcmQuZm9yd2FyZFRvQm90ID0gYXN5bmMgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHNoYXJkIS5ldmVudHMubWVzc2FnZT8uKHNoYXJkISwgcGF5bG9hZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNoYXJkcy5zZXQoc2hhcmRJZCwgc2hhcmQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1Y2tldCA9IGdhdGV3YXkuYnVja2V0cy5nZXQoc2hhcmRJZCAlIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSlcbiAgICAgIGlmICghYnVja2V0KSByZXR1cm5cblxuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIC8vIE1hcmsgdGhhdCB3ZSBhcmUgbWFraW5nIGFuIGlkZW50aWZ5IHJlcXVlc3Qgc28gYW5vdGhlciBpcyBub3QgbWFkZS5cbiAgICAgICAgYnVja2V0LmlkZW50aWZ5UmVxdWVzdHMucHVzaChyZXNvbHZlKVxuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIElkZW50aWZ5aW5nIFNoYXJkICMke3NoYXJkSWR9LmApXG4gICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIGlkZW50aWZ5IGFuZCB3aGVuIFJFQURZIGlzIHJlY2VpdmVkIGl0IHdpbGwgcmVzb2x2ZSB0aGUgYWJvdmUgcmVxdWVzdC5cbiAgICAgICAgc2hhcmQ/LmlkZW50aWZ5KClcbiAgICAgIH0pXG4gICAgfSxcbiAgICBhc3luYyBraWxsKHNoYXJkSWQ6IG51bWJlcikge1xuICAgICAgY29uc3Qgc2hhcmQgPSB0aGlzLnNoYXJkcy5nZXQoc2hhcmRJZClcbiAgICAgIGlmICghc2hhcmQpIHtcbiAgICAgICAgcmV0dXJuIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gQSBraWxsIGZvciBTaGFyZCAjJHtzaGFyZElkfSB3YXMgcmVxdWVzdGVkLCBidXQgdGhlIHNoYXJkIGNvdWxkIG5vdCBiZSBmb3VuZGApXG4gICAgICB9XG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gS2lsbGluZyBTaGFyZCAjJHtzaGFyZElkfWApXG4gICAgICB0aGlzLnNoYXJkcy5kZWxldGUoc2hhcmRJZClcbiAgICAgIGF3YWl0IHNoYXJkLnNodXRkb3duKClcbiAgICB9LFxuICAgIGFzeW5jIHJlcXVlc3RJZGVudGlmeShfc2hhcmRJZDogbnVtYmVyKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFJlcXVlc3RpbmcgaWRlbnRpZnlgKVxuICAgIH0sXG5cbiAgICAvLyBIZWxwZXJzIG1ldGhvZHMgYmVsb3cgdGhpc1xuXG4gICAgY2FsY3VsYXRlU2hhcmRJZChndWlsZElkLCB0b3RhbFNoYXJkcykge1xuICAgICAgLy8gSWYgbm9uZSBpcyBwcm92aWRlZCwgdXNlIHRoZSB0b3RhbCBzaGFyZHMgbnVtYmVyIGZyb20gZ2F0ZXdheSBvYmplY3QuXG4gICAgICBpZiAoIXRvdGFsU2hhcmRzKSB0b3RhbFNoYXJkcyA9IGdhdGV3YXkudG90YWxTaGFyZHNcbiAgICAgIC8vIElmIGl0IGlzIG9ubHkgMSBzaGFyZCwgaXQgd2lsbCBhbHdheXMgYmUgc2hhcmQgaWQgMFxuICAgICAgaWYgKHRvdGFsU2hhcmRzID09PSAxKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gY2FsY3VsYXRlU2hhcmRJZCAoMSBzaGFyZClgKVxuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGNhbGN1bGF0ZVNoYXJkSWQgKGd1aWxkSWQ6ICR7Z3VpbGRJZH0sIHRvdGFsU2hhcmRzOiAke3RvdGFsU2hhcmRzfSlgKVxuICAgICAgcmV0dXJuIE51bWJlcigoQmlnSW50KGd1aWxkSWQpID4+IDIybikgJSBCaWdJbnQodG90YWxTaGFyZHMpKVxuICAgIH0sXG5cbiAgICBhc3luYyBqb2luVm9pY2VDaGFubmVsKGd1aWxkSWQsIGNoYW5uZWxJZCwgb3B0aW9ucykge1xuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGpvaW5Wb2ljZUNoYW5uZWwgZ3VpbGRJZDogJHtndWlsZElkfSBjaGFubmVsSWQ6ICR7Y2hhbm5lbElkfWApXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgc2VsZl9tdXRlOiBvcHRpb25zPy5zZWxmTXV0ZSA/PyBmYWxzZSxcbiAgICAgICAgICBzZWxmX2RlYWY6IG9wdGlvbnM/LnNlbGZEZWFmID8/IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyBlZGl0Qm90U3RhdHVzKGRhdGEpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gZWRpdEJvdFN0YXR1cyBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApXG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCldLm1hcChhc3luYyAoc2hhcmQpID0+IHtcbiAgICAgICAgICBnYXRld2F5LmVkaXRTaGFyZFN0YXR1cyhzaGFyZC5pZCwgZGF0YSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhzaGFyZElkLCBkYXRhKSB7XG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGVkaXRTaGFyZFN0YXR1cyBzaGFyZElkOiAke3NoYXJkSWR9IC0+IGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcblxuICAgICAgYXdhaXQgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5QcmVzZW5jZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIHNpbmNlOiBudWxsLFxuICAgICAgICAgIGFmazogZmFsc2UsXG4gICAgICAgICAgYWN0aXZpdGllczogZGF0YS5hY3Rpdml0aWVzLFxuICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgIGlmIChnYXRld2F5LmludGVudHMgJiYgKCFvcHRpb25zPy5saW1pdCB8fCBvcHRpb25zLmxpbWl0ID4gMSkgJiYgIShnYXRld2F5LmludGVudHMgJiBHYXRld2F5SW50ZW50cy5HdWlsZE1lbWJlcnMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBtb3JlIHRoZW4gMSBtZW1iZXIgd2l0aG91dCB0aGUgR1VJTERfTUVNQkVSUyBpbnRlbnQnKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gKVxuXG4gICAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBzZXR0aW5nIHVzZXIgbGltaXQgYmFzZWQgb24gdXNlcklkcyBsZW5ndGg6ICR7b3B0aW9ucy51c2VySWRzLmxlbmd0aH1gKVxuXG4gICAgICAgIG9wdGlvbnMubGltaXQgPSBvcHRpb25zLnVzZXJJZHMubGVuZ3RoXG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9ucz8ubm9uY2UpIHtcbiAgICAgICAgbGV0IG5vbmNlID0gJydcblxuICAgICAgICB3aGlsZSAoIW5vbmNlIHx8IGdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnMucGVuZGluZy5oYXMobm9uY2UpKSB7XG4gICAgICAgICAgbm9uY2UgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zID8/PSB7IGxpbWl0OiAwIH1cbiAgICAgICAgb3B0aW9ucy5ub25jZSA9IG5vbmNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lbWJlcnMgPSAhZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkXG4gICAgICAgID8gW11cbiAgICAgICAgOiBuZXcgUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgICAgICBpZiAoIWdhdGV3YXkuY2FjaGUucmVxdWVzdE1lbWJlcnMuZW5hYmxlZCB8fCAhb3B0aW9ucz8ubm9uY2UpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkNhbid0IHJlcXVlc3QgdGhlIG1lbWJlcnMgd2l0aG91dCB0aGUgbm9uY2Ugb3Igd2l0aCB0aGUgZmVhdHVyZSBkaXNhYmxlZC5cIikpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzLnBlbmRpbmcuc2V0KG9wdGlvbnMubm9uY2UsIHtcbiAgICAgICAgICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlJlcXVlc3RHdWlsZE1lbWJlcnMsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIC8vIElmIGEgcXVlcnkgaXMgcHJvdmlkZWQgdXNlIGl0LCBPUiBpZiBhIGxpbWl0IGlzIE5PVCBwcm92aWRlZCB1c2UgXCJcIlxuICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnM/LmxpbWl0ID8/IDAsXG4gICAgICAgICAgcHJlc2VuY2VzOiBvcHRpb25zPy5wcmVzZW5jZXMgPz8gZmFsc2UsXG4gICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgIG5vbmNlOiBvcHRpb25zPy5ub25jZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBhd2FpdCBtZW1iZXJzXG4gICAgfSxcblxuICAgIGFzeW5jIGxlYXZlVm9pY2VDaGFubmVsKGd1aWxkSWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcblxuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBsZWF2ZVZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IFNoYXJkICR7c2hhcmRJZH1gKVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlZvaWNlU3RhdGVVcGRhdGUsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYW5uZWxfaWQ6IG51bGwsXG4gICAgICAgICAgc2VsZl9tdXRlOiBmYWxzZSxcbiAgICAgICAgICBzZWxmX2RlYWY6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMoZ3VpbGRJZHMpIHtcbiAgICAgIC8qKlxuICAgICAgICogRGlzY29yZCB3aWxsIHNlbmQgdGhlIGV2ZW50cyBmb3IgdGhlIGd1aWxkcyB0aGF0IGFyZSBcInVuZGVyIHRoZSBzaGFyZFwiIHRoYXQgc2VuZHMgdGhlIG9wY29kZS5cbiAgICAgICAqIEZvciB0aGlzIHJlYXNvbiB3ZSBuZWVkIHRvIGdyb3VwIHRoZSBpZHMgd2l0aCB0aGUgc2hhcmQgdGhlIGNhbGN1bGF0ZVNoYXJkSWQgbWV0aG9kIGdpdmVzXG4gICAgICAgKi9cblxuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIEJpZ1N0cmluZ1tdPigpXG5cbiAgICAgIGZvciAoY29uc3QgZ3VpbGRJZCBvZiBndWlsZElkcykge1xuICAgICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgICAgY29uc3QgaWRzID0gbWFwLmdldChzaGFyZElkKSA/PyBbXVxuICAgICAgICBtYXAuc2V0KHNoYXJkSWQsIGlkcylcblxuICAgICAgICBpZHMucHVzaChndWlsZElkKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWy4uLm1hcC5lbnRyaWVzKCldLm1hcCgoW3NoYXJkSWQsIGlkc10pID0+XG4gICAgICAgICAgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdFNvdW5kYm9hcmRTb3VuZHMsXG4gICAgICAgICAgICBkOiB7XG4gICAgICAgICAgICAgIGd1aWxkX2lkczogaWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9LFxuICB9XG5cbiAgcmV0dXJuIGdhdGV3YXlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMge1xuICAvKipcbiAgICogSWQgb2YgdGhlIGZpcnN0IFNoYXJkIHdoaWNoIHNob3VsZCBnZXQgY29udHJvbGxlZCBieSB0aGlzIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGZpcnN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogSWQgb2YgdGhlIGxhc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgbGFzdFNoYXJkSWQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzcGF3bmluZyBuZXh0IHNoYXJkLiBPUFRJTUFMIElTIEFCT1ZFIDUxMDAuIFlPVSBET04nVCBXQU5UIFRPIEhJVCBUSEUgUkFURSBMSU1JVCEhIVxuICAgKiBAZGVmYXVsdCA1MzAwXG4gICAqL1xuICBzcGF3blNoYXJkRGVsYXk/OiBudW1iZXJcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2VuZCB0aGUgZGlzY29yZCBwYWNrZXRzIGluIHNuYWtlIGNhc2UgZm9ybS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByZWZlclNuYWtlQ2FzZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRvdGFsIGFtb3VudCBvZiBzaGFyZHMgeW91ciBib3QgdXNlcy4gVXNlZnVsIGZvciB6ZXJvLWRvd250aW1lIHVwZGF0ZXMgb3IgcmVzaGFyZGluZy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgdG90YWxTaGFyZHM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2Ygc2hhcmRzIHRvIGxvYWQgcGVyIHdvcmtlci5cbiAgICogQGRlZmF1bHQgMjVcbiAgICovXG4gIHNoYXJkc1Blcldvcmtlcj86IG51bWJlclxuICAvKipcbiAgICogVGhlIHRvdGFsIGFtb3VudCBvZiB3b3JrZXJzIHRvIHVzZSBmb3IgeW91ciBib3QuXG4gICAqIEBkZWZhdWx0IDRcbiAgICovXG4gIHRvdGFsV29ya2Vycz86IG51bWJlclxuICAvKiogSW1wb3J0YW50IGRhdGEgd2hpY2ggaXMgdXNlZCBieSB0aGUgbWFuYWdlciB0byBjb25uZWN0IHNoYXJkcyB0byB0aGUgZ2F0ZXdheS4gKi9cbiAgY29ubmVjdGlvbj86IENhbWVsaXplPERpc2NvcmRHZXRHYXRld2F5Qm90PlxuICAvKiogV2hldGhlciBpbmNvbWluZyBwYXlsb2FkcyBhcmUgY29tcHJlc3NlZCB1c2luZyB6bGliLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY29tcHJlc3M/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRyYW5zcG9ydCBjb21wcmVzc2lvbiBzaG91bGQgYmUgdXNlZCAqL1xuICB0cmFuc3BvcnRDb21wcmVzc2lvbj86IFRyYW5zcG9ydENvbXByZXNzaW9uIHwgbnVsbFxuICAvKiogVGhlIGNhbGN1bGF0ZWQgaW50ZW50IHZhbHVlIG9mIHRoZSBldmVudHMgd2hpY2ggdGhlIHNoYXJkIHNob3VsZCByZWNlaXZlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBpbnRlbnRzPzogbnVtYmVyXG4gIC8qKiBJZGVudGlmeSBwcm9wZXJ0aWVzIHRvIHVzZSAqL1xuICBwcm9wZXJ0aWVzPzoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsPzogc3RyaW5nXG4gIC8qKiBUaGUgZ2F0ZXdheSB2ZXJzaW9uIHdoaWNoIHNob3VsZCBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbj86IG51bWJlclxuICAvKiogVGhlIGV2ZW50cyBoYW5kbGVycyAqL1xuICBldmVudHM/OiBTaGFyZEV2ZW50c1xuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZT86IHtcbiAgICByZXF1ZXN0TWVtYmVycz86IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciBvciBub3QgcmVxdWVzdCBtZW1iZXIgcmVxdWVzdHMgc2hvdWxkIGJlIGNhY2hlZC5cbiAgICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBUaGUgbG9nZ2VyIHRoYXQgdGhlIGdhdGV3YXkgbWFuYWdlciB3aWxsIHVzZS5cbiAgICogQGRlZmF1bHQgbG9nZ2VyIC8vIFRoZSBsb2dnZXIgZXhwb3J0ZWQgYnkgYEBkaXNjb3JkZW5vL3V0aWxzYFxuICAgKi9cbiAgbG9nZ2VyPzogUGljazx0eXBlb2YgbG9nZ2VyLCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdmYXRhbCc+XG4gIC8qKlxuICAgKiBNYWtlIHRoZSBwcmVzZW5jZSBmb3Igd2hlbiB0aGUgYm90IGNvbm5lY3RzIHRvIHRoZSBnYXRld2F5XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZWFjaCB0aW1lIGEgU2hhcmQgaXMgZ29pbmcgdG8gaWRlbnRpZnlcbiAgICovXG4gIG1ha2VQcmVzZW5jZT86ICgpID0+IFByb21pc2U8Qm90U3RhdHVzVXBkYXRlIHwgdW5kZWZpbmVkPlxuICAvKiogT3B0aW9ucyByZWxhdGVkIHRvIHJlc2hhcmRpbmcuICovXG4gIHJlc2hhcmRpbmc/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgYXV0b21hdGVkIHJlc2hhcmRpbmcgc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBUaGUgJSBvZiBob3cgZnVsbCBhIHNoYXJkIGlzIHdoZW4gcmVzaGFyZGluZyBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBXZSB1c2UgZGlzY29yZCByZWNvbW1lbmRlZCBzaGFyZCB2YWx1ZSB0byBnZXQgYW4gKiphcHByb3hpbWF0aW9uKiogb2YgdGhlIHNoYXJkIGZ1bGwgcGVyY2VudGFnZSB0byBjb21wYXJlIHdpdGggdGhpcyB2YWx1ZSBzbyB0aGUgYm90IG1heSBub3QgcmVzaGFyZCBhdCB0aGUgZXhhY3QgcGVyY2VudGFnZSBwcm92aWRlZCBidXQgbWF5IHJlc2hhcmQgd2hlbiBpdCBpcyBhIGJpdCBoaWdoZXIgdGhhbiB0aGUgcHJvdmlkZWQgcGVyY2VudGFnZS5cbiAgICAgKiBGb3IgYWNjdXJhdGUgY2FsY3VsYXRpb24sIHlvdSBtYXkgb3ZlcnJpZGUgdGhlIGBjaGVja0lmUmVzaGFyZGluZ0lzTmVlZGVkYCBmdW5jdGlvblxuICAgICAqXG4gICAgICogQGRlZmF1bHQgODAgYXMgaW4gODAlXG4gICAgICovXG4gICAgc2hhcmRzRnVsbFBlcmNlbnRhZ2U6IG51bWJlclxuICAgIC8qKlxuICAgICAqIFRoZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMsIG9mIGhvdyBvZnRlbiB0byBjaGVjayB3aGV0aGVyIHJlc2hhcmRpbmcgaXMgbmVlZGVkIGFuZCByZXNoYXJkIGF1dG9tYXRpY2FsbHkuIFNldCB0byAtMSB0byBkaXNhYmxlIGF1dG8gcmVzaGFyZGluZy5cbiAgICAgKiBAZGVmYXVsdCAyODgwMDAwMCAoOCBob3VycylcbiAgICAgKi9cbiAgICBjaGVja0ludGVydmFsOiBudW1iZXJcbiAgICAvKiogSGFuZGxlciB0byBnZXQgc2hhcmQgY291bnQgYW5kIG90aGVyIHNlc3Npb24gaW5mby4gKi9cbiAgICBnZXRTZXNzaW9uSW5mbz86ICgpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+PlxuICAgIC8qKiBIYW5kbGVyIHRvIGVkaXQgdGhlIHNoYXJkIGlkIG9uIGFueSBjYWNoZWQgZ3VpbGRzLiAqL1xuICAgIHVwZGF0ZUd1aWxkc1NoYXJkSWQ/OiAoZ3VpbGRJZHM6IHN0cmluZ1tdLCBzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlNYW5hZ2VyIGV4dGVuZHMgUmVxdWlyZWQ8Q3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zPiB7XG4gIC8qKiBUaGUgbWF4IGNvbmN1cnJlbmN5IGJ1Y2tldHMuIFRob3NlIHdpbGwgYmUgY3JlYXRlZCB3aGVuIHRoZSBgc3Bhd25TaGFyZHNgICh3aGljaCBjYWxscyBgcHJlcGFyZUJ1Y2tldHNgIHVuZGVyIHRoZSBob29kKSBmdW5jdGlvbiBnZXRzIGNhbGxlZC4gKi9cbiAgYnVja2V0czogTWFwPFxuICAgIG51bWJlcixcbiAgICB7XG4gICAgICB3b3JrZXJzOiBBcnJheTx7IGlkOiBudW1iZXI7IHF1ZXVlOiBudW1iZXJbXSB9PlxuICAgICAgLyoqIFJlcXVlc3RzIHRvIGlkZW50aWZ5IHNoYXJkcyBhcmUgbWFkZSBiYXNlZCBvbiB3aGV0aGVyIGl0IGlzIGF2YWlsYWJsZSB0byBiZSBtYWRlLiAqL1xuICAgICAgaWRlbnRpZnlSZXF1ZXN0czogQXJyYXk8KHZhbHVlOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4pID0+IHZvaWQ+XG4gICAgfVxuICA+XG4gIC8qKiBUaGUgc2hhcmRzIHRoYXQgYXJlIGNyZWF0ZWQuICovXG4gIHNoYXJkczogTWFwPG51bWJlciwgU2hhcmQ+XG4gIC8qKiBUaGUgbG9nZ2VyIGZvciB0aGUgZ2F0ZXdheSBtYW5hZ2VyLiAqL1xuICBsb2dnZXI6IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxuICAvKiogRXZlcnl0aGluZyByZWxhdGVkIHRvIHJlc2hhcmRpbmcuICovXG4gIHJlc2hhcmRpbmc6IENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9uc1sncmVzaGFyZGluZyddICYge1xuICAgIC8qKlxuICAgICAqIFRoZSBpbnRlcnZhbCBpZCBvZiB0aGUgY2hlY2sgaW50ZXJ2YWwuIFRoaXMgaXMgdXNlZCB0byBjbGVhciB0aGUgaW50ZXJ2YWwgd2hlbiB0aGUgbWFuYWdlciBpcyBzaHV0ZG93bi5cbiAgICAgKi9cbiAgICBjaGVja0ludGVydmFsSWQ/OiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZFxuICAgIC8qKiBIb2xkcyB0aGUgc2hhcmRzIHRoYXQgcmVzaGFyZGluZyBoYXMgY3JlYXRlZC4gT25jZSByZXNoYXJkaW5nIGlzIGRvbmUsIHRoaXMgcmVwbGFjZXMgdGhlIGdhdGV3YXkuc2hhcmRzICovXG4gICAgc2hhcmRzOiBDb2xsZWN0aW9uPG51bWJlciwgU2hhcmQ+XG4gICAgLyoqIEhvbGRzIHRoZSBwZW5kaW5nIHNoYXJkcyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhcmUgcGVuZGluZyBhbGwgc2hhcmRzIGZpbmlzaCBsb2FkaW5nLiAqL1xuICAgIHBlbmRpbmdTaGFyZHM6IENvbGxlY3Rpb248bnVtYmVyLCBTaGFyZD5cbiAgICAvKiogSGFuZGxlciB0byBjaGVjayBpZiByZXNoYXJkaW5nIGlzIG5lY2Vzc2FyeS4gKi9cbiAgICBjaGVja0lmUmVzaGFyZGluZ0lzTmVlZGVkOiAoKSA9PiBQcm9taXNlPHsgbmVlZGVkOiBib29sZWFuOyBpbmZvPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+IH0+XG4gICAgLyoqIEhhbmRsZXIgdG8gYmVnaW4gcmVzaGFyZGluZy4gKi9cbiAgICByZXNoYXJkOiAoaW5mbzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+ICYgeyBmaXJzdFNoYXJkSWQ/OiBudW1iZXI7IGxhc3RTaGFyZElkPzogbnVtYmVyIH0pID0+IFByb21pc2U8dm9pZD5cbiAgICAvKiogSGFuZGxlciB0byBjb21tdW5pY2F0ZSB0byBhIHdvcmtlciB0aGF0IGEgc2hhcmQgbmVlZHMgdG8gYmUgY3JlYXRlZC4gKi9cbiAgICB0ZWxsV29ya2VyVG9QcmVwYXJlOiAod29ya2VySWQ6IG51bWJlciwgc2hhcmRJZDogbnVtYmVyLCBidWNrZXRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgLyoqIEhhbmRsZXIgdG8gYWxlcnQgdGhlIGdhdGV3YXkgdGhhdCBhIHNoYXJkKHJlc2hhcmRlZCkgaXMgb25saW5lLiBJdCBzaG91bGQgbm93IHdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gYmUgcGVuZGluZyBiZWZvcmUgc2h1dHRpbmcgb2ZmIG9sZCBzaGFyZHMuICovXG4gICAgc2hhcmRJc1BlbmRpbmc6IChzaGFyZDogU2hhcmQpID0+IFByb21pc2U8dm9pZD5cbiAgfVxuICAvKiogRGV0ZXJtaW5lIG1heCBudW1iZXIgb2Ygc2hhcmRzIHRvIHVzZSBiYXNlZCB1cG9uIHRoZSBtYXggY29uY3VycmVuY3kuICovXG4gIGNhbGN1bGF0ZVRvdGFsU2hhcmRzOiAoKSA9PiBudW1iZXJcbiAgLyoqIERldGVybWluZSB0aGUgaWQgb2YgdGhlIHdvcmtlciB3aGljaCBpcyBoYW5kbGluZyBhIHNoYXJkLiAqL1xuICBjYWxjdWxhdGVXb3JrZXJJZDogKHNoYXJkSWQ6IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKiBQcmVwYXJlcyBhbGwgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc2hhcmRzLiAqL1xuICBwcmVwYXJlQnVja2V0czogKCkgPT4gdm9pZFxuICAvKiogU3RhcnQgaWRlbnRpZnlpbmcgYWxsIHRoZSBzaGFyZHMuICovXG4gIHNwYXduU2hhcmRzOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0ZG93biBhbGwgc2hhcmRzLiAqL1xuICBzaHV0ZG93bjogKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcsIGNsZWFyUmVzaGFyZGluZ0ludGVydmFsPzogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZW5kUGF5bG9hZDogKHNoYXJkSWQ6IG51bWJlciwgcGF5bG9hZDogU2hhcmRTb2NrZXRSZXF1ZXN0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBBbGxvd3MgdXNlcnMgdG8gaG9vayBpbiBhbmQgY2hhbmdlIHRvIGNvbW11bmljYXRlIHRvIGRpZmZlcmVudCB3b3JrZXJzIGFjcm9zcyBkaWZmZXJlbnQgc2VydmVycyBvciBhbnl0aGluZyB0aGV5IGxpa2UuIEZvciBleGFtcGxlIHVzaW5nIHJlZGlzIHB1YnN1YiB0byB0YWxrIHRvIG90aGVyIHNlcnZlcnMuICovXG4gIHRlbGxXb3JrZXJUb0lkZW50aWZ5OiAod29ya2VySWQ6IG51bWJlciwgc2hhcmRJZDogbnVtYmVyLCBidWNrZXRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBUZWxsIHRoZSBtYW5hZ2VyIHRvIGlkZW50aWZ5IGEgU2hhcmQuIElmIHRoaXMgU2hhcmQgaXMgbm90IGFscmVhZHkgbWFuYWdlZCB0aGlzIHdpbGwgYWxzbyBhZGQgdGhlIFNoYXJkIHRvIHRoZSBtYW5hZ2VyLiAqL1xuICBpZGVudGlmeTogKHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogS2lsbCBhIHNoYXJkLiBDbG9zZSBhIHNoYXJkcyBjb25uZWN0aW9uIHRvIERpc2NvcmQncyBnYXRld2F5IChpZiBhbnkpIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbWFuYWdlci4gKi9cbiAga2lsbDogKHNoYXJkSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGhpcyBmdW5jdGlvbiBtYWtlcyBzdXJlIHRoYXQgdGhlIGJ1Y2tldCBpcyBhbGxvd2VkIHRvIG1ha2UgdGhlIG5leHQgaWRlbnRpZnkgcmVxdWVzdC4gKi9cbiAgcmVxdWVzdElkZW50aWZ5OiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2Ygc2hhcmRzIGJhc2VkIG9uIHRoZSBndWlsZCBpZCBhbmQgdG90YWwgc2hhcmRzLiAqL1xuICBjYWxjdWxhdGVTaGFyZElkOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB0b3RhbFNoYXJkcz86IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBDb25uZWN0cyB0aGUgYm90IHVzZXIgdG8gYSB2b2ljZSBvciBzdGFnZSBjaGFubmVsLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIHRoZSBfVXBkYXRlIFZvaWNlIFN0YXRlXyBnYXRld2F5IGNvbW1hbmQgb3ZlciB0aGUgZ2F0ZXdheSBiZWhpbmQgdGhlIHNjZW5lcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSB2b2ljZSBjaGFubmVsIHRvIGxlYXZlIGlzIGluLlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHlvdSB3YW50IHRvIGpvaW4uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ09OTkVDVGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfVm9pY2UgU3RhdGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN1cGRhdGUtdm9pY2Utc3RhdGV9XG4gICAqL1xuICBqb2luVm9pY2VDaGFubmVsOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEF0TGVhc3RPbmU8T21pdDxVcGRhdGVWb2ljZVN0YXRlLCAnZ3VpbGRJZCcgfCAnY2hhbm5lbElkJz4+KSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgYm90IHN0YXR1cyBpbiBhbGwgc2hhcmRzIHRoYXQgdGhpcyBnYXRld2F5IG1hbmFnZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBzdGF0dXMgZGF0YSB0byBzZXQgdGhlIGJvdHMgc3RhdHVzIHRvLlxuICAgKiBAcmV0dXJucyBub3RoaW5nXG4gICAqL1xuICBlZGl0Qm90U3RhdHVzOiAoZGF0YTogU3RhdHVzVXBkYXRlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgYm90J3Mgc3RhdHVzIG9uIG9uZSBzaGFyZC5cbiAgICpcbiAgICogQHBhcmFtIHNoYXJkSWQgVGhlIHNoYXJkIGlkIHRvIGVkaXQgdGhlIHN0YXR1cyBmb3IuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBzdGF0dXMgZGF0YSB0byBzZXQgdGhlIGJvdHMgc3RhdHVzIHRvLlxuICAgKiBAcmV0dXJucyBub3RoaW5nXG4gICAqL1xuICBlZGl0U2hhcmRTdGF0dXM6IChzaGFyZElkOiBudW1iZXIsIGRhdGE6IFN0YXR1c1VwZGF0ZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvciBhIGd1aWxkIG92ZXIgdGhlIGdhdGV3YXkuIElmIGBnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzLmVuYWJsZWRgIGlzIG5vdCBzZXQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZW1wdHkgYXJyYXkgYW5kIHlvdSdsbCBoYXZlIHRvIGhhbmRsZSB0aGUgYEdVSUxEX01FTUJFUlNfQ0hVTktgIGV2ZW50cyB5b3Vyc2VsZi5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZW1iZXJzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiByZXF1ZXN0aW5nIHRoZSBlbnRpcmUgbWVtYmVyIGxpc3Q6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9NRU1CRVJTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgcHJlc2VuY2VzICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5wcmVzZW5jZXMgfCBwcmVzZW5jZXN9IHNldCB0byBgdHJ1ZWApOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfUFJFU0VOQ0VTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSBwcmVmaXggKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnF1ZXJ5IHwgcXVlcnl9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSB1c2VycyBieSBJRCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMudXNlcklkcyB8IHVzZXJJZHN9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlcnMgQ2h1bmtfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IDEwMDAgbWVtYmVycyBmZXRjaGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSNyZXF1ZXN0LWd1aWxkLW1lbWJlcnN9XG4gICAqL1xuICByZXF1ZXN0TWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IE9taXQ8UmVxdWVzdEd1aWxkTWVtYmVycywgJ2d1aWxkSWQnPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT4+XG4gIC8qKlxuICAgKiBMZWF2ZXMgdGhlIHZvaWNlIGNoYW5uZWwgdGhlIGJvdCB1c2VyIGlzIGN1cnJlbnRseSBpbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfVm9pY2UgU3RhdGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN1cGRhdGUtdm9pY2Utc3RhdGV9XG4gICAqL1xuICBsZWF2ZVZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogVXNlZCB0byByZXF1ZXN0IHNvdW5kYm9hcmQgc291bmRzIGZvciBhIGxpc3Qgb2YgZ3VpbGRzLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIG11bHRpcGxlIChzZWUgcmVtYXJrcykgX1JlcXVlc3QgU291bmRib2FyZCBTb3VuZHNfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZHMgLSBUaGUgZ3VpbGRzIHRvIGdldCB0aGUgc291bmRzIGZyb21cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfU291bmRib2FyZCBTb3VuZHNfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIOKaoO+4jyBEaXNjb3JkIHdpbGwgc2VuZCB0aGUgX1NvdW5kYm9hcmQgU291bmRzXyBmb3IgZWFjaCBvZiB0aGUgZ3VpbGQgaWRzXG4gICAqIGhvd2V2ZXIgeW91IG1heSBub3QgcmVjZWl2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZXZlbnRzIGFzIHRoZSBpZHMgcGFzc2VkIHRvIF9SZXF1ZXN0IFNvdW5kYm9hcmQgU291bmRzXyBmb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29uczpcbiAgICogLSBUaGUgYm90IGlzIG5vdCBpbiB0aGUgc2VydmVyIHByb3ZpZGVkXG4gICAqIC0gVGhlIHNoYXJkIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHNlbnQgZnJvbSBkb2VzIG5vdCByZWNlaXZlIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBndWlsZFxuICAgKlxuICAgKiBUbyBhdm9pZCB0aGlzIERpc2NvcmRlbm8gd2lsbCBhdXRvbWF0aWNhbGx5IHRyeSB0byBncm91cCB0aGUgaWRzIGJhc2VkIG9uIHdoYXQgc2hhcmQgdGhleSB3aWxsIG5lZWQgdG8gYmUgc2VudCwgYnV0IHRoaXMgaW52b2x2ZXMgc2VuZGluZyBtdWx0aXBsZSBtZXNzYWdlcyBpbiBtdWx0aXBsZSBzaGFyZHNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI3JlcXVlc3Qtc291bmRib2FyZC1zb3VuZHN9XG4gICAqL1xuICByZXF1ZXN0U291bmRib2FyZFNvdW5kczogKGd1aWxkSWRzOiBCaWdTdHJpbmdbXSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZToge1xuICAgIHJlcXVlc3RNZW1iZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgb3Igbm90IHJlcXVlc3QgbWVtYmVyIHJlcXVlc3RzIHNob3VsZCBiZSBjYWNoZWQuXG4gICAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAgICovXG4gICAgICBlbmFibGVkOiBib29sZWFuXG4gICAgICAvKiogVGhlIHBlbmRpbmcgcmVxdWVzdHMuICovXG4gICAgICBwZW5kaW5nOiBDb2xsZWN0aW9uPHN0cmluZywgUmVxdWVzdE1lbWJlclJlcXVlc3Q+XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE1lbWJlclJlcXVlc3Qge1xuICAvKiogVGhlIHVuaXF1ZSBub25jZSBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBub25jZTogc3RyaW5nXG4gIC8qKiBUaGUgcmVzb2x2ZXIgaGFuZGxlciB0byBydW4gd2hlbiBhbGwgbWVtYmVycyBhcnJpdmUuICovXG4gIHJlc29sdmU6ICh2YWx1ZTogQ2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+IHwgUHJvbWlzZUxpa2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PikgPT4gdm9pZFxuICAvKiogVGhlIG1lbWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgYXJyaXZlZCBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBtZW1iZXJzOiBEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXVxufVxuIl0sIm5hbWVzIjpbInJhbmRvbUJ5dGVzIiwiR2F0ZXdheUludGVudHMiLCJHYXRld2F5T3Bjb2RlcyIsIkNvbGxlY3Rpb24iLCJkZWxheSIsImxvZ2dlciIsIlNoYXJkIiwiU2hhcmRTb2NrZXRDbG9zZUNvZGVzIiwiY3JlYXRlR2F0ZXdheU1hbmFnZXIiLCJvcHRpb25zIiwiY29ubmVjdGlvbk9wdGlvbnMiLCJjb25uZWN0aW9uIiwidXJsIiwic2hhcmRzIiwic2Vzc2lvblN0YXJ0TGltaXQiLCJtYXhDb25jdXJyZW5jeSIsInJlbWFpbmluZyIsInRvdGFsIiwicmVzZXRBZnRlciIsImdhdGV3YXkiLCJldmVudHMiLCJjb21wcmVzcyIsInRyYW5zcG9ydENvbXByZXNzaW9uIiwiaW50ZW50cyIsInByb3BlcnRpZXMiLCJvcyIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsImJyb3dzZXIiLCJkZXZpY2UiLCJ0b2tlbiIsInZlcnNpb24iLCJ0b3RhbFNoYXJkcyIsImxhc3RTaGFyZElkIiwiZmlyc3RTaGFyZElkIiwidG90YWxXb3JrZXJzIiwic2hhcmRzUGVyV29ya2VyIiwic3Bhd25TaGFyZERlbGF5IiwicHJlZmVyU25ha2VDYXNlIiwiTWFwIiwiYnVja2V0cyIsImNhY2hlIiwicmVxdWVzdE1lbWJlcnMiLCJlbmFibGVkIiwicGVuZGluZyIsIm1ha2VQcmVzZW5jZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidW5kZWZpbmVkIiwicmVzaGFyZGluZyIsInNoYXJkc0Z1bGxQZXJjZW50YWdlIiwiY2hlY2tJbnRlcnZhbCIsInBlbmRpbmdTaGFyZHMiLCJnZXRTZXNzaW9uSW5mbyIsInVwZGF0ZUd1aWxkc1NoYXJkSWQiLCJjaGVja0lmUmVzaGFyZGluZ0lzTmVlZGVkIiwiZGVidWciLCJuZWVkZWQiLCJFcnJvciIsInNlc3Npb25JbmZvIiwiSlNPTiIsInN0cmluZ2lmeSIsImluZm8iLCJwZXJjZW50YWdlIiwicmVzaGFyZCIsImNhbGN1bGF0ZVRvdGFsU2hhcmRzIiwiY2xlYXIiLCJwcmVwYXJlQnVja2V0cyIsImZvckVhY2giLCJidWNrZXQiLCJidWNrZXRJZCIsIndvcmtlciIsIndvcmtlcnMiLCJzaGFyZElkIiwicXVldWUiLCJ0ZWxsV29ya2VyVG9QcmVwYXJlIiwiaWQiLCJ3b3JrZXJJZCIsInNoYXJkIiwibWVzc2FnZSIsIl9zaGFyZCIsInBheWxvYWQiLCJ0IiwiZCIsImd1aWxkcyIsIm1hcCIsImciLCJyZXF1ZXN0SWRlbnRpZnkiLCJpZGVudGlmeSIsInNoYXJkSXNSZWFkeSIsImdldCIsImlkZW50aWZ5UmVxdWVzdHMiLCJzaGlmdCIsImZvcndhcmRUb0JvdCIsInNldCIsInB1c2giLCJ0aGVuIiwic2hhcmRJc1BlbmRpbmciLCJzaXplIiwidmFsdWVzIiwiZXZlbnQiLCJvbGRIYW5kbGVyIiwiXyIsInNodXRkb3duIiwiUmVzaGFyZGVkIiwiTWF0aCIsImNlaWwiLCJjYWxjdWxhdGVXb3JrZXJJZCIsIm1pbiIsImkiLCJmaW5kIiwidyIsInNvcnQiLCJhIiwiYiIsInNwYXduU2hhcmRzIiwiYWxsIiwiZW50cmllcyIsInRlbGxXb3JrZXJUb0lkZW50aWZ5IiwiY2xlYXJJbnRlcnZhbCIsImNoZWNrSW50ZXJ2YWxJZCIsIndhcm4iLCJzZXRJbnRlcnZhbCIsInJlc2hhcmRpbmdJbmZvIiwiY29kZSIsInJlYXNvbiIsImNsZWFyUmVzaGFyZGluZ0ludGVydmFsIiwiQXJyYXkiLCJmcm9tIiwiY2xvc2UiLCJzZW5kUGF5bG9hZCIsInNlbmQiLCJraWxsIiwiZGVsZXRlIiwiX3NoYXJkSWQiLCJjYWxjdWxhdGVTaGFyZElkIiwiZ3VpbGRJZCIsIk51bWJlciIsIkJpZ0ludCIsImpvaW5Wb2ljZUNoYW5uZWwiLCJjaGFubmVsSWQiLCJvcCIsIlZvaWNlU3RhdGVVcGRhdGUiLCJndWlsZF9pZCIsInRvU3RyaW5nIiwiY2hhbm5lbF9pZCIsInNlbGZfbXV0ZSIsInNlbGZNdXRlIiwic2VsZl9kZWFmIiwic2VsZkRlYWYiLCJlZGl0Qm90U3RhdHVzIiwiZGF0YSIsImVkaXRTaGFyZFN0YXR1cyIsIlByZXNlbmNlVXBkYXRlIiwic2luY2UiLCJhZmsiLCJhY3Rpdml0aWVzIiwic3RhdHVzIiwibGltaXQiLCJHdWlsZE1lbWJlcnMiLCJ1c2VySWRzIiwibGVuZ3RoIiwibm9uY2UiLCJoYXMiLCJtZW1iZXJzIiwicmVqZWN0IiwiUmVxdWVzdEd1aWxkTWVtYmVycyIsInF1ZXJ5IiwicHJlc2VuY2VzIiwidXNlcl9pZHMiLCJsZWF2ZVZvaWNlQ2hhbm5lbCIsInJlcXVlc3RTb3VuZGJvYXJkU291bmRzIiwiZ3VpbGRJZHMiLCJpZHMiLCJSZXF1ZXN0U291bmRib2FyZFNvdW5kcyIsImd1aWxkX2lkcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxRQUFRLGNBQWE7QUFDekMsU0FPRUMsY0FBYyxFQUNkQyxjQUFjLFFBRVQsb0JBQW1CO0FBQzFCLFNBQVNDLFVBQVUsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLFFBQVEs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
@@ -1 +1 @@
1
- {"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../../src/Shard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../../src/Shard.ts"],"names":[],"mappings":"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"}
@@ -227,7 +227,7 @@ export interface GatewayManager extends Required<CreateGatewayManagerOptions> {
227
227
  */
228
228
  editShardStatus: (shardId: number, data: StatusUpdate) => Promise<void>;
229
229
  /**
230
- * Fetches the list of members for a guild over the gateway.
230
+ * Fetches the list of members for a guild over the gateway. If `gateway.cache.requestMembers.enabled` is not set, this function will return an empty array and you'll have to handle the `GUILD_MEMBERS_CHUNK` events yourself.
231
231
  *
232
232
  * @param guildId - The ID of the guild to get the list of members for.
233
233
  * @param options - The parameters for the fetching of the members.
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discordeno/gateway",
3
- "version": "20.0.0",
3
+ "version": "21.0.0-next.ceec87f",
4
4
  "main": "./dist/esm/index.js",
5
5
  "exports": {
6
6
  "import": "./dist/esm/index.js",
@@ -29,8 +29,8 @@
29
29
  "test:test-type": "tsc --project tests/tsconfig.json"
30
30
  },
31
31
  "dependencies": {
32
- "@discordeno/types": "20.0.0",
33
- "@discordeno/utils": "20.0.0",
32
+ "@discordeno/types": "21.0.0-next.ceec87f",
33
+ "@discordeno/utils": "21.0.0-next.ceec87f",
34
34
  "ws": "^8.18.0"
35
35
  },
36
36
  "optionalDependencies": {
@@ -39,10 +39,10 @@
39
39
  "devDependencies": {
40
40
  "@biomejs/biome": "^1.9.4",
41
41
  "@swc/cli": "^0.5.1",
42
- "@swc/core": "^1.9.2",
42
+ "@swc/core": "^1.10.2",
43
43
  "@types/chai": "^5.0.1",
44
44
  "@types/mocha": "^10.0.10",
45
- "@types/node": "^22.9.1",
45
+ "@types/node": "^22.10.2",
46
46
  "@types/sinon": "^17.0.3",
47
47
  "@types/ws": "^8.5.13",
48
48
  "c8": "^10.1.2",
@@ -51,7 +51,7 @@
51
51
  "sinon": "^19.0.2",
52
52
  "ts-node": "^10.9.2",
53
53
  "tsconfig": "*",
54
- "typescript": "^5.6.3",
54
+ "typescript": "^5.7.2",
55
55
  "uWebSockets.js": "uNetworking/uWebSockets.js#54e5db370db746ed1c85021bdf215578a2164901"
56
56
  }
57
- }
57
+ }