@nlabs/lex 1.55.2 → 1.56.1

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.
@@ -119,7 +119,7 @@ const getNetworkAddresses = ()=>{
119
119
  }
120
120
  return addresses;
121
121
  };
122
- const displayServerStatus = (port = DEFAULT_DEV_PORT, quiet, publicIp)=>{
122
+ const displayServerStatus = (port = DEFAULT_DEV_PORT, quiet = false, publicIp)=>{
123
123
  if (quiet) {
124
124
  return;
125
125
  }
@@ -258,7 +258,7 @@ export const dev = async (cmd, callback = ()=>({}))=>{
258
258
  let detectedPort = finalPort;
259
259
  childProcess.stdout?.on('data', (data)=>{
260
260
  const output = data.toString();
261
- handleWebpackProgress(output, spinner, quiet, '🚀', 'Webpack Building');
261
+ handleWebpackProgress(output, spinner, quiet ?? false, '🚀', 'Webpack Building');
262
262
  if (!serverStarted && (output.includes('Local:') || output.includes('webpack compiled') || output.includes('webpack-plugin-serve') || output.includes('http://localhost') || output.includes('listening on port'))) {
263
263
  serverStarted = true;
264
264
  spinner.succeed('Development server started.');
@@ -271,7 +271,7 @@ export const dev = async (cmd, callback = ()=>({}))=>{
271
271
  });
272
272
  childProcess.stderr?.on('data', (data)=>{
273
273
  const output = data.toString();
274
- handleWebpackProgress(output, spinner, quiet, '🚀', 'Webpack Building');
274
+ handleWebpackProgress(output, spinner, quiet ?? false, '🚀', 'Webpack Building');
275
275
  if (!serverStarted && (output.includes('Local:') || output.includes('webpack compiled') || output.includes('webpack-plugin-serve') || output.includes('http://localhost') || output.includes('listening on port'))) {
276
276
  serverStarted = true;
277
277
  spinner.succeed('Development server started.');
@@ -303,4 +303,4 @@ export const dev = async (cmd, callback = ()=>({}))=>{
303
303
  }
304
304
  };
305
305
 
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbi8vIGRlZmF1bHQgcG9ydCB1c2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgd2hlbiBub25lIGlzIHByb3ZpZGVkXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVZfUE9SVCA9IDMwMDA7XG5cbmludGVyZmFjZSBQdWJsaWNJcENhY2hlIHtcbiAgaXA6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmNvbnN0IHBhcnNlUG9ydCA9IChwb3J0VmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBpZihwb3J0VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwb3J0VmFsdWUgPT09IG51bGwgfHwgcG9ydFZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIocG9ydFZhbHVlKTtcbiAgaWYoTnVtYmVyLmlzSW50ZWdlcihwYXJzZWQpICYmIHBhcnNlZCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldENhY2hlRGlyID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihob21lZGlyKCksICcubGV4LWNhY2hlJyk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlRGlyKSkge1xuICAgIG1rZGlyU3luYyhjYWNoZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9XG4gIHJldHVybiBjYWNoZURpcjtcbn07XG5cbmNvbnN0IGdldENhY2hlUGF0aCA9ICgpOiBzdHJpbmcgPT4gam9pbihnZXRDYWNoZURpcigpLCAncHVibGljLWlwLmpzb24nKTtcblxuY29uc3QgcmVhZFB1YmxpY0lwQ2FjaGUgPSAoKTogUHVibGljSXBDYWNoZSB8IG51bGwgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSByZWFkRmlsZVN5bmMoY2FjaGVQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0gSlNPTi5wYXJzZShjYWNoZURhdGEpO1xuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgaWYoRGF0ZS5ub3coKSAtIGNhY2hlLnRpbWVzdGFtcCA+IG9uZVdlZWtNcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCB3cml0ZVB1YmxpY0lwQ2FjaGUgPSAoaXA6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSB7XG4gICAgaXAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gIH07XG4gIHdyaXRlRmlsZVN5bmMoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShjYWNoZSwgbnVsbCwgMikpO1xufTtcblxuY29uc3QgZmV0Y2hQdWJsaWNJcCA9IChmb3JjZVJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSBERUZBVUxUX0RFVl9QT1JULCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCfwn5qAIERldmVsb3BtZW50IFNlcnZlciBSdW5uaW5nJyl9XFxuXFxuJHt1cmxMaW5lc31cXG5gICtcbiAgICBgJHtjaGFsay55ZWxsb3coJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSBzZXJ2ZXInKX1gLFxuICAgIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnLFxuICAgICAgYm9yZGVyQ29sb3I6ICdjeWFuJyxcbiAgICAgIGJvcmRlclN0eWxlOiAncm91bmQnLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgcGFkZGluZzogMVxuICAgIH1cbiAgKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgXFxuJHtzdGF0dXNCb3h9XFxuYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV2ID0gYXN5bmMgKGNtZDogRGV2T3B0aW9ucywgY2FsbGJhY2s6IERldkNhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW5kbGVBbmFseXplciwgY2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIGZvcm1hdCA9ICdlc20nLCBvcGVuID0gZmFsc2UsIHBvcnQ6IGNsaVBvcnQsIHF1aWV0LCByZW1vdmUsIHRyYW5zbGF0aW9ucyA9IGZhbHNlLCB1c2VQdWJsaWNJcCwgdmFyaWFibGVzfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IHN0YXJ0IGRldmVsb3BtZW50IHNlcnZlci4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtkZXY6IGRldkNvbmZpZywgb3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgZmluYWxQb3J0ID0gcGFyc2VQb3J0KGNsaVBvcnQpID8/IHBhcnNlUG9ydChkZXZDb25maWc/LnBvcnQpID8/IERFRkFVTFRfREVWX1BPUlQ7XG5cbiAgbGV0IHZhcmlhYmxlc09iajogb2JqZWN0ID0ge05PREVfRU5WOiAnZGV2ZWxvcG1lbnQnfTtcblxuICBpZih2YXJpYWJsZXMpIHtcbiAgICB0cnkge1xuICAgICAgdmFyaWFibGVzT2JqID0gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2goX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYic7XG5cbiAgICAgIGF3YWl0IHByb2Nlc3NUcmFuc2xhdGlvbnMoc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdUcmFuc2xhdGlvbnMgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zOiAke3RyYW5zbGF0aW9uRXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9ucy4nKTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgIHdlYnBhY2tDb25maWcgPSByZXNvbHZlZENvbmZpZztcbiAgfVxuXG4gIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXdhdGNoJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYnVuZGxlQW5hbHl6ZXIpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLWJ1bmRsZUFuYWx5emVyJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGxldCBleGVjdXRhYmxlUGF0aCA9IHdlYnBhY2tQYXRoO1xuICAgIGxldCBmaW5hbFdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXTtcblxuICAgIGlmKHdlYnBhY2tQYXRoID09PSAnbnB4Jykge1xuICAgICAgZmluYWxXZWJwYWNrT3B0aW9ucyA9IFsnd2VicGFjaycsIC4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9IGVsc2UgaWYod2VicGFja1BhdGguZW5kc1dpdGgoJy5qcycpKSB7XG4gICAgICBleGVjdXRhYmxlUGF0aCA9ICdub2RlJztcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSBbd2VicGFja1BhdGgsIC4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluYWxXZWJwYWNrT3B0aW9ucyA9IHdlYnBhY2tPcHRpb25zO1xuICAgIH1cblxuICAgIHNwaW5uZXIuc3RhcnQoJ1N0YXJ0aW5nIGRldmVsb3BtZW50IHNlcnZlci4uLicpO1xuXG4gICAgY29uc3QgY2hpbGRQcm9jZXNzID0gZXhlY2EoZXhlY3V0YWJsZVBhdGgsIGZpbmFsV2VicGFja09wdGlvbnMsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW4sXG4gICAgICAgIFdFQlBBQ0tfREVWX1BPUlQ6IGZpbmFsUG9ydC50b1N0cmluZygpXG4gICAgICB9LFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0gYXMgYW55KTtcblxuICAgIGxldCBzZXJ2ZXJTdGFydGVkID0gZmFsc2U7XG4gICAgbGV0IHN0YXR1c1Nob3duID0gZmFsc2U7XG4gICAgY29uc3Qgc2hvd1N0YXR1c09uY2UgPSAocG9ydFRvU2hvdzogbnVtYmVyKSA9PiB7XG4gICAgICBpZihzdGF0dXNTaG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGF0dXNTaG93biA9IHRydWU7XG4gICAgICBpZih1c2VQdWJsaWNJcCkge1xuICAgICAgICBmZXRjaFB1YmxpY0lwKHVzZVB1YmxpY0lwKS50aGVuKChwdWJsaWNJcCkgPT4ge1xuICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQsIHB1YmxpY0lwKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5U2VydmVyU3RhdHVzKHBvcnRUb1Nob3csIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBkZXRlY3RlZFBvcnQgPSBmaW5hbFBvcnQ7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiYm94ZW4iLCJjaGFsayIsImV4ZWNhIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsIndyaXRlRmlsZVN5bmMiLCJta2RpclN5bmMiLCJodHRwcyIsIm5ldHdvcmtJbnRlcmZhY2VzIiwiaG9tZWRpciIsImRpcm5hbWUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJqb2luIiwiTGV4Q29uZmlnIiwiY3JlYXRlU3Bpbm5lciIsImhhbmRsZVdlYnBhY2tQcm9ncmVzcyIsInJlbW92ZUZpbGVzIiwicmVzb2x2ZVdlYnBhY2tQYXRocyIsImxvZyIsInByb2Nlc3NUcmFuc2xhdGlvbnMiLCJjdXJyZW50RmlsZW5hbWUiLCJjdXJyZW50RGlybmFtZSIsImV2YWwiLCJwcm9jZXNzIiwiY3dkIiwiREVGQVVMVF9ERVZfUE9SVCIsInBhcnNlUG9ydCIsInBvcnRWYWx1ZSIsInVuZGVmaW5lZCIsInBhcnNlZCIsIk51bWJlciIsImlzSW50ZWdlciIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsImNsaVBvcnQiLCJyZW1vdmUiLCJ0cmFuc2xhdGlvbnMiLCJ1c2VQdWJsaWNJcCIsInZhcmlhYmxlcyIsInNwaW5uZXIiLCJwYXJzZUNvbmZpZyIsImRldkNvbmZpZyIsIm91dHB1dEZ1bGxQYXRoIiwidXNlVHlwZXNjcmlwdCIsImZpbmFsUG9ydCIsInZhcmlhYmxlc09iaiIsIk5PREVfRU5WIiwiX2Vycm9yIiwiZW52IiwiY2hlY2tUeXBlc2NyaXB0Q29uZmlnIiwic3RhcnQiLCJzdWNjZWVkIiwic291cmNlUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwib3V0cHV0UGF0aCIsInRyYW5zbGF0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZmFpbCIsIndlYnBhY2tDb25maWciLCJpc1JlbGF0aXZlQ29uZmlnIiwic3Vic3RyIiwicmVzb2x2ZWRDb25maWciLCJ3ZWJwYWNrUGF0aCIsIndlYnBhY2tPcHRpb25zIiwicHVzaCIsImV4ZWN1dGFibGVQYXRoIiwiZmluYWxXZWJwYWNrT3B0aW9ucyIsImVuZHNXaXRoIiwiY2hpbGRQcm9jZXNzIiwiZW5jb2RpbmciLCJMRVhfUVVJRVQiLCJXRUJQQUNLX0RFVl9PUEVOIiwiV0VCUEFDS19ERVZfUE9SVCIsInRvU3RyaW5nIiwic3RkaW8iLCJzZXJ2ZXJTdGFydGVkIiwic3RhdHVzU2hvd24iLCJzaG93U3RhdHVzT25jZSIsInBvcnRUb1Nob3ciLCJ0aGVuIiwiZGV0ZWN0ZWRQb3J0Iiwic3Rkb3V0Iiwib3V0cHV0IiwiaW5jbHVkZXMiLCJwb3J0TWF0Y2giLCJtYXRjaCIsInBhcnNlSW50Iiwic3RkZXJyIiwic2V0VGltZW91dCIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBQ3RFLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxpQkFBaUIsRUFBRUMsT0FBTyxRQUFPLEtBQUs7QUFDOUMsU0FBUUMsT0FBTyxFQUFFQyxXQUFXQyxXQUFXLEVBQUVDLElBQUksUUFBTyxPQUFPO0FBRTNELFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxFQUFFQyxxQkFBcUIsRUFBRUMsV0FBVyxRQUFPLHFCQUFxQjtBQUNyRixTQUFRQyxtQkFBbUIsUUFBTyxzQkFBc0I7QUFDeEQsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQUN2QyxTQUFRQyxtQkFBbUIsUUFBTyw4QkFBOEI7QUFFaEUsSUFBSUM7QUFDSixJQUFJQztBQUVKLElBQUk7SUFDRixtQ0FBbUM7SUFDbkNELGtCQUFrQkUsS0FBSztJQUN2QkQsaUJBQWlCWixRQUFRVztBQUMzQixFQUFFLE9BQUs7SUFDTEEsa0JBQWtCRyxRQUFRQyxHQUFHO0lBQzdCSCxpQkFBaUJFLFFBQVFDLEdBQUc7QUFDOUI7QUFrQkEsb0VBQW9FO0FBQ3BFLE9BQU8sTUFBTUMsbUJBQW1CLEtBQUs7QUFPckMsTUFBTUMsWUFBWSxDQUFDQztJQUNqQixJQUFHQSxjQUFjQyxhQUFhRCxjQUFjLFFBQVFBLGNBQWMsSUFBSTtRQUNwRSxPQUFPQztJQUNUO0lBRUEsTUFBTUMsU0FBU0MsT0FBT0g7SUFDdEIsSUFBR0csT0FBT0MsU0FBUyxDQUFDRixXQUFXQSxTQUFTLEdBQUc7UUFDekMsT0FBT0E7SUFDVDtJQUVBLE9BQU9EO0FBQ1Q7QUFFQSxNQUFNSSxjQUFjO0lBQ2xCLE1BQU1DLFdBQVdyQixLQUFLSixXQUFXO0lBQ2pDLElBQUcsQ0FBQ04sV0FBVytCLFdBQVc7UUFDeEI1QixVQUFVNEIsVUFBVTtZQUFDQyxXQUFXO1FBQUk7SUFDdEM7SUFDQSxPQUFPRDtBQUNUO0FBRUEsTUFBTUUsZUFBZSxJQUFjdkIsS0FBS29CLGVBQWU7QUFFdkQsTUFBTUksb0JBQW9CO0lBQ3hCLE1BQU1DLFlBQVlGO0lBQ2xCLElBQUcsQ0FBQ2pDLFdBQVdtQyxZQUFZO1FBQ3pCLE9BQU87SUFDVDtJQUVBLElBQUk7UUFDRixNQUFNQyxZQUFZbkMsYUFBYWtDLFdBQVc7UUFDMUMsTUFBTUUsUUFBdUJDLEtBQUtDLEtBQUssQ0FBQ0g7UUFDeEMsTUFBTUksWUFBWSxJQUFJLEtBQUssS0FBSyxLQUFLO1FBRXJDLElBQUdDLEtBQUtDLEdBQUcsS0FBS0wsTUFBTU0sU0FBUyxHQUFHSCxXQUFXO1lBQzNDLE9BQU87UUFDVDtRQUVBLE9BQU9IO0lBQ1QsRUFBRSxPQUFLO1FBQ0wsT0FBTztJQUNUO0FBQ0Y7QUFFQSxNQUFNTyxxQkFBcUIsQ0FBQ0M7SUFDMUIsTUFBTVYsWUFBWUY7SUFDbEIsTUFBTUksUUFBdUI7UUFDM0JRO1FBQ0FGLFdBQVdGLEtBQUtDLEdBQUc7SUFDckI7SUFDQXhDLGNBQWNpQyxXQUFXRyxLQUFLUSxTQUFTLENBQUNULE9BQU8sTUFBTTtBQUN2RDtBQUVBLE1BQU1VLGdCQUFnQixDQUFDQyxlQUF3QixLQUFLLEdBQWtDLElBQUlDLFFBQVEsQ0FBQ3pDO1FBQ2pHLElBQUcsQ0FBQ3dDLGNBQWM7WUFDaEIsTUFBTUUsU0FBU2hCO1lBQ2YsSUFBR2dCLFFBQVE7Z0JBQ1QxQyxRQUFRMEMsT0FBT0wsRUFBRTtnQkFDakI7WUFDRjtRQUNGO1FBRUF6QyxNQUFNK0MsR0FBRyxDQUFDLHlCQUF5QixDQUFDQztZQUNsQyxJQUFJQyxPQUFPO1lBQ1hELElBQUlFLEVBQUUsQ0FBQyxRQUFRLENBQUNDLFFBQVdGLFFBQVFFO1lBQ25DSCxJQUFJRSxFQUFFLENBQUMsT0FBTztnQkFDWixNQUFNVCxLQUFLUSxLQUFLRyxJQUFJO2dCQUNwQixJQUFHWCxJQUFJO29CQUNMRCxtQkFBbUJDO2dCQUNyQjtnQkFDQXJDLFFBQVFxQztZQUNWO1FBQ0YsR0FBR1MsRUFBRSxDQUFDLFNBQVMsSUFBTTlDLFFBQVFrQjtJQUMvQjtBQUVBLE1BQU0rQixzQkFBc0I7SUFDMUIsTUFBTUMsYUFBYXJEO0lBQ25CLE1BQU1zRCxZQUFZO1FBQ2hCQyxPQUFPO1FBQ1BDLFNBQVM7UUFDVEMsUUFBUTtJQUNWO0lBRUEsS0FBSSxNQUFNQyxRQUFRQyxPQUFPQyxJQUFJLENBQUNQLFlBQWE7UUFDekMsTUFBTVEsbUJBQW1CUixVQUFVLENBQUNLLEtBQUs7UUFDekMsSUFBRyxDQUFDRyxrQkFBa0I7WUFDcEI7UUFDRjtRQUVBLEtBQUksTUFBTUMsU0FBU0QsaUJBQWtCO1lBQ25DLElBQUdDLE1BQU1DLE1BQU0sS0FBSyxVQUFVLENBQUNELE1BQU1FLFFBQVEsRUFBRTtnQkFDN0MsTUFBTXhCLEtBQUtzQixNQUFNRyxPQUFPO2dCQUV4QixJQUFHekIsR0FBRzBCLFVBQVUsQ0FBQyxVQUFVMUIsR0FBRzBCLFVBQVUsQ0FBQyxlQUFlMUIsR0FBRzBCLFVBQVUsQ0FBQyxTQUFTO29CQUM3RSxJQUFHLENBQUNaLFVBQVVFLE9BQU8sRUFBRTt3QkFDckJGLFVBQVVFLE9BQU8sR0FBR2hCO29CQUN0QjtnQkFDRixPQUFPO29CQUNMLElBQUcsQ0FBQ2MsVUFBVUcsTUFBTSxFQUFFO3dCQUNwQkgsVUFBVUcsTUFBTSxHQUFHakI7b0JBQ3JCO2dCQUNGO1lBQ0Y7UUFDRjtJQUNGO0lBRUEsT0FBT2M7QUFDVDtBQUVBLE1BQU1hLHNCQUFzQixDQUFDQyxPQUFlbEQsZ0JBQWdCLEVBQUVtRCxPQUFnQkM7SUFDNUUsSUFBR0QsT0FBTztRQUNSO0lBQ0Y7SUFFQSxNQUFNZixZQUFZRjtJQUNsQixNQUFNbUIsV0FBVyxDQUFDLGlCQUFpQixFQUFFSCxNQUFNO0lBQzNDLE1BQU1JLGFBQWFsQixVQUFVRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUVGLFVBQVVFLE9BQU8sQ0FBQyxDQUFDLEVBQUVZLE1BQU0sR0FBRztJQUMvRSxJQUFJSyxZQUFZO0lBQ2hCLElBQUdILFVBQVU7UUFDWEcsWUFBWSxDQUFDLE9BQU8sRUFBRUgsU0FBUyxDQUFDLEVBQUVGLE1BQU07SUFDMUMsT0FBTyxJQUFHZCxVQUFVRyxNQUFNLEVBQUU7UUFDMUJnQixZQUFZLENBQUMsT0FBTyxFQUFFbkIsVUFBVUcsTUFBTSxDQUFDLENBQUMsRUFBRVcsTUFBTTtJQUNsRDtJQUVBLElBQUlNLFdBQVcsR0FBR2pGLE1BQU1rRixLQUFLLENBQUMsVUFBVSxLQUFLLEVBQUVsRixNQUFNbUYsU0FBUyxDQUFDTCxVQUFVLEVBQUUsQ0FBQztJQUU1RSxJQUFHQyxZQUFZO1FBQ2JFLFlBQVksR0FBR2pGLE1BQU1rRixLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUVsRixNQUFNbUYsU0FBUyxDQUFDSixZQUFZLEVBQUUsQ0FBQztJQUM3RTtJQUVBLElBQUdDLFdBQVc7UUFDWkMsWUFBWSxHQUFHakYsTUFBTWtGLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRWxGLE1BQU1tRixTQUFTLENBQUNILFdBQVcsRUFBRSxDQUFDO0lBQzVFO0lBRUEsTUFBTUksWUFBWXJGLE1BQ2hCLEdBQUdDLE1BQU1xRixJQUFJLENBQUNDLElBQUksQ0FBQyxpQ0FBaUMsSUFBSSxFQUFFTCxTQUFTLEVBQUUsQ0FBQyxHQUN0RSxHQUFHakYsTUFBTXVGLE1BQU0sQ0FBQyxvQ0FBb0MsRUFDcEQ7UUFDRUMsaUJBQWlCO1FBQ2pCQyxhQUFhO1FBQ2JDLGFBQWE7UUFDYkMsUUFBUTtRQUNSQyxTQUFTO0lBQ1g7SUFHRixzQ0FBc0M7SUFDdENDLFFBQVEzRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUVrRSxVQUFVLEVBQUUsQ0FBQztBQUNoQztBQUVBLE9BQU8sTUFBTVUsTUFBTSxPQUFPQyxLQUFpQkMsV0FBd0IsSUFBTyxDQUFBLENBQUMsQ0FBQSxDQUFFO0lBQzNFLE1BQU0sRUFBQ0MsY0FBYyxFQUFFQyxVQUFVLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEtBQUssRUFBRUMsT0FBTyxLQUFLLEVBQUUxQixNQUFNMkIsT0FBTyxFQUFFMUIsS0FBSyxFQUFFMkIsTUFBTSxFQUFFQyxlQUFlLEtBQUssRUFBRUMsV0FBVyxFQUFFQyxTQUFTLEVBQUMsR0FBR1g7SUFFNUosTUFBTVksVUFBVTdGLGNBQWM4RDtJQUU5QjFELElBQUksR0FBR2dGLFFBQVEsNEJBQTRCLENBQUMsRUFBRSxRQUFRdEI7SUFFdEQsTUFBTS9ELFVBQVUrRixXQUFXLENBQUNiO0lBRTVCLE1BQU0sRUFBQ0QsS0FBS2UsU0FBUyxFQUFFQyxjQUFjLEVBQUVDLGFBQWEsRUFBQyxHQUFHbEcsVUFBVXNGLE1BQU07SUFDeEUsTUFBTWEsWUFBWXRGLFVBQVU0RSxZQUFZNUUsVUFBVW1GLFdBQVdsQyxTQUFTbEQ7SUFFdEUsSUFBSXdGLGVBQXVCO1FBQUNDLFVBQVU7SUFBYTtJQUVuRCxJQUFHUixXQUFXO1FBQ1osSUFBSTtZQUNGTyxlQUFlekUsS0FBS0MsS0FBSyxDQUFDaUU7UUFDNUIsRUFBRSxPQUFNUyxRQUFRO1lBQ2RqRyxJQUFJLENBQUMsRUFBRSxFQUFFZ0YsUUFBUSxnRUFBZ0UsQ0FBQyxFQUFFLFNBQVN0QjtZQUM3Rm9CLFNBQVM7WUFDVCxPQUFPO1FBQ1Q7SUFDRjtJQUVBekUsUUFBUTZGLEdBQUcsR0FBRztRQUFDLEdBQUc3RixRQUFRNkYsR0FBRztRQUFFLEdBQUdILFlBQVk7SUFBQTtJQUU5QyxJQUFHRixlQUFlO1FBQ2hCbEcsVUFBVXdHLHFCQUFxQjtJQUNqQztJQUVBLElBQUdkLFFBQVE7UUFDVEksUUFBUVcsS0FBSyxDQUFDO1FBRWQsTUFBTXRHLFlBQVk4RixrQkFBa0I7UUFFcENILFFBQVFZLE9BQU8sQ0FBQztJQUNsQjtJQUVBLElBQUdmLGNBQWM7UUFDZkcsUUFBUVcsS0FBSyxDQUFDO1FBRWQsSUFBSTtZQUNGLE1BQU1FLGFBQWEzRyxVQUFVc0YsTUFBTSxDQUFDc0IsY0FBYyxJQUFJbEcsUUFBUUMsR0FBRztZQUNqRSxNQUFNa0csYUFBYTdHLFVBQVVzRixNQUFNLENBQUNXLGNBQWMsSUFBSTtZQUV0RCxNQUFNM0Ysb0JBQW9CcUcsWUFBWUUsWUFBWTlDO1lBQ2xEK0IsUUFBUVksT0FBTyxDQUFDO1FBQ2xCLEVBQUUsT0FBTUksa0JBQWtCO1lBQ3hCekcsSUFBSSxDQUFDLEVBQUUsRUFBRWdGLFFBQVEsd0NBQXdDLEVBQUV5QixpQkFBaUJDLE9BQU8sRUFBRSxFQUFFLFNBQVNoRDtZQUNoRytCLFFBQVFrQixJQUFJLENBQUM7WUFDYjdCLFNBQVM7WUFDVCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLElBQUk4QjtJQUVKLElBQUczQixRQUFRO1FBQ1QsTUFBTTRCLG1CQUE0QjVCLE9BQU82QixNQUFNLENBQUMsR0FBRyxPQUFPO1FBQzFERixnQkFBZ0JDLG1CQUFtQnBILFlBQVlZLFFBQVFDLEdBQUcsSUFBSTJFLFVBQVVBO0lBQzFFLE9BQU87UUFDTCxNQUFNLEVBQUMyQixlQUFlRyxjQUFjLEVBQUMsR0FBR2hILG9CQUFvQkk7UUFDNUR5RyxnQkFBZ0JHO0lBQ2xCO0lBRUEsTUFBTSxFQUFDQyxXQUFXLEVBQUMsR0FBR2pILG9CQUFvQkk7SUFFMUMsTUFBTThHLGlCQUEyQjtRQUMvQjtRQUNBO1FBQ0E7UUFBWUw7S0FDYjtJQUVELElBQUc3QixnQkFBZ0I7UUFDakJrQyxlQUFlQyxJQUFJLENBQUM7SUFDdEI7SUFFQSxJQUFJO1FBQ0YsSUFBSUMsaUJBQWlCSDtRQUNyQixJQUFJSTtRQUVKLElBQUdKLGdCQUFnQixPQUFPO1lBQ3hCSSxzQkFBc0I7Z0JBQUM7bUJBQWNIO2FBQWU7UUFDdEQsT0FBTyxJQUFHRCxZQUFZSyxRQUFRLENBQUMsUUFBUTtZQUNyQ0YsaUJBQWlCO1lBQ2pCQyxzQkFBc0I7Z0JBQUNKO21CQUFnQkM7YUFBZTtRQUN4RCxPQUFPO1lBQ0xHLHNCQUFzQkg7UUFDeEI7UUFFQXhCLFFBQVFXLEtBQUssQ0FBQztRQUVkLE1BQU1rQixlQUFldkksTUFBTW9JLGdCQUFnQkMscUJBQXFCO1lBQzlERyxVQUFVO1lBQ1ZyQixLQUFLO2dCQUNILEdBQUc3RixRQUFRNkYsR0FBRztnQkFDZHNCLFdBQVc5RDtnQkFDWCtELGtCQUFrQnRDO2dCQUNsQnVDLGtCQUFrQjVCLFVBQVU2QixRQUFRO1lBQ3RDO1lBQ0FDLE9BQU87UUFDVDtRQUVBLElBQUlDLGdCQUFnQjtRQUNwQixJQUFJQyxjQUFjO1FBQ2xCLE1BQU1DLGlCQUFpQixDQUFDQztZQUN0QixJQUFHRixhQUFhO2dCQUNkO1lBQ0Y7WUFDQUEsY0FBYztZQUNkLElBQUd2QyxhQUFhO2dCQUNkeEQsY0FBY3dELGFBQWEwQyxJQUFJLENBQUMsQ0FBQ3RFO29CQUMvQkgsb0JBQW9Cd0UsWUFBWXRFLE9BQU9DO2dCQUN6QztZQUNGLE9BQU87Z0JBQ0xILG9CQUFvQndFLFlBQVl0RTtZQUNsQztRQUNGO1FBQ0EsSUFBSXdFLGVBQWVwQztRQUVuQndCLGFBQWFhLE1BQU0sRUFBRTdGLEdBQUcsUUFBUSxDQUFDRDtZQUMvQixNQUFNK0YsU0FBUy9GLEtBQUtzRixRQUFRO1lBRTVCOUgsc0JBQXNCdUksUUFBUTNDLFNBQVMvQixPQUFPLE1BQU07WUFFcEQsSUFBRyxDQUFDbUUsaUJBQWtCTyxDQUFBQSxPQUFPQyxRQUFRLENBQUMsYUFBYUQsT0FBT0MsUUFBUSxDQUFDLHVCQUF1QkQsT0FBT0MsUUFBUSxDQUFDLDJCQUEyQkQsT0FBT0MsUUFBUSxDQUFDLHVCQUF1QkQsT0FBT0MsUUFBUSxDQUFDLG9CQUFtQixHQUFJO2dCQUNqTlIsZ0JBQWdCO2dCQUNoQnBDLFFBQVFZLE9BQU8sQ0FBQztnQkFFaEIsTUFBTWlDLFlBQVlGLE9BQU9HLEtBQUssQ0FBQyxvQ0FDN0JILE9BQU9HLEtBQUssQ0FBQywrQkFDYkgsT0FBT0csS0FBSyxDQUFDLG9CQUNiSCxPQUFPRyxLQUFLLENBQUMsOEJBQ2JILE9BQU9HLEtBQUssQ0FBQztnQkFDZixJQUFHRCxXQUFXO29CQUNaSixlQUFlTSxTQUFTRixTQUFTLENBQUMsRUFBRTtnQkFDdEM7Z0JBRUFQLGVBQWVHO1lBQ2pCO1FBQ0Y7UUFFQVosYUFBYW1CLE1BQU0sRUFBRW5HLEdBQUcsUUFBUSxDQUFDRDtZQUMvQixNQUFNK0YsU0FBUy9GLEtBQUtzRixRQUFRO1lBRTVCOUgsc0JBQXNCdUksUUFBUTNDLFNBQVMvQixPQUFPLE1BQU07WUFFcEQsSUFBRyxDQUFDbUUsaUJBQWtCTyxDQUFBQSxPQUFPQyxRQUFRLENBQUMsYUFBYUQsT0FBT0MsUUFBUSxDQUFDLHVCQUF1QkQsT0FBT0MsUUFBUSxDQUFDLDJCQUEyQkQsT0FBT0MsUUFBUSxDQUFDLHVCQUF1QkQsT0FBT0MsUUFBUSxDQUFDLG9CQUFtQixHQUFJO2dCQUNqTlIsZ0JBQWdCO2dCQUNoQnBDLFFBQVFZLE9BQU8sQ0FBQztnQkFFaEIsTUFBTWlDLFlBQVlGLE9BQU9HLEtBQUssQ0FBQyxvQ0FDN0JILE9BQU9HLEtBQUssQ0FBQywrQkFDYkgsT0FBT0csS0FBSyxDQUFDLG9CQUNiSCxPQUFPRyxLQUFLLENBQUMsOEJBQ2JILE9BQU9HLEtBQUssQ0FBQztnQkFDZixJQUFHRCxXQUFXO29CQUNaSixlQUFlTSxTQUFTRixTQUFTLENBQUMsRUFBRTtnQkFDdEM7Z0JBRUFQLGVBQWVHO1lBQ2pCO1FBQ0Y7UUFFQVEsV0FBVztZQUNULElBQUcsQ0FBQ2IsZUFBZTtnQkFDakJwQyxRQUFRWSxPQUFPLENBQUM7Z0JBQ2hCMEIsZUFBZUc7WUFDakI7UUFDRixHQUFHO1FBRUgsTUFBTVo7UUFFTixJQUFHLENBQUNPLGVBQWU7WUFDakJwQyxRQUFRWSxPQUFPLENBQUM7WUFDaEIwQixlQUFlRztRQUNqQjtRQUVBcEQsU0FBUztRQUNULE9BQU87SUFDVCxFQUFFLE9BQU02RCxPQUFPO1FBQ2IzSSxJQUFJLENBQUMsRUFBRSxFQUFFZ0YsUUFBUSxRQUFRLEVBQUUyRCxNQUFNakMsT0FBTyxFQUFFLEVBQUUsU0FBU2hEO1FBRXJEK0IsUUFBUWtCLElBQUksQ0FBQztRQUViN0IsU0FBUztRQUNULE9BQU87SUFDVDtBQUNGLEVBQUUifQ==
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbi8vIGRlZmF1bHQgcG9ydCB1c2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgd2hlbiBub25lIGlzIHByb3ZpZGVkXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVZfUE9SVCA9IDMwMDA7XG5cbmludGVyZmFjZSBQdWJsaWNJcENhY2hlIHtcbiAgaXA6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmNvbnN0IHBhcnNlUG9ydCA9IChwb3J0VmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBpZihwb3J0VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwb3J0VmFsdWUgPT09IG51bGwgfHwgcG9ydFZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIocG9ydFZhbHVlKTtcbiAgaWYoTnVtYmVyLmlzSW50ZWdlcihwYXJzZWQpICYmIHBhcnNlZCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldENhY2hlRGlyID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihob21lZGlyKCksICcubGV4LWNhY2hlJyk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlRGlyKSkge1xuICAgIG1rZGlyU3luYyhjYWNoZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9XG4gIHJldHVybiBjYWNoZURpcjtcbn07XG5cbmNvbnN0IGdldENhY2hlUGF0aCA9ICgpOiBzdHJpbmcgPT4gam9pbihnZXRDYWNoZURpcigpLCAncHVibGljLWlwLmpzb24nKTtcblxuY29uc3QgcmVhZFB1YmxpY0lwQ2FjaGUgPSAoKTogUHVibGljSXBDYWNoZSB8IG51bGwgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSByZWFkRmlsZVN5bmMoY2FjaGVQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0gSlNPTi5wYXJzZShjYWNoZURhdGEpO1xuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgaWYoRGF0ZS5ub3coKSAtIGNhY2hlLnRpbWVzdGFtcCA+IG9uZVdlZWtNcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCB3cml0ZVB1YmxpY0lwQ2FjaGUgPSAoaXA6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSB7XG4gICAgaXAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gIH07XG4gIHdyaXRlRmlsZVN5bmMoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShjYWNoZSwgbnVsbCwgMikpO1xufTtcblxuY29uc3QgZmV0Y2hQdWJsaWNJcCA9IChmb3JjZVJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCBhcyBzdHJpbmcgfCBudWxsLFxuICAgIHB1YmxpYzogbnVsbCBhcyBzdHJpbmcgfCBudWxsXG4gIH07XG5cbiAgZm9yKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoaW50ZXJmYWNlcykpIHtcbiAgICBjb25zdCBuZXR3b3JrSW50ZXJmYWNlID0gaW50ZXJmYWNlc1tuYW1lXTtcbiAgICBpZighbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZm9yKGNvbnN0IGlmYWNlIG9mIG5ldHdvcmtJbnRlcmZhY2UpIHtcbiAgICAgIGlmKGlmYWNlLmZhbWlseSA9PT0gJ0lQdjQnICYmICFpZmFjZS5pbnRlcm5hbCkge1xuICAgICAgICBjb25zdCBpcCA9IGlmYWNlLmFkZHJlc3M7XG5cbiAgICAgICAgaWYoaXAuc3RhcnRzV2l0aCgnMTAuJykgfHwgaXAuc3RhcnRzV2l0aCgnMTkyLjE2OC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxNzIuJykpIHtcbiAgICAgICAgICBpZighYWRkcmVzc2VzLnByaXZhdGUpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wcml2YXRlID0gaXA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHVibGljKSB7XG4gICAgICAgICAgICBhZGRyZXNzZXMucHVibGljID0gaXA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFkZHJlc3Nlcztcbn07XG5cbmNvbnN0IGRpc3BsYXlTZXJ2ZXJTdGF0dXMgPSAocG9ydDogbnVtYmVyID0gREVGQVVMVF9ERVZfUE9SVCwgcXVpZXQ6IGJvb2xlYW4gPSBmYWxzZSwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCfwn5qAIERldmVsb3BtZW50IFNlcnZlciBSdW5uaW5nJyl9XFxuXFxuJHt1cmxMaW5lc31cXG5gICtcbiAgICBgJHtjaGFsay55ZWxsb3coJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSBzZXJ2ZXInKX1gLFxuICAgIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnLFxuICAgICAgYm9yZGVyQ29sb3I6ICdjeWFuJyxcbiAgICAgIGJvcmRlclN0eWxlOiAncm91bmQnLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgcGFkZGluZzogMVxuICAgIH1cbiAgKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgXFxuJHtzdGF0dXNCb3h9XFxuYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV2ID0gYXN5bmMgKGNtZDogRGV2T3B0aW9ucywgY2FsbGJhY2s6IERldkNhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW5kbGVBbmFseXplciwgY2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIGZvcm1hdCA9ICdlc20nLCBvcGVuID0gZmFsc2UsIHBvcnQ6IGNsaVBvcnQsIHF1aWV0LCByZW1vdmUsIHRyYW5zbGF0aW9ucyA9IGZhbHNlLCB1c2VQdWJsaWNJcCwgdmFyaWFibGVzfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IHN0YXJ0IGRldmVsb3BtZW50IHNlcnZlci4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtkZXY6IGRldkNvbmZpZywgb3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgZmluYWxQb3J0ID0gcGFyc2VQb3J0KGNsaVBvcnQpID8/IHBhcnNlUG9ydChkZXZDb25maWc/LnBvcnQpID8/IERFRkFVTFRfREVWX1BPUlQ7XG5cbiAgbGV0IHZhcmlhYmxlc09iajogb2JqZWN0ID0ge05PREVfRU5WOiAnZGV2ZWxvcG1lbnQnfTtcblxuICBpZih2YXJpYWJsZXMpIHtcbiAgICB0cnkge1xuICAgICAgdmFyaWFibGVzT2JqID0gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2goX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYic7XG5cbiAgICAgIGF3YWl0IHByb2Nlc3NUcmFuc2xhdGlvbnMoc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdUcmFuc2xhdGlvbnMgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zOiAke3RyYW5zbGF0aW9uRXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9ucy4nKTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgIHdlYnBhY2tDb25maWcgPSByZXNvbHZlZENvbmZpZztcbiAgfVxuXG4gIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXdhdGNoJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYnVuZGxlQW5hbHl6ZXIpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLWJ1bmRsZUFuYWx5emVyJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGxldCBleGVjdXRhYmxlUGF0aCA9IHdlYnBhY2tQYXRoO1xuICAgIGxldCBmaW5hbFdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXTtcblxuICAgIGlmKHdlYnBhY2tQYXRoID09PSAnbnB4Jykge1xuICAgICAgZmluYWxXZWJwYWNrT3B0aW9ucyA9IFsnd2VicGFjaycsIC4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9IGVsc2UgaWYod2VicGFja1BhdGguZW5kc1dpdGgoJy5qcycpKSB7XG4gICAgICBleGVjdXRhYmxlUGF0aCA9ICdub2RlJztcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSBbd2VicGFja1BhdGgsIC4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluYWxXZWJwYWNrT3B0aW9ucyA9IHdlYnBhY2tPcHRpb25zO1xuICAgIH1cblxuICAgIHNwaW5uZXIuc3RhcnQoJ1N0YXJ0aW5nIGRldmVsb3BtZW50IHNlcnZlci4uLicpO1xuXG4gICAgY29uc3QgY2hpbGRQcm9jZXNzID0gZXhlY2EoZXhlY3V0YWJsZVBhdGgsIGZpbmFsV2VicGFja09wdGlvbnMsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW4sXG4gICAgICAgIFdFQlBBQ0tfREVWX1BPUlQ6IGZpbmFsUG9ydC50b1N0cmluZygpXG4gICAgICB9LFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0gYXMgYW55KTtcblxuICAgIGxldCBzZXJ2ZXJTdGFydGVkID0gZmFsc2U7XG4gICAgbGV0IHN0YXR1c1Nob3duID0gZmFsc2U7XG4gICAgY29uc3Qgc2hvd1N0YXR1c09uY2UgPSAocG9ydFRvU2hvdzogbnVtYmVyKSA9PiB7XG4gICAgICBpZihzdGF0dXNTaG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGF0dXNTaG93biA9IHRydWU7XG4gICAgICBpZih1c2VQdWJsaWNJcCkge1xuICAgICAgICBmZXRjaFB1YmxpY0lwKHVzZVB1YmxpY0lwKS50aGVuKChwdWJsaWNJcCkgPT4ge1xuICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQsIHB1YmxpY0lwKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5U2VydmVyU3RhdHVzKHBvcnRUb1Nob3csIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBkZXRlY3RlZFBvcnQgPSBmaW5hbFBvcnQ7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQgPz8gZmFsc2UsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCA/PyBmYWxzZSwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiYm94ZW4iLCJjaGFsayIsImV4ZWNhIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsIndyaXRlRmlsZVN5bmMiLCJta2RpclN5bmMiLCJodHRwcyIsIm5ldHdvcmtJbnRlcmZhY2VzIiwiaG9tZWRpciIsImRpcm5hbWUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJqb2luIiwiTGV4Q29uZmlnIiwiY3JlYXRlU3Bpbm5lciIsImhhbmRsZVdlYnBhY2tQcm9ncmVzcyIsInJlbW92ZUZpbGVzIiwicmVzb2x2ZVdlYnBhY2tQYXRocyIsImxvZyIsInByb2Nlc3NUcmFuc2xhdGlvbnMiLCJjdXJyZW50RmlsZW5hbWUiLCJjdXJyZW50RGlybmFtZSIsImV2YWwiLCJwcm9jZXNzIiwiY3dkIiwiREVGQVVMVF9ERVZfUE9SVCIsInBhcnNlUG9ydCIsInBvcnRWYWx1ZSIsInVuZGVmaW5lZCIsInBhcnNlZCIsIk51bWJlciIsImlzSW50ZWdlciIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsImNsaVBvcnQiLCJyZW1vdmUiLCJ0cmFuc2xhdGlvbnMiLCJ1c2VQdWJsaWNJcCIsInZhcmlhYmxlcyIsInNwaW5uZXIiLCJwYXJzZUNvbmZpZyIsImRldkNvbmZpZyIsIm91dHB1dEZ1bGxQYXRoIiwidXNlVHlwZXNjcmlwdCIsImZpbmFsUG9ydCIsInZhcmlhYmxlc09iaiIsIk5PREVfRU5WIiwiX2Vycm9yIiwiZW52IiwiY2hlY2tUeXBlc2NyaXB0Q29uZmlnIiwic3RhcnQiLCJzdWNjZWVkIiwic291cmNlUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwib3V0cHV0UGF0aCIsInRyYW5zbGF0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZmFpbCIsIndlYnBhY2tDb25maWciLCJpc1JlbGF0aXZlQ29uZmlnIiwic3Vic3RyIiwicmVzb2x2ZWRDb25maWciLCJ3ZWJwYWNrUGF0aCIsIndlYnBhY2tPcHRpb25zIiwicHVzaCIsImV4ZWN1dGFibGVQYXRoIiwiZmluYWxXZWJwYWNrT3B0aW9ucyIsImVuZHNXaXRoIiwiY2hpbGRQcm9jZXNzIiwiZW5jb2RpbmciLCJMRVhfUVVJRVQiLCJXRUJQQUNLX0RFVl9PUEVOIiwiV0VCUEFDS19ERVZfUE9SVCIsInRvU3RyaW5nIiwic3RkaW8iLCJzZXJ2ZXJTdGFydGVkIiwic3RhdHVzU2hvd24iLCJzaG93U3RhdHVzT25jZSIsInBvcnRUb1Nob3ciLCJ0aGVuIiwiZGV0ZWN0ZWRQb3J0Iiwic3Rkb3V0Iiwib3V0cHV0IiwiaW5jbHVkZXMiLCJwb3J0TWF0Y2giLCJtYXRjaCIsInBhcnNlSW50Iiwic3RkZXJyIiwic2V0VGltZW91dCIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBQ3RFLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxpQkFBaUIsRUFBRUMsT0FBTyxRQUFPLEtBQUs7QUFDOUMsU0FBUUMsT0FBTyxFQUFFQyxXQUFXQyxXQUFXLEVBQUVDLElBQUksUUFBTyxPQUFPO0FBRTNELFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxFQUFFQyxxQkFBcUIsRUFBRUMsV0FBVyxRQUFPLHFCQUFxQjtBQUNyRixTQUFRQyxtQkFBbUIsUUFBTyxzQkFBc0I7QUFDeEQsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQUN2QyxTQUFRQyxtQkFBbUIsUUFBTyw4QkFBOEI7QUFFaEUsSUFBSUM7QUFDSixJQUFJQztBQUVKLElBQUk7SUFDRixtQ0FBbUM7SUFDbkNELGtCQUFrQkUsS0FBSztJQUN2QkQsaUJBQWlCWixRQUFRVztBQUMzQixFQUFFLE9BQUs7SUFDTEEsa0JBQWtCRyxRQUFRQyxHQUFHO0lBQzdCSCxpQkFBaUJFLFFBQVFDLEdBQUc7QUFDOUI7QUFrQkEsb0VBQW9FO0FBQ3BFLE9BQU8sTUFBTUMsbUJBQW1CLEtBQUs7QUFPckMsTUFBTUMsWUFBWSxDQUFDQztJQUNqQixJQUFHQSxjQUFjQyxhQUFhRCxjQUFjLFFBQVFBLGNBQWMsSUFBSTtRQUNwRSxPQUFPQztJQUNUO0lBRUEs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
@@ -14,7 +14,7 @@ export const publish = async (cmd, callback = process.exit)=>{
14
14
  // Get custom configuration
15
15
  await LexConfig.parseConfig(cmd);
16
16
  const { packageManager: configPackageManager } = LexConfig.config;
17
- const packageManager = cmdPackageManager || configPackageManager;
17
+ const packageManager = cmdPackageManager || configPackageManager || 'npm';
18
18
  const publishOptions = [
19
19
  'publish'
20
20
  ];
@@ -64,20 +64,25 @@ export const publish = async (cmd, callback = process.exit)=>{
64
64
  ];
65
65
  // Make sure the version in package.json is valid
66
66
  const packageVersion = semver.coerce(prevVersion);
67
- if (!semver.valid(packageVersion)) {
67
+ if (!packageVersion || !semver.valid(packageVersion)) {
68
68
  log(`\n${cliName} Error: Version is invalid in package.json`, 'error', quiet);
69
69
  callback(1);
70
70
  return 1;
71
71
  }
72
72
  if (validReleases.includes(formatBump)) {
73
- nextVersion = semver.inc(packageVersion, formatBump);
73
+ nextVersion = semver.inc(packageVersion, formatBump) || undefined;
74
74
  } else if (validPreReleases.includes(formatBump)) {
75
- nextVersion = semver.inc(packageVersion, 'prerelease', formatBump);
75
+ nextVersion = semver.inc(packageVersion, 'prerelease', formatBump) || undefined;
76
76
  } else {
77
77
  log(`\n${cliName} Error: Bump type is invalid. please make sure it is one of the following: ${validReleases.join(', ')}, ${validPreReleases.join(', ')}`, 'error', quiet);
78
78
  callback(1);
79
79
  return 1;
80
80
  }
81
+ if (!nextVersion) {
82
+ log(`\n${cliName} Error: Could not determine the next package version.`, 'error', quiet);
83
+ callback(1);
84
+ return 1;
85
+ }
81
86
  } else {
82
87
  log(`\n${cliName} Error: Bump type is missing.`, 'error', quiet);
83
88
  callback(1);
@@ -121,4 +126,4 @@ export const publish = async (cmd, callback = process.exit)=>{
121
126
  }
122
127
  };
123
128
 
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9wdWJsaXNoL3B1Ymxpc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCBzZW12ZXIsIHtSZWxlYXNlVHlwZX0gZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCBzZXRQYWNrYWdlSnNvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVtcD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmV3VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgb3RwPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJpdmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBQdWJsaXNoQ2FsbGJhY2sgPSB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgcHVibGlzaCA9IGFzeW5jIChjbWQ6IFB1Ymxpc2hPcHRpb25zLCBjYWxsYmFjazogUHVibGlzaENhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bXAsIGNsaU5hbWUgPSAnTGV4JywgbmV3VmVyc2lvbiwgb3RwLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHByaXZhdGU6IGFjY2Vzc1ByaXZhdGUsIHRhZywgcXVpZXR9ID0gY21kO1xuICBsb2coYCR7Y2xpTmFtZX0gcHVibGlzaGluZyBucG0gbW9kdWxlLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtwYWNrYWdlTWFuYWdlcjogY29uZmlnUGFja2FnZU1hbmFnZXJ9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgcGFja2FnZU1hbmFnZXI6IHN0cmluZyA9IGNtZFBhY2thZ2VNYW5hZ2VyIHx8IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyO1xuICBjb25zdCBwdWJsaXNoT3B0aW9uczogc3RyaW5nW10gPSBbJ3B1Ymxpc2gnXTtcblxuICBpZihhY2Nlc3NQcml2YXRlKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS1hY2Nlc3MnLCAncmVzdHJpY3RlZCcpO1xuICB9XG5cbiAgaWYob3RwKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS1vdHAnLCBvdHApO1xuICB9XG5cbiAgaWYodGFnKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS10YWcnLCB0YWcpO1xuICB9XG5cbiAgLy8gR2V0IG5leHQgdmVyc2lvbiBudW1iZXJcbiAgbGV0IG5leHRWZXJzaW9uOiBzdHJpbmc7XG4gIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuICBsZXQgcGFja2FnZUpzb247XG4gIGxldCBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBsZXQgcHJldlZlcnNpb246IHN0cmluZztcblxuICAvLyBJZiBub3QgdXNpbmcgeWFybiwgd2UnbGwgdXNlIG5wbSBhbmQgbWFudWFsbHkgdXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlclxuICB0cnkge1xuICAgIHBhY2thZ2VKc29uID0gZ2V0UGFja2FnZUpzb24ocGFja2FnZVBhdGgpO1xuICAgIHBhY2thZ2VOYW1lID0gcGFja2FnZUpzb24ubmFtZTtcbiAgICBwcmV2VmVyc2lvbiA9IHBhY2thZ2VKc29uLnZlcnNpb247XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFRoZSBmaWxlLCAke3BhY2thZ2VQYXRofSwgd2FzIG5vdCBmb3VuZCBvciBpcyBtYWxmb3JtZWQuXFxuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZyhlcnJvci5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgaWYobmV3VmVyc2lvbikge1xuICAgIC8vIElmIHVzaW5nIGEgc3BlY2lmaWMgdmVyc2lvbiwgd2UgZG9uJ3QgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG5leHQgYnVtcFxuICAgIG5leHRWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSBlbHNlIGlmKGJ1bXApIHtcbiAgICAvLyBEZXRlcm1pbmUgbmV4dCB2ZXJzaW9uXG4gICAgY29uc3QgZm9ybWF0QnVtcCA9IGJ1bXAudG9TdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZihmb3JtYXRCdW1wKSB7XG4gICAgICBjb25zdCB2YWxpZFJlbGVhc2VzOiBzdHJpbmdbXSA9IFsnbWFqb3InLCAnbWlub3InLCAncGF0Y2gnXTtcbiAgICAgIGNvbnN0IHZhbGlkUHJlUmVsZWFzZXM6IHN0cmluZ1tdID0gWydhbHBoYScsICdiZXRhJywgJ3JjJ107XG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gaXMgdmFsaWRcbiAgICAgIGNvbnN0IHBhY2thZ2VWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShwcmV2VmVyc2lvbik7XG5cbiAgICAgIGlmKCFzZW12ZXIudmFsaWQocGFja2FnZVZlcnNpb24pKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogVmVyc2lvbiBpcyBpbnZhbGlkIGluIHBhY2thZ2UuanNvbmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICBpZih2YWxpZFJlbGVhc2VzLmluY2x1ZGVzKGZvcm1hdEJ1bXApKSB7XG4gICAgICAgIG5leHRWZXJzaW9uID0gc2VtdmVyLmluYyhwYWNrYWdlVmVyc2lvbiwgZm9ybWF0QnVtcCBhcyBSZWxlYXNlVHlwZSk7XG4gICAgICB9IGVsc2UgaWYodmFsaWRQcmVSZWxlYXNlcy5pbmNsdWRlcyhmb3JtYXRCdW1wKSkge1xuICAgICAgICBuZXh0VmVyc2lvbiA9IHNlbXZlci5pbmMocGFja2FnZVZlcnNpb24sICdwcmVyZWxlYXNlJywgZm9ybWF0QnVtcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEJ1bXAgdHlwZSBpcyBpbnZhbGlkLiBwbGVhc2UgbWFrZSBzdXJlIGl0IGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAke3ZhbGlkUmVsZWFzZXMuam9pbignLCAnKX0sICR7dmFsaWRQcmVSZWxlYXNlcy5qb2luKCcsICcpfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEJ1bXAgdHlwZSBpcyBtaXNzaW5nLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgaWYobmV4dFZlcnNpb24gJiYgcGFja2FnZU1hbmFnZXIgPT09ICd5YXJuJykge1xuICAgIHB1Ymxpc2hPcHRpb25zLnB1c2goJy0tbmV3LXZlcnNpb24nLCBuZXh0VmVyc2lvbik7XG4gIH0gZWxzZSBpZihuZXh0VmVyc2lvbiAmJiBwYWNrYWdlSnNvbikge1xuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIHVwZGF0ZWQgdmVyc2lvblxuICAgICAgc2V0UGFja2FnZUpzb24oey4uLnBhY2thZ2VKc29uLCB2ZXJzaW9uOiBuZXh0VmVyc2lvbn0sIHBhY2thZ2VQYXRoKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFRoZSBmaWxlLCAke3BhY2thZ2VQYXRofSwgd2FzIG5vdCBmb3VuZCBvciBpcyBtYWxmb3JtZWQuICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBuZXh0VmVyc2lvbiA9IHByZXZWZXJzaW9uO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShwYWNrYWdlTWFuYWdlciwgcHVibGlzaE9wdGlvbnMsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgfSk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQgbnBtIHBhY2thZ2U6ICR7cGFja2FnZU5hbWV9IWApO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoJ1B1Ymxpc2hpbmcgdG8gbnBtIGhhcyBmYWlsZWQuJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTsiXSwibmFtZXMiOlsiZXhlY2EiLCJzZW12ZXIiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwiZ2V0UGFja2FnZUpzb24iLCJzZXRQYWNrYWdlSnNvbiIsImxvZyIsInB1Ymxpc2giLCJjbWQiLCJjYWxsYmFjayIsInByb2Nlc3MiLCJleGl0IiwiYnVtcCIsImNsaU5hbWUiLCJuZXdWZXJzaW9uIiwib3RwIiwicGFja2FnZU1hbmFnZXIiLCJjbWRQYWNrYWdlTWFuYWdlciIsInByaXZhdGUiLCJhY2Nlc3NQcml2YXRlIiwidGFnIiwicXVpZXQiLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJjb25maWdQYWNrYWdlTWFuYWdlciIsImNvbmZpZyIsInB1Ymxpc2hPcHRpb25zIiwicHVzaCIsIm5leHRWZXJzaW9uIiwicGFja2FnZVBhdGgiLCJjd2QiLCJwYWNrYWdlSnNvbiIsInBhY2thZ2VOYW1lIiwicHJldlZlcnNpb24iLCJuYW1lIiwidmVyc2lvbiIsImVycm9yIiwibWVzc2FnZSIsImZvcm1hdEJ1bXAiLCJ0b1N0cmluZyIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInZhbGlkUmVsZWFzZXMiLCJ2YWxpZFByZVJlbGVhc2VzIiwicGFja2FnZVZlcnNpb24iLCJjb2VyY2UiLCJ2YWxpZCIsImluY2x1ZGVzIiwiaW5jIiwiam9pbiIsImVuY29kaW5nIiwic3RkaW8iLCJzdWNjZWVkIiwiZmFpbCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsS0FBSyxRQUFPLFFBQVE7QUFDNUIsT0FBT0MsWUFBMkIsU0FB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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9wdWJsaXNoL3B1Ymxpc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCBzZW12ZXIsIHtSZWxlYXNlVHlwZX0gZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCBzZXRQYWNrYWdlSnNvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVtcD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmV3VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgb3RwPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJpdmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBQdWJsaXNoQ2FsbGJhY2sgPSB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgcHVibGlzaCA9IGFzeW5jIChjbWQ6IFB1Ymxpc2hPcHRpb25zLCBjYWxsYmFjazogUHVibGlzaENhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bXAsIGNsaU5hbWUgPSAnTGV4JywgbmV3VmVyc2lvbiwgb3RwLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHByaXZhdGU6IGFjY2Vzc1ByaXZhdGUsIHRhZywgcXVpZXR9ID0gY21kO1xuICBsb2coYCR7Y2xpTmFtZX0gcHVibGlzaGluZyBucG0gbW9kdWxlLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtwYWNrYWdlTWFuYWdlcjogY29uZmlnUGFja2FnZU1hbmFnZXJ9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgcGFja2FnZU1hbmFnZXI6IHN0cmluZyA9IGNtZFBhY2thZ2VNYW5hZ2VyIHx8IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyIHx8ICducG0nO1xuICBjb25zdCBwdWJsaXNoT3B0aW9uczogc3RyaW5nW10gPSBbJ3B1Ymxpc2gnXTtcblxuICBpZihhY2Nlc3NQcml2YXRlKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS1hY2Nlc3MnLCAncmVzdHJpY3RlZCcpO1xuICB9XG5cbiAgaWYob3RwKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS1vdHAnLCBvdHApO1xuICB9XG5cbiAgaWYodGFnKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS10YWcnLCB0YWcpO1xuICB9XG5cbiAgLy8gR2V0IG5leHQgdmVyc2lvbiBudW1iZXJcbiAgbGV0IG5leHRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuICBsZXQgcGFja2FnZUpzb247XG4gIGxldCBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBsZXQgcHJldlZlcnNpb246IHN0cmluZztcblxuICAvLyBJZiBub3QgdXNpbmcgeWFybiwgd2UnbGwgdXNlIG5wbSBhbmQgbWFudWFsbHkgdXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlclxuICB0cnkge1xuICAgIHBhY2thZ2VKc29uID0gZ2V0UGFja2FnZUpzb24ocGFja2FnZVBhdGgpO1xuICAgIHBhY2thZ2VOYW1lID0gcGFja2FnZUpzb24ubmFtZTtcbiAgICBwcmV2VmVyc2lvbiA9IHBhY2thZ2VKc29uLnZlcnNpb247XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFRoZSBmaWxlLCAke3BhY2thZ2VQYXRofSwgd2FzIG5vdCBmb3VuZCBvciBpcyBtYWxmb3JtZWQuXFxuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZyhlcnJvci5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgaWYobmV3VmVyc2lvbikge1xuICAgIC8vIElmIHVzaW5nIGEgc3BlY2lmaWMgdmVyc2lvbiwgd2UgZG9uJ3QgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG5leHQgYnVtcFxuICAgIG5leHRWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSBlbHNlIGlmKGJ1bXApIHtcbiAgICAvLyBEZXRlcm1pbmUgbmV4dCB2ZXJzaW9uXG4gICAgY29uc3QgZm9ybWF0QnVtcCA9IGJ1bXAudG9TdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZihmb3JtYXRCdW1wKSB7XG4gICAgICBjb25zdCB2YWxpZFJlbGVhc2VzOiBzdHJpbmdbXSA9IFsnbWFqb3InLCAnbWlub3InLCAncGF0Y2gnXTtcbiAgICAgIGNvbnN0IHZhbGlkUHJlUmVsZWFzZXM6IHN0cmluZ1tdID0gWydhbHBoYScsICdiZXRhJywgJ3JjJ107XG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gaXMgdmFsaWRcbiAgICAgIGNvbnN0IHBhY2thZ2VWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShwcmV2VmVyc2lvbik7XG5cbiAgICAgIGlmKCFwYWNrYWdlVmVyc2lvbiB8fCAhc2VtdmVyLnZhbGlkKHBhY2thZ2VWZXJzaW9uKSkge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFZlcnNpb24gaXMgaW52YWxpZCBpbiBwYWNrYWdlLmpzb25gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgaWYodmFsaWRSZWxlYXNlcy5pbmNsdWRlcyhmb3JtYXRCdW1wKSkge1xuICAgICAgICBuZXh0VmVyc2lvbiA9IHNlbXZlci5pbmMocGFja2FnZVZlcnNpb24sIGZvcm1hdEJ1bXAgYXMgUmVsZWFzZVR5cGUpIHx8IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZih2YWxpZFByZVJlbGVhc2VzLmluY2x1ZGVzKGZvcm1hdEJ1bXApKSB7XG4gICAgICAgIG5leHRWZXJzaW9uID0gc2VtdmVyLmluYyhwYWNrYWdlVmVyc2lvbiwgJ3ByZXJlbGVhc2UnLCBmb3JtYXRCdW1wKSB8fCB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEJ1bXAgdHlwZSBpcyBpbnZhbGlkLiBwbGVhc2UgbWFrZSBzdXJlIGl0IGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAke3ZhbGlkUmVsZWFzZXMuam9pbignLCAnKX0sICR7dmFsaWRQcmVSZWxlYXNlcy5qb2luKCcsICcpfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICBpZighbmV4dFZlcnNpb24pIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBuZXh0IHBhY2thZ2UgdmVyc2lvbi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBCdW1wIHR5cGUgaXMgbWlzc2luZy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGlmKG5leHRWZXJzaW9uICYmIHBhY2thZ2VNYW5hZ2VyID09PSAneWFybicpIHtcbiAgICBwdWJsaXNoT3B0aW9ucy5wdXNoKCctLW5ldy12ZXJzaW9uJywgbmV4dFZlcnNpb24pO1xuICB9IGVsc2UgaWYobmV4dFZlcnNpb24gJiYgcGFja2FnZUpzb24pIHtcbiAgICB0cnkge1xuICAgICAgLy8gU2F2ZSB1cGRhdGVkIHZlcnNpb25cbiAgICAgIHNldFBhY2thZ2VKc29uKHsuLi5wYWNrYWdlSnNvbiwgdmVyc2lvbjogbmV4dFZlcnNpb259LCBwYWNrYWdlUGF0aCk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBUaGUgZmlsZSwgJHtwYWNrYWdlUGF0aH0sIHdhcyBub3QgZm91bmQgb3IgaXMgbWFsZm9ybWVkLiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbmV4dFZlcnNpb24gPSBwcmV2VmVyc2lvbjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EocGFja2FnZU1hbmFnZXIsIHB1Ymxpc2hPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgcHVibGlzaGVkIG5wbSBwYWNrYWdlOiAke3BhY2thZ2VOYW1lfSFgKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdQdWJsaXNoaW5nIHRvIG5wbSBoYXMgZmFpbGVkLicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiZXhlY2EiLCJzZW12ZXIiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwiZ2V0UGFja2FnZUpzb24iLCJzZXRQYWNrYWdlSnNvbiIsImxvZyIsInB1Ymxpc2giLCJjbWQiLCJjYWxsYmFjayIsInByb2Nlc3MiLCJleGl0IiwiYnVtcCIsImNsaU5hbWUiLCJuZXdWZXJzaW9uIiwib3RwIiwicGFja2FnZU1hbmFnZXIiLCJjbWRQYWNrYWdlTWFuYWdlciIsInByaXZhdGUiLCJhY2Nlc3NQcml2YXRlIiwidGFnIiwicXVpZXQiLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJjb25maWdQYWNrYWdlTWFuYWdlciIsImNvbmZpZyIsInB1Ymxpc2hPcHRpb25zIiwicHVzaCIsIm5leHRWZXJzaW9uIiwicGFja2FnZVBhdGgiLCJjd2QiLCJwYWNrYWdlSnNvbiIsInBhY2thZ2VOYW1lIiwicHJldlZlcnNpb24iLCJuYW1lIiwidmVyc2lvbiIsImVycm9yIiwibWVzc2FnZSIsImZvcm1hdEJ1bXAiLCJ0b1N0cmluZyIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInZhbGlkUmVsZWFzZXMiLCJ2YWxpZFByZVJlbGVhc2VzIiwicGFja2FnZVZlcnNpb24iLCJjb2VyY2UiLCJ2YWxpZCIsImluY2x1ZGVzIiwiaW5jIiwidW5kZWZpbmVkIiwiam9pbiIsImVuY29kaW5nIiwic3RkaW8iLCJzdWNjZWVkIiwiZmFpbCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsS0FBSyxRQUFPLFFBQVE7QUFDNUIsT0FBT0MsWUFBMkIsU0FBUztBQUUzQyxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxjQUFjLFFBQU8scUJBQXFCO0FBQ2pGLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFldkMsT0FBTyxNQUFNQyxVQUFVLE9BQU9DLEtBQXFCQyxXQUE0QkMsUUFBUUMsSUFBSTtJQUN6RixNQUFNLEVBQUNDLElBQUksRUFBRUMsVUFBVSxLQUFLLEVBQUVDLFVBQVUsRUFBRUMsR0FBRyxFQUFFQyxnQkFBZ0JDLGlCQUFpQixFQUFFQyxTQUFTQyxhQUFhLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFDLEdBQUdiO0lBQ3hIRixJQUFJLEdBQUdPLFFBQVEseUJBQXlCLENBQUMsRUFBRSxRQUFRUTtJQUVuRCxVQUFVO0lBQ1YsTUFBTUMsVUFBVW5CLGNBQWNrQjtJQUU5QiwyQkFBMkI7SUFDM0IsTUFBTW5CLFVBQVVxQixXQUFXLENBQUNmO0lBRTVCLE1BQU0sRUFBQ1EsZ0JBQWdCUSxvQkFBb0IsRUFBQyxHQUFHdEIsVUFBVXVCLE1BQU07SUFDL0QsTUFBTVQsaUJBQXlCQyxxQkFBcUJPLHdCQUF3QjtJQUM1RSxNQUFNRSxpQkFBMkI7UUFBQztLQUFVO0lBRTVDLElBQUdQLGVBQWU7UUFDaEJPLGVBQWVDLElBQUksQ0FBQyxZQUFZO0lBQ2xDO0lBRUEsSUFBR1osS0FBSztRQUNOVyxlQUFlQyxJQUFJLENBQUMsU0FBU1o7SUFDL0I7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