@kontur.candy/tools 2.174.0 → 2.176.0

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/distr/Common/FormPathUtils.js +15 -0
  3. package/distr/Common/WellKnownDirectories.js +13 -0
  4. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
  5. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -2
  6. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +3 -3
  7. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +3 -3
  8. package/distr/Tools/src/BuildTasks/ReadFormSource.js +3 -2
  9. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +3 -4
  10. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +14 -10
  11. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +59 -115
  12. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +34 -7
  13. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +13 -15
  14. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +2 -2
  15. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +6 -4
  16. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +76 -30
  17. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +3 -6
  18. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +207 -18
  19. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +7 -1
  20. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +11 -7
  21. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +9 -6
  22. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +3 -2
  23. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +3 -2
  24. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +11 -9
  25. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +18 -17
  26. package/distr/Tools/src/Commons/FormGlobsUtils.js +113 -65
  27. package/distr/Tools/src/Commons/FormLocationInfo.js +6 -0
  28. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +16 -4
  29. package/distr/Tools/src/Commons/TasksCore/Observe.js +4 -3
  30. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -4
  31. package/package.json +1 -1
@@ -11,6 +11,7 @@ var _PublishedVersionUtils = require("../../BuildTasks/PublishedVersionUtils");
11
11
  var _ResolveFormInfo = require("../../BuildTasks/ResolveFormInfo");
12
12
  var _FsUtils = require("../../Commons/FsUtils");
13
13
  var _CommandBasedOptionsParser = require("../../Commons/Options/CommandBasedOptionsParser");
14
+ var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
14
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
17
  async function runInitForm(context, options, farmDirectory) {
@@ -64,7 +65,7 @@ async function runInitForm(context, options, farmDirectory) {
64
65
  }
65
66
  gfvLogger.verbose(`Processed template path ${relativeFilePath}`);
66
67
  }
67
- const formJsonPath = path.join(tempOutputDir, "form.json");
68
+ const formJsonPath = path.join(tempOutputDir, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
68
69
  const formConfig = await (0, _ResolveFormInfo.readFormConfig)(formJsonPath, gfvLogger);
69
70
  formConfig.dependencies = {
70
71
  engine: await (0, _PublishedVersionUtils.getLastStableEngineVersion)(),
@@ -90,4 +91,4 @@ async function moveDirectory(sourcePath, targetPath) {
90
91
  }
91
92
  }
92
93
  }
93
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsInBhdGgiLCJfZnNFeHRyYSIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0ZzVXRpbHMiLCJfQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5Jbml0Rm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwiZmFybURpcmVjdG9yeSIsImxvZ2dlciIsImdmdnMiLCJ1bmRlZmluZWQiLCJJbnZhbGlkQ29tbWFuZExpbmVBcmd1bWVudHNFcnJvciIsInRlbXBsYXRlRGlyIiwiam9pbiIsIl9fZGlybmFtZSIsImdmdiIsImdmdkxvZ2dlciIsIndpdGhQcmVmaXgiLCJmYXJtRGlyZWN0b3J5Rm9ybVBhdGgiLCJwYXRoRXhpc3RzIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJFcnJvciIsInRlbXBPdXRwdXREaXIiLCJybWRpciIsImxvZyIsImVuc3VyZURpciIsImhpZ2hsYW5kZXJGYXJtUGF0aCIsImhsUm5nUGF0aDEiLCJobFJuZ1BhdGgyIiwicmVsYXRpdmVGaWxlUGF0aCIsImdsb2JBc3luYyIsImN3ZCIsInRhcmdldFJlbGF0aXZlUGF0aCIsInJlcGxhY2UiLCJ2ZXJib3NlIiwic3RhdCIsImlzRGlyZWN0b3J5IiwiaGxybmciLCJleGlzdHNIbFJuZ1BhdGgiLCJjb250ZW50IiwicmVhZEZpbGUiLCJ0YXJnZXRDb250ZW50Iiwid3JpdGVGaWxlIiwiaW5jbHVkZXMiLCJmb3JtSnNvblBhdGgiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJkZXBlbmRlbmNpZXMiLCJlbmdpbmUiLCJnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbiIsImdlbmVyYXRvciIsImdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uIiwid3JpdGVKc29uIiwic3BhY2VzIiwibW92ZURpcmVjdG9yeSIsInNvdXJjZVBhdGgiLCJ0YXJnZXRQYXRoIiwicGxhdGZvcm0iLCJyZW5hbWUiLCJtb3ZlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0luaXRGb3JtL1J1bkluaXRGb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBlbnN1cmVEaXIsIG1vdmUsIHBhdGhFeGlzdHMsIHJlYWRGaWxlLCByZW5hbWUsIHJtZGlyLCBzdGF0LCB3cml0ZUZpbGUsIHdyaXRlSnNvbiB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbiwgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IEludmFsaWRDb21tYW5kTGluZUFyZ3VtZW50c0Vycm9yIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvT3B0aW9ucy9Db21tYW5kQmFzZWRPcHRpb25zUGFyc2VyXCI7XG5cbmltcG9ydCB7IEluaXRGb3JtT3B0aW9ucyB9IGZyb20gXCIuL0luaXRGb3JtT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuSW5pdEZvcm0oXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBJbml0Rm9ybU9wdGlvbnMsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlcjtcbiAgICBpZiAob3B0aW9ucy5nZnZzID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbW1hbmRMaW5lQXJndW1lbnRzRXJyb3IoXCLQndC1INGD0LrQsNC30LDQvdCwIEdWRiDQtNC70Y8g0YHQvtC30LTQsNC90LjRj1wiLCBcIlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiRW1wdHlGb3JtVGVtcGxhdGVcIik7XG5cbiAgICBmb3IgKGNvbnN0IGdmdiBvZiBvcHRpb25zLmdmdnMpIHtcbiAgICAgICAgY29uc3QgZ2Z2TG9nZ2VyID0gbG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KTtcbiAgICAgICAgY29uc3QgZmFybURpcmVjdG9yeUZvcm1QYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmFybURpcmVjdG9yeUZvcm1QYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYERpcmVjdG9yeSBmb3IgJyR7Z2Z2fScgYWxyZWFkeSBleGlzdHMuYDtcbiAgICAgICAgICAgIGdmdkxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGVtcE91dHB1dERpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLnRtcFwiLCBnZnYpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyh0ZW1wT3V0cHV0RGlyKSkge1xuICAgICAgICAgICAgYXdhaXQgcm1kaXIodGVtcE91dHB1dERpcik7XG4gICAgICAgIH1cbiAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgQ3JlYXRpbmcgZGlyZWN0b3J5IHdpdGggc291cmNlcyBmcm9tIHRlbXBsYXRlYCk7XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcih0ZW1wT3V0cHV0RGlyKTtcbiAgICAgICAgY29uc3QgaGlnaGxhbmRlckZhcm1QYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIiwgXCJoaWdobGFuZGVyLmZhcm1cIiwgXCJGb3Jtc1wiLCBnZnYpO1xuICAgICAgICBjb25zdCBobFJuZ1BhdGgxID0gcGF0aC5qb2luKGhpZ2hsYW5kZXJGYXJtUGF0aCwgYCR7Z2Z2fS7RgdGF0LXQvNCwLnJuZy54bWxgKTtcbiAgICAgICAgY29uc3QgaGxSbmdQYXRoMiA9IHBhdGguam9pbihoaWdobGFuZGVyRmFybVBhdGgsIFwiSGlnaGxhbmRlclwiLCBgJHtnZnZ9LtGB0YXQtdC80LAucm5nLnhtbGApO1xuICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aXZlRmlsZVBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKFwiKiovKlwiLCB7IGN3ZDogdGVtcGxhdGVEaXIgfSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlRmlsZVBhdGgucmVwbGFjZSgve2dmdn0vZywgZ2Z2KTtcbiAgICAgICAgICAgIGdmdkxvZ2dlci52ZXJib3NlKGBQcm9jZXNzaW5nIHRlbXBsYXRlIHBhdGggJHtyZWxhdGl2ZUZpbGVQYXRofWApO1xuICAgICAgICAgICAgaWYgKChhd2FpdCBzdGF0KHBhdGguam9pbih0ZW1wbGF0ZURpciwgcmVsYXRpdmVGaWxlUGF0aCkpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguam9pbih0ZW1wT3V0cHV0RGlyLCB0YXJnZXRSZWxhdGl2ZVBhdGgpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmhscm5nICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFJlbGF0aXZlUGF0aCA9PT0gYHNjaGVtYXMvJHtnZnZ9LjAucm5nLnhtbGAgJiZcbiAgICAgICAgICAgICAgICAgICAgKChhd2FpdCBwYXRoRXhpc3RzKGhsUm5nUGF0aDEpKSB8fCAoYXdhaXQgcGF0aEV4aXN0cyhobFJuZ1BhdGgyKSkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0c0hsUm5nUGF0aCA9IChhd2FpdCBwYXRoRXhpc3RzKGhsUm5nUGF0aDEpKSA/IGhsUm5nUGF0aDEgOiBobFJuZ1BhdGgyO1xuICAgICAgICAgICAgICAgICAgICBnZnZMb2dnZXIubG9nKGBDb3B5IHNjaGVtYSBybmcgZmlsZSBmcm9tIGhpZ2hsYW5kZXIuZmFybS5gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGV4aXN0c0hsUm5nUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgve2dmdn0vZywgZ2Z2KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGguam9pbih0ZW1wT3V0cHV0RGlyLCB0YXJnZXRSZWxhdGl2ZVBhdGgpLCB0YXJnZXRDb250ZW50LCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRSZWxhdGl2ZVBhdGguaW5jbHVkZXMoXCJoZWxwZXJzL2FkZFByaWwxLnR4dFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy/Qv9GA0Lgg0LrQvtC/0LjRgNC+0LLQsNC90LjQuCBqcyDRhNCw0LnQu9C+0LIgYmFiZWwg0L3QsNGB0L7QstGL0LLQsNC10YIgdXNlIHN0cmljdCwg0L7QsdC+0YjQu9C4INGC0LDQutC40Lwg0L/Rg9GC0LXQvFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbih0ZW1wbGF0ZURpciwgcmVsYXRpdmVGaWxlUGF0aCksIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIHRhcmdldFJlbGF0aXZlUGF0aC5yZXBsYWNlKFwiLnR4dFwiLCBcIi5qc1wiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInV0Zi04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKHRlbXBsYXRlRGlyLCByZWxhdGl2ZUZpbGVQYXRoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL3tnZnZ9L2csIGdmdik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIHRhcmdldFJlbGF0aXZlUGF0aCksIHRhcmdldENvbnRlbnQsIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnZnZMb2dnZXIudmVyYm9zZShgUHJvY2Vzc2VkIHRlbXBsYXRlIHBhdGggJHtyZWxhdGl2ZUZpbGVQYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbih0ZW1wT3V0cHV0RGlyLCBcImZvcm0uanNvblwiKTtcbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgZ2Z2TG9nZ2VyKTtcbiAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICAgICBlbmdpbmU6IGF3YWl0IGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uKCksXG4gICAgICAgICAgICBnZW5lcmF0b3I6IGF3YWl0IGdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uKCksXG4gICAgICAgIH07XG4gICAgICAgIGdmdkxvZ2dlci5sb2coYFNldCBsYXN0IHN0YWJsZSB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgTW92aW5nIHByZXBhcmVkIHNvdXJjZXMgdG8gJyR7ZmFybURpcmVjdG9yeX0nYCk7XG4gICAgICAgIGF3YWl0IG1vdmVEaXJlY3RvcnkodGVtcE91dHB1dERpciwgZmFybURpcmVjdG9yeUZvcm1QYXRoKTtcbiAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgRm9ybSBjcmVhdGluZyBjb21wbGV0ZWQuIFBhdGg6ICcke2Zhcm1EaXJlY3RvcnlGb3JtUGF0aH0nYCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtb3ZlRGlyZWN0b3J5KHNvdXJjZVBhdGg6IHN0cmluZywgdGFyZ2V0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKG9zLnBsYXRmb3JtKCkgIT09IFwid2luMzJcIikge1xuICAgICAgICBhd2FpdCByZW5hbWUoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNvdXJjZVBhdGhbMF0gPT09IHRhcmdldFBhdGhbMF0pIHtcbiAgICAgICAgICAgIGF3YWl0IHJlbmFtZShzb3VyY2VQYXRoLCB0YXJnZXRQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IG1vdmUoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEVBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLElBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLHNCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sMEJBQUEsR0FBQU4sT0FBQTtBQUFtRyxTQUFBTyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBVCx3QkFBQWEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdC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
94
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsInBhdGgiLCJfZnNFeHRyYSIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0ZzVXRpbHMiLCJfQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlciIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5Jbml0Rm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwiZmFybURpcmVjdG9yeSIsImxvZ2dlciIsImdmdnMiLCJ1bmRlZmluZWQiLCJJbnZhbGlkQ29tbWFuZExpbmVBcmd1bWVudHNFcnJvciIsInRlbXBsYXRlRGlyIiwiam9pbiIsIl9fZGlybmFtZSIsImdmdiIsImdmdkxvZ2dlciIsIndpdGhQcmVmaXgiLCJmYXJtRGlyZWN0b3J5Rm9ybVBhdGgiLCJwYXRoRXhpc3RzIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJFcnJvciIsInRlbXBPdXRwdXREaXIiLCJybWRpciIsImxvZyIsImVuc3VyZURpciIsImhpZ2hsYW5kZXJGYXJtUGF0aCIsImhsUm5nUGF0aDEiLCJobFJuZ1BhdGgyIiwicmVsYXRpdmVGaWxlUGF0aCIsImdsb2JBc3luYyIsImN3ZCIsInRhcmdldFJlbGF0aXZlUGF0aCIsInJlcGxhY2UiLCJ2ZXJib3NlIiwic3RhdCIsImlzRGlyZWN0b3J5IiwiaGxybmciLCJleGlzdHNIbFJuZ1BhdGgiLCJjb250ZW50IiwicmVhZEZpbGUiLCJ0YXJnZXRDb250ZW50Iiwid3JpdGVGaWxlIiwiaW5jbHVkZXMiLCJmb3JtSnNvblBhdGgiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJkZXBlbmRlbmNpZXMiLCJlbmdpbmUiLCJnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbiIsImdlbmVyYXRvciIsImdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uIiwid3JpdGVKc29uIiwic3BhY2VzIiwibW92ZURpcmVjdG9yeSIsInNvdXJjZVBhdGgiLCJ0YXJnZXRQYXRoIiwicGxhdGZvcm0iLCJyZW5hbWUiLCJtb3ZlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0luaXRGb3JtL1J1bkluaXRGb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBlbnN1cmVEaXIsIG1vdmUsIHBhdGhFeGlzdHMsIHJlYWRGaWxlLCByZW5hbWUsIHJtZGlyLCBzdGF0LCB3cml0ZUZpbGUsIHdyaXRlSnNvbiB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbiwgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IEludmFsaWRDb21tYW5kTGluZUFyZ3VtZW50c0Vycm9yIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvT3B0aW9ucy9Db21tYW5kQmFzZWRPcHRpb25zUGFyc2VyXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgSW5pdEZvcm1PcHRpb25zIH0gZnJvbSBcIi4vSW5pdEZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Jbml0Rm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEluaXRGb3JtT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGNvbnRleHQubG9nZ2VyO1xuICAgIGlmIChvcHRpb25zLmdmdnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29tbWFuZExpbmVBcmd1bWVudHNFcnJvcihcItCd0LUg0YPQutCw0LfQsNC90LAgR1ZGINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPXCIsIFwiXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCJFbXB0eUZvcm1UZW1wbGF0ZVwiKTtcblxuICAgIGZvciAoY29uc3QgZ2Z2IG9mIG9wdGlvbnMuZ2Z2cykge1xuICAgICAgICBjb25zdCBnZnZMb2dnZXIgPSBsb2dnZXIud2l0aFByZWZpeChnZnYpO1xuICAgICAgICBjb25zdCBmYXJtRGlyZWN0b3J5Rm9ybVBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmYXJtRGlyZWN0b3J5Rm9ybVBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRGlyZWN0b3J5IGZvciAnJHtnZnZ9JyBhbHJlYWR5IGV4aXN0cy5gO1xuICAgICAgICAgICAgZ2Z2TG9nZ2VyLmVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZW1wT3V0cHV0RGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCIudG1wXCIsIGdmdik7XG4gICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHRlbXBPdXRwdXREaXIpKSB7XG4gICAgICAgICAgICBhd2FpdCBybWRpcih0ZW1wT3V0cHV0RGlyKTtcbiAgICAgICAgfVxuICAgICAgICBnZnZMb2dnZXIubG9nKGBDcmVhdGluZyBkaXJlY3Rvcnkgd2l0aCBzb3VyY2VzIGZyb20gdGVtcGxhdGVgKTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHRlbXBPdXRwdXREaXIpO1xuICAgICAgICBjb25zdCBoaWdobGFuZGVyRmFybVBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiLCBcImhpZ2hsYW5kZXIuZmFybVwiLCBcIkZvcm1zXCIsIGdmdik7XG4gICAgICAgIGNvbnN0IGhsUm5nUGF0aDEgPSBwYXRoLmpvaW4oaGlnaGxhbmRlckZhcm1QYXRoLCBgJHtnZnZ9LtGB0YXQtdC80LAucm5nLnhtbGApO1xuICAgICAgICBjb25zdCBobFJuZ1BhdGgyID0gcGF0aC5qb2luKGhpZ2hsYW5kZXJGYXJtUGF0aCwgXCJIaWdobGFuZGVyXCIsIGAke2dmdn0u0YHRhdC10LzQsC5ybmcueG1sYCk7XG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpdmVGaWxlUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXCIqKi8qXCIsIHsgY3dkOiB0ZW1wbGF0ZURpciB9KSkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmVsYXRpdmVQYXRoID0gcmVsYXRpdmVGaWxlUGF0aC5yZXBsYWNlKC97Z2Z2fS9nLCBnZnYpO1xuICAgICAgICAgICAgZ2Z2TG9nZ2VyLnZlcmJvc2UoYFByb2Nlc3NpbmcgdGVtcGxhdGUgcGF0aCAke3JlbGF0aXZlRmlsZVBhdGh9YCk7XG4gICAgICAgICAgICBpZiAoKGF3YWl0IHN0YXQocGF0aC5qb2luKHRlbXBsYXRlRGlyLCByZWxhdGl2ZUZpbGVQYXRoKSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIHRhcmdldFJlbGF0aXZlUGF0aCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaGxybmcgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVsYXRpdmVQYXRoID09PSBgc2NoZW1hcy8ke2dmdn0uMC5ybmcueG1sYCAmJlxuICAgICAgICAgICAgICAgICAgICAoKGF3YWl0IHBhdGhFeGlzdHMoaGxSbmdQYXRoMSkpIHx8IChhd2FpdCBwYXRoRXhpc3RzKGhsUm5nUGF0aDIpKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RzSGxSbmdQYXRoID0gKGF3YWl0IHBhdGhFeGlzdHMoaGxSbmdQYXRoMSkpID8gaGxSbmdQYXRoMSA6IGhsUm5nUGF0aDI7XG4gICAgICAgICAgICAgICAgICAgIGdmdkxvZ2dlci5sb2coYENvcHkgc2NoZW1hIHJuZyBmaWxlIGZyb20gaGlnaGxhbmRlci5mYXJtLmApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZXhpc3RzSGxSbmdQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRDb250ZW50ID0gY29udGVudC5yZXBsYWNlKC97Z2Z2fS9nLCBnZnYpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIHRhcmdldFJlbGF0aXZlUGF0aCksIHRhcmdldENvbnRlbnQsIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFJlbGF0aXZlUGF0aC5pbmNsdWRlcyhcImhlbHBlcnMvYWRkUHJpbDEudHh0XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL9C/0YDQuCDQutC+0L/QuNGA0L7QstCw0L3QuNC4IGpzINGE0LDQudC70L7QsiBiYWJlbCDQvdCw0YHQvtCy0YvQstCw0LXRgiB1c2Ugc3RyaWN0LCDQvtCx0L7RiNC70Lgg0YLQsNC60LjQvCDQv9GD0YLQtdC8XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKHRlbXBsYXRlRGlyLCByZWxhdGl2ZUZpbGVQYXRoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGVtcE91dHB1dERpciwgdGFyZ2V0UmVsYXRpdmVQYXRoLnJlcGxhY2UoXCIudHh0XCIsIFwiLmpzXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidXRmLThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShwYXRoLmpvaW4odGVtcGxhdGVEaXIsIHJlbGF0aXZlRmlsZVBhdGgpLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgve2dmdn0vZywgZ2Z2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLmpvaW4odGVtcE91dHB1dERpciwgdGFyZ2V0UmVsYXRpdmVQYXRoKSwgdGFyZ2V0Q29udGVudCwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdmdkxvZ2dlci52ZXJib3NlKGBQcm9jZXNzZWQgdGVtcGxhdGUgcGF0aCAke3JlbGF0aXZlRmlsZVBhdGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZnZMb2dnZXIpO1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgIGVuZ2luZTogYXdhaXQgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24oKSxcbiAgICAgICAgICAgIGdlbmVyYXRvcjogYXdhaXQgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24oKSxcbiAgICAgICAgfTtcbiAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgU2V0IGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICBnZnZMb2dnZXIubG9nKGBNb3ZpbmcgcHJlcGFyZWQgc291cmNlcyB0byAnJHtmYXJtRGlyZWN0b3J5fSdgKTtcbiAgICAgICAgYXdhaXQgbW92ZURpcmVjdG9yeSh0ZW1wT3V0cHV0RGlyLCBmYXJtRGlyZWN0b3J5Rm9ybVBhdGgpO1xuICAgICAgICBnZnZMb2dnZXIubG9nKGBGb3JtIGNyZWF0aW5nIGNvbXBsZXRlZC4gUGF0aDogJyR7ZmFybURpcmVjdG9yeUZvcm1QYXRofSdgKTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1vdmVEaXJlY3Rvcnkoc291cmNlUGF0aDogc3RyaW5nLCB0YXJnZXRQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAob3MucGxhdGZvcm0oKSAhPT0gXCJ3aW4zMlwiKSB7XG4gICAgICAgIGF3YWl0IHJlbmFtZShzb3VyY2VQYXRoLCB0YXJnZXRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc291cmNlUGF0aFswXSA9PT0gdGFyZ2V0UGF0aFswXSkge1xuICAgICAgICAgICAgYXdhaXQgcmVuYW1lKHNvdXJjZVBhdGgsIHRhcmdldFBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgbW92ZShzb3VyY2VQYXRoLCB0YXJnZXRQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsRUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsc0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSwwQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUErRSxTQUFBUSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFB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
@@ -12,12 +12,13 @@ var _PublishedVersionUtils = require("../../BuildTasks/PublishedVersionUtils");
12
12
  var _ResolveFormInfo = require("../../BuildTasks/ResolveFormInfo");
13
13
  var _FsUtils = require("../../Commons/FsUtils");
14
14
  var _Observe = require("../../Commons/TasksCore/Observe");
15
+ var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
15
16
  async function runLocalization(context, options, farmDirectory, engineDirectory, candyModulesDirectory, hlFarmDirectoryPath) {
16
17
  const formDirPath = _path.default.join(farmDirectory, "forms", options.gfv);
17
18
  if (!(await (0, _fsExtra.pathExists)(formDirPath))) {
18
19
  throw new Error(`GFV ${options.gfv} don't exist`);
19
20
  }
20
- const localizeChain = _Observe.Observe.file(_path.default.join(formDirPath, "form.json")).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, engineDirectory, context.logger.withPrefix(`FORM:${options.gfv}`))).transform(async x => {
21
+ const localizeChain = _Observe.Observe.file(_path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName)).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, engineDirectory, context.logger.withPrefix(`FORM:${options.gfv}`))).transform(async x => {
21
22
  if (options.useLocalGeneratorSources) {
22
23
  return {
23
24
  ...x,
@@ -69,4 +70,4 @@ async function writeFilesBatch(filesBatch, outputDirectory) {
69
70
  }
70
71
  }
71
72
  }
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gc1V0aWxzIiwiX09ic2VydmUiLCJydW5Mb2NhbGl6YXRpb24iLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiZm9ybURpclBhdGgiLCJwYXRoIiwiam9pbiIsImdmdiIsInBhdGhFeGlzdHMiLCJFcnJvciIsImxvY2FsaXplQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ4IiwidXNlTG9jYWxHZW5lcmF0b3JTb3VyY2VzIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImRvIiwiZm9ybVNvdXJjZSIsInJlYWRTb3VyY2VzIiwiZGljdGlvbmFyeU9ubHkiLCJsb2ciLCJsb2NhbGl6YXRpb25EaWN0aW9uYXJ5IiwiZ2V0RGljdGlvbmFyeSIsInN1Z2FyQ29udGVudCIsInJlc291cmNlcyIsIndyaXRlRmlsZXNCYXRjaCIsImxvY2FsaXplZFN1Z2FyIiwiZ2V0TG9jYWxpemVkU3VnYXIiLCJvbGRTdWdhckRpcmVjdG9yeSIsImVuc3VyZURpciIsIlByb21pc2UiLCJhbGwiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwiZmlsZW5hbWUiLCJzdWdhciIsIndyaXRlRmlsZUFzeW5jIiwiY3VycmVudFZhbHVlIiwiZmlsZXNCYXRjaCIsIm91dHB1dERpcmVjdG9yeSIsImZpbGVQYXRoIiwia2V5cyIsImNvbnRlbnQiLCJwYXJzZSIsImRpciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9Mb2NhbGl6YXRpb24vUnVuTG9jYWxpemF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uLCByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25PcHRpb25zIH0gZnJvbSBcIi4vTG9jYWxpemF0aW9uT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuTG9jYWxpemF0aW9uKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogTG9jYWxpemF0aW9uT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIG9wdGlvbnMuZ2Z2KTtcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGZvcm1EaXJQYXRoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHRlYgJHtvcHRpb25zLmdmdn0gZG9uJ3QgZXhpc3RgKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbGl6ZUNoYWluID0gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpXG4gICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+XG4gICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7b3B0aW9ucy5nZnZ9YClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlTG9jYWxHZW5lcmF0b3JTb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoeC5nZW5lcmF0b3JWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImdlbmVyYXRvclZlcnNpb24gaXMgbm8gZGVmaW5lZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oeC5nZW5lcmF0b3JWZXJzaW9uKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSksXG4gICAgICAgICAgICBhc3luYyAoZmksIHkpID0+ICh7IC4uLmZpLCBnZW5lcmF0b3I6IHkgfSksXG4gICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICApXG4gICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiTE9DQUxJWkVcIikud2l0aFByZWZpeChvcHRpb25zLmdmdik7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1Tb3VyY2UgPSBhd2FpdCBmaS5nZW5lcmF0b3IucmVhZFNvdXJjZXMoZm9ybURpclBhdGgsIGZhcm1EaXJlY3RvcnksIGhsRmFybURpcmVjdG9yeVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kaWN0aW9uYXJ5T25seSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXCJHZW5lcmF0ZSB0cmFuc2xhdGUgZGljdGlvbmFyeVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGl6YXRpb25EaWN0aW9uYXJ5ID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldERpY3Rpb25hcnkoXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Tb3VyY2Uuc3VnYXJDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBmb3JtU291cmNlLnJlc291cmNlc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIldyaXRlIHRyYW5zbGF0ZSBkaWN0aW9uYXJ5XCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZXNCYXRjaChsb2NhbGl6YXRpb25EaWN0aW9uYXJ5LCBmb3JtRGlyUGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXCJHZW5lcmF0ZSBsb2NhbGl6YXRpb24gc3VnYXJcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxpemVkU3VnYXIgPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0TG9jYWxpemVkU3VnYXIoXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Tb3VyY2Uuc3VnYXJDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBmb3JtU291cmNlLnJlc291cmNlc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBsb2dnZXIubG9nKFwiR2VuZXJhdGUgdHJhbnNsYXRlIGRpY3Rpb25hcnlcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxpemF0aW9uRGljdGlvbmFyeSA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXREaWN0aW9uYXJ5KGxvY2FsaXplZFN1Z2FyLCBmb3JtU291cmNlLnJlc291cmNlcyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvbGRTdWdhckRpcmVjdG9yeSA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJvbGRzdWdhclwiKTtcbiAgICAgICAgICAgICAgICBsb2dnZXIubG9nKGBXcml0ZSBwcmV2aW91cyB2ZXJzaW9uIHN1Z2FyIGluIFwiJHtvbGRTdWdhckRpcmVjdG9yeX1cImApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGVuc3VyZURpcihvbGRTdWdhckRpcmVjdG9yeSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZvcm1Tb3VyY2Uuc3VnYXJDb250ZW50KS5tYXAoKFtmaWxlbmFtZSwgc3VnYXJdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlQXN5bmMocGF0aC5qb2luKG9sZFN1Z2FyRGlyZWN0b3J5LCBmaWxlbmFtZSArIFwiLnN1Z2FyLnhtbFwiKSwgc3VnYXIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIldyaXRlIGxvY2FsaXphdGlvbiBzdWdhclwiKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVzQmF0Y2gobG9jYWxpemVkU3VnYXIsIGZvcm1EaXJQYXRoKTtcblxuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXCJXcml0ZSB0cmFuc2xhdGUgZGljdGlvbmFyeVwiKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVzQmF0Y2gobG9jYWxpemF0aW9uRGljdGlvbmFyeSwgZm9ybURpclBhdGgpO1xuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXCJMb2NhbGl6ZSBzdWNjZXNzZnVsIGNvbXBsZXRlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIGF3YWl0IGxvY2FsaXplQ2hhaW4uY3VycmVudFZhbHVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUZpbGVzQmF0Y2goXG4gICAgZmlsZXNCYXRjaDoge1xuICAgICAgICBbcmVsYXRpdmVGaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nIHwgQnVmZmVyO1xuICAgIH0sXG4gICAgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgT2JqZWN0LmtleXMoZmlsZXNCYXRjaCkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGZpbGVzQmF0Y2hbZmlsZVBhdGhdO1xuICAgICAgICBpZiAoY29udGVudCAhPSB1bmRlZmluZWQgJiYgY29udGVudCAhPT0gXCJcIikge1xuICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIHBhdGgucGFyc2UoZmlsZVBhdGgpLmRpcikpO1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMocGF0aC5qb2luKG91dHB1dERpcmVjdG9yeSwgZmlsZVBhdGgpLCBjb250ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxzQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZ0JBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUlPLGVBQWVPLGVBQWVBLENBQ2pDQyxPQUFrQyxFQUNsQ0MsT0FBNEIsRUFDNUJDLGFBQXFCLEVBQ3JCQyxlQUF1QixFQUN2QkMscUJBQTZCLEVBQzdCQyxtQkFBMkIsRUFDZDtFQUNiLE1BQU1DLFdBQVcsR0FBR0MsYUFBSSxDQUFDQyxJQUFJLENBQUNOLGFBQWEs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
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gc1V0aWxzIiwiX09ic2VydmUiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5Mb2NhbGl6YXRpb24iLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiZm9ybURpclBhdGgiLCJwYXRoIiwiam9pbiIsImdmdiIsInBhdGhFeGlzdHMiLCJFcnJvciIsImxvY2FsaXplQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZSIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ4IiwidXNlTG9jYWxHZW5lcmF0b3JTb3VyY2VzIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImRvIiwiZm9ybVNvdXJjZSIsInJlYWRTb3VyY2VzIiwiZGljdGlvbmFyeU9ubHkiLCJsb2ciLCJsb2NhbGl6YXRpb25EaWN0aW9uYXJ5IiwiZ2V0RGljdGlvbmFyeSIsInN1Z2FyQ29udGVudCIsInJlc291cmNlcyIsIndyaXRlRmlsZXNCYXRjaCIsImxvY2FsaXplZFN1Z2FyIiwiZ2V0TG9jYWxpemVkU3VnYXIiLCJvbGRTdWdhckRpcmVjdG9yeSIsImVuc3VyZURpciIsIlByb21pc2UiLCJhbGwiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwiZmlsZW5hbWUiLCJzdWdhciIsIndyaXRlRmlsZUFzeW5jIiwiY3VycmVudFZhbHVlIiwiZmlsZXNCYXRjaCIsIm91dHB1dERpcmVjdG9yeSIsImZpbGVQYXRoIiwia2V5cyIsImNvbnRlbnQiLCJwYXJzZSIsImRpciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9Mb2NhbGl6YXRpb24vUnVuTG9jYWxpemF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uLCByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25PcHRpb25zIH0gZnJvbSBcIi4vTG9jYWxpemF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Mb2NhbGl6YXRpb24oXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBMb2NhbGl6YXRpb25PcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgb3B0aW9ucy5nZnYpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybURpclBhdGgpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdGViAke29wdGlvbnMuZ2Z2fSBkb24ndCBleGlzdGApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsaXplQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgIHJlc29sdmVGb3JtSW5mbyhcbiAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgZW5naW5lRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtvcHRpb25zLmdmdn1gKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy51c2VMb2NhbEdlbmVyYXRvclNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi54LFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZShlbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIGZhbHNlKSxcbiAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgIGFzeW5jIGZpID0+IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgIClcbiAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJMT0NBTElaRVwiKS53aXRoUHJlZml4KG9wdGlvbnMuZ2Z2KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybVNvdXJjZSA9IGF3YWl0IGZpLmdlbmVyYXRvci5yZWFkU291cmNlcyhmb3JtRGlyUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRpY3Rpb25hcnlPbmx5KSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkdlbmVyYXRlIHRyYW5zbGF0ZSBkaWN0aW9uYXJ5XCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbkRpY3Rpb25hcnkgPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0RGljdGlvbmFyeShcbiAgICAgICAgICAgICAgICAgICAgZm9ybVNvdXJjZS5zdWdhckNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Tb3VyY2UucmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsb2dnZXIubG9nKFwiV3JpdGUgdHJhbnNsYXRlIGRpY3Rpb25hcnlcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlc0JhdGNoKGxvY2FsaXphdGlvbkRpY3Rpb25hcnksIGZvcm1EaXJQYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkdlbmVyYXRlIGxvY2FsaXphdGlvbiBzdWdhclwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGl6ZWRTdWdhciA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRMb2NhbGl6ZWRTdWdhcihcbiAgICAgICAgICAgICAgICAgICAgZm9ybVNvdXJjZS5zdWdhckNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Tb3VyY2UucmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXCJHZW5lcmF0ZSB0cmFuc2xhdGUgZGljdGlvbmFyeVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGl6YXRpb25EaWN0aW9uYXJ5ID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldERpY3Rpb25hcnkobG9jYWxpemVkU3VnYXIsIGZvcm1Tb3VyY2UucmVzb3VyY2VzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFN1Z2FyRGlyZWN0b3J5ID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcIm9sZHN1Z2FyXCIpO1xuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coYFdyaXRlIHByZXZpb3VzIHZlcnNpb24gc3VnYXIgaW4gXCIke29sZFN1Z2FyRGlyZWN0b3J5fVwiYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKG9sZFN1Z2FyRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZm9ybVNvdXJjZS5zdWdhckNvbnRlbnQpLm1hcCgoW2ZpbGVuYW1lLCBzdWdhcl0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGVBc3luYyhwYXRoLmpvaW4ob2xkU3VnYXJEaXJlY3RvcnksIGZpbGVuYW1lICsgXCIuc3VnYXIueG1sXCIpLCBzdWdhcilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBsb2dnZXIubG9nKFwiV3JpdGUgbG9jYWxpemF0aW9uIHN1Z2FyXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZXNCYXRjaChsb2NhbGl6ZWRTdWdhciwgZm9ybURpclBhdGgpO1xuXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIldyaXRlIHRyYW5zbGF0ZSBkaWN0aW9uYXJ5XCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZXNCYXRjaChsb2NhbGl6YXRpb25EaWN0aW9uYXJ5LCBmb3JtRGlyUGF0aCk7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkxvY2FsaXplIHN1Y2Nlc3NmdWwgY29tcGxldGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgYXdhaXQgbG9jYWxpemVDaGFpbi5jdXJyZW50VmFsdWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRmlsZXNCYXRjaChcbiAgICBmaWxlc0JhdGNoOiB7XG4gICAgICAgIFtyZWxhdGl2ZUZpbGVOYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBCdWZmZXI7XG4gICAgfSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBPYmplY3Qua2V5cyhmaWxlc0JhdGNoKSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZmlsZXNCYXRjaFtmaWxlUGF0aF07XG4gICAgICAgIGlmIChjb250ZW50ICE9IHVuZGVmaW5lZCAmJiBjb250ZW50ICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5qb2luKG91dHB1dERpcmVjdG9yeSwgcGF0aC5wYXJzZShmaWxlUGF0aCkuZGlyKSk7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhwYXRoLmpvaW4ob3V0cHV0RGlyZWN0b3J5LCBmaWxlUGF0aCksIGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHNCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBR0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUVPLGVBQWVRLGVBQWVBLENBQ2pDQyxPQUFrQyxFQUNsQ0MsT0FBNEIsRUFDNUJDLGFBQXFCLEVBQ3JCQyxlQUF1QixFQUN2QkMscUJBQTZCLEVBQzdCQyxtQkFBMkIsRUFDZDtFQUNiLE1BQU1DLFdBQVcsR0FBR0MsYUFBSSxDQUFDQyxJQUFJLENBQUNOLGFBQWEsRUFBRSxPQUFPLEVBQUVELE9BQU8sQ0FBQ1EsR0FBRyxDQUFDO0VBQ2xFLElBQUksRUFBRSxNQUFNLElBQUFDLG1CQUFVLEVBQUNKLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDbEMsTUFBTSxJQUFJSyxLQUFLLENBQUUsT0FBTVYsT0FBTyxDQUFDUSxHQUFJLGNBQWEsQ0FBQztFQUNyRDtFQUVBLE1BQU1HLGFBQWEsR0FBR0MsZ0JBQU8sQ0FBQ0MsSUFBSSxDQUFDUCxhQUFJLENBQUNDLElBQUksQ0FBQ0YsV0FBVyxFQUFFUywwQ0FBb0IsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQyxDQUM1RkMsU0FBUyxDQUFDQyxZQUFZLElBQ25CLElBQUFDLGdDQUFlLEVBQ1hELFlBQVksRUFDWlosV0FBVyxFQUNYSCxlQUFlLEVBQ2ZILE9BQU8sQ0FBQ29CLE1BQU0sQ0FBQ0MsVUFBVSxDQUFFLFFBQU9wQixPQUFPLENBQUNRLEdBQUksRUFBQyxDQUNuRCxDQUNKLENBQUMsQ0FDQVEsU0FBUyxDQUFDLE1BQU1LLENBQUMsSUFBSTtJQUNsQixJQUFJckIsT0FBTyxDQUFDc0Isd0JBQXdCLEVBQUU7TUFDbEMsT0FBTztRQUNILEdBQUdELENBQUM7UUFDSkUsZUFBZSxFQUFFLElBQUFDLGtEQUEyQixFQUFDdEIsZUFBZTtNQUNoRSxDQUFDO0lBQ0w7SUFFQSxJQUFJbUIsQ0FBQyxDQUFDSSxnQkFBZ0IsSUFBSUMsU0FBUyxFQUFFO01BQ2pDLE1BQU0sSUFBSWhCLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQztJQUNyRDtJQUVBLE9BQU87TUFDSCxHQUFHVyxDQUFDO01BQ0pFLGVBQWUsRUFBRSxNQUFNLElBQUFJLDhDQUF1QixFQUFDTixDQUFDLENBQUNJLGdCQUFnQjtJQUNyRSxDQUFDO0VBQ0wsQ0FBQyxDQUFDLENBQ0RHLE1BQU0sQ0FDSCxNQUFNQyxFQUFFLElBQUksSUFBQUMsc0NBQWdCLEVBQUNELEVBQUUsQ0FBQ04sZUFBZSxFQUFFcEIscUJBQXFCLEVBQUUsS0FBSyxDQUFDLEVBQzlFLE9BQU8wQixFQUFFLEVBQUVFLENBQUMsTUFBTTtJQUFFLEdBQUdGLEVBQUU7SUFBRUcsU0FBUyxFQUFFRDtFQUFFLENBQUMsQ0FBQyxFQUMxQyxNQUFNRixFQUFFLElBQUksSUFBQUksMkNBQXFCLEVBQUNKLEVBQUUsQ0FBQ04sZUFBZSxDQUN4RCxDQUFDLENBQ0FXLEVBQUUsQ0FBQyxNQUFNTCxFQUFFLElBQUk7SUFDWixNQUFNVixNQUFNLEdBQUdwQixPQUFPLENBQUNvQixNQUFNLENBQUNDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQ0EsVUFBVSxDQUFDcEIsT0FBTyxDQUFDUSxHQUFHLENBQUM7SUFFNUUsTUFBTTJCLFVBQVUsR0FBRyxNQUFNTixFQUFFLENBQUNHLFNBQVMsQ0FBQ0ksV0FBVyxDQUFDL0IsV0FBVyxFQUFFSixhQUFhLEVBQUVHLG1CQUFtQixDQUFDO0lBRWxHLElBQUlKLE9BQU8sQ0FBQ3FDLGNBQWMsRUFBRTtNQUN4QmxCLE1BQU0sQ0FBQ21CLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztNQUMzQyxNQUFNQyxzQkFBc0IsR0FBRyxNQUFNVixFQUFFLENBQUNHLFNBQVMsQ0FBQ1EsYUFBYSxDQUMzREwsVUFBVSxDQUFDTSxZQUFZLEVBQ3ZCTixVQUFVLENBQUNPLFNBQ2YsQ0FBQztNQUNEdkIsTUFBTSxDQUFDbUIsR0FBRyxDQUFDLDRCQUE0QixDQUFDO01BQ3hDLE1BQU1LLGVBQWUsQ0FBQ0osc0JBQXNCLEVBQUVsQyxXQUFXLENBQUM7SUFDOUQsQ0FBQyxNQUFNO01BQ0hjLE1BQU0sQ0FBQ21CLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQztNQUN6QyxNQUFNTSxjQUFjLEdBQUcsTUFBTWYsRUFBRSxDQUFDRyxTQUFTLENBQUNhLGlCQUFpQixDQUN2RFYsVUFBVSxDQUFDTSxZQUFZLEVBQ3ZCTixVQUFVLENBQUNPLFNBQ2YsQ0FBQztNQUVEdkIsTUFBTSxDQUFDbUIsR0FBRyxDQUFDLCtCQUErQixDQUFDO01BQzNDLE1BQU1DLHNCQUFzQixHQUFHLE1BQU1WLEVBQUUsQ0FBQ0csU0FBUyxDQUFDUSxhQUFhLENBQUNJLGNBQWMsRUFBRVQsVUFBVSxDQUFDTyxTQUFTLENBQUM7TUFFckcsTUFBTUksaUJBQWlCLEdBQUd4QyxhQUFJLENBQUNDLElBQUksQ0FBQ0YsV0FBVyxFQUFFLFVBQVUsQ0FBQztNQUM1RGMsTUFBTSxDQUFDbUIsR0FBRyxDQUFFLG9DQUFtQ1EsaUJBQWtCLEdBQUUsQ0FBQztNQUNwRSxNQUFNLElBQUFDLGtCQUFTLEVBQUNELGlCQUFpQixDQUFDO01BQ2xDLE1BQU1FLE9BQU8sQ0FBQ0MsR0FBRyxDQUNiQyxNQUFNLENBQUNDLE9BQU8sQ0FBQ2hCLFVBQVUsQ0FBQ00sWUFBWSxDQUFDLENBQUNXLEdBQUcsQ0FBQyxDQUFDLENBQUNDLFFBQVEsRUFBRUMsS0FBSyxDQUFDLEtBQzFELElBQUFDLHVCQUFjLEVBQUNqRCxhQUFJLENBQUNDLElBQUksQ0FBQ3VDLGlCQUFpQixFQUFFTyxRQUFRLEdBQUcsWUFBWSxDQUFDLEVBQUVDLEtBQUssQ0FDL0UsQ0FDSixDQUFDO01BRURuQyxNQUFNLENBQUNtQixHQUFHLENBQUMsMEJBQTBCLENBQUM7TUFDdEMsTUFBTUssZUFBZSxDQUFDQyxjQUFjLEVBQUV2QyxXQUFXLENBQUM7TUFFbERjLE1BQU0sQ0FBQ21CLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQztNQUN4QyxNQUFNSyxlQUFlLENBQUNKLHNCQUFzQixFQUFFbEMsV0FBVyxDQUFDO01BQzFEYyxNQUFNLENBQUNtQixHQUFHLENBQUMsOEJBQThCLENBQUM7SUFDOUM7RUFDSixDQUFDLENBQUM7RUFFTixNQUFNM0IsYUFBYSxDQUFDNkMsWUFBWTtBQUNwQztBQUVBLGVBQWViLGVBQWVBLENBQzFCYyxVQUVDLEVBQ0RDLGVBQXVCLEVBQ1Y7RUFDYixLQUFLLE1BQU1DLFFBQVEsSUFBSVQsTUFBTSxDQUFDVSxJQUFJLENBQUNILFVBQVUsQ0FBQyxFQUFFO0lBQzVDLE1BQU1JLE9BQU8sR0FBR0osVUFBVSxDQUFDRSxRQUFRLENBQUM7SUFDcEMsSUFBSUUsT0FBTyxJQUFJbkMsU0FBUyxJQUFJbUMsT0FBTyxLQUFLLEVBQUUsRUFBRTtNQUN4QyxNQUFNLElBQUFkLGtCQUFTLEVBQUN6QyxhQUFJLENBQUNDLElBQUksQ0FBQ21ELGVBQWUsRUFBRXBELGFBQUksQ0FBQ3dELEtBQUssQ0FBQ0gsUUFBUSxDQUFDLENBQUNJLEdBQUcsQ0FBQyxDQUFDO01BQ3JFLE1BQU0sSUFBQVIsdUJBQWMsRUFBQ2pELGFBQUksQ0FBQ0MsSUFBSSxDQUFDbUQsZUFBZSxFQUFFQyxRQUFRLENBQUMsRUFBRUUsT0FBTyxDQUFDO0lBQ3ZFO0VBQ0o7QUFDSiJ9
@@ -10,17 +10,20 @@ var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
10
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
12
  async function runRenameFiles(context, options, resourcesDirectory, farmDirectory) {
13
- const formGlobs = await _FormGlobsUtils.FormGlobs.validateGlobs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
14
- for (const gfv of await _FormGlobsUtils.FormGlobs.resolveGlobsToGfvs(formGlobs, farmDirectory)) {
13
+ const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
14
+ for (const {
15
+ gfv,
16
+ formPath
17
+ } of await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(formGlobs, farmDirectory)) {
15
18
  if (!isNaN(Number(gfv))) {
16
19
  const logger = context.logger.withPrefix(`FORM:${gfv}`);
17
- await renameFiles(farmDirectory, gfv, logger);
20
+ await renameFiles(farmDirectory, gfv, formPath, logger);
18
21
  }
19
22
  }
20
23
  }
21
- async function renameFiles(farmDirectory, gfv, logger) {
24
+ async function renameFiles(farmDirectory, gfv, formPath, logger) {
22
25
  var _maxSubversion;
23
- const presentationsFile = path.join(farmDirectory, "forms", gfv, "presentations.json");
26
+ const presentationsFile = path.join(formPath, "presentations.json");
24
27
  if (!(await (0, _fsExtra.pathExists)(presentationsFile))) {
25
28
  logger.warning(`Form ${gfv} does not have presentations.json.`);
26
29
  return;
@@ -35,14 +38,13 @@ async function renameFiles(farmDirectory, gfv, logger) {
35
38
  maxSubversion = (_maxSubversion = maxSubversion) !== null && _maxSubversion !== void 0 ? _maxSubversion : 0;
36
39
  const rngXmlFileName = `${gfv}.rng.xml`;
37
40
  const newRngXmlFileName = `${gfv}.${maxSubversion}.rng.xml`;
38
- const formDirPath = path.join(farmDirectory, "forms", gfv);
39
- const fileDirPath = path.join(formDirPath, "schemas", rngXmlFileName);
41
+ const fileDirPath = path.join(formPath, "schemas", rngXmlFileName);
40
42
  if (!(await (0, _fsExtra.pathExists)(fileDirPath))) {
41
43
  logger.warning(`Form ${gfv} does not have ${rngXmlFileName}.`);
42
44
  return;
43
45
  }
44
- const newFileDirPath = path.join(formDirPath, "schemas", newRngXmlFileName);
46
+ const newFileDirPath = path.join(formPath, "schemas", newRngXmlFileName);
45
47
  logger.log(`Rename "${rngXmlFileName}" in "${newRngXmlFileName}".`);
46
48
  await (0, _fsExtra.rename)(fileDirPath, newFileDirPath);
47
49
  }
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwicnVuUmVuYW1lRmlsZXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsInJlc291cmNlc0RpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJmb3JtR2xvYnMiLCJGb3JtR2xvYnMiLCJ2YWxpZGF0ZUdsb2JzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZnYiLCJyZXNvbHZlR2xvYnNUb0dmdnMiLCJpc05hTiIsIk51bWJlciIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJyZW5hbWVGaWxlcyIsIl9tYXhTdWJ2ZXJzaW9uIiwicHJlc2VudGF0aW9uc0ZpbGUiLCJqb2luIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJqc29uIiwicmVhZEpzb24iLCJtYXhTdWJ2ZXJzaW9uIiwiaXRlbSIsInVuZGVmaW5lZCIsInJuZ1htbEZpbGVOYW1lIiwibmV3Um5nWG1sRmlsZU5hbWUiLCJmb3JtRGlyUGF0aCIsImZpbGVEaXJQYXRoIiwibmV3RmlsZURpclBhdGgiLCJsb2ciLCJyZW5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvUmVuYW1lRmlsZXMvUnVuUmVuYW1lRmlsZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzLCByZWFkSnNvbiwgcmVuYW1lIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcblxuaW1wb3J0IHsgUmVuYW1lRmlsZXNPcHRpb25zIH0gZnJvbSBcIi4vUmVuYW1lRmlsZXNPcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5SZW5hbWVGaWxlcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFJlbmFtZUZpbGVzT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGdmdiBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdsb2JzVG9HZnZzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgaWYgKCFpc05hTihOdW1iZXIoZ2Z2KSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCk7XG4gICAgICAgICAgICBhd2FpdCByZW5hbWVGaWxlcyhmYXJtRGlyZWN0b3J5LCBnZnYsIGxvZ2dlcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmFtZUZpbGVzKGZhcm1EaXJlY3Rvcnk6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByZXNlbnRhdGlvbnNGaWxlID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInByZXNlbnRhdGlvbnMuanNvblwiKTtcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHByZXNlbnRhdGlvbnNGaWxlKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoYEZvcm0gJHtnZnZ9IGRvZXMgbm90IGhhdmUgcHJlc2VudGF0aW9ucy5qc29uLmApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZWFkSnNvbihwcmVzZW50YXRpb25zRmlsZSk7XG4gICAgbGV0IG1heFN1YnZlcnNpb24gPSAwO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBqc29uKSB7XG4gICAgICAgIGlmIChpdGVtW1wiTWF4VmVyc2lvblwiXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bXCJNYXhWZXJzaW9uXCJdKSB7XG4gICAgICAgICAgICBtYXhTdWJ2ZXJzaW9uID0gaXRlbVtcIk1heFZlcnNpb25cIl07XG4gICAgICAgIH1cbiAgICB9XG4gICAgbWF4U3VidmVyc2lvbiA9IG1heFN1YnZlcnNpb24gPz8gMDtcbiAgICBjb25zdCBybmdYbWxGaWxlTmFtZSA9IGAke2dmdn0ucm5nLnhtbGA7XG4gICAgY29uc3QgbmV3Um5nWG1sRmlsZU5hbWUgPSBgJHtnZnZ9LiR7bWF4U3VidmVyc2lvbn0ucm5nLnhtbGA7XG4gICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgIGNvbnN0IGZpbGVEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcInNjaGVtYXNcIiwgcm5nWG1sRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZmlsZURpclBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSAke3JuZ1htbEZpbGVOYW1lfS5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdGaWxlRGlyUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJzY2hlbWFzXCIsIG5ld1JuZ1htbEZpbGVOYW1lKTtcbiAgICBsb2dnZXIubG9nKGBSZW5hbWUgXCIke3JuZ1htbEZpbGVOYW1lfVwiIGluIFwiJHtuZXdSbmdYbWxGaWxlTmFtZX1cIi5gKTtcbiAgICBhd2FpdCByZW5hbWUoZmlsZURpclBhdGgsIG5ld0ZpbGVEaXJQYXRoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBQXlELFNBQUFHLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFMLHdCQUFBUyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFB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
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwicnVuUmVuYW1lRmlsZXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsInJlc291cmNlc0RpcmVjdG9yeSIsImZhcm1EaXJlY3RvcnkiLCJmb3JtR2xvYnMiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsInJlc29sdmVTcGVjaWZpZXJzIiwiZ2Z2IiwiZm9ybVBhdGgiLCJyZXNvbHZlR2Z2R2xvYnMiLCJpc05hTiIsIk51bWJlciIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJyZW5hbWVGaWxlcyIsIl9tYXhTdWJ2ZXJzaW9uIiwicHJlc2VudGF0aW9uc0ZpbGUiLCJqb2luIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJqc29uIiwicmVhZEpzb24iLCJtYXhTdWJ2ZXJzaW9uIiwiaXRlbSIsInVuZGVmaW5lZCIsInJuZ1htbEZpbGVOYW1lIiwibmV3Um5nWG1sRmlsZU5hbWUiLCJmaWxlRGlyUGF0aCIsIm5ld0ZpbGVEaXJQYXRoIiwibG9nIiwicmVuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL1JlbmFtZUZpbGVzL1J1blJlbmFtZUZpbGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEpzb24sIHJlbmFtZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5cbmltcG9ydCB7IFJlbmFtZUZpbGVzT3B0aW9ucyB9IGZyb20gXCIuL1JlbmFtZUZpbGVzT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUmVuYW1lRmlsZXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBSZW5hbWVGaWxlc09wdGlvbnMsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtR2xvYnMgPSBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVHZnZHbG9icyhmb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIGlmICghaXNOYU4oTnVtYmVyKGdmdikpKSB7XG4gICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApO1xuICAgICAgICAgICAgYXdhaXQgcmVuYW1lRmlsZXMoZmFybURpcmVjdG9yeSwgZ2Z2LCBmb3JtUGF0aCwgbG9nZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVuYW1lRmlsZXMoZmFybURpcmVjdG9yeTogc3RyaW5nLCBnZnY6IHN0cmluZywgZm9ybVBhdGg6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJlc2VudGF0aW9uc0ZpbGUgPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMocHJlc2VudGF0aW9uc0ZpbGUpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBwcmVzZW50YXRpb25zLmpzb24uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHJlYWRKc29uKHByZXNlbnRhdGlvbnNGaWxlKTtcbiAgICBsZXQgbWF4U3VidmVyc2lvbiA9IDA7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGpzb24pIHtcbiAgICAgICAgaWYgKGl0ZW1bXCJNYXhWZXJzaW9uXCJdICE9PSB1bmRlZmluZWQgJiYgaXRlbVtcIk1heFZlcnNpb25cIl0pIHtcbiAgICAgICAgICAgIG1heFN1YnZlcnNpb24gPSBpdGVtW1wiTWF4VmVyc2lvblwiXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtYXhTdWJ2ZXJzaW9uID0gbWF4U3VidmVyc2lvbiA/PyAwO1xuICAgIGNvbnN0IHJuZ1htbEZpbGVOYW1lID0gYCR7Z2Z2fS5ybmcueG1sYDtcbiAgICBjb25zdCBuZXdSbmdYbWxGaWxlTmFtZSA9IGAke2dmdn0uJHttYXhTdWJ2ZXJzaW9ufS5ybmcueG1sYDtcbiAgICBjb25zdCBmaWxlRGlyUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJzY2hlbWFzXCIsIHJuZ1htbEZpbGVOYW1lKTtcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGZpbGVEaXJQYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoYEZvcm0gJHtnZnZ9IGRvZXMgbm90IGhhdmUgJHtybmdYbWxGaWxlTmFtZX0uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3RmlsZURpclBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwic2NoZW1hc1wiLCBuZXdSbmdYbWxGaWxlTmFtZSk7XG4gICAgbG9nZ2VyLmxvZyhgUmVuYW1lIFwiJHtybmdYbWxGaWxlTmFtZX1cIiBpbiBcIiR7bmV3Um5nWG1sRmlsZU5hbWV9XCIuYCk7XG4gICAgYXdhaXQgcmVuYW1lKGZpbGVEaXJQYXRoLCBuZXdGaWxlRGlyUGF0aCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQUF5RCxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBTCx3QkFBQVMsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFB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
@@ -11,32 +11,35 @@ var _ResolveFormInfo = require("../../BuildTasks/ResolveFormInfo");
11
11
  var _FormGlobsUtils = require("../../Commons/FormGlobsUtils");
12
12
  var _StaticLogger = require("../../Commons/Logging/StaticLogger");
13
13
  var _Version = require("../../BuildTasks/Version");
14
+ var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
14
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
17
  async function runUpgradeForm(context, options, resourcesDirectory, farmDirectory) {
17
- const formGlobs = await _FormGlobsUtils.FormGlobs.validateGlobs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
18
- for (const gfv of await _FormGlobsUtils.FormGlobs.resolveGlobsToGfvs(formGlobs, farmDirectory)) {
18
+ const formGlobs = await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory), farmDirectory);
19
+ for (const {
20
+ gfv,
21
+ formPath
22
+ } of await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(formGlobs, farmDirectory)) {
19
23
  const logger = context.logger.withPrefix(`FORM:${gfv}`);
20
24
  if (options.useCiBuild) {
21
25
  logger.log("Begin upgrading build mode");
22
- await upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, logger);
26
+ await upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, formPath, logger);
23
27
  logger.log("Finish upgrading build mode");
24
28
  }
25
29
  if (options.engine != undefined) {
26
30
  logger.log("Begin upgrading engine version");
27
- await upgradeFormEngine(farmDirectory, gfv, options.engine, options.skipPreVersions, logger);
31
+ await upgradeFormEngine(farmDirectory, gfv, formPath, options.engine, options.skipPreVersions, logger);
28
32
  logger.log("Finish upgrading engine version");
29
33
  }
30
34
  if (options.preid != undefined) {
31
35
  logger.log("Begin upgrading engine version");
32
- await upgradeFormPrerelease(farmDirectory, gfv, options.preid, logger);
36
+ await upgradeFormPrerelease(farmDirectory, gfv, formPath, options.preid, logger);
33
37
  logger.log("Finish upgrading engine version");
34
38
  }
35
39
  }
36
40
  }
37
- async function upgradeFormEngine(farmDirectory, gfv, engineVersion, skipPreVersions, logger) {
38
- const formDirPath = path.join(farmDirectory, "forms", gfv);
39
- const formJsonPath = path.join(formDirPath, "form.json");
41
+ async function upgradeFormEngine(farmDirectory, gfv, formPath, engineVersion, skipPreVersions, logger) {
42
+ const formJsonPath = path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
40
43
  if (!(await (0, _fsExtra.pathExists)(formJsonPath))) {
41
44
  logger.warning("Form does not have form.json: Upgrade skipped");
42
45
  return;
@@ -86,14 +89,13 @@ async function upgradeFormEngine(farmDirectory, gfv, engineVersion, skipPreVersi
86
89
  }
87
90
  }
88
91
  }
89
- async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, logger) {
90
- const formDirPath = path.join(farmDirectory, "forms", gfv);
91
- const formJsonPath = path.join(formDirPath, "form.json");
92
+ async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, formPath, logger) {
93
+ const formJsonPath = path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
92
94
  if (!(await (0, _fsExtra.pathExists)(formJsonPath))) {
93
95
  logger.warning("form.json does not exists. Upgrade skipped.");
94
96
  return;
95
97
  }
96
- const generatedFormDirectory = path.join(formDirPath, "form");
98
+ const generatedFormDirectory = path.join(formPath, "form");
97
99
  if (!(0, _ResolveFormInfo.isNewFormJsonFormat)(formJsonPath)) {
98
100
  throw new Error("Файл form.json формы должен иметь новый формат зависимости. Обратитесь к расзработчикам за разъяснениями.");
99
101
  }
@@ -109,7 +111,7 @@ async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv,
109
111
  await (0, _fsExtra.remove)(generatedFormDirectory);
110
112
  logger.log("Removed form directory");
111
113
  }
112
- const formGitIgnorePath = path.join(formDirPath, ".gitignore");
114
+ const formGitIgnorePath = path.join(formPath, ".gitignore");
113
115
  if (await (0, _fsExtra.pathExists)(formGitIgnorePath)) {
114
116
  const gitIgnoreContent = await (0, _fsExtra.readFile)(formGitIgnorePath, "utf8");
115
117
  if (!gitIgnoreContent.split("\n").includes("form")) {
@@ -121,9 +123,8 @@ async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv,
121
123
  logger.log("Created .gitignore");
122
124
  }
123
125
  }
124
- async function upgradeFormPrerelease(farmDirectory, gfv, preid, logger) {
125
- const formDirPath = path.join(farmDirectory, "forms", gfv);
126
- const formJsonPath = path.join(formDirPath, "form.json");
126
+ async function upgradeFormPrerelease(farmDirectory, gfv, formPath, preid, logger) {
127
+ const formJsonPath = path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
127
128
  const formConfig = await (0, _ResolveFormInfo.readFormConfig)(formJsonPath, logger);
128
129
  const prereleaseVersionFormJson = await (0, _PublishedVersionUtils.getPrereleaseVersionFormJson)(preid);
129
130
  if (prereleaseVersionFormJson != undefined) {
@@ -139,4 +140,4 @@ async function upgradeFormPrerelease(farmDirectory, gfv, preid, logger) {
139
140
  throw new Error(`Версии ${preid} не существует.`);
140
141
  }
141
142
  }
142
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJfVmVyc2lvbiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9icyIsIkZvcm1HbG9icyIsInZhbGlkYXRlR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImdmdiIsInJlc29sdmVHbG9ic1RvR2Z2cyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtRGlyUGF0aCIsImpvaW4iLCJmb3JtSnNvblBhdGgiLCJwYXRoRXhpc3RzIiwid2FybmluZyIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYzIiLCJkZXBlbmRlbmNpZXMiLCJnZW5lcmF0b3IiLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMzIiwiX2Zvcm1Db25maWckZGVwZW5kZW5jNCIsImVuZ2luZVZlcnNpb25TcGVjIiwicGFyc2VDYW5keVZlcnNpb25TcGVjIiwiZ2VuZXJhdG9yVmVyc2lvblNwZWMiLCJ0eXBlIiwidGVzdCIsInZlcnNpb24iLCJtb2RlIiwiZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24iLCJnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbiIsIndyaXRlSnNvbiIsInNwYWNlcyIsImlzRW5naW5lVmVyc2lvbkV4aXN0cyIsIkVycm9yIiwiZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSIsImlzTmV3Rm9ybUpzb25Gb3JtYXQiLCJnZXRMb2dnZXIiLCJidWlsZCIsInJlbW92ZSIsImZvcm1HaXRJZ25vcmVQYXRoIiwiZ2l0SWdub3JlQ29udGVudCIsInJlYWRGaWxlIiwic3BsaXQiLCJpbmNsdWRlcyIsIndyaXRlRmlsZSIsInRyaW1SaWdodCIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iLCJnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL1VwZ3JhZGVGb3JtL1J1blVwZ3JhZGVGb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHJlbW92ZSwgd3JpdGVGaWxlLCB3cml0ZUpzb24gfSBmcm9tIFwiZnMtZXh0cmFcIjtcblxuaW1wb3J0IHtcbiAgICBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbixcbiAgICBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbixcbiAgICBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxuICAgIGlzRW5naW5lVmVyc2lvbkV4aXN0cyxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBpc05ld0Zvcm1Kc29uRm9ybWF0LCByZWFkRm9ybUNvbmZpZyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1ZlcnNpb25cIjtcblxuaW1wb3J0IHsgVXBncmFkZUZvcm1PcHRpb25zIH0gZnJvbSBcIi4vVXBncmFkZUZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5VcGdyYWRlRm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFVwZ3JhZGVGb3JtT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpLFxuICAgICAgICBmYXJtRGlyZWN0b3J5XG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGdmdiBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdsb2JzVG9HZnZzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQ2lCdWlsZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBidWlsZCBtb2RlXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlKHJlc291cmNlc0RpcmVjdG9yeSwgZmFybURpcmVjdG9yeSwgZ2Z2LCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgYnVpbGQgbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lbmdpbmUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1FbmdpbmUoZmFybURpcmVjdG9yeSwgZ2Z2LCBvcHRpb25zLmVuZ2luZSwgb3B0aW9ucy5za2lwUHJlVmVyc2lvbnMsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5wcmVpZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJCZWdpbiB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybVByZXJlbGVhc2UoZmFybURpcmVjdG9yeSwgZ2Z2LCBvcHRpb25zLnByZWlkLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtRW5naW5lKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBlbmdpbmVWZXJzaW9uOiBzdHJpbmcsXG4gICAgc2tpcFByZVZlcnNpb25zOiBib29sZWFuLFxuICAgIGxvZ2dlcjogSUxvZ2dlclxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIik7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb246IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGlmIChza2lwUHJlVmVyc2lvbnMpIHtcbiAgICAgICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvclZlcnNpb25TcGVjID0gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwicHJlXCIgfHxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgKGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9bYS16QS1aXS8udGVzdChlbmdpbmVWZXJzaW9uU3BlYy52ZXJzaW9uKSkgfHxcbiAgICAgICAgICAgICAgICAoZ2VuZXJhdG9yVmVyc2lvblNwZWMudHlwZSA9PT0gXCJ2ZXJzaW9uXCIgJiYgL1thLXpBLVpdLy50ZXN0KGdlbmVyYXRvclZlcnNpb25TcGVjLnZlcnNpb24pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgXCJGb3JtIHZlcnNpb24gaGFzIHByZXJlbGVhc2UgdmVyc2lvbjogVXBncmFkZSBza2lwcGVkIGR1ZSB0byBmbGFnIHNraXBQcmVWZXJzaW9ucyAoLS1za2lwLXByZS12ZXJzaW9ucykgc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcIm5vLWVkaXRvclwiKSB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJGb3JtIGRvZXMgbm90IGhhdmUgZWRpdG9yOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZvcm1Db25maWcubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIikge1xuICAgICAgICBsb2dnZXIubG9nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGVkaXRvcjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlbmdpbmVWZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0VuZ2luZVZlcnNpb25FeGlzdHMoZW5naW5lVmVyc2lvbikpIHtcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IGVuZ2luZVZlcnNpb24sIGdlbmVyYXRvcjogZW5naW5lVmVyc2lvbiB9O1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCS0LXRgNGB0LjQuCAke2VuZ2luZVZlcnNpb259INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtVG9DaUJ1aWxkTW9kZShcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdik7XG4gICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKTtcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuaW5nKFwiZm9ybS5qc29uIGRvZXMgbm90IGV4aXN0cy4gVXBncmFkZSBza2lwcGVkLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5ID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIik7XG4gICAgaWYgKCFpc05ld0Zvcm1Kc29uRm9ybWF0KGZvcm1Kc29uUGF0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCLQpNCw0LnQuyBmb3JtLmpzb24g0YTQvtGA0LzRiyDQtNC+0LvQttC10L0g0LjQvNC10YLRjCDQvdC+0LLRi9C5INGE0L7RgNC80LDRgiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4LiDQntCx0YDQsNGC0LjRgtC10YHRjCDQuiDRgNCw0YHQt9GA0LDQsdC+0YLRh9C40LrQsNC8INC30LAg0YDQsNC30YrRj9GB0L3QtdC90LjRj9C80LguXCJcbiAgICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgZ2V0TG9nZ2VyKCkpO1xuICAgIGlmIChmb3JtQ29uZmlnLmJ1aWxkICE9PSBcImNpXCIpIHtcbiAgICAgICAgZm9ybUNvbmZpZy5idWlsZCA9IFwiY2lcIjtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIGxvZ2dlci5sb2coXCJVcGRhdGVkIGZvcm0uanNvblwiKTtcbiAgICB9XG4gICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSkpIHtcbiAgICAgICAgYXdhaXQgcmVtb3ZlKGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkpO1xuICAgICAgICBsb2dnZXIubG9nKFwiUmVtb3ZlZCBmb3JtIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybUdpdElnbm9yZVBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiLmdpdGlnbm9yZVwiKTtcbiAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmb3JtR2l0SWdub3JlUGF0aCkpIHtcbiAgICAgICAgY29uc3QgZ2l0SWdub3JlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZvcm1HaXRJZ25vcmVQYXRoLCBcInV0ZjhcIik7XG4gICAgICAgIGlmICghZ2l0SWdub3JlQ29udGVudC5zcGxpdChcIlxcblwiKS5pbmNsdWRlcyhcImZvcm1cIikpIHtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgZ2l0SWdub3JlQ29udGVudC50cmltUmlnaHQoKSArIFwiXFxuXCIgKyBcImZvcm1cXG5cIik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiVXBkYXRlZCAuZ2l0aWdub3JlXCIpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZvcm1HaXRJZ25vcmVQYXRoLCBcImZvcm1cXG5cIik7XG4gICAgICAgIGxvZ2dlci5sb2coXCJDcmVhdGVkIC5naXRpZ25vcmVcIik7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGdyYWRlRm9ybVByZXJlbGVhc2UoXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIHByZWlkOiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdik7XG4gICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKTtcbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGNvbnN0IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gPSBhd2FpdCBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uKHByZWlkKTtcblxuICAgIGlmIChwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHsgZW5naW5lOiBwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLCBnZW5lcmF0b3I6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gfTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBwcmVyZWxlYXNlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihg0JLQtdGA0YHQuNC4ICR7cHJlaWR9INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFF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
143
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJfVmVyc2lvbiIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9icyIsIkZvcm1HbG9icyIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZnYiLCJmb3JtUGF0aCIsInJlc29sdmVHZnZHbG9icyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtSnNvblBhdGgiLCJqb2luIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMiLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMyIiwiZGVwZW5kZW5jaWVzIiwiZ2VuZXJhdG9yIiwiX2Zvcm1Db25maWckZGVwZW5kZW5jMyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYzQiLCJlbmdpbmVWZXJzaW9uU3BlYyIsInBhcnNlQ2FuZHlWZXJzaW9uU3BlYyIsImdlbmVyYXRvclZlcnNpb25TcGVjIiwidHlwZSIsInRlc3QiLCJ2ZXJzaW9uIiwibW9kZSIsImdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uIiwiZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJpc0VuZ2luZVZlcnNpb25FeGlzdHMiLCJFcnJvciIsImdlbmVyYXRlZEZvcm1EaXJlY3RvcnkiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiZ2V0TG9nZ2VyIiwiYnVpbGQiLCJyZW1vdmUiLCJmb3JtR2l0SWdub3JlUGF0aCIsImdpdElnbm9yZUNvbnRlbnQiLCJyZWFkRmlsZSIsInNwbGl0IiwiaW5jbHVkZXMiLCJ3cml0ZUZpbGUiLCJ0cmltUmlnaHQiLCJwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uIiwiZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9VcGdyYWRlRm9ybS9SdW5VcGdyYWRlRm9ybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMsIHJlYWRGaWxlLCByZW1vdmUsIHdyaXRlRmlsZSwgd3JpdGVKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7XG4gICAgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24sXG4gICAgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24sXG4gICAgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICBpc0VuZ2luZVZlcnNpb25FeGlzdHMsXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgaXNOZXdGb3JtSnNvbkZvcm1hdCwgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBwYXJzZUNhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9WZXJzaW9uXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgVXBncmFkZUZvcm1PcHRpb25zIH0gZnJvbSBcIi4vVXBncmFkZUZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5VcGdyYWRlRm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFVwZ3JhZGVGb3JtT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5lbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybShcbiAgICAgICAgYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSxcbiAgICAgICAgZmFybURpcmVjdG9yeVxuICAgICk7XG4gICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZUdmdkdsb2JzKGZvcm1HbG9icywgZmFybURpcmVjdG9yeSkpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQ2lCdWlsZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBidWlsZCBtb2RlXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlKHJlc291cmNlc0RpcmVjdG9yeSwgZmFybURpcmVjdG9yeSwgZ2Z2LCBmb3JtUGF0aCwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJGaW5pc2ggdXBncmFkaW5nIGJ1aWxkIG1vZGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZW5naW5lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgICAgIGF3YWl0IHVwZ3JhZGVGb3JtRW5naW5lKGZhcm1EaXJlY3RvcnksIGdmdiwgZm9ybVBhdGgsIG9wdGlvbnMuZW5naW5lLCBvcHRpb25zLnNraXBQcmVWZXJzaW9ucywgbG9nZ2VyKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJGaW5pc2ggdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnByZWlkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgICAgIGF3YWl0IHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShmYXJtRGlyZWN0b3J5LCBnZnYsIGZvcm1QYXRoLCBvcHRpb25zLnByZWlkLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtRW5naW5lKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBmb3JtUGF0aDogc3RyaW5nLFxuICAgIGVuZ2luZVZlcnNpb246IHN0cmluZyxcbiAgICBza2lwUHJlVmVyc2lvbnM6IGJvb2xlYW4sXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUpzb25QYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoXCJGb3JtIGRvZXMgbm90IGhhdmUgZm9ybS5qc29uOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgbG9nZ2VyKTtcbiAgICBpZiAoc2tpcFByZVZlcnNpb25zKSB7XG4gICAgICAgIGlmIChmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lICE9IHVuZGVmaW5lZCAmJiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvblNwZWMgPSBwYXJzZUNhbmR5VmVyc2lvblNwZWMoZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmVuZ2luZSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3JWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvblNwZWMudHlwZSA9PT0gXCJwcmVcIiB8fFxuICAgICAgICAgICAgICAgIChlbmdpbmVWZXJzaW9uU3BlYy50eXBlID09PSBcInZlcnNpb25cIiAmJiAvW2EtekEtWl0vLnRlc3QoZW5naW5lVmVyc2lvblNwZWMudmVyc2lvbikpIHx8XG4gICAgICAgICAgICAgICAgKGdlbmVyYXRvclZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9bYS16QS1aXS8udGVzdChnZW5lcmF0b3JWZXJzaW9uU3BlYy52ZXJzaW9uKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5sb2coXG4gICAgICAgICAgICAgICAgICAgIFwiRm9ybSB2ZXJzaW9uIGhhcyBwcmVyZWxlYXNlIHZlcnNpb246IFVwZ3JhZGUgc2tpcHBlZCBkdWUgdG8gZmxhZyBza2lwUHJlVmVyc2lvbnMgKC0tc2tpcC1wcmUtdmVyc2lvbnMpIHNwZWNpZmllZFwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZvcm1Db25maWcubW9kZSA9PT0gXCJuby1lZGl0b3JcIikge1xuICAgICAgICBsb2dnZXIubG9nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGVkaXRvcjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChmb3JtQ29uZmlnLm1vZGUgPT09IFwiY29weS1sZWdhY3ktcHJlYnVpbHQtcmVzb3VyY2VzXCIpIHtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBlZGl0b3I6IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZW5naW5lVmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgIGVuZ2luZTogYXdhaXQgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24oKSxcbiAgICAgICAgICAgIGdlbmVyYXRvcjogYXdhaXQgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24oKSxcbiAgICAgICAgfTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBsYXN0IHN0YWJsZSB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaXNFbmdpbmVWZXJzaW9uRXhpc3RzKGVuZ2luZVZlcnNpb24pKSB7XG4gICAgICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHsgZW5naW5lOiBlbmdpbmVWZXJzaW9uLCBnZW5lcmF0b3I6IGVuZ2luZVZlcnNpb24gfTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coYFVwZGF0ZWQgdG8gdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtlbmdpbmVWZXJzaW9ufSDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCLmApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGdyYWRlRm9ybVRvQ2lCdWlsZE1vZGUoXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGZvcm1QYXRoOiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUpzb25QYXRoKSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm5pbmcoXCJmb3JtLmpzb24gZG9lcyBub3QgZXhpc3RzLiBVcGdyYWRlIHNraXBwZWQuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFwiZm9ybVwiKTtcbiAgICBpZiAoIWlzTmV3Rm9ybUpzb25Gb3JtYXQoZm9ybUpzb25QYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcItCk0LDQudC7IGZvcm0uanNvbiDRhNC+0YDQvNGLINC00L7Qu9C20LXQvSDQuNC80LXRgtGMINC90L7QstGL0Lkg0YTQvtGA0LzQsNGCINC30LDQstC40YHQuNC80L7RgdGC0LguINCe0LHRgNCw0YLQuNGC0LXRgdGMINC6INGA0LDRgdC30YDQsNCx0L7RgtGH0LjQutCw0Lwg0LfQsCDRgNCw0LfRitGP0YHQvdC10L3QuNGP0LzQuC5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZXRMb2dnZXIoKSk7XG4gICAgaWYgKGZvcm1Db25maWcuYnVpbGQgIT09IFwiY2lcIikge1xuICAgICAgICBmb3JtQ29uZmlnLmJ1aWxkID0gXCJjaVwiO1xuICAgICAgICBhd2FpdCB3cml0ZUpzb24oZm9ybUpzb25QYXRoLCBmb3JtQ29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgZm9ybS5qc29uXCIpO1xuICAgIH1cbiAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KSkge1xuICAgICAgICBhd2FpdCByZW1vdmUoZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSk7XG4gICAgICAgIGxvZ2dlci5sb2coXCJSZW1vdmVkIGZvcm0gZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtR2l0SWdub3JlUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgXCIuZ2l0aWdub3JlXCIpO1xuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZvcm1HaXRJZ25vcmVQYXRoKSkge1xuICAgICAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgaWYgKCFnaXRJZ25vcmVDb250ZW50LnNwbGl0KFwiXFxuXCIpLmluY2x1ZGVzKFwiZm9ybVwiKSkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZvcm1HaXRJZ25vcmVQYXRoLCBnaXRJZ25vcmVDb250ZW50LnRyaW1SaWdodCgpICsgXCJcXG5cIiArIFwiZm9ybVxcblwiKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJVcGRhdGVkIC5naXRpZ25vcmVcIik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIFwiZm9ybVxcblwiKTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIkNyZWF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgZm9ybVBhdGg6IHN0cmluZyxcbiAgICBwcmVpZDogc3RyaW5nLFxuICAgIGxvZ2dlcjogSUxvZ2dlclxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKTtcbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGNvbnN0IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gPSBhd2FpdCBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uKHByZWlkKTtcblxuICAgIGlmIChwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHsgZW5naW5lOiBwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLCBnZW5lcmF0b3I6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gfTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBwcmVyZWxlYXNlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihg0JLQtdGA0YHQuNC4ICR7cHJlaWR9INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxzQkFBQSxHQUFBRixPQUFBO0FBTUEsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHFCQUFBLEdBQUFQLE9BQUE7QUFBK0UsU0FBQVEseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVYsd0JBQUFjLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxvQkFBQUEsR0FBQSx3QkFBQUEsR0FBQSw0QkFBQUUsT0FBQSxFQUFBRixHQUFBLFVBQUFHLEtBQUEsR0FBQVIsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBTyxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBSixHQUFBLFlBQUFHLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTCxHQUFBLFNBQUFNLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsR0FBQSxJQUFBWCxHQUFBLFFBQUFXLEdBQUEsa0JBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWQsR0FBQSxFQUFBVyxH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