@nlabs/lex 1.49.1 → 1.49.2

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.
@@ -313,7 +313,7 @@ ${cliName} Error: Could not find webpack.config.js`, "error", quiet);
313
313
  if (moduleMatch) buildStats.modules = parseInt(moduleMatch[1], 10);
314
314
  if (assetMatch) buildStats.assets = parseInt(assetMatch[1], 10);
315
315
  if (sizeMatch) buildStats.size = sizeMatch[1];
316
- displayBuildStatus("webpack", LexConfig.config.outputFullPath || "dist", quiet, buildStats);
316
+ displayBuildStatus("webpack", LexConfig.config.outputFullPath || "lib", quiet, buildStats);
317
317
  }
318
318
  });
319
319
  childProcess.stderr?.on("data", (data) => {
@@ -328,13 +328,13 @@ ${cliName} Error: Could not find webpack.config.js`, "error", quiet);
328
328
  if (moduleMatch) buildStats.modules = parseInt(moduleMatch[1], 10);
329
329
  if (assetMatch) buildStats.assets = parseInt(assetMatch[1], 10);
330
330
  if (sizeMatch) buildStats.size = sizeMatch[1];
331
- displayBuildStatus("webpack", LexConfig.config.outputFullPath || "dist", quiet, buildStats);
331
+ displayBuildStatus("webpack", LexConfig.config.outputFullPath || "lib", quiet, buildStats);
332
332
  }
333
333
  });
334
334
  await childProcess;
335
335
  if (!buildCompleted) {
336
336
  spinner.succeed("Build completed successfully!");
337
- displayBuildStatus("webpack", LexConfig.config.outputFullPath || "dist", quiet, buildStats);
337
+ displayBuildStatus("webpack", LexConfig.config.outputFullPath || "lib", quiet, buildStats);
338
338
  }
339
339
  callback(0);
340
340
  return 0;
@@ -405,7 +405,7 @@ ${cliName} Error: Environment variables option is not a valid JSON object.`, "er
405
405
  spinner.start("Processing translations...");
406
406
  try {
407
407
  const sourcePath = LexConfig.config.sourceFullPath || process.cwd();
408
- const outputPath = LexConfig.config.outputFullPath || "dist";
408
+ const outputPath = LexConfig.config.outputFullPath || "lib";
409
409
  await processTranslations(sourcePath, outputPath, quiet);
410
410
  spinner.succeed("Translations processed successfully!");
411
411
  } catch (translationError) {
@@ -491,4 +491,4 @@ export {
491
491
  buildWithWebpack,
492
492
  build_default as default
493
493
  };
494
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1aWxkL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IEdyYXBocWxMb2FkZXJQbHVnaW4gZnJvbSAnQGx1Y2t5Y2F0ZmFjdG9yeS9lc2J1aWxkLWdyYXBocWwtbG9hZGVyJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNvcHlDb25maWd1cmVkRmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGNyZWF0ZVByb2dyZXNzQmFyLCBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZWxhdGl2ZU5vZGVQYXRoLCByZXNvbHZlV2VicGFja1BhdGhzLCBnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5pbXBvcnQge3Byb2Nlc3NUcmFuc2xhdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3RyYW5zbGF0aW9ucy5qcyc7XG5pbXBvcnQge2FpRnVuY3Rpb259IGZyb20gJy4uL2FpL2FpLmpzJztcbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5sZXQgY3VycmVudEZpbGVuYW1lOiBzdHJpbmc7XG5sZXQgY3VycmVudERpcm5hbWU6IHN0cmluZztcblxudHJ5IHtcbiAgY3VycmVudEZpbGVuYW1lID0gZXZhbCgncmVxdWlyZShcInVybFwiKS5maWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCknKTtcbiAgY3VycmVudERpcm5hbWUgPSBkaXJuYW1lKGN1cnJlbnRGaWxlbmFtZSk7XG59IGNhdGNoIHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGFzc2lzdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBidW5kbGVyPzogJ3dlYnBhY2snIHwgJ2VzYnVpbGQnO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBlbnRyeT86IHN0cmluZzsgLy8gPC0tIGFkZCBlbnRyeVxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7IC8vIDwtLSBhbHJlYWR5IHByZXNlbnRcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXN0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEJ1aWxkQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmNvbnN0IGRpc3BsYXlCdWlsZFN0YXR1cyA9IChidW5kbGVyOiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZywgcXVpZXQ6IGJvb2xlYW4sIHN0YXRzPzoge21vZHVsZXM/OiBudW1iZXI7IGFzc2V0cz86IG51bWJlcjsgc2l6ZT86IHN0cmluZ30pID0+IHtcbiAgaWYocXVpZXQpIHJldHVybjtcblxuICBsZXQgc3RhdHNJbmZvID0gJyc7XG4gIGlmKHN0YXRzICYmIHN0YXRzLm1vZHVsZXMgJiYgc3RhdHMuYXNzZXRzKSB7XG4gICAgc3RhdHNJbmZvID0gYFxcbiR7Y2hhbGsuZ3JlZW4oJ01vZHVsZXM6Jyl9ICAgICR7Y2hhbGsuY3lhbihzdGF0cy5tb2R1bGVzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdBc3NldHM6Jyl9ICAgICAke2NoYWxrLmN5YW4oc3RhdHMuYXNzZXRzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdTaXplOicpfSAgICAgICAke2NoYWxrLmN5YW4oc3RhdHMuc2l6ZSl9XFxuYDtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c0JveCA9IGJveGVuKFxuICAgIGAke2NoYWxrLmN5YW4uYm9sZCgnXHVEODNDXHVERkQ3XHVGRTBGICBCdWlsZCBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5Jyl9XFxuXFxuYCArXG4gICAgYCR7Y2hhbGsuZ3JlZW4oJ0J1bmRsZXI6Jyl9ICAgICR7Y2hhbGsuY3lhbihidW5kbGVyKX1cXG5gICtcbiAgICBgJHtjaGFsay5ncmVlbignT3V0cHV0OicpfSAgICAgJHtjaGFsay51bmRlcmxpbmUob3V0cHV0UGF0aCl9JHtzdGF0c0luZm99XFxuYCArXG4gICAgYCR7Y2hhbGsueWVsbG93KCdSZWFkeSBmb3IgZGVwbG95bWVudCEgXHVEODNEXHVERTgwJyl9YCxcbiAgICB7XG4gICAgICBwYWRkaW5nOiAxLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBib3JkZXJDb2xvcjogJ2dyZWVuJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnXG4gICAgfVxuICApO1xuXG4gIGNvbnNvbGUubG9nKCdcXG4nICsgc3RhdHVzQm94ICsgJ1xcbicpO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkV2l0aEVzQnVpbGQgPSBhc3luYyAoc3Bpbm5lciwgY29tbWFuZE9wdGlvbnM6IEJ1aWxkT3B0aW9ucywgY2FsbGJhY2s6IEJ1aWxkQ2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBmb3JtYXQgPSAnY2pzJyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNvbW1hbmRPcHRpb25zO1xuICBjb25zdCB7XG4gICAgb3V0cHV0RnVsbFBhdGgsXG4gICAgc291cmNlRnVsbFBhdGgsXG4gICAgdGFyZ2V0RW52aXJvbm1lbnQsXG4gICAgdXNlR3JhcGhRbCxcbiAgICB1c2VUeXBlc2NyaXB0XG4gIH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBzb3VyY2VEaXI6IHN0cmluZyA9IHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgLi8ke3NvdXJjZVBhdGh9YCkgOiBzb3VyY2VGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgbG9hZGVyID0ge1xuICAgICcuanMnOiAnanMnXG4gIH07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGxvYWRlclsnLnRzJ10gPSAndHMnO1xuICAgIGxvYWRlclsnLnRzeCddID0gJ3RzeCc7XG4gIH1cblxuICBjb25zdCBwbHVnaW5zID0gW107XG5cbiAgaWYodXNlR3JhcGhRbCkge1xuICAgIHBsdWdpbnMucHVzaCgoR3JhcGhxbExvYWRlclBsdWdpbiBhcyB1bmtub3duIGFzICgpID0+IG5ldmVyKSgpKTtcbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3QpLnRzKmAsIGdsb2JPcHRpb25zKTtcbiAgY29uc3QganNGaWxlczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHtzb3VyY2VEaXJ9LyoqLyEoKi5zcGVjfCoudGVzdCkuanNgLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBwYWNrYWdlSnNvbkRhdGEgPSByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJy4vcGFja2FnZS5qc29uJykpO1xuICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25EYXRhLnRvU3RyaW5nKCkpO1xuICBjb25zdCBleHRlcm5hbCA9IFtcbiAgICAuLi5PYmplY3Qua2V5cyhwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKHBhY2thZ2VKc29uLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pXG4gIF07XG5cbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aCB8fCBvdXRwdXRGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgZXNidWlsZFBhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ2VzYnVpbGQvYmluL2VzYnVpbGQnLCBkaXJQYXRoKTtcbiAgY29uc3QgZXNidWlsZENvbmZpZyA9IExleENvbmZpZy5jb25maWcuZXNidWlsZCB8fCB7fTtcblxuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tYnVuZGxlJyxcbiAgICAnLS1jb2xvcj10cnVlJyxcbiAgICBgLS1mb3JtYXQ9JHtmb3JtYXR9YCxcbiAgICBgLS1vdXRkaXI9JHtvdXRwdXREaXJ9YCxcbiAgICBgLS1wbGF0Zm9ybT0ke2VzYnVpbGRDb25maWcucGxhdGZvcm0gfHwgJ25vZGUnfWAsXG4gICAgYC0tdGFyZ2V0PSR7ZXNidWlsZENvbmZpZy50YXJnZXQgfHwgKHRhcmdldEVudmlyb25tZW50ID09PSAnbm9kZScgPyAnbm9kZTIwJyA6ICdlczIwMjAnKX1gLFxuICAgIGAtLXNvdXJjZW1hcD0ke2VzYnVpbGRDb25maWcuc291cmNlbWFwIHx8ICdpbmxpbmUnfWBcbiAgXTtcblxuICBpZihlc2J1aWxkQ29uZmlnLm1pbmlmeSAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1pbmlmeScpO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy50cmVlU2hha2luZyAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLXRyZWUtc2hha2luZz10cnVlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmRyb3AgJiYgZXNidWlsZENvbmZpZy5kcm9wLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLmRyb3AuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tZHJvcDoke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLnB1cmUgJiYgZXNidWlsZENvbmZpZy5wdXJlLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLnB1cmUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tcHVyZToke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmxlZ2FsQ29tbWVudHMpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7ZXNidWlsZENvbmZpZy5sZWdhbENvbW1lbnRzfWApO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5zcGxpdHRpbmcgIT09IGZhbHNlKSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS1zcGxpdHRpbmcnKTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcubWV0YWZpbGUpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1ldGFmaWxlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmJhbm5lcikge1xuICAgIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRDb25maWcuYmFubmVyKS5mb3JFYWNoKChbdHlwZSwgY29udGVudF0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tYmFubmVyOiR7dHlwZX09JHtjb250ZW50fWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5mb290ZXIpIHtcbiAgICBPYmplY3QuZW50cmllcyhlc2J1aWxkQ29uZmlnLmZvb3RlcikuZm9yRWFjaCgoW3R5cGUsIGNvbnRlbnRdKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWZvb3Rlcjoke3R5cGV9PSR7Y29udGVudH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZGVmaW5lKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXNidWlsZENvbmZpZy5kZWZpbmUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1kZWZpbmU6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihleHRlcm5hbC5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWV4dGVybmFsOiR7ZXh0ZXJuYWwuam9pbignLCcpfWApO1xuICB9XG5cbiAgaWYocGx1Z2lucy5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLXBsdWdpbnM9JHtwbHVnaW5zLmpvaW4oJywnKX1gKTtcbiAgfVxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNidWlsZFBhdGgsIGVzYnVpbGRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnZXNidWlsZCcsIG91dHB1dERpciwgcXVpZXQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgaWYoIXF1aWV0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBzcGlubmVyLmZhaWwoJ0NvZGUgYnVpbGQgZmFpbGVkLicpO1xuXG4gICAgaWYoY29tbWFuZE9wdGlvbnMuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIGVycm9yLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIHByb21wdDogYEZpeCB0aGlzIGVzYnVpbGQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1cXG5cXG5FcnJvciBkZXRhaWxzOlxcbiR7ZXJyb3IudG9TdHJpbmcoKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFdpdGhXZWJwYWNrID0gYXN5bmMgKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBjb25maWdOYW1lLFxuICAgIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52LFxuICAgIGRldnRvb2wsXG4gICAgZGlzYWJsZUludGVycHJldCxcbiAgICBlbnRyeSxcbiAgICBlbnYsXG4gICAgZmFpbE9uV2FybmluZ3MsXG4gICAganNvbixcbiAgICBtZXJnZSxcbiAgICBtb2RlLFxuICAgIG5hbWUsXG4gICAgbm9kZUVudixcbiAgICBub0RldnRvb2wsXG4gICAgbm9TdGF0cyxcbiAgICBub1RhcmdldCxcbiAgICBub1dhdGNoLFxuICAgIG5vV2F0Y2hPcHRpb25zU3RkaW4sXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIHN0YXRzLFxuICAgIHRhcmdldCxcbiAgICB3YXRjaCxcbiAgICB3YXRjaE9wdGlvbnNTdGRpblxuICB9ID0gY21kO1xuXG4gIGNvbnNvbGUubG9nKCdlbnRyeTonLCBlbnRyeSwgJ3R5cGU6JywgdHlwZW9mIGVudHJ5KTtcbiAgY29uc29sZS5sb2coJ291dHB1dFBhdGg6Jywgb3V0cHV0UGF0aCwgJ3R5cGU6JywgdHlwZW9mIG91dHB1dFBhdGgpO1xuXG4gIGNvbnN0IGVudHJ5VmFsdWUgPSBBcnJheS5pc0FycmF5KGVudHJ5KSA/IGVudHJ5WzBdIDogZW50cnk7XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcuanMnKTtcbiAgICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aFRzID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3dlYnBhY2suY29uZmlnLnRzJyk7XG4gICAgY29uc3QgaGFzUHJvamVjdENvbmZpZyA9IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpIHx8IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGhUcyk7XG5cbiAgICBpZihoYXNQcm9qZWN0Q29uZmlnKSB7XG4gICAgICB3ZWJwYWNrQ29uZmlnID0gZXhpc3RzU3luYyhwcm9qZWN0Q29uZmlnUGF0aFRzKSA/IHByb2plY3RDb25maWdQYXRoVHMgOiBwcm9qZWN0Q29uZmlnUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIHBhdGg6Jywgd2VicGFja0NvbmZpZyk7XG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIGV4aXN0czonLCBleGlzdHNTeW5jKHdlYnBhY2tDb25maWcpKTtcblxuICBpZighZXhpc3RzU3luYyh3ZWJwYWNrQ29uZmlnKSkge1xuICAgIGNvbnN0IGxleFBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG4gICAgY29uc3QgbGV4UGFja2FnZURpciA9IGRpcm5hbWUobGV4UGFja2FnZVBhdGgpO1xuICAgIGNvbnN0IGxleFdlYnBhY2tDb25maWcgPSBwYXRoUmVzb2x2ZShsZXhQYWNrYWdlRGlyLCAnd2VicGFjay5jb25maWcuanMnKTtcblxuICAgIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0NvbmZpZykpIHtcbiAgICAgIHdlYnBhY2tDb25maWcgPSBsZXhXZWJwYWNrQ29uZmlnO1xuICAgICAgY29uc29sZS5sb2coJ1VzaW5nIExleCB3ZWJwYWNrIGNvbmZpZzonLCB3ZWJwYWNrQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb3VsZCBub3QgZmluZCB3ZWJwYWNrLmNvbmZpZy5qc2AsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQnVpbGQgZmFpbGVkLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXByb2dyZXNzJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYW5hbHl6ZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1hbmFseXplJyk7XG4gIGlmKGNvbmZpZ05hbWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tY29uZmlnTmFtZScsIGNvbmZpZ05hbWUpO1xuICBpZihkZWZpbmVQcm9jZXNzRW52Tm9kZUVudikgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudicsIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52KTtcbiAgaWYoZGV2dG9vbCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZXZ0b29sJywgZGV2dG9vbCk7XG4gIGlmKGRpc2FibGVJbnRlcnByZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGlzYWJsZUludGVycHJldCcpO1xuICAvLyBQYXNzIGVudHJ5IGRpcmVjdGx5IGFzIENMSSBmbGFnXG4gIGlmKGVudHJ5VmFsdWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW50cnknLCBlbnRyeVZhbHVlLnRvU3RyaW5nKCkpO1xuICBpZihlbnYpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW52JywgZW52KTtcbiAgaWYoZmFpbE9uV2FybmluZ3MpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZmFpbE9uV2FybmluZ3MnKTtcbiAgaWYoanNvbikgd2VicGFja09wdGlvbnMucHVzaCgnLS1qc29uJywganNvbik7XG4gIGlmKG1vZGUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbW9kZScsIG1vZGUpO1xuICBpZihtZXJnZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1tZXJnZScpO1xuICBpZihuYW1lKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5hbWUnLCBuYW1lKTtcbiAgaWYobm9EZXZ0b29sKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vRGV2dG9vbCcpO1xuICBpZihub1N0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vU3RhdHMnKTtcbiAgaWYobm9UYXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9UYXJnZXQnKTtcbiAgaWYobm9XYXRjaCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1ub1dhdGNoJyk7XG4gIGlmKG5vV2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicpO1xuICBpZihub2RlRW52KSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vZGVFbnYnLCBub2RlRW52KTtcbiAgaWYob3V0cHV0UGF0aCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1vdXRwdXQtcGF0aCcsIG91dHB1dFBhdGgudG9TdHJpbmcoKSk7IC8vIENvbnZlcnQgdG8gc3RyaW5nXG4gIGlmKHN0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXN0YXRzJywgc3RhdHMpO1xuICBpZih0YXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tdGFyZ2V0JywgdGFyZ2V0KTtcbiAgaWYod2F0Y2gpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgaWYod2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2hPcHRpb25zU3RkaW4nKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICAgIC8vIEZpeDogRW5zdXJlIGZpbmFsV2VicGFja09wdGlvbnMgaXMgYWx3YXlzIGFuIGFycmF5IG9mIHN0cmluZ3NcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG4gICAgaWYod2VicGFja1BhdGggPT09ICducHgnKSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWy4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnd2VicGFja1BhdGg6Jywgd2VicGFja1BhdGgpO1xuICAgIGNvbnNvbGUubG9nKCdmaW5hbFdlYnBhY2tPcHRpb25zOicsIEpTT04uc3RyaW5naWZ5KGZpbmFsV2VicGFja09wdGlvbnMpKTtcbiAgICBjb25zb2xlLmxvZygnZmluYWxXZWJwYWNrT3B0aW9ucyB0eXBlOicsIEFycmF5LmlzQXJyYXkoZmluYWxXZWJwYWNrT3B0aW9ucykgPyAnQXJyYXknIDogdHlwZW9mIGZpbmFsV2VicGFja09wdGlvbnMpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHBhc3NpbmcgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0byBleGVjYVxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4Jywgc3RkaW86ICdwaXBlJ30pO1xuXG4gICAgbGV0IGJ1aWxkQ29tcGxldGVkID0gZmFsc2U7XG4gICAgbGV0IGJ1aWxkU3RhdHMgPSB7XG4gICAgICBtb2R1bGVzOiAwLFxuICAgICAgYXNzZXRzOiAwLFxuICAgICAgc2l6ZTogJzAgQidcbiAgICB9O1xuXG4gICAgY2hpbGRQcm9jZXNzLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG5cbiAgICAgIGhhbmRsZVdlYnBhY2tQcm9ncmVzcyhvdXRwdXQsIHNwaW5uZXIsIHF1aWV0LCAnXHVEODNDXHVERkQ3XHVGRTBGJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIWJ1aWxkQ29tcGxldGVkICYmIG91dHB1dC5pbmNsdWRlcygnY29tcGlsZWQgc3VjY2Vzc2Z1bGx5JykpIHtcbiAgICAgICAgYnVpbGRDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG5cbiAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBtb2R1bGVzLyk7XG4gICAgICAgIGNvbnN0IGFzc2V0TWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBhc3NldHMvKTtcbiAgICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgc3RhdHVzIChbXFxkLl0rIFxcdyspLykgfHwgb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgcGF0aC4qPyhbXFxkLl0rIFxcdyspLyk7XG5cbiAgICAgICAgaWYobW9kdWxlTWF0Y2gpIGJ1aWxkU3RhdHMubW9kdWxlcyA9IHBhcnNlSW50KG1vZHVsZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKGFzc2V0TWF0Y2gpIGJ1aWxkU3RhdHMuYXNzZXRzID0gcGFyc2VJbnQoYXNzZXRNYXRjaFsxXSwgMTApO1xuICAgICAgICBpZihzaXplTWF0Y2gpIGJ1aWxkU3RhdHMuc2l6ZSA9IHNpemVNYXRjaFsxXTtcblxuICAgICAgICBkaXNwbGF5QnVpbGRTdGF0dXMoJ3dlYnBhY2snLCBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdkaXN0JywgcXVpZXQsIGJ1aWxkU3RhdHMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY2hpbGRQcm9jZXNzLnN0ZGVycj8ub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG5cbiAgICAgIGhhbmRsZVdlYnBhY2tQcm9ncmVzcyhvdXRwdXQsIHNwaW5uZXIsIHF1aWV0LCAnXHVEODNDXHVERkQ3XHVGRTBGJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIWJ1aWxkQ29tcGxldGVkICYmIG91dHB1dC5pbmNsdWRlcygnY29tcGlsZWQgc3VjY2Vzc2Z1bGx5JykpIHtcbiAgICAgICAgYnVpbGRDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG5cbiAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBtb2R1bGVzLyk7XG4gICAgICAgIGNvbnN0IGFzc2V0TWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBhc3NldHMvKTtcbiAgICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgc3RhdHVzIChbXFxkLl0rIFxcdyspLykgfHwgb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgcGF0aC4qPyhbXFxkLl0rIFxcdyspLyk7XG5cbiAgICAgICAgaWYobW9kdWxlTWF0Y2gpIGJ1aWxkU3RhdHMubW9kdWxlcyA9IHBhcnNlSW50KG1vZHVsZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKGFzc2V0TWF0Y2gpIGJ1aWxkU3RhdHMuYXNzZXRzID0gcGFyc2VJbnQoYXNzZXRNYXRjaFsxXSwgMTApO1xuICAgICAgICBpZihzaXplTWF0Y2gpIGJ1aWxkU3RhdHMuc2l6ZSA9IHNpemVNYXRjaFsxXTtcblxuICAgICAgICBkaXNwbGF5QnVpbGRTdGF0dXMoJ3dlYnBhY2snLCBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdkaXN0JywgcXVpZXQsIGJ1aWxkU3RhdHMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIWJ1aWxkQ29tcGxldGVkKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgICBkaXNwbGF5QnVpbGRTdGF0dXMoJ3dlYnBhY2snLCBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdkaXN0JywgcXVpZXQsIGJ1aWxkU3RhdHMpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdCdWlsZCBmYWlsZWQuJyk7XG5cbiAgICBpZihjbWQuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIHdlYnBhY2sgZXJyb3IuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgcHJvbXB0OiBgRml4IHRoaXMgd2VicGFjayBidWlsZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfVxcblxcbkVycm9yIGRldGFpbHM6XFxuJHtlcnJvci50b1N0cmluZygpfVxcblxcbkNvbmZpZ3VyYXRpb24gdXNlZDpcXG4ke0pTT04uc3RyaW5naWZ5KHdlYnBhY2tPcHRpb25zLCBudWxsLCAyKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkID0gYXN5bmMgKGNtZDogQnVpbGRPcHRpb25zLCBjYWxsYmFjazogQnVpbGRDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgYnVuZGxlciA9ICd3ZWJwYWNrJyxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICByZW1vdmUgPSBmYWxzZSxcbiAgICB0ZXN0ID0gZmFsc2UsXG4gICAgdHJhbnNsYXRpb25zID0gZmFsc2UsXG4gICAgdmFyaWFibGVzID0gJ3t9J1xuICB9ID0gY21kO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBsb2coYCR7Y2xpTmFtZX0gYnVpbGRpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdwcm9kdWN0aW9uJ307XG5cbiAgaWYodmFyaWFibGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlc09iaiA9IEpTT04ucGFyc2UodmFyaWFibGVzKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIC8vIElmIGluIHRlc3QgbW9kZSwgZXhpdCBlYXJseVxuICBpZih0ZXN0KSB7XG4gICAgbG9nKCdUZXN0IG1vZGU6IEJ1aWxkIGVudmlyb25tZW50IGxvYWRlZCwgZXhpdGluZycsICdpbmZvJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgYnVpbGRpbmcpXG4gIGlmKHRyYW5zbGF0aW9ucykge1xuICAgIHNwaW5uZXIuc3RhcnQoJ1Byb2Nlc3NpbmcgdHJhbnNsYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IExleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdkaXN0JztcblxuICAgICAgYXdhaXQgcHJvY2Vzc1RyYW5zbGF0aW9ucyhzb3VyY2VQYXRoLCBvdXRwdXRQYXRoLCBxdWlldCk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1RyYW5zbGF0aW9ucyBwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIH0gY2F0Y2godHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnM6ICR7dHJhbnNsYXRpb25FcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KCdCdWlsZGluZyBjb2RlLi4uJyk7XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuICB9XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGNvbnN0IGNvbXBpbGVDb25maWdQYXRoID0gZ2V0VHlwZVNjcmlwdENvbmZpZ1BhdGgoJ3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcbiAgICBpZihleGlzdHNTeW5jKGNvbXBpbGVDb25maWdQYXRoKSkge1xuICAgICAgbG9nKCdVc2luZyB0c2NvbmZpZy5idWlsZC5qc29uIGZvciBidWlsZC4uLicsICdpbmZvJywgcXVpZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBMZXhDb25maWcuY2hlY2tDb21waWxlVHlwZXNjcmlwdENvbmZpZygpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBidWlsZFJlc3VsdCA9IDA7XG5cbiAgaWYoYnVuZGxlciA9PT0gJ2VzYnVpbGQnKSB7XG4gICAgYnVpbGRSZXN1bHQgPSBhd2FpdCBidWlsZFdpdGhFc0J1aWxkKHNwaW5uZXIsIGNtZCwgKHN0YXR1cykgPT4ge1xuICAgICAgYnVpbGRSZXN1bHQgPSBzdGF0dXM7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYnVpbGRSZXN1bHQgPSBhd2FpdCBidWlsZFdpdGhXZWJwYWNrKHNwaW5uZXIsIGNtZCwgKHN0YXR1cykgPT4ge1xuICAgICAgYnVpbGRSZXN1bHQgPSBzdGF0dXM7XG4gICAgfSk7XG4gIH1cblxuICBpZihidWlsZFJlc3VsdCA9PT0gMCAmJiBjbWQuYW5hbHl6ZSkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0aGUgYnVpbGQgb3V0cHV0IGZvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0ge1xuICAgICAgICBvdXRwdXRQYXRoOiBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoLFxuICAgICAgICBlbnRyeVBvaW50czogYnVuZGxlciA9PT0gJ2VzYnVpbGQnID9cbiAgICAgICAgICBgU291cmNlIGZpbGVzOiAke0xleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGh9LyoqLyoue3RzLGpzfWAgOlxuICAgICAgICAgIExleENvbmZpZy5jb25maWcud2VicGFjaz8uZW50cnkgfHwgJ1Vua25vd24gZW50cnkgcG9pbnRzJ1xuICAgICAgfTtcblxuICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgIHByb21wdDogYEFuYWx5emUgdGhpcyBidWlsZCBmb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXM6XG5cbkJ1aWxkIFR5cGU6ICR7YnVuZGxlcn1cbkZvcm1hdDogJHtjbWQuZm9ybWF0IHx8ICdkZWZhdWx0J31cbkVudmlyb25tZW50OiAke0xleENvbmZpZy5jb25maWcudGFyZ2V0RW52aXJvbm1lbnR9XG4ke0pTT04uc3RyaW5naWZ5KHN0YXRzLCBudWxsLCAyKX1cblxuV2hhdCBhcmUgdGhlIGtleSBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBmb3IgdGhpcyBidWlsZCBjb25maWd1cmF0aW9uPyBDb25zaWRlcjpcbjEuIEJ1bmRsZSBzaXplIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzXG4yLiBDb2RlIHNwbGl0dGluZyByZWNvbW1lbmRhdGlvbnNcbjMuIFRyZWUtc2hha2luZyBpbXByb3ZlbWVudHNcbjQuIFBlcmZvcm1hbmNlIGVuaGFuY2VtZW50c1xuNS4gRGVwZW5kZW5jeSBvcHRpbWl6YXRpb25zYCxcbiAgICAgICAgdGFzazogJ29wdGltaXplJyxcbiAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgcXVpZXRcbiAgICAgIH0pO1xuXG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIGJ1aWxkIGFuYWx5c2lzIGNvbXBsZXRlJyk7XG4gICAgfSBjYXRjaChhaUVycm9yKSB7XG4gICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBvcHRpbWl6YXRpb24gYW5hbHlzaXMnKTtcbiAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBSSBhbmFseXNpcyBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZihidWlsZFJlc3VsdCA9PT0gMCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5Q29uZmlndXJlZEZpbGVzKHNwaW5uZXIsIExleENvbmZpZy5jb25maWcsIHF1aWV0KTtcbiAgICB9IGNhdGNoKGNvcHlFcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gY29weSBjb25maWd1cmVkIGZpbGVzOiAke2NvcHlFcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soYnVpbGRSZXN1bHQpO1xuICByZXR1cm4gYnVpbGRSZXN1bHQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBidWlsZDtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQU8seUJBQXlCO0FBQ2hDLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksb0JBQW1CO0FBQ3ZDLFNBQVEsUUFBUSxnQkFBZTtBQUMvQixTQUFRLFNBQVMsV0FBVyxtQkFBa0I7QUFFOUMsU0FBUSxXQUFXLCtCQUE4QjtBQUNqRCxTQUFRLG9CQUFvQixxQkFBcUIsZUFBa0MsdUJBQXVCLG1CQUFrQjtBQUM1SCxTQUFRLFlBQVksa0JBQWtCLHFCQUFxQiw2QkFBNEI7QUFDdkYsU0FBUSxXQUFVO0FBQ2xCLFNBQVEsMkJBQTBCO0FBQ2xDLFNBQVEsa0JBQWlCO0FBQ3pCLE9BQU8sV0FBVztBQUNsQixPQUFPLFdBQVc7QUFFbEIsSUFBSTtBQUNKLElBQUk7QUFFSixJQUFJO0FBQ0Ysb0JBQWtCLEtBQUssK0NBQStDO0FBQ3RFLG1CQUFpQixRQUFRLGVBQWU7QUFDMUMsUUFBUTtBQUNOLG9CQUFrQixRQUFRLElBQUk7QUFDOUIsbUJBQWlCLFFBQVEsSUFBSTtBQUMvQjtBQXFCQSxNQUFNLHFCQUFxQixDQUFDLFNBQWlCLFlBQW9CLE9BQWdCLFVBQStEO0FBQzlJLE1BQUcsTUFBTztBQUVWLE1BQUksWUFBWTtBQUNoQixNQUFHLFNBQVMsTUFBTSxXQUFXLE1BQU0sUUFBUTtBQUN6QyxnQkFBWTtBQUFBLEVBQUssTUFBTSxNQUFNLFVBQVUsQ0FBQyxPQUFPLE1BQU0sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUFBLEVBQ25FLE1BQU0sTUFBTSxTQUFTLENBQUMsUUFBUSxNQUFNLEtBQUssTUFBTSxNQUFNLENBQUM7QUFBQSxFQUN0RCxNQUFNLE1BQU0sT0FBTyxDQUFDLFVBQVUsTUFBTSxLQUFLLE1BQU0s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QUFBLElBQzdELE9BQU87QUFDTCxnQkFBVSw2QkFBNkI7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFFQSxNQUFJLGNBQWM7QUFFbEIsTUFBRyxZQUFZLFdBQVc7QUFDeEIsa0JBQWMsTUFBTSxpQkFBaUIsU0FBUyxLQUFLLENBQUMsV0FBVztBQUM3RCxvQkFBYztBQUFBLElBQ2hCLENBQUM7QUFBQSxFQUNILE9BQU87QUFDTCxrQkFBYyxNQUFNLGlCQUFpQixTQUFTLEtBQUssQ0FBQyxXQUFXO0FBQzdELG9CQUFjO0FBQUEsSUFDaEIsQ0FBQztBQUFBLEVBQ0g7QUFFQSxNQUFHLGdCQUFnQixLQUFLLElBQUksU0FBUztBQUNuQyxZQUFRLE1BQU0sb0VBQW9FO0FBRWxGLFFBQUk7QUFDRixZQUFNLFFBQVE7QUFBQSxRQUNaLFlBQVksVUFBVSxPQUFPO0FBQUEsUUFDN0IsYUFBYSxZQUFZLFlBQ3ZCLGlCQUFpQixVQUFVLE9BQU8sY0FBYyxrQkFDaEQsVUFBVSxPQUFPLFNBQVMsU0FBUztBQUFBLE1BQ3ZDO0FBRUEsWUFBTSxXQUFXO0FBQUEsUUFDZixRQUFRO0FBQUE7QUFBQSxjQUVGLE9BQU87QUFBQSxVQUNYLElBQUksVUFBVSxTQUFTO0FBQUEsZUFDbEIsVUFBVSxPQUFPLGlCQUFpQjtBQUFBLEVBQy9DLEtBQUssVUFBVSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVF4QixNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVDtBQUFBLE1BQ0YsQ0FBQztBQUVELGNBQVEsUUFBUSw0QkFBNEI7QUFBQSxJQUM5QyxTQUFRLFNBQVM7QUFDZixjQUFRLEtBQUssNkNBQTZDO0FBQzFELFVBQUcsQ0FBQyxPQUFPO0FBQ1QsZ0JBQVEsTUFBTSxzQkFBc0IsT0FBTztBQUFBLE1BQzdDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxNQUFHLGdCQUFnQixHQUFHO0FBQ3BCLFFBQUk7QUFDRixZQUFNLG9CQUFvQixTQUFTLFVBQVUsUUFBUSxLQUFLO0FBQUEsSUFDNUQsU0FBUSxXQUFXO0FBQ2pCLFVBQUk7QUFBQSxFQUFLLE9BQU8sNENBQTRDLFVBQVUsT0FBTyxJQUFJLFNBQVMsS0FBSztBQUMvRixlQUFTLENBQUM7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxXQUFTLFdBQVc7QUFDcEIsU0FBTztBQUNUO0FBRUEsSUFBTyxnQkFBUTsiLAogICJuYW1lcyI6IFtdCn0K
494
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1aWxkL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IEdyYXBocWxMb2FkZXJQbHVnaW4gZnJvbSAnQGx1Y2t5Y2F0ZmFjdG9yeS9lc2J1aWxkLWdyYXBocWwtbG9hZGVyJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNvcHlDb25maWd1cmVkRmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGNyZWF0ZVByb2dyZXNzQmFyLCBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZWxhdGl2ZU5vZGVQYXRoLCByZXNvbHZlV2VicGFja1BhdGhzLCBnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5pbXBvcnQge3Byb2Nlc3NUcmFuc2xhdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3RyYW5zbGF0aW9ucy5qcyc7XG5pbXBvcnQge2FpRnVuY3Rpb259IGZyb20gJy4uL2FpL2FpLmpzJztcbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5sZXQgY3VycmVudEZpbGVuYW1lOiBzdHJpbmc7XG5sZXQgY3VycmVudERpcm5hbWU6IHN0cmluZztcblxudHJ5IHtcbiAgY3VycmVudEZpbGVuYW1lID0gZXZhbCgncmVxdWlyZShcInVybFwiKS5maWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCknKTtcbiAgY3VycmVudERpcm5hbWUgPSBkaXJuYW1lKGN1cnJlbnRGaWxlbmFtZSk7XG59IGNhdGNoIHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGFzc2lzdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBidW5kbGVyPzogJ3dlYnBhY2snIHwgJ2VzYnVpbGQnO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBlbnRyeT86IHN0cmluZzsgLy8gPC0tIGFkZCBlbnRyeVxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7IC8vIDwtLSBhbHJlYWR5IHByZXNlbnRcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXN0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEJ1aWxkQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmNvbnN0IGRpc3BsYXlCdWlsZFN0YXR1cyA9IChidW5kbGVyOiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZywgcXVpZXQ6IGJvb2xlYW4sIHN0YXRzPzoge21vZHVsZXM/OiBudW1iZXI7IGFzc2V0cz86IG51bWJlcjsgc2l6ZT86IHN0cmluZ30pID0+IHtcbiAgaWYocXVpZXQpIHJldHVybjtcblxuICBsZXQgc3RhdHNJbmZvID0gJyc7XG4gIGlmKHN0YXRzICYmIHN0YXRzLm1vZHVsZXMgJiYgc3RhdHMuYXNzZXRzKSB7XG4gICAgc3RhdHNJbmZvID0gYFxcbiR7Y2hhbGsuZ3JlZW4oJ01vZHVsZXM6Jyl9ICAgICR7Y2hhbGsuY3lhbihzdGF0cy5tb2R1bGVzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdBc3NldHM6Jyl9ICAgICAke2NoYWxrLmN5YW4oc3RhdHMuYXNzZXRzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdTaXplOicpfSAgICAgICAke2NoYWxrLmN5YW4oc3RhdHMuc2l6ZSl9XFxuYDtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c0JveCA9IGJveGVuKFxuICAgIGAke2NoYWxrLmN5YW4uYm9sZCgnXHVEODNDXHVERkQ3XHVGRTBGICBCdWlsZCBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5Jyl9XFxuXFxuYCArXG4gICAgYCR7Y2hhbGsuZ3JlZW4oJ0J1bmRsZXI6Jyl9ICAgICR7Y2hhbGsuY3lhbihidW5kbGVyKX1cXG5gICtcbiAgICBgJHtjaGFsay5ncmVlbignT3V0cHV0OicpfSAgICAgJHtjaGFsay51bmRlcmxpbmUob3V0cHV0UGF0aCl9JHtzdGF0c0luZm99XFxuYCArXG4gICAgYCR7Y2hhbGsueWVsbG93KCdSZWFkeSBmb3IgZGVwbG95bWVudCEgXHVEODNEXHVERTgwJyl9YCxcbiAgICB7XG4gICAgICBwYWRkaW5nOiAxLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBib3JkZXJDb2xvcjogJ2dyZWVuJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnXG4gICAgfVxuICApO1xuXG4gIGNvbnNvbGUubG9nKCdcXG4nICsgc3RhdHVzQm94ICsgJ1xcbicpO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkV2l0aEVzQnVpbGQgPSBhc3luYyAoc3Bpbm5lciwgY29tbWFuZE9wdGlvbnM6IEJ1aWxkT3B0aW9ucywgY2FsbGJhY2s6IEJ1aWxkQ2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBmb3JtYXQgPSAnY2pzJyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNvbW1hbmRPcHRpb25zO1xuICBjb25zdCB7XG4gICAgb3V0cHV0RnVsbFBhdGgsXG4gICAgc291cmNlRnVsbFBhdGgsXG4gICAgdGFyZ2V0RW52aXJvbm1lbnQsXG4gICAgdXNlR3JhcGhRbCxcbiAgICB1c2VUeXBlc2NyaXB0XG4gIH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBzb3VyY2VEaXI6IHN0cmluZyA9IHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgLi8ke3NvdXJjZVBhdGh9YCkgOiBzb3VyY2VGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgbG9hZGVyID0ge1xuICAgICcuanMnOiAnanMnXG4gIH07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGxvYWRlclsnLnRzJ10gPSAndHMnO1xuICAgIGxvYWRlclsnLnRzeCddID0gJ3RzeCc7XG4gIH1cblxuICBjb25zdCBwbHVnaW5zID0gW107XG5cbiAgaWYodXNlR3JhcGhRbCkge1xuICAgIHBsdWdpbnMucHVzaCgoR3JhcGhxbExvYWRlclBsdWdpbiBhcyB1bmtub3duIGFzICgpID0+IG5ldmVyKSgpKTtcbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3QpLnRzKmAsIGdsb2JPcHRpb25zKTtcbiAgY29uc3QganNGaWxlczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHtzb3VyY2VEaXJ9LyoqLyEoKi5zcGVjfCoudGVzdCkuanNgLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBwYWNrYWdlSnNvbkRhdGEgPSByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJy4vcGFja2FnZS5qc29uJykpO1xuICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25EYXRhLnRvU3RyaW5nKCkpO1xuICBjb25zdCBleHRlcm5hbCA9IFtcbiAgICAuLi5PYmplY3Qua2V5cyhwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKHBhY2thZ2VKc29uLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pXG4gIF07XG5cbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aCB8fCBvdXRwdXRGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgZXNidWlsZFBhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ2VzYnVpbGQvYmluL2VzYnVpbGQnLCBkaXJQYXRoKTtcbiAgY29uc3QgZXNidWlsZENvbmZpZyA9IExleENvbmZpZy5jb25maWcuZXNidWlsZCB8fCB7fTtcblxuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tYnVuZGxlJyxcbiAgICAnLS1jb2xvcj10cnVlJyxcbiAgICBgLS1mb3JtYXQ9JHtmb3JtYXR9YCxcbiAgICBgLS1vdXRkaXI9JHtvdXRwdXREaXJ9YCxcbiAgICBgLS1wbGF0Zm9ybT0ke2VzYnVpbGRDb25maWcucGxhdGZvcm0gfHwgJ25vZGUnfWAsXG4gICAgYC0tdGFyZ2V0PSR7ZXNidWlsZENvbmZpZy50YXJnZXQgfHwgKHRhcmdldEVudmlyb25tZW50ID09PSAnbm9kZScgPyAnbm9kZTIwJyA6ICdlczIwMjAnKX1gLFxuICAgIGAtLXNvdXJjZW1hcD0ke2VzYnVpbGRDb25maWcuc291cmNlbWFwIHx8ICdpbmxpbmUnfWBcbiAgXTtcblxuICBpZihlc2J1aWxkQ29uZmlnLm1pbmlmeSAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1pbmlmeScpO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy50cmVlU2hha2luZyAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLXRyZWUtc2hha2luZz10cnVlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmRyb3AgJiYgZXNidWlsZENvbmZpZy5kcm9wLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLmRyb3AuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tZHJvcDoke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLnB1cmUgJiYgZXNidWlsZENvbmZpZy5wdXJlLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLnB1cmUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tcHVyZToke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmxlZ2FsQ29tbWVudHMpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7ZXNidWlsZENvbmZpZy5sZWdhbENvbW1lbnRzfWApO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5zcGxpdHRpbmcgIT09IGZhbHNlKSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS1zcGxpdHRpbmcnKTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcubWV0YWZpbGUpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1ldGFmaWxlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmJhbm5lcikge1xuICAgIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRDb25maWcuYmFubmVyKS5mb3JFYWNoKChbdHlwZSwgY29udGVudF0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tYmFubmVyOiR7dHlwZX09JHtjb250ZW50fWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5mb290ZXIpIHtcbiAgICBPYmplY3QuZW50cmllcyhlc2J1aWxkQ29uZmlnLmZvb3RlcikuZm9yRWFjaCgoW3R5cGUsIGNvbnRlbnRdKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWZvb3Rlcjoke3R5cGV9PSR7Y29udGVudH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZGVmaW5lKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXNidWlsZENvbmZpZy5kZWZpbmUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1kZWZpbmU6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihleHRlcm5hbC5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWV4dGVybmFsOiR7ZXh0ZXJuYWwuam9pbignLCcpfWApO1xuICB9XG5cbiAgaWYocGx1Z2lucy5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLXBsdWdpbnM9JHtwbHVnaW5zLmpvaW4oJywnKX1gKTtcbiAgfVxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNidWlsZFBhdGgsIGVzYnVpbGRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnZXNidWlsZCcsIG91dHB1dERpciwgcXVpZXQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgaWYoIXF1aWV0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBzcGlubmVyLmZhaWwoJ0NvZGUgYnVpbGQgZmFpbGVkLicpO1xuXG4gICAgaWYoY29tbWFuZE9wdGlvbnMuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIGVycm9yLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIHByb21wdDogYEZpeCB0aGlzIGVzYnVpbGQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1cXG5cXG5FcnJvciBkZXRhaWxzOlxcbiR7ZXJyb3IudG9TdHJpbmcoKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFdpdGhXZWJwYWNrID0gYXN5bmMgKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBjb25maWdOYW1lLFxuICAgIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52LFxuICAgIGRldnRvb2wsXG4gICAgZGlzYWJsZUludGVycHJldCxcbiAgICBlbnRyeSxcbiAgICBlbnYsXG4gICAgZmFpbE9uV2FybmluZ3MsXG4gICAganNvbixcbiAgICBtZXJnZSxcbiAgICBtb2RlLFxuICAgIG5hbWUsXG4gICAgbm9kZUVudixcbiAgICBub0RldnRvb2wsXG4gICAgbm9TdGF0cyxcbiAgICBub1RhcmdldCxcbiAgICBub1dhdGNoLFxuICAgIG5vV2F0Y2hPcHRpb25zU3RkaW4sXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIHN0YXRzLFxuICAgIHRhcmdldCxcbiAgICB3YXRjaCxcbiAgICB3YXRjaE9wdGlvbnNTdGRpblxuICB9ID0gY21kO1xuXG4gIGNvbnNvbGUubG9nKCdlbnRyeTonLCBlbnRyeSwgJ3R5cGU6JywgdHlwZW9mIGVudHJ5KTtcbiAgY29uc29sZS5sb2coJ291dHB1dFBhdGg6Jywgb3V0cHV0UGF0aCwgJ3R5cGU6JywgdHlwZW9mIG91dHB1dFBhdGgpO1xuXG4gIGNvbnN0IGVudHJ5VmFsdWUgPSBBcnJheS5pc0FycmF5KGVudHJ5KSA/IGVudHJ5WzBdIDogZW50cnk7XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcuanMnKTtcbiAgICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aFRzID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3dlYnBhY2suY29uZmlnLnRzJyk7XG4gICAgY29uc3QgaGFzUHJvamVjdENvbmZpZyA9IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpIHx8IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGhUcyk7XG5cbiAgICBpZihoYXNQcm9qZWN0Q29uZmlnKSB7XG4gICAgICB3ZWJwYWNrQ29uZmlnID0gZXhpc3RzU3luYyhwcm9qZWN0Q29uZmlnUGF0aFRzKSA/IHByb2plY3RDb25maWdQYXRoVHMgOiBwcm9qZWN0Q29uZmlnUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIHBhdGg6Jywgd2VicGFja0NvbmZpZyk7XG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIGV4aXN0czonLCBleGlzdHNTeW5jKHdlYnBhY2tDb25maWcpKTtcblxuICBpZighZXhpc3RzU3luYyh3ZWJwYWNrQ29uZmlnKSkge1xuICAgIGNvbnN0IGxleFBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG4gICAgY29uc3QgbGV4UGFja2FnZURpciA9IGRpcm5hbWUobGV4UGFja2FnZVBhdGgpO1xuICAgIGNvbnN0IGxleFdlYnBhY2tDb25maWcgPSBwYXRoUmVzb2x2ZShsZXhQYWNrYWdlRGlyLCAnd2VicGFjay5jb25maWcuanMnKTtcblxuICAgIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0NvbmZpZykpIHtcbiAgICAgIHdlYnBhY2tDb25maWcgPSBsZXhXZWJwYWNrQ29uZmlnO1xuICAgICAgY29uc29sZS5sb2coJ1VzaW5nIExleCB3ZWJwYWNrIGNvbmZpZzonLCB3ZWJwYWNrQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb3VsZCBub3QgZmluZCB3ZWJwYWNrLmNvbmZpZy5qc2AsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQnVpbGQgZmFpbGVkLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXByb2dyZXNzJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYW5hbHl6ZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1hbmFseXplJyk7XG4gIGlmKGNvbmZpZ05hbWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tY29uZmlnTmFtZScsIGNvbmZpZ05hbWUpO1xuICBpZihkZWZpbmVQcm9jZXNzRW52Tm9kZUVudikgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudicsIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52KTtcbiAgaWYoZGV2dG9vbCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZXZ0b29sJywgZGV2dG9vbCk7XG4gIGlmKGRpc2FibGVJbnRlcnByZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGlzYWJsZUludGVycHJldCcpO1xuICAvLyBQYXNzIGVudHJ5IGRpcmVjdGx5IGFzIENMSSBmbGFnXG4gIGlmKGVudHJ5VmFsdWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW50cnknLCBlbnRyeVZhbHVlLnRvU3RyaW5nKCkpO1xuICBpZihlbnYpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW52JywgZW52KTtcbiAgaWYoZmFpbE9uV2FybmluZ3MpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZmFpbE9uV2FybmluZ3MnKTtcbiAgaWYoanNvbikgd2VicGFja09wdGlvbnMucHVzaCgnLS1qc29uJywganNvbik7XG4gIGlmKG1vZGUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbW9kZScsIG1vZGUpO1xuICBpZihtZXJnZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1tZXJnZScpO1xuICBpZihuYW1lKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5hbWUnLCBuYW1lKTtcbiAgaWYobm9EZXZ0b29sKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vRGV2dG9vbCcpO1xuICBpZihub1N0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vU3RhdHMnKTtcbiAgaWYobm9UYXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9UYXJnZXQnKTtcbiAgaWYobm9XYXRjaCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1ub1dhdGNoJyk7XG4gIGlmKG5vV2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicpO1xuICBpZihub2RlRW52KSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vZGVFbnYnLCBub2RlRW52KTtcbiAgaWYob3V0cHV0UGF0aCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1vdXRwdXQtcGF0aCcsIG91dHB1dFBhdGgudG9TdHJpbmcoKSk7IC8vIENvbnZlcnQgdG8gc3RyaW5nXG4gIGlmKHN0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXN0YXRzJywgc3RhdHMpO1xuICBpZih0YXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tdGFyZ2V0JywgdGFyZ2V0KTtcbiAgaWYod2F0Y2gpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgaWYod2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2hPcHRpb25zU3RkaW4nKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICAgIC8vIEZpeDogRW5zdXJlIGZpbmFsV2VicGFja09wdGlvbnMgaXMgYWx3YXlzIGFuIGFycmF5IG9mIHN0cmluZ3NcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG4gICAgaWYod2VicGFja1BhdGggPT09ICducHgnKSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWy4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnd2VicGFja1BhdGg6Jywgd2VicGFja1BhdGgpO1xuICAgIGNvbnNvbGUubG9nKCdmaW5hbFdlYnBhY2tPcHRpb25zOicsIEpTT04uc3RyaW5naWZ5KGZpbmFsV2VicGFja09wdGlvbnMpKTtcbiAgICBjb25zb2xlLmxvZygnZmluYWxXZWJwYWNrT3B0aW9ucyB0eXBlOicsIEFycmF5LmlzQXJyYXkoZmluYWxXZWJwYWNrT3B0aW9ucykgPyAnQXJyYXknIDogdHlwZW9mIGZpbmFsV2VicGFja09wdGlvbnMpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHBhc3NpbmcgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0byBleGVjYVxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4Jywgc3RkaW86ICdwaXBlJ30pO1xuXG4gICAgbGV0IGJ1aWxkQ29tcGxldGVkID0gZmFsc2U7XG4gICAgbGV0IGJ1aWxkU3RhdHMgPSB7XG4gICAgICBtb2R1bGVzOiAwLFxuICAgICAgYXNzZXRzOiAwLFxuICAgICAgc2l6ZTogJzAgQidcbiAgICB9O1xuXG4gICAgY2hpbGRQcm9jZXNzLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG5cbiAgICAgIGhhbmRsZVdlYnBhY2tQcm9ncmVzcyhvdXRwdXQsIHNwaW5uZXIsIHF1aWV0LCAnXHVEODNDXHVERkQ3XHVGRTBGJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIWJ1aWxkQ29tcGxldGVkICYmIG91dHB1dC5pbmNsdWRlcygnY29tcGlsZWQgc3VjY2Vzc2Z1bGx5JykpIHtcbiAgICAgICAgYnVpbGRDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG5cbiAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBtb2R1bGVzLyk7XG4gICAgICAgIGNvbnN0IGFzc2V0TWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBhc3NldHMvKTtcbiAgICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgc3RhdHVzIChbXFxkLl0rIFxcdyspLykgfHwgb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgcGF0aC4qPyhbXFxkLl0rIFxcdyspLyk7XG5cbiAgICAgICAgaWYobW9kdWxlTWF0Y2gpIGJ1aWxkU3RhdHMubW9kdWxlcyA9IHBhcnNlSW50KG1vZHVsZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKGFzc2V0TWF0Y2gpIGJ1aWxkU3RhdHMuYXNzZXRzID0gcGFyc2VJbnQoYXNzZXRNYXRjaFsxXSwgMTApO1xuICAgICAgICBpZihzaXplTWF0Y2gpIGJ1aWxkU3RhdHMuc2l6ZSA9IHNpemVNYXRjaFsxXTtcblxuICAgICAgICBkaXNwbGF5QnVpbGRTdGF0dXMoJ3dlYnBhY2snLCBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInLCBxdWlldCwgYnVpbGRTdGF0cyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICdcdUQ4M0NcdURGRDdcdUZFMEYnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighYnVpbGRDb21wbGV0ZWQgJiYgb3V0cHV0LmluY2x1ZGVzKCdjb21waWxlZCBzdWNjZXNzZnVsbHknKSkge1xuICAgICAgICBidWlsZENvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQnVpbGQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcblxuICAgICAgICBjb25zdCBtb2R1bGVNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIG1vZHVsZXMvKTtcbiAgICAgICAgY29uc3QgYXNzZXRNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIGFzc2V0cy8pO1xuICAgICAgICBjb25zdCBzaXplTWF0Y2ggPSBvdXRwdXQubWF0Y2goL2Fzc2V0cyBieSBzdGF0dXMgKFtcXGQuXSsgXFx3KykvKSB8fCBvdXRwdXQubWF0Y2goL2Fzc2V0cyBieSBwYXRoLio/KFtcXGQuXSsgXFx3KykvKTtcblxuICAgICAgICBpZihtb2R1bGVNYXRjaCkgYnVpbGRTdGF0cy5tb2R1bGVzID0gcGFyc2VJbnQobW9kdWxlTWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgaWYoYXNzZXRNYXRjaCkgYnVpbGRTdGF0cy5hc3NldHMgPSBwYXJzZUludChhc3NldE1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKHNpemVNYXRjaCkgYnVpbGRTdGF0cy5zaXplID0gc2l6ZU1hdGNoWzFdO1xuXG4gICAgICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnd2VicGFjaycsIExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYicsIHF1aWV0LCBidWlsZFN0YXRzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IGNoaWxkUHJvY2VzcztcblxuICAgIGlmKCFidWlsZENvbXBsZXRlZCkge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgZGlzcGxheUJ1aWxkU3RhdHVzKCd3ZWJwYWNrJywgTGV4Q29uZmlnLmNvbmZpZy5vdXRwdXRGdWxsUGF0aCB8fCAnbGliJywgcXVpZXQsIGJ1aWxkU3RhdHMpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdCdWlsZCBmYWlsZWQuJyk7XG5cbiAgICBpZihjbWQuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIHdlYnBhY2sgZXJyb3IuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgcHJvbXB0OiBgRml4IHRoaXMgd2VicGFjayBidWlsZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfVxcblxcbkVycm9yIGRldGFpbHM6XFxuJHtlcnJvci50b1N0cmluZygpfVxcblxcbkNvbmZpZ3VyYXRpb24gdXNlZDpcXG4ke0pTT04uc3RyaW5naWZ5KHdlYnBhY2tPcHRpb25zLCBudWxsLCAyKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkID0gYXN5bmMgKGNtZDogQnVpbGRPcHRpb25zLCBjYWxsYmFjazogQnVpbGRDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgYnVuZGxlciA9ICd3ZWJwYWNrJyxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICByZW1vdmUgPSBmYWxzZSxcbiAgICB0ZXN0ID0gZmFsc2UsXG4gICAgdHJhbnNsYXRpb25zID0gZmFsc2UsXG4gICAgdmFyaWFibGVzID0gJ3t9J1xuICB9ID0gY21kO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBsb2coYCR7Y2xpTmFtZX0gYnVpbGRpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdwcm9kdWN0aW9uJ307XG5cbiAgaWYodmFyaWFibGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlc09iaiA9IEpTT04ucGFyc2UodmFyaWFibGVzKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIC8vIElmIGluIHRlc3QgbW9kZSwgZXhpdCBlYXJseVxuICBpZih0ZXN0KSB7XG4gICAgbG9nKCdUZXN0IG1vZGU6IEJ1aWxkIGVudmlyb25tZW50IGxvYWRlZCwgZXhpdGluZycsICdpbmZvJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgYnVpbGRpbmcpXG4gIGlmKHRyYW5zbGF0aW9ucykge1xuICAgIHNwaW5uZXIuc3RhcnQoJ1Byb2Nlc3NpbmcgdHJhbnNsYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IExleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInO1xuXG4gICAgICBhd2FpdCBwcm9jZXNzVHJhbnNsYXRpb25zKHNvdXJjZVBhdGgsIG91dHB1dFBhdGgsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnVHJhbnNsYXRpb25zIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHNwaW5uZXIuc3RhcnQoJ0J1aWxkaW5nIGNvZGUuLi4nKTtcblxuICBpZihyZW1vdmUpIHtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCB8fCAnJyk7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgY29tcGlsZUNvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcuYnVpbGQuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMoY29tcGlsZUNvbmZpZ1BhdGgpKSB7XG4gICAgICBsb2coJ1VzaW5nIHRzY29uZmlnLmJ1aWxkLmpzb24gZm9yIGJ1aWxkLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGJ1aWxkUmVzdWx0ID0gMDtcblxuICBpZihidW5kbGVyID09PSAnZXNidWlsZCcpIHtcbiAgICBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkV2l0aEVzQnVpbGQoc3Bpbm5lciwgY21kLCAoc3RhdHVzKSA9PiB7XG4gICAgICBidWlsZFJlc3VsdCA9IHN0YXR1cztcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkV2l0aFdlYnBhY2soc3Bpbm5lciwgY21kLCAoc3RhdHVzKSA9PiB7XG4gICAgICBidWlsZFJlc3VsdCA9IHN0YXR1cztcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGJ1aWxkUmVzdWx0ID09PSAwICYmIGNtZC5hbmFseXplKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRoZSBidWlsZCBvdXRwdXQgZm9yIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSB7XG4gICAgICAgIG91dHB1dFBhdGg6IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGgsXG4gICAgICAgIGVudHJ5UG9pbnRzOiBidW5kbGVyID09PSAnZXNidWlsZCcgP1xuICAgICAgICAgIGBTb3VyY2UgZmlsZXM6ICR7TGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aH0vKiovKi57dHMsanN9YCA6XG4gICAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy53ZWJwYWNrPy5lbnRyeSB8fCAnVW5rbm93biBlbnRyeSBwb2ludHMnXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgcHJvbXB0OiBgQW5hbHl6ZSB0aGlzIGJ1aWxkIGZvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllczpcblxuQnVpbGQgVHlwZTogJHtidW5kbGVyfVxuRm9ybWF0OiAke2NtZC5mb3JtYXQgfHwgJ2RlZmF1bHQnfVxuRW52aXJvbm1lbnQ6ICR7TGV4Q29uZmlnLmNvbmZpZy50YXJnZXRFbnZpcm9ubWVudH1cbiR7SlNPTi5zdHJpbmdpZnkoc3RhdHMsIG51bGwsIDIpfVxuXG5XaGF0IGFyZSB0aGUga2V5IG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIGZvciB0aGlzIGJ1aWxkIGNvbmZpZ3VyYXRpb24/IENvbnNpZGVyOlxuMS4gQnVuZGxlIHNpemUgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXNcbjIuIENvZGUgc3BsaXR0aW5nIHJlY29tbWVuZGF0aW9uc1xuMy4gVHJlZS1zaGFraW5nIGltcHJvdmVtZW50c1xuNC4gUGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzXG41LiBEZXBlbmRlbmN5IG9wdGltaXphdGlvbnNgLFxuICAgICAgICB0YXNrOiAnb3B0aW1pemUnLFxuICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICBxdWlldFxuICAgICAgfSk7XG5cbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYnVpbGQgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIG9wdGltaXphdGlvbiBhbmFseXNpcycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFuYWx5c2lzIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmKGJ1aWxkUmVzdWx0ID09PSAwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICAgIH0gY2F0Y2goY29weUVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXM6ICR7Y29weUVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhidWlsZFJlc3VsdCk7XG4gIHJldHVybiBidWlsZFJlc3VsdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyx5QkFBeUI7QUFDaEMsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxvQkFBbUI7QUFDdkMsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEsU0FBUyxXQUFXLG1CQUFrQjtBQUU5QyxTQUFRLFdBQVcsK0JBQThCO0FBQ2pELFNBQVEsb0JBQW9CLHFCQUFxQixlQUFrQyx1QkFBdUIsbUJBQWtCO0FBQzVILFNBQVEsWUFBWSxrQkFBa0IscUJBQXFCLDZCQUE0QjtBQUN2RixTQUFRLFdBQVU7QUFDbEIsU0FBUSwyQkFBMEI7QUFDbEMsU0FBUSxrQkFBaUI7QUFDekIsT0FBTyxXQUFXO0FBQ2xCLE9BQU8sV0FBVztBQUVsQixJQUFJO0FBQ0osSUFBSTtBQUVKLElBQUk7QUFDRixvQkFBa0IsS0FBSywrQ0FBK0M7QUFDdEUsbUJBQWlCLFFBQVEsZUFBZTtBQUMxQyxRQUFRO0FBQ04sb0JBQWtCLFFBQVEsSUFBSTtBQUM5QixtQkFBaUIsUUFBUSxJQUFJO0FBQy9CO0FBcUJBLE1BQU0scUJBQXFCLENBQUMsU0FBaUIsWUFBb0IsT0FBZ0IsVUFBK0Q7QUFDOUksTUFBRyxNQUFPO0FBRVYsTUFBSSxZQUFZO0FBQ2hCLE1BQUcsU0FBUyxNQUFNLFdBQVcsTUFBTSxRQUFRO0FBQ3pDLGdCQUFZO0FBQUEsRUFBSyxNQUFNLE1BQU0sVUFBVSxDQUFDLE9BQU8sTUFBTSxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQUEsRUFDbkUsTUFBTSxNQUFNLFNBQVMsQ0FBQyxRQUFRLE1BQU0sS0FBSyxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQ3RELE1BQU0sTUFBTSxPQUFPLENBQUMsVUFBVSxNQUFNLEtBQUssTUFBTSxJQUFJ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SUFDN0QsT0FBTztBQUNMLGdCQUFVLDZCQUE2QjtBQUFBLElBQ3pDO0FBQUEsRUFDRjtBQUVBLE1BQUksY0FBYztBQUVsQixNQUFHLFlBQVksV0FBVztBQUN4QixrQkFBYyxNQUFNLGlCQUFpQixTQUFTLEtBQUssQ0FBQyxXQUFXO0FBQzdELG9CQUFjO0FBQUEsSUFDaEIsQ0FBQztBQUFBLEVBQ0gsT0FBTztBQUNMLGtCQUFjLE1BQU0saUJBQWlCLFNBQVMsS0FBSyxDQUFDLFdBQVc7QUFDN0Qsb0JBQWM7QUFBQSxJQUNoQixDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUcsZ0JBQWdCLEtBQUssSUFBSSxTQUFTO0FBQ25DLFlBQVEsTUFBTSxvRUFBb0U7QUFFbEYsUUFBSTtBQUNGLFlBQU0sUUFBUTtBQUFBLFFBQ1osWUFBWSxVQUFVLE9BQU87QUFBQSxRQUM3QixhQUFhLFlBQVksWUFDdkIsaUJBQWlCLFVBQVUsT0FBTyxjQUFjLGtCQUNoRCxVQUFVLE9BQU8sU0FBUyxTQUFTO0FBQUEsTUFDdkM7QUFFQSxZQUFNLFdBQVc7QUFBQSxRQUNmLFFBQVE7QUFBQTtBQUFBLGNBRUYsT0FBTztBQUFBLFVBQ1gsSUFBSSxVQUFVLFNBQVM7QUFBQSxlQUNsQixVQUFVLE9BQU8saUJBQWlCO0FBQUEsRUFDL0MsS0FBSyxVQUFVLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUXhCLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNUO0FBQUEsTUFDRixDQUFDO0FBRUQsY0FBUSxRQUFRLDRCQUE0QjtBQUFBLElBQzlDLFNBQVEsU0FBUztBQUNmLGNBQVEsS0FBSyw2Q0FBNkM7QUFDMUQsVUFBRyxDQUFDLE9BQU87QUFDVCxnQkFBUSxNQUFNLHNCQUFzQixPQUFPO0FBQUEsTUFDN0M7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUcsZ0JBQWdCLEdBQUc7QUFDcEIsUUFBSTtBQUNGLFlBQU0sb0JBQW9CLFNBQVMsVUFBVSxRQUFRLEtBQUs7QUFBQSxJQUM1RCxTQUFRLFdBQVc7QUFDakIsVUFBSTtBQUFBLEVBQUssT0FBTyw0Q0FBNEMsVUFBVSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQy9GLGVBQVMsQ0FBQztBQUNWLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFdBQVMsV0FBVztBQUNwQixTQUFPO0FBQ1Q7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -64,7 +64,7 @@ ${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
64
64
  const templatePath = pathResolve(dirName, "../../../tsconfig.template.json");
65
65
  let data = readFileSync(templatePath, "utf8");
66
66
  data = data.replace(/.\/src/g, sourcePath);
67
- data = data.replace(/.\/dist/g, outputPath);
67
+ data = data.replace(/.\/lib/g, outputPath);
68
68
  const destPath = pathResolve(cwd, "./tsconfig.json");
69
69
  writeFileSync(destPath, data, "utf8");
70
70
  break;
@@ -121,4 +121,4 @@ ${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
121
121
  export {
122
122
  create
123
123
  };
124
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENyZWF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlID0gJycsIG91dHB1dE5hbWUgPSAnJywgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGggPSAnJywgc291cmNlUGF0aCA9ICcnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGNvbnN0IHtjb25maWd9ID0gTGV4Q29uZmlnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHN0b3JlIGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndHNjb25maWcnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGZpbGVcbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVzKCd0c2NvbmZpZy5qc29uJywgdHJ1ZSk7XG5cbiAgICAgIC8vIEdldCB0c2NvbmZpZyB0ZW1wbGF0ZVxuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vdHNjb25maWcudGVtcGxhdGUuanNvbicpO1xuICAgICAgbGV0IGRhdGE6IHN0cmluZyA9IHJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgsICd1dGY4Jyk7XG5cbiAgICAgIC8vIFVwZGF0ZSBMZXggdHNjb25maWcgdGVtcGxhdGUgd2l0aCBzb3VyY2UgYW5kIG91dHB1dCBkaXJlY3Rvcmllc1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL3NyYy9nLCBzb3VyY2VQYXRoKTtcbiAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoLy5cXC9kaXN0L2csIG91dHB1dFBhdGgpO1xuXG4gICAgICAvLyBTYXZlIG5ldyB0c2NvbmZpZyB0byBhcHBcbiAgICAgIGNvbnN0IGRlc3RQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoZGVzdFBhdGgsIGRhdGEsICd1dGY4Jyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndmlldyc6IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgIGNsaU5hbWUsXG4gICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgIHF1aWV0LFxuICAgICAgICB0eXBlLFxuICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICB9KTtcblxuICAgICAgaWYoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZVBhdGgsIHRlbXBsYXRlUmVhY3R9ID0gcmVzdWx0O1xuICAgICAgY29uc3Qgdmlld1BhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31WaWV3YDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYoIWV4aXN0c1N5bmModmlld1BhdGgpKSB7XG4gICAgICAgIC8vIENvcHkgdmlldyBmaWxlc1xuICAgICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgJy4vLlNhbXBsZVZpZXcnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVZpZXdgLCB2aWV3UGF0aCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgQ1NTXG4gICAgICAgICAgY29uc3Qgdmlld1N0eWxlUGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7b3V0cHV0TmFtZX1WaWV3LmNzc2A7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vc2FtcGxlVmlldy5jc3NgLCB2aWV3U3R5bGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld1N0eWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHRlc3RcbiAgICAgICAgICBjb25zdCB2aWV3VGVzdFBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke25hbWVDYXBzfVZpZXcudGVzdCR7dGVtcGxhdGVSZWFjdH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L1NhbXBsZVZpZXcudGVzdCR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld1Rlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld1Rlc3RQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgc291cmNlIGZpbGVcbiAgICAgICAgICBjb25zdCB2aWV3RmlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke25hbWVDYXBzfVZpZXcke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3JHt0ZW1wbGF0ZVJlYWN0fS50eHRgLCB2aWV3RmlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3RmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHt2aWV3UGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2c2NvZGUnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy52c2NvZGUnLCB0cnVlKTtcblxuICAgICAgLy8gQ29weSB2c2NvZGUgY29uZmlndXJhdGlvblxuICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uLy52c2NvZGUnKSwgY3dkKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGNBQWMsWUFBWSxxQkFBb0I7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
124
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENyZWF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlID0gJycsIG91dHB1dE5hbWUgPSAnJywgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGggPSAnJywgc291cmNlUGF0aCA9ICcnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGNvbnN0IHtjb25maWd9ID0gTGV4Q29uZmlnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHN0b3JlIGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndHNjb25maWcnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGZpbGVcbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVzKCd0c2NvbmZpZy5qc29uJywgdHJ1ZSk7XG5cbiAgICAgIC8vIEdldCB0c2NvbmZpZyB0ZW1wbGF0ZVxuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vdHNjb25maWcudGVtcGxhdGUuanNvbicpO1xuICAgICAgbGV0IGRhdGE6IHN0cmluZyA9IHJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgsICd1dGY4Jyk7XG5cbiAgICAgIC8vIFVwZGF0ZSBMZXggdHNjb25maWcgdGVtcGxhdGUgd2l0aCBzb3VyY2UgYW5kIG91dHB1dCBkaXJlY3Rvcmllc1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL3NyYy9nLCBzb3VyY2VQYXRoKTtcbiAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoLy5cXC9saWIvZywgb3V0cHV0UGF0aCk7XG5cbiAgICAgIC8vIFNhdmUgbmV3IHRzY29uZmlnIHRvIGFwcFxuICAgICAgY29uc3QgZGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJy4vdHNjb25maWcuanNvbicpO1xuICAgICAgd3JpdGVGaWxlU3luYyhkZXN0UGF0aCwgZGF0YSwgJ3V0ZjgnKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2aWV3Jzoge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0RmlsZW5hbWVzKHtcbiAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgcXVpZXQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgIH0pO1xuXG4gICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlUGF0aCwgdGVtcGxhdGVSZWFjdH0gPSByZXN1bHQ7XG4gICAgICBjb25zdCB2aWV3UGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfVZpZXdgO1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZighZXhpc3RzU3luYyh2aWV3UGF0aCkpIHtcbiAgICAgICAgLy8gQ29weSB2aWV3IGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlVmlldycpLCBjd2QpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIGRpcmVjdG9yeVxuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7Y3dkfS8uU2FtcGxlVmlld2AsIHZpZXdQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBDU1NcbiAgICAgICAgICBjb25zdCB2aWV3U3R5bGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtvdXRwdXROYW1lfVZpZXcuY3NzYDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9zYW1wbGVWaWV3LmNzc2AsIHZpZXdTdHlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3U3R5bGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgdGVzdFxuICAgICAgICAgIGNvbnN0IHZpZXdUZXN0UGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7bmFtZUNhcHN9Vmlldy50ZXN0JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldy50ZXN0JHt0ZW1wbGF0ZVJlYWN0fS50eHRgLCB2aWV3VGVzdFBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3VGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHZpZXdGaWxlUGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7bmFtZUNhcHN9VmlldyR7dGVtcGxhdGVSZWFjdH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L1NhbXBsZVZpZXcke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdGaWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdGaWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke3ZpZXdQYXRofSBhbHJlYWR5IGV4aXN0cy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZzY29kZSc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygnLnZzY29kZScsIHRydWUpO1xuXG4gICAgICAvLyBDb3B5IHZzY29kZSBjb25maWd1cmF0aW9uXG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vLnZzY29kZScpLCBjd2QpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLFlBQVksY0FBYyxZQUFZLHFCQUFvQjtB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
@@ -171,7 +171,7 @@ ${cliName} Error: Environment variables option is not a valid JSON object.`, "er
171
171
  spinner.start("Processing translations...");
172
172
  try {
173
173
  const sourcePath = LexConfig.config.sourceFullPath || process.cwd();
174
- const outputPath = LexConfig.config.outputFullPath || "dist";
174
+ const outputPath = LexConfig.config.outputFullPath || "lib";
175
175
  await processTranslations(sourcePath, outputPath, quiet);
176
176
  spinner.succeed("Translations processed successfully!");
177
177
  } catch (translationError) {
@@ -283,4 +283,4 @@ ${cliName} Error: ${error.message}`, "error", quiet);
283
283
  export {
284
284
  dev
285
285
  };
286
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi9kZXYudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaCB7XG4gIGN1cnJlbnRGaWxlbmFtZSA9IHByb2Nlc3MuY3dkKCk7XG4gIGN1cnJlbnREaXJuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXZPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVuZGxlQW5hbHl6ZXI/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wZW4/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlbW92ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9ucz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVB1YmxpY0lwPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEZXZDYWxsYmFjayA9IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFB1YmxpY0lwQ2FjaGUge1xuICBpcDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuY29uc3QgZ2V0Q2FjaGVEaXIgPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2FjaGVEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5sZXgtY2FjaGUnKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVEaXIpKSB7XG4gICAgbWtkaXJTeW5jKGNhY2hlRGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIH1cbiAgcmV0dXJuIGNhY2hlRGlyO1xufTtcblxuY29uc3QgZ2V0Q2FjaGVQYXRoID0gKCk6IHN0cmluZyA9PiBqb2luKGdldENhY2hlRGlyKCksICdwdWJsaWMtaXAuanNvbicpO1xuXG5jb25zdCByZWFkUHVibGljSXBDYWNoZSA9ICgpOiBQdWJsaWNJcENhY2hlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBpZighZXhpc3RzU3luYyhjYWNoZVBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHJlYWRGaWxlU3luYyhjYWNoZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSBKU09OLnBhcnNlKGNhY2hlRGF0YSk7XG5cbiAgICAvLyBDaGVjayBpZiBjYWNoZSBpcyBvbGRlciB0aGFuIDEgd2VlayAoNyBkYXlzICogMjQgaG91cnMgKiA2MCBtaW51dGVzICogNjAgc2Vjb25kcyAqIDEwMDAgbWlsbGlzZWNvbmRzKVxuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgIGlmKERhdGUubm93KCkgLSBjYWNoZS50aW1lc3RhbXAgPiBvbmVXZWVrTXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IHdyaXRlUHVibGljSXBDYWNoZSA9IChpcDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IHtcbiAgICBpcCxcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgfTtcbiAgd3JpdGVGaWxlU3luYyhjYWNoZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNhY2hlLCBudWxsLCAyKSk7XG59O1xuXG5jb25zdCBmZXRjaFB1YmxpY0lwID0gKGZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gIC8vIENoZWNrIGNhY2hlIGZpcnN0IHVubGVzcyBmb3JjZSByZWZyZXNoIGlzIHJlcXVlc3RlZFxuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICAvLyBQcml2YXRlIElQIHJhbmdlc1xuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUHVibGljIElQIChub3QgaW4gcHJpdmF0ZSByYW5nZXMpXG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSA3MDAxLCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCdcdUQ4M0RcdURFODAgRGV2ZWxvcG1lbnQgU2VydmVyIFJ1bm5pbmcnKX1cXG5cXG4ke3VybExpbmVzfVxcbmAgK1xuICAgIGAke2NoYWxrLnllbGxvdygnUHJlc3MgQ3RybCtDIHRvIHN0b3AgdGhlIHNlcnZlcicpfWAsXG4gICAge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzFhMWExYScsXG4gICAgICBib3JkZXJDb2xvcjogJ2N5YW4nLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBtYXJnaW46IDEsXG4gICAgICBwYWRkaW5nOiAxXG4gICAgfVxuICApO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKGBcXG4ke3N0YXR1c0JveH1cXG5gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXYgPSBhc3luYyAoY21kOiBEZXZPcHRpb25zLCBjYWxsYmFjazogRGV2Q2FsbGJhY2sgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bmRsZUFuYWx5emVyLCBjbGlOYW1lID0gJ0xleCcsIGNvbmZpZywgb3BlbiA9IGZhbHNlLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgc3RhcnRpbmcgZGV2IHNlcnZlcilcbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2Rpc3QnO1xuXG4gICAgICBhd2FpdCBwcm9jZXNzVHJhbnNsYXRpb25zKHNvdXJjZVBhdGgsIG91dHB1dFBhdGgsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnVHJhbnNsYXRpb25zIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfSBjYXRjaCAodHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnM6ICR7dHJhbnNsYXRpb25FcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBsZXQgd2VicGFja0NvbmZpZzogc3RyaW5nO1xuXG4gIGlmKGNvbmZpZykge1xuICAgIGNvbnN0IGlzUmVsYXRpdmVDb25maWc6IGJvb2xlYW4gPSBjb25maWcuc3Vic3RyKDAsIDIpID09PSAnLi8nO1xuICAgIHdlYnBhY2tDb25maWcgPSBpc1JlbGF0aXZlQ29uZmlnID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY29uZmlnKSA6IGNvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7d2VicGFja0NvbmZpZzogcmVzb2x2ZWRDb25maWd9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG4gICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICB9XG5cbiAgY29uc3Qge3dlYnBhY2tQYXRofSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuXG4gIGNvbnN0IHdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAnLS1jb2xvcicsXG4gICAgJy0td2F0Y2gnLFxuICAgICctLWNvbmZpZycsIHdlYnBhY2tDb25maWdcbiAgXTtcblxuICBpZihidW5kbGVBbmFseXplcikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tYnVuZGxlQW5hbHl6ZXInKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZmluYWxXZWJwYWNrT3B0aW9ucyA9IHdlYnBhY2tQYXRoID09PSAnbnB4JyA/IFsnd2VicGFjaycsIC4uLndlYnBhY2tPcHRpb25zXSA6IHdlYnBhY2tPcHRpb25zO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnU3RhcnRpbmcgZGV2ZWxvcG1lbnQgc2VydmVyLi4uJyk7XG5cbiAgICBjb25zdCBjaGlsZFByb2Nlc3MgPSBleGVjYSh3ZWJwYWNrUGF0aCwgZmluYWxXZWJwYWNrT3B0aW9ucywge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIGVudjoge1xuICAgICAgICBMRVhfUVVJRVQ6IHF1aWV0LFxuICAgICAgICBXRUJQQUNLX0RFVl9PUEVOOiBvcGVuXG4gICAgICB9LFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0gYXMgYW55KTtcblxuICAgIGxldCBzZXJ2ZXJTdGFydGVkID0gZmFsc2U7XG4gICAgbGV0IGRldGVjdGVkUG9ydCA9IDcwMDE7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICdcdUQ4M0RcdURFODAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICAvLyBUcnkgbXVsdGlwbGUgcGF0dGVybnMgdG8gZGV0ZWN0IHRoZSBwb3J0XG4gICAgICAgIGNvbnN0IHBvcnRNYXRjaCA9IG91dHB1dC5tYXRjaCgvTG9jYWw6XFxzKmh0dHA6XFwvXFwvW146XSs6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2h0dHA6XFwvXFwvbG9jYWxob3N0OihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9wb3J0OlxccyooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL1dlYnBhY2tQbHVnaW5TZXJ2ZSBsaXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKTtcbiAgICAgICAgaWYocG9ydE1hdGNoKSB7XG4gICAgICAgICAgZGV0ZWN0ZWRQb3J0ID0gcGFyc2VJbnQocG9ydE1hdGNoWzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCk7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgaWYocHVibGljSXApIHtcbiAgICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICdcdUQ4M0RcdURFODAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICAvLyBUcnkgbXVsdGlwbGUgcGF0dGVybnMgdG8gZGV0ZWN0IHRoZSBwb3J0XG4gICAgICAgIGNvbnN0IHBvcnRNYXRjaCA9IG91dHB1dC5tYXRjaCgvTG9jYWw6XFxzKmh0dHA6XFwvXFwvW146XSs6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2h0dHA6XFwvXFwvbG9jYWxob3N0OihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9wb3J0OlxccyooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL1dlYnBhY2tQbHVnaW5TZXJ2ZSBsaXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKTtcbiAgICAgICAgaWYocG9ydE1hdGNoKSB7XG4gICAgICAgICAgZGV0ZWN0ZWRQb3J0ID0gcGFyc2VJbnQocG9ydE1hdGNoWzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCk7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgaWYocHVibGljSXApIHtcbiAgICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKCFzZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCk7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgaWYocHVibGljSXApIHtcbiAgICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgNTAwMCk7XG5cbiAgICBhd2FpdCBjaGlsZFByb2Nlc3M7XG5cbiAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcbiAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCk7XG4gICAgICBmZXRjaFB1YmxpY0lwKHVzZVB1YmxpY0lwKS50aGVuKChwdWJsaWNJcCkgPT4ge1xuICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZGV0ZWN0ZWRQb3J0LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ1RoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBydW5uaW5nIFdlYnBhY2suJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPLFdBQVc7QUFDbEIsT0FBTyxXQUFXO0FBQ2xCLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksY0FBYyxlQUFlLGlCQUFnQjtBQUNqRSxPQUFPLFdBQVc7QUFDbEIsU0FBUSxtQkFBbUIsZUFBYztBQUN6QyxTQUFRLFNBQVMsV0FBVyxhQUFhLFlBQVc7QUFFcEQsU0FB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
286
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi9kZXYudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaCB7XG4gIGN1cnJlbnRGaWxlbmFtZSA9IHByb2Nlc3MuY3dkKCk7XG4gIGN1cnJlbnREaXJuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXZPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVuZGxlQW5hbHl6ZXI/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wZW4/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlbW92ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9ucz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVB1YmxpY0lwPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEZXZDYWxsYmFjayA9IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFB1YmxpY0lwQ2FjaGUge1xuICBpcDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuY29uc3QgZ2V0Q2FjaGVEaXIgPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2FjaGVEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5sZXgtY2FjaGUnKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVEaXIpKSB7XG4gICAgbWtkaXJTeW5jKGNhY2hlRGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIH1cbiAgcmV0dXJuIGNhY2hlRGlyO1xufTtcblxuY29uc3QgZ2V0Q2FjaGVQYXRoID0gKCk6IHN0cmluZyA9PiBqb2luKGdldENhY2hlRGlyKCksICdwdWJsaWMtaXAuanNvbicpO1xuXG5jb25zdCByZWFkUHVibGljSXBDYWNoZSA9ICgpOiBQdWJsaWNJcENhY2hlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBpZighZXhpc3RzU3luYyhjYWNoZVBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHJlYWRGaWxlU3luYyhjYWNoZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSBKU09OLnBhcnNlKGNhY2hlRGF0YSk7XG5cbiAgICAvLyBDaGVjayBpZiBjYWNoZSBpcyBvbGRlciB0aGFuIDEgd2VlayAoNyBkYXlzICogMjQgaG91cnMgKiA2MCBtaW51dGVzICogNjAgc2Vjb25kcyAqIDEwMDAgbWlsbGlzZWNvbmRzKVxuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgIGlmKERhdGUubm93KCkgLSBjYWNoZS50aW1lc3RhbXAgPiBvbmVXZWVrTXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IHdyaXRlUHVibGljSXBDYWNoZSA9IChpcDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IHtcbiAgICBpcCxcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgfTtcbiAgd3JpdGVGaWxlU3luYyhjYWNoZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNhY2hlLCBudWxsLCAyKSk7XG59O1xuXG5jb25zdCBmZXRjaFB1YmxpY0lwID0gKGZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gIC8vIENoZWNrIGNhY2hlIGZpcnN0IHVubGVzcyBmb3JjZSByZWZyZXNoIGlzIHJlcXVlc3RlZFxuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICAvLyBQcml2YXRlIElQIHJhbmdlc1xuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUHVibGljIElQIChub3QgaW4gcHJpdmF0ZSByYW5nZXMpXG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSA3MDAxLCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCdcdUQ4M0RcdURFODAgRGV2ZWxvcG1lbnQgU2VydmVyIFJ1bm5pbmcnKX1cXG5cXG4ke3VybExpbmVzfVxcbmAgK1xuICAgIGAke2NoYWxrLnllbGxvdygnUHJlc3MgQ3RybCtDIHRvIHN0b3AgdGhlIHNlcnZlcicpfWAsXG4gICAge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzFhMWExYScsXG4gICAgICBib3JkZXJDb2xvcjogJ2N5YW4nLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBtYXJnaW46IDEsXG4gICAgICBwYWRkaW5nOiAxXG4gICAgfVxuICApO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKGBcXG4ke3N0YXR1c0JveH1cXG5gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXYgPSBhc3luYyAoY21kOiBEZXZPcHRpb25zLCBjYWxsYmFjazogRGV2Q2FsbGJhY2sgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bmRsZUFuYWx5emVyLCBjbGlOYW1lID0gJ0xleCcsIGNvbmZpZywgb3BlbiA9IGZhbHNlLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgc3RhcnRpbmcgZGV2IHNlcnZlcilcbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYic7XG5cbiAgICAgIGF3YWl0IHByb2Nlc3NUcmFuc2xhdGlvbnMoc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdUcmFuc2xhdGlvbnMgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICB9IGNhdGNoICh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGxldCB3ZWJwYWNrQ29uZmlnOiBzdHJpbmc7XG5cbiAgaWYoY29uZmlnKSB7XG4gICAgY29uc3QgaXNSZWxhdGl2ZUNvbmZpZzogYm9vbGVhbiA9IGNvbmZpZy5zdWJzdHIoMCwgMikgPT09ICcuLyc7XG4gICAgd2VicGFja0NvbmZpZyA9IGlzUmVsYXRpdmVDb25maWcgPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjb25maWcpIDogY29uZmlnO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHt3ZWJwYWNrQ29uZmlnOiByZXNvbHZlZENvbmZpZ30gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcbiAgICB3ZWJwYWNrQ29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gIH1cblxuICBjb25zdCB7d2VicGFja1BhdGh9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG5cbiAgY29uc3Qgd2VicGFja09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICctLWNvbG9yJyxcbiAgICAnLS13YXRjaCcsXG4gICAgJy0tY29uZmlnJywgd2VicGFja0NvbmZpZ1xuICBdO1xuXG4gIGlmKGJ1bmRsZUFuYWx5emVyKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1idW5kbGVBbmFseXplcicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaW5hbFdlYnBhY2tPcHRpb25zID0gd2VicGFja1BhdGggPT09ICducHgnID8gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdIDogd2VicGFja09wdGlvbnM7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW5cbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgZGV0ZWN0ZWRQb3J0ID0gNzAwMTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ1x1RDgzRFx1REU4MCcsICdXZWJwYWNrIEJ1aWxkaW5nJyk7XG5cbiAgICAgIGlmKCFzZXJ2ZXJTdGFydGVkICYmIChvdXRwdXQuaW5jbHVkZXMoJ0xvY2FsOicpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjayBjb21waWxlZCcpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjay1wbHVnaW4tc2VydmUnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2h0dHA6Ly9sb2NhbGhvc3QnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2xpc3RlbmluZyBvbiBwb3J0JykpKSB7XG4gICAgICAgIHNlcnZlclN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuXG4gICAgICAgIC8vIFRyeSBtdWx0aXBsZSBwYXR0ZXJucyB0byBkZXRlY3QgdGhlIHBvcnRcbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgICAgZmV0Y2hQdWJsaWNJcCh1c2VQdWJsaWNJcCkudGhlbigocHVibGljSXApID0+IHtcbiAgICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ1x1RDgzRFx1REU4MCcsICdXZWJwYWNrIEJ1aWxkaW5nJyk7XG5cbiAgICAgIGlmKCFzZXJ2ZXJTdGFydGVkICYmIChvdXRwdXQuaW5jbHVkZXMoJ0xvY2FsOicpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjayBjb21waWxlZCcpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjay1wbHVnaW4tc2VydmUnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2h0dHA6Ly9sb2NhbGhvc3QnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2xpc3RlbmluZyBvbiBwb3J0JykpKSB7XG4gICAgICAgIHNlcnZlclN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuXG4gICAgICAgIC8vIFRyeSBtdWx0aXBsZSBwYXR0ZXJucyB0byBkZXRlY3QgdGhlIHBvcnRcbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgICAgZmV0Y2hQdWJsaWNJcCh1c2VQdWJsaWNJcCkudGhlbigocHVibGljSXApID0+IHtcbiAgICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcbiAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgICAgZmV0Y2hQdWJsaWNJcCh1c2VQdWJsaWNJcCkudGhlbigocHVibGljSXApID0+IHtcbiAgICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcblxuICAgIGF3YWl0IGNoaWxkUHJvY2VzcztcblxuICAgIGlmKCFzZXJ2ZXJTdGFydGVkKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgIGlmKHB1YmxpY0lwKSB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHJ1bm5pbmcgV2VicGFjay4nKTtcblxuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQU8sV0FBVztBQUNsQixPQUFPLFdBQVc7QUFDbEIsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxjQUFjLGVBQWUsaUJBQWdCO0FBQ2pFLE9BQU8sV0FBVztBQUNsQixTQUFRLG1CQUFtQixlQUFjO0FBQ3pDLFNBQVEsU0FBUyxXQUFXLGFBQWEsWUFBVztBQUVwRCxTQUFR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