@cdktn/hcl2cdk 0.24.0-pre.3 → 0.24.0-pre.30

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.
package/build/index.js CHANGED
@@ -59,7 +59,7 @@ async function getParsedHcl(hcl) {
59
59
  }
60
60
  catch (err) {
61
61
  utils_1.logger.error(`Failed to parse HCL: ${err}`);
62
- throw new Error(`Error: Could not parse HCL, this means either that the HCL passed is invalid or that you found a bug. If the HCL seems valid, please file a bug under https://cdk.tf/bugs/new/convert`);
62
+ throw new Error(`Error: Could not parse HCL, this means either that the HCL passed is invalid or that you found a bug. If the HCL seems valid, please file a bug under https://github.com/open-constructs/cdk-terrain/issues/new?assignees=&labels=bug%2C+new%2C+feature%2Fconvert&template=bug-report.yml&title=`);
63
63
  }
64
64
  // Ensure the JSON representation matches the expected structure
65
65
  let plan;
@@ -67,7 +67,7 @@ async function getParsedHcl(hcl) {
67
67
  plan = schema_1.schema.parse(json);
68
68
  }
69
69
  catch (err) {
70
- throw new Error(`Error: HCL-JSON does not conform to schema. This is not expected, please file a bug under https://cdk.tf/bugs/new/convert
70
+ throw new Error(`Error: HCL-JSON does not conform to schema. This is not expected, please file a bug under https://github.com/open-constructs/cdk-terrain/issues/new?assignees=&labels=bug%2C+new%2C+feature%2Fconvert&template=bug-report.yml&title=
71
71
  Please include this information:
72
72
  ${JSON.stringify(err.errors)}`);
73
73
  }
@@ -224,7 +224,7 @@ async function convertToTypescript(hcl, providerSchema, codeContainer) {
224
224
  utils_1.logger.debug(`Found these modules: ${JSON.stringify(moduleRequirements, null, 2)}`);
225
225
  if (Object.keys(plan.variable || {}).length > 0 && expressions.length > 0) {
226
226
  expressions[0] = t.addComment(expressions[0], "leading", `Terraform Variables are not always the best fit for getting inputs in the context of Terraform CDK.
227
- You can read more about this at https://cdk.tf/variables`);
227
+ You can read more about this at https://cdktn.io/docs/concepts/variables-and-outputs#input-variables`);
228
228
  }
229
229
  const providerRequirements = (0, provider_1.getProviderRequirements)(plan);
230
230
  utils_1.logger.debug(`Found these provider requirements: ${JSON.stringify(providerRequirements, null, 2)}`);
@@ -361,4 +361,4 @@ async function convertProject(combinedHcl, { language, providerSchema }) {
361
361
  };
362
362
  }
363
363
  exports.convertProject = convertProject;
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDhDQUF3QztBQUN4QyxrRUFJbUM7QUFna0IxQixpR0Fua0JQLHFDQUFnQixPQW1rQk87QUE5akJ6QixnREFBa0M7QUFDbEMsd0RBQWdDO0FBQ2hDLDJDQUE2QjtBQUM3QiwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDJDQUEyQztBQUMzQyxzREFBd0M7QUFHeEMscUNBQWtDO0FBQ2xDLDZDQUFrRDtBQUNsRCw2Q0Flc0I7QUFFdEIsMkNBS3FCO0FBQ3JCLHlDQUFxRDtBQUNyRCxtQ0FBaUM7QUFFakMsNkNBQXdEO0FBeWhCN0IseUdBemhCbEIscUNBQXdCLE9BeWhCa0I7QUF4aEJuRCx5RUFLb0M7QUFFcEMsMkNBQTRDO0FBRS9CLFFBQUEsV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBVztJQUM1QyxjQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLHlDQUF5QztJQUN6QyxJQUFJLElBQTZCLENBQUM7SUFDbEMsSUFBSSxDQUFDO1FBQ0gsSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBSyxFQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYix1TEFBdUwsQ0FDeEwsQ0FBQztJQUNKLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxJQUE0QixDQUFDO0lBQ2pDLElBQUksQ0FBQztRQUNILElBQUksR0FBRyxlQUFNLENBQUMs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LEVBQUU7WUFDdkMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDekMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBakNELHdDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7XG4gIGlzUmVnaXN0cnlNb2R1bGUsXG4gIFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yLFxuICBDb2RlTWFrZXIsXG59IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItZ2VuZXJhdG9yXCI7XG5cbmltcG9ydCAqIGFzIHQgZnJvbSBcIkBiYWJlbC90eXBlc1wiO1xuaW1wb3J0IHByZXR0aWVyIGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tIFwiZ2xvYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcbmltcG9ydCAqIGFzIHJvc2V0dGEgZnJvbSBcImpzaWktcm9zZXR0YVwiO1xuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgZmluZFVzZWRSZWZlcmVuY2VzIH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHtcbiAgYmFja2VuZFRvRXhwcmVzc2lvbixcbiAgZ2VuLFxuICBsb2NhbCxcbiAgbW9kdWxlSW1wb3J0cyxcbiAgbW9kdWxlcyxcbiAgb3V0cHV0LFxuICBwcm92aWRlcixcbiAgcmVzb3VyY2UsXG4gIHZhcmlhYmxlLFxuICB3cmFwQ29kZUluQ29uc3RydWN0b3IsXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIsXG4gIGJ1aWxkSW1wb3J0cyxcbiAgZ2VuZXJhdGVDb25maWdUeXBlLFxuICBpbXBvcnRzLFxufSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLCBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZm9yRWFjaFByb3ZpZGVyLFxuICBmb3JFYWNoR2xvYmFsLFxuICBmb3JFYWNoTmFtZXNwYWNlZCxcbiAgcmVzb3VyY2VTdGF0cyxcbn0gZnJvbSBcIi4vaXRlcmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRQcm92aWRlclJlcXVpcmVtZW50cyB9IGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgRlFQTiB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCI7XG5pbXBvcnQgeyBhdHRyaWJ1dGVOYW1lVG9DZGt0Zk5hbWUgfSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQge1xuICByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgcmVwbGFjZUdvSW1wb3J0cyxcbiAgcmVwbGFjZUphdmFJbXBvcnRzLFxuICByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbn0gZnJvbSBcIi4vanNpaS1yb3NldHRhLXdvcmthcm91bmRzXCI7XG5pbXBvcnQgeyBQcm92aWRlclNjaGVtYSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZm9yRWFjaEltcG9ydCB9IGZyb20gXCIuL2l0ZXJhdGlvblwiO1xuXG5leHBvcnQgY29uc3QgQ09ERV9NQVJLRVIgPSBcIi8vIGRlZmluZSByZXNvdXJjZXMgaGVyZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkSGNsKGhjbDogc3RyaW5nKSB7XG4gIGxvZ2dlci5kZWJ1ZyhgUGFyc2luZyBIQ0w6ICR7aGNsfWApO1xuICAvLyBHZXQgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIEhDTFxuICBsZXQganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHRyeSB7XG4gICAganNvbiA9IGF3YWl0IHBhcnNlKFwidGVycmFmb3JtLnRmXCIsIGhjbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIEhDTDogJHtlcnJ9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9yOiBDb3VsZCBub3QgcGFyc2UgSENMLCB0aGlzIG1lYW5zIGVpdGhlciB0aGF0IHRoZSBIQ0wgcGFzc2VkIGlzIGludmFsaWQgb3IgdGhhdCB5b3UgZm91bmQgYSBidWcuIElmIHRoZSBIQ0wgc2VlbXMgdmFsaWQsIHBsZWFzZSBmaWxlIGEgYnVnIHVuZGVyIGh0dHBzOi8vY2RrLnRmL2J1Z3MvbmV3L2NvbnZlcnRgLFxuICAgICk7XG4gIH1cblxuICAvLyBFbnN1cmUgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgc3RydWN0dXJlXG4gIGxldCBwbGFuOiB6LmluZmVyPHR5cGVvZiBzY2hlbWE+O1xuICB0cnkge1xuICAgIHBsYW4gPSBzY2hlbWEucGFyc2UoanNvbik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3I6IEhDTC1KU09OIGRvZXMgbm90IGNvbmZvcm0gdG8gc2NoZW1hLiBUaGlzIGlzIG5vdCBleHBlY3RlZCwgcGxlYXNlIGZpbGUgYSBidWcgdW5kZXIgaHR0cHM6Ly9jZGsudGYvYnVncy9uZXcvY29udmVydFxuUGxlYXNlIGluY2x1ZGUgdGhpcyBpbmZvcm1hdGlvbjpcbiR7SlNPTi5zdHJpbmdpZnkoKGVyciBhcyB6LlpvZEVycm9yKS5lcnJvcnMpfWApO1xuICB9XG5cbiAgcmV0dXJuIHBsYW47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZVByb3ZpZGVyUmVxdWlyZW1lbnRzKGhjbDogc3RyaW5nKSB7XG4gIGxvZ2dlci5kZWJ1ZyhcIlBhcnNpbmcgcHJvdmlkZXIgcmVxdWlyZW1lbnRzXCIpO1xuICBjb25zdCBwbGFuID0gYXdhaXQgZ2V0UGFyc2VkSGNsKGhjbCk7XG4gIHJldHVybiBnZXRQcm92aWRlclJlcXVpcmVtZW50cyhwbGFuKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUb1R5cGVzY3JpcHQoXG4gIGhjbDogc3RyaW5nLFxuICBwcm92aWRlclNjaGVtYTogUHJvdmlkZXJTY2hlbWEsXG4gIGNvZGVDb250YWluZXI6IHN0cmluZyxcbikge1xuICBsb2dnZXIuZGVidWcoXCJDb252ZXJ0aW5nIHRvIHR5cGVzY3JpcHRcIik7XG4gIGNvbnN0IHBsYW4gPSBhd2FpdCBnZXRQYXJzZWRIY2woaGNsKTtcblxuICAvLyBFYWNoIGtleSBpbiB0aGUgc2NvcGUgbmVlZHMgdG8gYmUgdW5pcXVlLCB0aGVyZWZvcmUgd2Ugc2F2ZSB0aGVtIGluIGEgc2V0XG4gIC8vIEVhY2ggdmFyaWFibGUgbmVlZHMgdG8gYmUgdW5pcXVlIGFzIHdlbGwsIHdlIHNhdmUgdGhlbSBpbiBhIHJlY29yZCBzbyB3ZSBjYW4gaWRlbnRpZnkgaWYgdHdvIHZhcmlhYmxlcyBhcmUgdGhlIHNhbWVcbiAgY29uc3Qgc2NvcGU6IFByb2dyYW1TY29wZSA9IHtcbiAgICBwcm92aWRlclNjaGVtYSxcbiAgICBwcm92aWRlckdlbmVyYXRvcjogT2JqZWN0LmtleXMoXG4gICAgICBwcm92aWRlclNjaGVtYS5wcm92aWRlcl9zY2hlbWFzIHx8IHt9LFxuICAgICkucmVkdWNlKChjYXJyeSwgZnFwbikgPT4ge1xuICAgICAgY29uc3QgcHJvdmlkZXJHZW5lcmF0b3IgPSBuZXcgVGVycmFmb3JtUHJvdmlkZXJHZW5lcmF0b3IoXG4gICAgICAgIG5ldyBDb2RlTWFrZXIoKSxcbiAgICAgICAgcHJvdmlkZXJTY2hlbWEsXG4gICAgICApO1xuICAgICAgcHJvdmlkZXJHZW5lcmF0b3IuYnVpbGRSZXNvdXJjZU1vZGVscyhmcXBuIGFzIEZRUE4pOyAvLyBjYW4ndCB1c2UgdGhhdCB0eXBlIG9uIHRoZSBrZXlzIHlldCwgc2luY2Ugd2UgYXJlIG5vdCBvbiBUUyA+PTQuNCB5ZXQgOnNhZGNhdDpcbiAgICAgIHJldHVybiB7IC4uLmNhcnJ5LCBbZnFwbl06IHByb3ZpZGVyR2VuZXJhdG9yIH07XG4gICAgfSwge30pLFxuICAgIGNvbnN0cnVjdHM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgIHZhcmlhYmxlczoge30sXG4gICAgaGFzVG9rZW5CYXNlZFR5cGVDb2VyY2lvbjogZmFsc2UsXG4gICAgbm9kZUlkczogW10sXG4gICAgaW1wb3J0YWJsZXM6IFtdLFxuICAgIHRvcExldmVsQ29uZmlnOiB7fSxcbiAgfTtcblxuICBjb25zdCBncmFwaCA9IG5ldyBEaXJlY3RlZEdyYXBoPHtcbiAgICBjb2RlOiAoXG4gICAgICBnOiBEaXJlY3RlZEdyYXBoPGFueT4sXG4gICAgKSA9PiBQcm9taXNlPEFycmF5PHQuU3RhdGVtZW50IHwgdC5WYXJpYWJsZURlY2xhcmF0aW9uPj47XG4gIH0+KCk7XG5cbiAgLy8gR2V0IGFsbCBpdGVtcyBpbiB0aGUgSlNPTiBhcyBhIG1hcCBvZiBpZCB0byBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyB0aGUgQVNUXG4gIC8vIFdlIHdpbGwgdXNlIHRoaXMgdG8gY29uc3RydWN0IHRoZSBub2RlcyBmb3IgYSBkZXBlbmRlbmN5IGdyYXBoXG4gIC8vIFdlIG5lZWQgdG8gdXNlIGEgZnVuY3Rpb24gaGVyZSBiZWNhdXNlIHRoZSBzYW1lIG5vZGUgaGFzIGRpZmZlcmVudCByZXByZXNlbnRhdGlvbiBiYXNlZCBvbiBpZiBpdCdzIHJlZmVyZW5jZWQgYnkgYW5vdGhlciBvbmVcbiAgY29uc3Qgbm9kZU1hcDogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICBjb2RlOiAoXG4gICAgICAgIGc6IHR5cGVvZiBncmFwaCxcbiAgICAgICkgPT4gUHJvbWlzZTxBcnJheTx0LlN0YXRlbWVudCB8IHQuVmFyaWFibGVEZWNsYXJhdGlvbj4+O1xuICAgICAgdmFsdWU6IHVua25vd247XG4gICAgfVxuICA+ID0ge1xuICAgIC4uLmZvckVhY2hQcm92aWRlcihzY29wZSwgcGxhbi5wcm92aWRlciwgcHJvdmlkZXIpLFxuICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwidmFyXCIsIHBsYW4udmFyaWFibGUsIHZhcmlhYmxlKSxcbiAgICAvLyBsb2NhbHMgYXJlIGEgc3BlY2lhbCBjYXNlXG4gICAgLi4uZm9yRWFjaEdsb2JhbChcbiAgICAgIHNjb3BlLFxuICAgICAgXCJsb2NhbFwiLFxuICAgICAgQXJyYXkuaXNBcnJheShwbGFuLmxvY2FscylcbiAgICAgICAgPyBwbGFuLmxvY2Fscy5yZWR1Y2UoKGNhcnJ5LCBsb2NhbHMpID0+ICh7IC4uLmNhcnJ5LCAuLi5sb2NhbHMgfSksIHt9KVxuICAgICAgICA6IHt9LFxuICAgICAgbG9jYWwsXG4gICAgKSxcbiAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcIm91dFwiLCBwbGFuLm91dHB1dCwgb3V0cHV0KSxcbiAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcIm1vZHVsZVwiLCBwbGFuLm1vZHVsZSwgbW9kdWxlcyksXG4gICAgLi4uZm9yRWFjaEltcG9ydChzY29wZSwgXCJpbXBvcnRcIiwgcGxhbi5pbXBvcnQsIGltcG9ydHMpLFxuICAgIC4uLmZvckVhY2hOYW1lc3BhY2VkKHNjb3BlLCBwbGFuLnJlc291cmNlLCByZXNvdXJjZSksXG4gICAgLi4uZm9yRWFjaE5hbWVzcGFjZWQoc2NvcGUsIHBsYW4uZGF0YSwgcmVzb3VyY2UsIFwiZGF0YVwiKSxcbiAgfTtcblxuICAvLyBBZGQgYWxsIG5vZGVzIHRvIHRoZSBkZXBlbmRlbmN5IGdyYXBoIHNvIHdlIGNhbiBkZXRlY3QgaWYgYW4gZWRnZSBpcyBhZGRlZCBmb3IgYW4gdW5rbm93biBsaW5rXG4gIE9iamVjdC5lbnRyaWVzKG5vZGVNYXApLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQWRkaW5nIG5vZGUgJyR7a2V5fScgdG8gZ3JhcGhgKTtcbiAgICBncmFwaC5hZGROb2RlKGtleSwgdmFsdWUpO1xuICB9KTtcblxuICAvLyBGaW5kaW5nIHJlZmVyZW5jZXMgYmVjb21lcyBlYXNpZXIgb2YgdGhlIHRvIGJlIHJlZmVyZW5jZWQgaWRzIGFyZSBhbHJlYWR5IGtub3duXG4gIGNvbnN0IG5vZGVJZHMgPSBPYmplY3Qua2V5cyhub2RlTWFwKTtcbiAgc2NvcGUubm9kZUlkcyA9IG5vZGVJZHM7XG4gIGFzeW5jIGZ1bmN0aW9uIGFkZEVkZ2VzKGlkOiBzdHJpbmcsIHZhbHVlOiBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrKSB7XG4gICAgKGF3YWl0IGZpbmRVc2VkUmVmZXJlbmNlcyhub2RlSWRzLCB2YWx1ZSkpLmZvckVhY2goKHJlZikgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZ3JhcGguaGFzRGlyZWN0ZWRFZGdlKHJlZi5yZWZlcmVuY2VlLmlkLCBpZCkgJiZcbiAgICAgICAgZ3JhcGguaGFzTm9kZShyZWYucmVmZXJlbmNlZS5pZCkgLy8gaW4gY2FzZSB0aGUgcmVmZXJlbmNlZSBpcyBhIGR5bmFtaWMgdmFyaWFibGVcbiAgICAgICkge1xuICAgICAgICBpZiAoIWdyYXBoLmhhc05vZGUoaWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIGV4cGVjdGVkIHRvIGxpbmsgZnJvbSAke1xuICAgICAgICAgICAgICByZWYucmVmZXJlbmNlZS5pZFxuICAgICAgICAgICAgfSB0byAke2lkfSBidXQgJHtpZH0gZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICBUaGVzZSBub2RlcyBleGlzdDogJHtncmFwaC5ub2RlcygpLmpvaW4oXCJcXG5cIil9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGdyYXBoIHNob3VsZCBoYXZlIG5vIHNlbGYtcmVmZXJlbmNlc1xuICAgICAgICBpZiAoaWQgPT09IHJlZi5yZWZlcmVuY2VlLmlkKSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKGBTa2lwcGluZyBzZWxmLXJlZmVyZW5jZSBmb3IgJHtpZH1gKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsb2dnZXIuZGVidWcoYEFkZGluZyBlZGdlIGZyb20gJHtyZWYucmVmZXJlbmNlZS5pZH0gdG8gJHtpZH1gKTtcbiAgICAgICAgZ3JhcGguYWRkRGlyZWN0ZWRFZGdlKHJlZi5yZWZlcmVuY2VlLmlkLCBpZCwgeyByZWYgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBXZSByZWN1cnNpdmVseSBpbnNwZWN0IGVhY2ggcmVzb3VyY2UgdmFsdWUgdG8gZmluZCByZWZlcmVuY2VzIHRvIG90aGVyIHZhbHVlc1xuICAvLyBXZSBhZGQgdGhlc2UgdG8gYSBkZXBlbmRlbmN5IGdyYXBoIHNvIHRoYXQgdGhlIHByb2dyYW1taW5nIGNvZGUgaGFzIHRoZSByaWdodCBvcmRlclxuICBhc3luYyBmdW5jdGlvbiBhZGRHbG9iYWxFZGdlcyhcbiAgICBfc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBhZGRQcm92aWRlckVkZ2VzKFxuICAgIF9zY29wZTogUHJvZ3JhbVNjb3BlLFxuICAgIF9rZXk6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nLFxuICAgIHZhbHVlOiBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLFxuICApIHtcbiAgICBhd2FpdCBhZGRFZGdlcyhpZCwgdmFsdWUpO1xuICB9XG4gIGFzeW5jIGZ1bmN0aW9uIGFkZE5hbWVzcGFjZWRFZGdlcyhcbiAgICBfc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBfdHlwZTogc3RyaW5nLFxuICAgIF9rZXk6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nLFxuICAgIHZhbHVlOiBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLFxuICApIHtcbiAgICBhd2FpdCBhZGRFZGdlcyhpZCwgdmFsdWUpO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgT2JqZWN0LnZhbHVlcyh7XG4gICAgICAuLi5mb3JFYWNoUHJvdmlkZXIoc2NvcGUsIHBsYW4ucHJvdmlkZXIsIGFkZFByb3ZpZGVyRWRnZXMpLFxuICAgICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJ2YXJcIiwgcGxhbi52YXJpYWJsZSwgYWRkR2xvYmFsRWRnZXMpLFxuICAgICAgLy8gbG9jYWxzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgICAgLi4uZm9yRWFjaEdsb2JhbChcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIFwibG9jYWxcIixcbiAgICAgICAgQXJyYXkuaXNBcnJheShwbGFuLmxvY2FscylcbiAgICAgICAgICA/IHBsYW4ubG9jYWxzLnJlZHVjZSgoY2FycnksIGxvY2FscykgPT4gKHsgLi4uY2FycnksIC4uLmxvY2FscyB9KSwge30pXG4gICAgICAgICAgOiB7fSxcbiAgICAgICAgYWRkR2xvYmFsRWRnZXMsXG4gICAgICApLFxuICAgICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJvdXRcIiwgcGxhbi5vdXRwdXQsIGFkZEdsb2JhbEVkZ2VzKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwibW9kdWxlXCIsIHBsYW4ubW9kdWxlLCBhZGRHbG9iYWxFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5yZXNvdXJjZSwgYWRkTmFtZXNwYWNlZEVkZ2VzKSxcbiAgICAgIC4uLmZvckVhY2hOYW1lc3BhY2VkKHNjb3BlLCBwbGFuLmRhdGEsIGFkZE5hbWVzcGFjZWRFZGdlcywgXCJkYXRhXCIpLFxuICAgIH0pLm1hcCgoeyBjb2RlOiBhZGRFZGdlc1RvR3JhcGggfSkgPT4gYWRkRWRnZXNUb0dyYXBoKGdyYXBoKSksXG4gICk7XG5cbiAgbG9nZ2VyLmRlYnVnKGBHcmFwaDogJHtKU09OLnN0cmluZ2lmeShncmFwaCwgbnVsbCwgMil9YCk7XG4gIGxvZ2dlci5kZWJ1ZyhgU3RhcnRpbmcgdG8gYXNzZW1ibGUgdGhlIHR5cGVzY3JpcHQgY29kZWApO1xuICAvLyBXZSB0cmF2ZXJzZSB0aGUgZGVwZW5kZW5jeSBncmFwaCB0byBnZXQgdGhlIHVub3JkZXJlZCBKU09OIG5vZGVzIGludG8gYW4gb3JkZXJlZCBhcnJheVxuICAvLyB3aGVyZSBubyBub2RlIGlzIHJlZmVyZW5jZWQgYmVmb3JlIGl0J3MgZGVmaW5lZFxuICAvLyBBcyB3ZSBjaGVjayB0aGF0IHRoZSBub2RlcyBvbiBib3RoIGVuZHMgb2YgYW4gZWRnZSBleGlzdCB3ZSBjYW4gYmUgc3VyZVxuICAvLyB0aGF0IG5vIGluZmluaXRlIGxvb3AgZXhpc3RzLCB0aGVyZSBjYW4gYmUgbm8gc3RyYXkgZGVwZW5kZW5jeSBvbiBhIG5vZGVcbiAgY29uc3QgZXhwcmVzc2lvbnM6IHQuU3RhdGVtZW50W10gPSBbXTtcbiAgbGV0IG5vZGVzVG9WaXNpdCA9IFsuLi5ub2RlSWRzXTtcbiAgLy8gVGhpcyBlbnN1cmVzIHdlIGRldGVjdCBjeWNsZXMgYW5kIGRvbid0IGVuZCB1cCBpbiBhbiBlbmRsZXNzIGxvb3BcbiAgbGV0IG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSAwO1xuICBkbyB7XG4gICAgbm9kZXNWaXNpdGVkVGhpc0l0ZXJhdGlvbiA9IDA7XG5cbiAgICAvLyBGaW5kIG5leHQgbm9kZXMgdG8gdmlzaXRcbiAgICBjb25zdCBub2RlRXhwcmVzc2lvbkdlbmVyYXRvcnMgPSBncmFwaC5tYXBOb2Rlcygobm9kZUlkLCB7IGNvZGUgfSkgPT4ge1xuICAgICAgaWYgKCFub2Rlc1RvVmlzaXQuaW5jbHVkZXMobm9kZUlkKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1bnJlc29sdmVkRGVwZW5kZW5jaWVzID0gZ3JhcGhcbiAgICAgICAgLmluTmVpZ2hib3JzKG5vZGVJZClcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gbm9kZXNUb1Zpc2l0LmluY2x1ZGVzKGl0ZW0pKTtcblxuICAgICAgaWYgKHVucmVzb2x2ZWREZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5vZGVzVG9WaXNpdCA9IG5vZGVzVG9WaXNpdC5maWx0ZXIoKGlkKSA9PiBub2RlSWQgIT09IGlkKTtcbiAgICAgICAgbm9kZXNWaXNpdGVkVGhpc0l0ZXJhdGlvbiA9IG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gKyAxO1xuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgVmlzaXRpbmcgbm9kZSAke25vZGVJZH1gKTtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pO1xuXG4gICAgLy8gR2VuZXJhdGUgdGhlIGNvZGUgZm9yIHRoZSBub2Rlc1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBub2RlRXhwcmVzc2lvbkdlbmVyYXRvcnMpIHtcbiAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgIGV4cHJlc3Npb25zLnB1c2goLi4uKGF3YWl0IGNvZGUoZ3JhcGgpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYCR7bm9kZXNUb1Zpc2l0Lmxlbmd0aH0gdW52aXNpdGVkIG5vZGVzOiAke25vZGVzVG9WaXNpdC5qb2luKFwiLCBcIil9YCxcbiAgICApO1xuICB9IHdoaWxlIChub2Rlc1RvVmlzaXQubGVuZ3RoID4gMCAmJiBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uICE9IDApO1xuXG4gIGlmIChub2Rlc1RvVmlzaXQubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUaGVyZSBhcmUgJHtcbiAgICAgICAgbm9kZXNUb1Zpc2l0Lmxlbmd0aFxuICAgICAgfSB0ZXJyYWZvcm0gZWxlbWVudHMgdGhhdCBjb3VsZCBub3QgYmUgdmlzaXRlZC5cbiAgICAgIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIGN5Y2xlIGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuICAgICAgVGhlc2Ugbm9kZXMgYXJlOiAke25vZGVzVG9WaXNpdC5qb2luKFwiLCBcIil9YCxcbiAgICApO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGAke25vZGVzVG9WaXNpdC5sZW5ndGh9IHVudmlzaXRlZCBub2RlczogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICk7XG5cbiAgY29uc3QgYmFja2VuZEV4cHJlc3Npb25zID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcGxhbi50ZXJyYWZvcm0/Lm1hcCgodGVycmFmb3JtKSA9PlxuICAgICAgICBiYWNrZW5kVG9FeHByZXNzaW9uKHNjb3BlLCB0ZXJyYWZvcm0uYmFja2VuZCksXG4gICAgICApIHx8IFtQcm9taXNlLnJlc29sdmUoW10pXSxcbiAgICApXG4gICkucmVkdWNlKChjYXJyeSwgaXRlbSkgPT4gWy4uLmNhcnJ5LCAuLi5pdGVtXSwgW10pO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgVXNpbmcgdGhlc2UgYmFja2VuZCBleHByZXNzaW9uczogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIGJhY2tlbmRFeHByZXNzaW9ucyxcbiAgICAgIG51bGwsXG4gICAgICAyLFxuICAgICl9YCxcbiAgKTtcblxuICAvLyBXZSBjb2xsZWN0IGFsbCBtb2R1bGUgc291cmNlc1xuICBjb25zdCBtb2R1bGVSZXF1aXJlbWVudHMgPSBbXG4gICAgLi4ubmV3IFNldChcbiAgICAgIE9iamVjdC52YWx1ZXMocGxhbi5tb2R1bGUgfHwge30pLnJlZHVjZShcbiAgICAgICAgKGNhcnJ5LCBtb2R1bGVCbG9jaykgPT4gW1xuICAgICAgICAgIC4uLmNhcnJ5LFxuICAgICAgICAgIC4uLm1vZHVsZUJsb2NrLnJlZHVjZShcbiAgICAgICAgICAgIChhcnIsIHsgc291cmNlLCB2ZXJzaW9uIH0pID0+IFtcbiAgICAgICAgICAgICAgLi4uYXJyLFxuICAgICAgICAgICAgICB2ZXJzaW9uID8gYCR7c291cmNlfUAke3ZlcnNpb259YCA6IHNvdXJjZSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICAgICkgfHwgW10sXG4gICAgKSxcbiAgXTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYEZvdW5kIHRoZXNlIG1vZHVsZXM6ICR7SlNPTi5zdHJpbmdpZnkobW9kdWxlUmVxdWlyZW1lbnRzLCBudWxsLCAyKX1gLFxuICApO1xuXG4gIGlmIChPYmplY3Qua2V5cyhwbGFuLnZhcmlhYmxlIHx8IHt9KS5sZW5ndGggPiAwICYmIGV4cHJlc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICBleHByZXNzaW9uc1swXSA9IHQuYWRkQ29tbWVudChcbiAgICAgIGV4cHJlc3Npb25zWzBdLFxuICAgICAgXCJsZWFkaW5nXCIsXG4gICAgICBgVGVycmFmb3JtIFZhcmlhYmxlcyBhcmUgbm90IGFsd2F5cyB0aGUgYmVzdCBmaXQgZm9yIGdldHRpbmcgaW5wdXRzIGluIHRoZSBjb250ZXh0IG9mIFRlcnJhZm9ybSBDREsuXG5Zb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGlzIGF0IGh0dHBzOi8vY2RrLnRmL3ZhcmlhYmxlc2AsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyUmVxdWlyZW1lbnRzID0gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgRm91bmQgdGhlc2UgcHJvdmlkZXIgcmVxdWlyZW1lbnRzOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgcHJvdmlkZXJSZXF1aXJlbWVudHMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgYWRkIGEgY29tbWVudCBpZiB0aGVyZSBhcmUgcHJvdmlkZXJzIHdpdGggbWlzc2luZyBzY2hlbWEgaW5mb3JtYXRpb25cbiAgY29uc3QgcHJvdmlkZXJzTGFja2luZ1NjaGVtYSA9IE9iamVjdC5rZXlzKHByb3ZpZGVyUmVxdWlyZW1lbnRzKS5maWx0ZXIoXG4gICAgKHByb3ZpZGVyTmFtZSkgPT5cbiAgICAgIHByb3ZpZGVyTmFtZSAhPT0gXCJ0ZXJyYWZvcm1cIiAmJlxuICAgICAgIU9iamVjdC5rZXlzKHByb3ZpZGVyU2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pLnNvbWUoKHNjaGVtYU5hbWUpID0+XG4gICAgICAgIHNjaGVtYU5hbWUuZW5kc1dpdGgocHJvdmlkZXJOYW1lKSxcbiAgICAgICksXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtcbiAgICAgIHByb3ZpZGVyc0xhY2tpbmdTY2hlbWEubGVuZ3RoXG4gICAgfSBwcm92aWRlcnMgbGFjayBzY2hlbWEgaW5mb3JtYXRpb246ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFwiLCBcIil9YCxcbiAgKTtcblxuICBpZiAocHJvdmlkZXJzTGFja2luZ1NjaGVtYS5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRoZSBmb2xsb3dpbmcgcHJvdmlkZXJzIGFyZSBtaXNzaW5nIHNjaGVtYSBpbmZvcm1hdGlvbiBhbmQgbWlnaHQgbmVlZCBtYW51YWwgYWRqdXN0bWVudHMgdG8gc3ludGhlc2l6ZSBjb3JyZWN0bHk6ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFxuICAgICAgICBcIiwgXCIsXG4gICAgICApfS5cbkZvciBhIG1vcmUgcHJlY2lzZSBjb252ZXJzaW9uIHBsZWFzZSB1c2UgdGhlIC0tcHJvdmlkZXIgZmxhZyBpbiBjb252ZXJ0LmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFsd2F5cyBhZGQgY29uc3RydWN0c1xuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkNvbnN0cnVjdFwiLFxuICAgIHByb3ZpZGVyOiBcImNvbnN0cnVjdHNcIixcbiAgfSk7XG5cbiAgaWYgKHNjb3BlLmhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb24pIHtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIGNvbnN0cnVjdE5hbWU6IFwiVG9rZW5cIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgc3BlY2lmaWMgaW1wb3J0IGZvciBjb2RlQ29udGFpbmVyXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIoc2NvcGUsIGNvZGVDb250YWluZXIpO1xuICBjb25zdCBjb25zdHJ1Y3RJbXBvcnRzID0gYnVpbGRJbXBvcnRzKHNjb3BlLmltcG9ydGFibGVzKTtcblxuICBjb25zdCBjb2RlID0gWy4uLihiYWNrZW5kRXhwcmVzc2lvbnMgfHwgW10pLCAuLi5leHByZXNzaW9uc107XG4gIGNvbnN0IGNvbmZpZ1R5cGVOYW1lID1cbiAgICBPYmplY3Qua2V5cyhzY29wZS50b3BMZXZlbENvbmZpZykubGVuZ3RoID4gMCA/IFwiTXlDb25maWdcIiA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBjbGFzc0NvbmZpZyA9IGNvbmZpZ1R5cGVOYW1lXG4gICAgPyBbZ2VuZXJhdGVDb25maWdUeXBlKGNvbmZpZ1R5cGVOYW1lLCBzY29wZS50b3BMZXZlbENvbmZpZyldXG4gICAgOiBbXTtcblxuICAvLyBXZSBzcGxpdCB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgc28gdGhhdCB1c2VycyBjYW4gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB3aGF0IHRvIGluc2VydCB3aGVyZVxuICByZXR1cm4ge1xuICAgIC8vIFRPRE86IFJlbW92ZSBpbXBvcnRzIGFuZCBjb2RlIGJlY2F1c2Ugcm9zZXR0YSB3b24ndCBiZSBhYmxlIHRvIHRyYW5zbGF0ZSB0aGVtXG4gICAgYWxsOiBhd2FpdCBnZW4oW1xuICAgICAgLi4uY29uc3RydWN0SW1wb3J0cyxcbiAgICAgIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpLFxuICAgICAgLi4uY2xhc3NDb25maWcsXG4gICAgICB3cmFwQ29kZUluQ29uc3RydWN0b3IoXG4gICAgICAgIGNvZGVDb250YWluZXIsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIFwiTXlDb252ZXJ0ZWRDb2RlXCIsXG4gICAgICAgIGNvbmZpZ1R5cGVOYW1lLFxuICAgICAgKSxcbiAgICBdKSxcbiAgICBpbXBvcnRzOiBhd2FpdCBnZW4oWy4uLmNvbnN0cnVjdEltcG9ydHMsIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpXSksXG4gICAgY29kZTogYXdhaXQgZ2VuKGNvZGUpLFxuICAgIHByb3ZpZGVyczogT2JqZWN0LmVudHJpZXMocHJvdmlkZXJSZXF1aXJlbWVudHMpLm1hcCgoW3NvdXJjZSwgdmVyc2lvbl0pID0+XG4gICAgICB2ZXJzaW9uID09PSBcIipcIiA/IHNvdXJjZSA6IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAsXG4gICAgKSxcbiAgICBtb2R1bGVzOiBtb2R1bGVSZXF1aXJlbWVudHMsXG4gICAgLy8gV2UgdHJhY2sgc29tZSB1c2FnZSBkYXRhIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyB1c2VkXG4gICAgc3RhdHM6IHtcbiAgICAgIG51bWJlck9mTW9kdWxlczogbW9kdWxlUmVxdWlyZW1lbnRzLmxlbmd0aCxcbiAgICAgIG51bWJlck9mUHJvdmlkZXJzOiBPYmplY3Qua2V5cyhwcm92aWRlclJlcXVpcmVtZW50cykubGVuZ3RoLFxuICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZVN0YXRzKHBsYW4ucmVzb3VyY2UgfHwge30pLFxuICAgICAgZGF0YTogcmVzb3VyY2VTdGF0cyhwbGFuLmRhdGEgfHwge30pLFxuICAgICAgY29udmVydGVkTGluZXM6IGhjbC5zcGxpdChcIlxcblwiKS5sZW5ndGgsXG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBGaWxlID0geyBjb250ZW50czogc3RyaW5nOyBmaWxlTmFtZTogc3RyaW5nIH07XG5jb25zdCB0cmFuc2xhdG9ycyA9IHtcbiAgcHl0aG9uOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuUHl0aG9uVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbiAgfSxcbiAgamF2YToge1xuICAgIHZpc2l0b3I6ICgpID0+IG5ldyByb3NldHRhLkphdmFWaXNpdG9yKCksXG4gICAgcG9zdFRyYW5zbGF0aW9uTXV0YXRpb246IHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgfSxcbiAgY3NoYXJwOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuQ1NoYXJwVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgfSxcbiAgZ286IHtcbiAgICB2aXNpdG9yOiAoKSA9PiBuZXcgcm9zZXR0YS5Hb1Zpc2l0b3IoKSxcbiAgICBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbjogcmVwbGFjZUdvSW1wb3J0cyxcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIHRyYW5zbGF0b3JGb3JMYW5ndWFnZShsYW5ndWFnZToga2V5b2YgdHlwZW9mIHRyYW5zbGF0b3JzKSB7XG4gIHJldHVybiAoZmlsZTogRmlsZSwgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3I6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB7IHZpc2l0b3IsIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uIH0gPSB0cmFuc2xhdG9yc1tsYW5ndWFnZV07XG4gICAgY29uc3QgeyB0cmFuc2xhdGlvbiwgZGlhZ25vc3RpY3MgfSA9IHJvc2V0dGEudHJhbnNsYXRlVHlwZVNjcmlwdChcbiAgICAgIGZpbGUsXG4gICAgICB2aXNpdG9yKCksXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciA/IHsgaW5jbHVkZUNvbXBpbGVyRGlhZ25vc3RpY3M6IHRydWUgfSA6IHt9LFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciAmJlxuICAgICAgZGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnKSA9PiBkaWFnLmlzRXJyb3IpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQ291bGQgbm90IHRyYW5zbGF0ZSBUUyB0byAke2xhbmd1YWdlfTpcXG4ke2ZpbGUuY29udGVudHN9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgdHJhbnNsYXRlIFRTIHRvICR7bGFuZ3VhZ2V9OiAke2RpYWdub3N0aWNzXG4gICAgICAgICAgLm1hcCgoZGlhZykgPT4gZGlhZy5mb3JtYXR0ZWRNZXNzYWdlKVxuICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbih0cmFuc2xhdGlvbik7XG4gIH07XG59XG5cbnR5cGUgQ29udmVydE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2UgdG8gY29udmVydCB0b1xuICAgKi9cbiAgbGFuZ3VhZ2U6IGtleW9mIHR5cGVvZiB0cmFuc2xhdG9ycyB8IFwidHlwZXNjcmlwdFwiO1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVyIHNjaGVtYSB0byB1c2UgZm9yIGNvbnZlcnNpb25cbiAgICovXG4gIHByb3ZpZGVyU2NoZW1hOiBQcm92aWRlclNjaGVtYTtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGNsYXNzIHRvIGV4dGVuZCBmcm9tLiBEZWZhdWx0cyB0byBgY29uc3RydWN0cy5Db25zdHJ1Y3RgXG4gICAqL1xuICBjb2RlQ29udGFpbmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdHJhbnNsYXRpb24gZmFpbHNcbiAgICogRGVmYXVsdHMgdG8gZmFsc2VcbiAgICovXG4gIHRocm93T25UcmFuc2xhdGlvbkVycm9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KFxuICBoY2w6IHN0cmluZyxcbiAge1xuICAgIGxhbmd1YWdlLFxuICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgIHRocm93T25UcmFuc2xhdGlvbkVycm9yID0gZmFsc2UsXG4gICAgY29kZUNvbnRhaW5lciA9IFwiY2RrdG4uVGVycmFmb3JtU3RhY2tcIixcbiAgfTogQ29udmVydE9wdGlvbnMsXG4pIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBcInRlcnJhZm9ybS50ZlwiO1xuICBjb25zdCB0cmFuc2xhdGVyID1cbiAgICBsYW5ndWFnZSA9PT0gXCJ0eXBlc2NyaXB0XCJcbiAgICAgID8gKGZpbGU6IEZpbGUsIF90aHJvd09uVHJhbnNsYXRpb25FcnJvcjogYm9vbGVhbikgPT4gZmlsZS5jb250ZW50c1xuICAgICAgOiB0cmFuc2xhdG9yRm9yTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIGlmICghdHJhbnNsYXRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGxhbmd1YWdlIHVzZWQ6IFwiICsgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgY29uc3QgdHNDb2RlID0gYXdhaXQgY29udmVydFRvVHlwZXNjcmlwdChoY2wsIHByb3ZpZGVyU2NoZW1hLCBjb2RlQ29udGFpbmVyKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnRzQ29kZSxcbiAgICBhbGw6IHRyYW5zbGF0ZXIoXG4gICAgICB7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmFsbCB9LFxuICAgICAgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3IsXG4gICAgKSxcbiAgICBpbXBvcnRzOiB0cmFuc2xhdGVyKHsgZmlsZU5hbWUsIGNvbnRlbnRzOiB0c0NvZGUuaW1wb3J0cyB9LCBmYWxzZSksXG4gICAgY29kZTogdHJhbnNsYXRlcih7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmNvZGUgfSwgZmFsc2UpLFxuICAgIHN0YXRzOiB7IC4uLnRzQ29kZS5zdGF0cywgbGFuZ3VhZ2UgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlcnJhZm9ybUNvbmZpZ0Zyb21EaXIoaW1wb3J0UGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUoaW1wb3J0UGF0aCk7XG4gIGNvbnN0IGZpbGVDb250ZW50cyA9IGdsb2JcbiAgICAuc3luYyhcIi4vKi50ZlwiLCB7IGN3ZDogYWJzUGF0aCB9KVxuICAgIC5tYXAoKHApID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUoYWJzUGF0aCwgcCksIFwidXRmOFwiKSk7XG5cbiAgcmV0dXJuIGZpbGVDb250ZW50cy5qb2luKFwiXFxuXCIpO1xufVxuXG50eXBlIENka3RmSnNvbiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICB0ZXJyYWZvcm1Qcm92aWRlcnM6IGFueVtdO1xuICB0ZXJyYWZvcm1Nb2R1bGVzOiBhbnlbXTtcbn07XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udmVydFByb2plY3QoXG4gIGNvbWJpbmVkSGNsOiBzdHJpbmcsXG4gIHsgbGFuZ3VhZ2UsIHByb3ZpZGVyU2NoZW1hIH06IENvbnZlcnRPcHRpb25zLFxuKSB7XG4gIGlmIChsYW5ndWFnZSAhPT0gXCJ0eXBlc2NyaXB0XCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBsYW5ndWFnZSB1c2VkOiBcIiArIGxhbmd1YWdlKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbXBvcnRzLFxuICAgIGNvZGUsXG4gICAgcHJvdmlkZXJzLFxuICAgIG1vZHVsZXM6IHRmTW9kdWxlcyxcbiAgICBzdGF0cyxcbiAgfSA9IGF3YWl0IGNvbnZlcnQoY29tYmluZWRIY2wsIHtcbiAgICBsYW5ndWFnZSxcbiAgICBwcm92aWRlclNjaGVtYSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiAoaW5wdXRNYWluRmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpbXBvcnRNYWluRmlsZSA9IFtpbXBvcnRzLCBpbnB1dE1haW5GaWxlXS5qb2luKFwiXFxuXCIpO1xuICAgICAgY29uc3Qgb3V0cHV0TWFpbkZpbGUgPSBpbXBvcnRNYWluRmlsZS5yZXBsYWNlKENPREVfTUFSS0VSLCBjb2RlKTtcbiAgICAgIHJldHVybiBwcmV0dGllci5mb3JtYXQob3V0cHV0TWFpbkZpbGUsIHsgcGFyc2VyOiBcImJhYmVsXCIgfSk7XG4gICAgfSxcbiAgICBjZGt0Zkpzb246IChpbnB1dENka3RmSnNvbjogQ2RrdGZKc29uKSA9PiB7XG4gICAgICBjb25zdCBjZGt0Zkpzb24gPSB7IC4uLmlucHV0Q2RrdGZKc29uIH07XG4gICAgICBjZGt0Zkpzb24udGVycmFmb3JtUHJvdmlkZXJzID0gcHJvdmlkZXJzO1xuICAgICAgY2RrdGZKc29uLnRlcnJhZm9ybU1vZHVsZXMgPSB0Zk1vZHVsZXM7XG4gICAgICByZXR1cm4gY2RrdGZKc29uO1xuICAgIH0sXG4gICAgc3RhdHMsXG4gIH07XG59XG5cbmV4cG9ydCB7IGlzUmVnaXN0cnlNb2R1bGUsIGF0dHJpYnV0ZU5hbWVUb0Nka3RmTmFtZSB9O1xuIl19
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDhDQUF3QztBQUN4QyxrRUFJbUM7QUFna0IxQixpR0Fua0JQLHFDQUFnQixPQW1rQk87QUE5akJ6QixnREFBa0M7QUFDbEMsd0RBQWdDO0FBQ2hDLDJDQUE2QjtBQUM3QiwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDJDQUEyQztBQUMzQyxzREFBd0M7QUFHeEMscUNBQWtDO0FBQ2xDLDZDQUFrRDtBQUNsRCw2Q0Flc0I7QUFFdEIsMkNBS3FCO0FBQ3JCLHlDQUFxRDtBQUNyRCxtQ0FBaUM7QUFFakMsNkNBQXdEO0FBeWhCN0IseUdBemhCbEIscUNBQXdCLE9BeWhCa0I7QUF4aEJuRCx5RUFLb0M7QUFFcEMsMkNBQTRDO0FBRS9CLFFBQUEsV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBVztJQUM1QyxjQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLHlDQUF5QztJQUN6QyxJQUFJLElBQTZCLENBQUM7SUFDbEMsSUFBSSxDQUFDO1FBQ0gsSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBSyxFQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixrU0FBa1MsQ0FDblMsQ0FBQztJQUNKLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxJQUE0QixDQUFDO0lBQ2pDLElBQUksQ0FBQztRQUNILElBQUksR0FBRyxlQUFNLENBQUMs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LEVBQUU7WUFDdkMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDekMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDO0FBakNELHdDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7XG4gIGlzUmVnaXN0cnlNb2R1bGUsXG4gIFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yLFxuICBDb2RlTWFrZXIsXG59IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItZ2VuZXJhdG9yXCI7XG5cbmltcG9ydCAqIGFzIHQgZnJvbSBcIkBiYWJlbC90eXBlc1wiO1xuaW1wb3J0IHByZXR0aWVyIGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tIFwiZ2xvYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcImdyYXBob2xvZ3lcIjtcbmltcG9ydCAqIGFzIHJvc2V0dGEgZnJvbSBcImpzaWktcm9zZXR0YVwiO1xuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgZmluZFVzZWRSZWZlcmVuY2VzIH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHtcbiAgYmFja2VuZFRvRXhwcmVzc2lvbixcbiAgZ2VuLFxuICBsb2NhbCxcbiAgbW9kdWxlSW1wb3J0cyxcbiAgbW9kdWxlcyxcbiAgb3V0cHV0LFxuICBwcm92aWRlcixcbiAgcmVzb3VyY2UsXG4gIHZhcmlhYmxlLFxuICB3cmFwQ29kZUluQ29uc3RydWN0b3IsXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIsXG4gIGJ1aWxkSW1wb3J0cyxcbiAgZ2VuZXJhdGVDb25maWdUeXBlLFxuICBpbXBvcnRzLFxufSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLCBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZm9yRWFjaFByb3ZpZGVyLFxuICBmb3JFYWNoR2xvYmFsLFxuICBmb3JFYWNoTmFtZXNwYWNlZCxcbiAgcmVzb3VyY2VTdGF0cyxcbn0gZnJvbSBcIi4vaXRlcmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRQcm92aWRlclJlcXVpcmVtZW50cyB9IGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgRlFQTiB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCI7XG5pbXBvcnQgeyBhdHRyaWJ1dGVOYW1lVG9DZGt0Zk5hbWUgfSBmcm9tIFwiLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQge1xuICByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgcmVwbGFjZUdvSW1wb3J0cyxcbiAgcmVwbGFjZUphdmFJbXBvcnRzLFxuICByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbn0gZnJvbSBcIi4vanNpaS1yb3NldHRhLXdvcmthcm91bmRzXCI7XG5pbXBvcnQgeyBQcm92aWRlclNjaGVtYSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZm9yRWFjaEltcG9ydCB9IGZyb20gXCIuL2l0ZXJhdGlvblwiO1xuXG5leHBvcnQgY29uc3QgQ09ERV9NQVJLRVIgPSBcIi8vIGRlZmluZSByZXNvdXJjZXMgaGVyZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkSGNsKGhjbDogc3RyaW5nKSB7XG4gIGxvZ2dlci5kZWJ1ZyhgUGFyc2luZyBIQ0w6ICR7aGNsfWApO1xuICAvLyBHZXQgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIEhDTFxuICBsZXQganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHRyeSB7XG4gICAganNvbiA9IGF3YWl0IHBhcnNlKFwidGVycmFmb3JtLnRmXCIsIGhjbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIEhDTDogJHtlcnJ9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9yOiBDb3VsZCBub3QgcGFyc2UgSENMLCB0aGlzIG1lYW5zIGVpdGhlciB0aGF0IHRoZSBIQ0wgcGFzc2VkIGlzIGludmFsaWQgb3IgdGhhdCB5b3UgZm91bmQgYSBidWcuIElmIHRoZSBIQ0wgc2VlbXMgdmFsaWQsIHBsZWFzZSBmaWxlIGEgYnVnIHVuZGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4vaXNzdWVzL25ldz9hc3NpZ25lZXM9JmxhYmVscz1idWclMkMrbmV3JTJDK2ZlYXR1cmUlMkZjb252ZXJ0JnRlbXBsYXRlPWJ1Zy1yZXBvcnQueW1sJnRpdGxlPWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBtYXRjaGVzIHRoZSBleHBlY3RlZCBzdHJ1Y3R1cmVcbiAgbGV0IHBsYW46IHouaW5mZXI8dHlwZW9mIHNjaGVtYT47XG4gIHRyeSB7XG4gICAgcGxhbiA9IHNjaGVtYS5wYXJzZShqc29uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogSENMLUpTT04gZG9lcyBub3QgY29uZm9ybSB0byBzY2hlbWEuIFRoaXMgaXMgbm90IGV4cGVjdGVkLCBwbGVhc2UgZmlsZSBhIGJ1ZyB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1jb25zdHJ1Y3RzL2Nkay10ZXJyYWluL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9YnVnJTJDK25ldyUyQytmZWF0dXJlJTJGY29udmVydCZ0ZW1wbGF0ZT1idWctcmVwb3J0LnltbCZ0aXRsZT1cblBsZWFzZSBpbmNsdWRlIHRoaXMgaW5mb3JtYXRpb246XG4ke0pTT04uc3RyaW5naWZ5KChlcnIgYXMgei5ab2RFcnJvcikuZXJyb3JzKX1gKTtcbiAgfVxuXG4gIHJldHVybiBwbGFuO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQcm92aWRlclJlcXVpcmVtZW50cyhoY2w6IHN0cmluZykge1xuICBsb2dnZXIuZGVidWcoXCJQYXJzaW5nIHByb3ZpZGVyIHJlcXVpcmVtZW50c1wiKTtcbiAgY29uc3QgcGxhbiA9IGF3YWl0IGdldFBhcnNlZEhjbChoY2wpO1xuICByZXR1cm4gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0VG9UeXBlc2NyaXB0KFxuICBoY2w6IHN0cmluZyxcbiAgcHJvdmlkZXJTY2hlbWE6IFByb3ZpZGVyU2NoZW1hLFxuICBjb2RlQ29udGFpbmVyOiBzdHJpbmcsXG4pIHtcbiAgbG9nZ2VyLmRlYnVnKFwiQ29udmVydGluZyB0byB0eXBlc2NyaXB0XCIpO1xuICBjb25zdCBwbGFuID0gYXdhaXQgZ2V0UGFyc2VkSGNsKGhjbCk7XG5cbiAgLy8gRWFjaCBrZXkgaW4gdGhlIHNjb3BlIG5lZWRzIHRvIGJlIHVuaXF1ZSwgdGhlcmVmb3JlIHdlIHNhdmUgdGhlbSBpbiBhIHNldFxuICAvLyBFYWNoIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHVuaXF1ZSBhcyB3ZWxsLCB3ZSBzYXZlIHRoZW0gaW4gYSByZWNvcmQgc28gd2UgY2FuIGlkZW50aWZ5IGlmIHR3byB2YXJpYWJsZXMgYXJlIHRoZSBzYW1lXG4gIGNvbnN0IHNjb3BlOiBQcm9ncmFtU2NvcGUgPSB7XG4gICAgcHJvdmlkZXJTY2hlbWEsXG4gICAgcHJvdmlkZXJHZW5lcmF0b3I6IE9iamVjdC5rZXlzKFxuICAgICAgcHJvdmlkZXJTY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSxcbiAgICApLnJlZHVjZSgoY2FycnksIGZxcG4pID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyR2VuZXJhdG9yID0gbmV3IFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yKFxuICAgICAgICBuZXcgQ29kZU1ha2VyKCksXG4gICAgICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgICAgKTtcbiAgICAgIHByb3ZpZGVyR2VuZXJhdG9yLmJ1aWxkUmVzb3VyY2VNb2RlbHMoZnFwbiBhcyBGUVBOKTsgLy8gY2FuJ3QgdXNlIHRoYXQgdHlwZSBvbiB0aGUga2V5cyB5ZXQsIHNpbmNlIHdlIGFyZSBub3Qgb24gVFMgPj00LjQgeWV0IDpzYWRjYXQ6XG4gICAgICByZXR1cm4geyAuLi5jYXJyeSwgW2ZxcG5dOiBwcm92aWRlckdlbmVyYXRvciB9O1xuICAgIH0sIHt9KSxcbiAgICBjb25zdHJ1Y3RzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB2YXJpYWJsZXM6IHt9LFxuICAgIGhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb246IGZhbHNlLFxuICAgIG5vZGVJZHM6IFtdLFxuICAgIGltcG9ydGFibGVzOiBbXSxcbiAgICB0b3BMZXZlbENvbmZpZzoge30sXG4gIH07XG5cbiAgY29uc3QgZ3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaDx7XG4gICAgY29kZTogKFxuICAgICAgZzogRGlyZWN0ZWRHcmFwaDxhbnk+LFxuICAgICkgPT4gUHJvbWlzZTxBcnJheTx0LlN0YXRlbWVudCB8IHQuVmFyaWFibGVEZWNsYXJhdGlvbj4+O1xuICB9PigpO1xuXG4gIC8vIEdldCBhbGwgaXRlbXMgaW4gdGhlIEpTT04gYXMgYSBtYXAgb2YgaWQgdG8gZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIEFTVFxuICAvLyBXZSB3aWxsIHVzZSB0aGlzIHRvIGNvbnN0cnVjdCB0aGUgbm9kZXMgZm9yIGEgZGVwZW5kZW5jeSBncmFwaFxuICAvLyBXZSBuZWVkIHRvIHVzZSBhIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSB0aGUgc2FtZSBub2RlIGhhcyBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb24gYmFzZWQgb24gaWYgaXQncyByZWZlcmVuY2VkIGJ5IGFub3RoZXIgb25lXG4gIGNvbnN0IG5vZGVNYXA6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgY29kZTogKFxuICAgICAgICBnOiB0eXBlb2YgZ3JhcGgsXG4gICAgICApID0+IFByb21pc2U8QXJyYXk8dC5TdGF0ZW1lbnQgfCB0LlZhcmlhYmxlRGVjbGFyYXRpb24+PjtcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1cbiAgPiA9IHtcbiAgICAuLi5mb3JFYWNoUHJvdmlkZXIoc2NvcGUsIHBsYW4ucHJvdmlkZXIsIHByb3ZpZGVyKSxcbiAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcInZhclwiLCBwbGFuLnZhcmlhYmxlLCB2YXJpYWJsZSksXG4gICAgLy8gbG9jYWxzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgIC4uLmZvckVhY2hHbG9iYWwoXG4gICAgICBzY29wZSxcbiAgICAgIFwibG9jYWxcIixcbiAgICAgIEFycmF5LmlzQXJyYXkocGxhbi5sb2NhbHMpXG4gICAgICAgID8gcGxhbi5sb2NhbHMucmVkdWNlKChjYXJyeSwgbG9jYWxzKSA9PiAoeyAuLi5jYXJyeSwgLi4ubG9jYWxzIH0pLCB7fSlcbiAgICAgICAgOiB7fSxcbiAgICAgIGxvY2FsLFxuICAgICksXG4gICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJvdXRcIiwgcGxhbi5vdXRwdXQsIG91dHB1dCksXG4gICAgLi4uZm9yRWFjaEdsb2JhbChzY29wZSwgXCJtb2R1bGVcIiwgcGxhbi5tb2R1bGUsIG1vZHVsZXMpLFxuICAgIC4uLmZvckVhY2hJbXBvcnQoc2NvcGUsIFwiaW1wb3J0XCIsIHBsYW4uaW1wb3J0LCBpbXBvcnRzKSxcbiAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5yZXNvdXJjZSwgcmVzb3VyY2UpLFxuICAgIC4uLmZvckVhY2hOYW1lc3BhY2VkKHNjb3BlLCBwbGFuLmRhdGEsIHJlc291cmNlLCBcImRhdGFcIiksXG4gIH07XG5cbiAgLy8gQWRkIGFsbCBub2RlcyB0byB0aGUgZGVwZW5kZW5jeSBncmFwaCBzbyB3ZSBjYW4gZGV0ZWN0IGlmIGFuIGVkZ2UgaXMgYWRkZWQgZm9yIGFuIHVua25vd24gbGlua1xuICBPYmplY3QuZW50cmllcyhub2RlTWFwKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEFkZGluZyBub2RlICcke2tleX0nIHRvIGdyYXBoYCk7XG4gICAgZ3JhcGguYWRkTm9kZShrZXksIHZhbHVlKTtcbiAgfSk7XG5cbiAgLy8gRmluZGluZyByZWZlcmVuY2VzIGJlY29tZXMgZWFzaWVyIG9mIHRoZSB0byBiZSByZWZlcmVuY2VkIGlkcyBhcmUgYWxyZWFkeSBrbm93blxuICBjb25zdCBub2RlSWRzID0gT2JqZWN0LmtleXMobm9kZU1hcCk7XG4gIHNjb3BlLm5vZGVJZHMgPSBub2RlSWRzO1xuICBhc3luYyBmdW5jdGlvbiBhZGRFZGdlcyhpZDogc3RyaW5nLCB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jaykge1xuICAgIChhd2FpdCBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgdmFsdWUpKS5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWdyYXBoLmhhc0RpcmVjdGVkRWRnZShyZWYucmVmZXJlbmNlZS5pZCwgaWQpICYmXG4gICAgICAgIGdyYXBoLmhhc05vZGUocmVmLnJlZmVyZW5jZWUuaWQpIC8vIGluIGNhc2UgdGhlIHJlZmVyZW5jZWUgaXMgYSBkeW5hbWljIHZhcmlhYmxlXG4gICAgICApIHtcbiAgICAgICAgaWYgKCFncmFwaC5oYXNOb2RlKGlkKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgZGVwZW5kZW5jeSBncmFwaCBpcyBleHBlY3RlZCB0byBsaW5rIGZyb20gJHtcbiAgICAgICAgICAgICAgcmVmLnJlZmVyZW5jZWUuaWRcbiAgICAgICAgICAgIH0gdG8gJHtpZH0gYnV0ICR7aWR9IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgVGhlc2Ugbm9kZXMgZXhpc3Q6ICR7Z3JhcGgubm9kZXMoKS5qb2luKFwiXFxuXCIpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBncmFwaCBzaG91bGQgaGF2ZSBubyBzZWxmLXJlZmVyZW5jZXNcbiAgICAgICAgaWYgKGlkID09PSByZWYucmVmZXJlbmNlZS5pZCkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgU2tpcHBpbmcgc2VsZi1yZWZlcmVuY2UgZm9yICR7aWR9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBBZGRpbmcgZWRnZSBmcm9tICR7cmVmLnJlZmVyZW5jZWUuaWR9IHRvICR7aWR9YCk7XG4gICAgICAgIGdyYXBoLmFkZERpcmVjdGVkRWRnZShyZWYucmVmZXJlbmNlZS5pZCwgaWQsIHsgcmVmIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gV2UgcmVjdXJzaXZlbHkgaW5zcGVjdCBlYWNoIHJlc291cmNlIHZhbHVlIHRvIGZpbmQgcmVmZXJlbmNlcyB0byBvdGhlciB2YWx1ZXNcbiAgLy8gV2UgYWRkIHRoZXNlIHRvIGEgZGVwZW5kZW5jeSBncmFwaCBzbyB0aGF0IHRoZSBwcm9ncmFtbWluZyBjb2RlIGhhcyB0aGUgcmlnaHQgb3JkZXJcbiAgYXN5bmMgZnVuY3Rpb24gYWRkR2xvYmFsRWRnZXMoXG4gICAgX3Njb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgX2tleTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdmFsdWU6IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4gICkge1xuICAgIGF3YWl0IGFkZEVkZ2VzKGlkLCB2YWx1ZSk7XG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gYWRkUHJvdmlkZXJFZGdlcyhcbiAgICBfc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBhZGROYW1lc3BhY2VkRWRnZXMoXG4gICAgX3Njb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgX3R5cGU6IHN0cmluZyxcbiAgICBfa2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgKSB7XG4gICAgYXdhaXQgYWRkRWRnZXMoaWQsIHZhbHVlKTtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIE9iamVjdC52YWx1ZXMoe1xuICAgICAgLi4uZm9yRWFjaFByb3ZpZGVyKHNjb3BlLCBwbGFuLnByb3ZpZGVyLCBhZGRQcm92aWRlckVkZ2VzKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwidmFyXCIsIHBsYW4udmFyaWFibGUsIGFkZEdsb2JhbEVkZ2VzKSxcbiAgICAgIC8vIGxvY2FscyBhcmUgYSBzcGVjaWFsIGNhc2VcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBcImxvY2FsXCIsXG4gICAgICAgIEFycmF5LmlzQXJyYXkocGxhbi5sb2NhbHMpXG4gICAgICAgICAgPyBwbGFuLmxvY2Fscy5yZWR1Y2UoKGNhcnJ5LCBsb2NhbHMpID0+ICh7IC4uLmNhcnJ5LCAuLi5sb2NhbHMgfSksIHt9KVxuICAgICAgICAgIDoge30sXG4gICAgICAgIGFkZEdsb2JhbEVkZ2VzLFxuICAgICAgKSxcbiAgICAgIC4uLmZvckVhY2hHbG9iYWwoc2NvcGUsIFwib3V0XCIsIHBsYW4ub3V0cHV0LCBhZGRHbG9iYWxFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoR2xvYmFsKHNjb3BlLCBcIm1vZHVsZVwiLCBwbGFuLm1vZHVsZSwgYWRkR2xvYmFsRWRnZXMpLFxuICAgICAgLi4uZm9yRWFjaE5hbWVzcGFjZWQoc2NvcGUsIHBsYW4ucmVzb3VyY2UsIGFkZE5hbWVzcGFjZWRFZGdlcyksXG4gICAgICAuLi5mb3JFYWNoTmFtZXNwYWNlZChzY29wZSwgcGxhbi5kYXRhLCBhZGROYW1lc3BhY2VkRWRnZXMsIFwiZGF0YVwiKSxcbiAgICB9KS5tYXAoKHsgY29kZTogYWRkRWRnZXNUb0dyYXBoIH0pID0+IGFkZEVkZ2VzVG9HcmFwaChncmFwaCkpLFxuICApO1xuXG4gIGxvZ2dlci5kZWJ1ZyhgR3JhcGg6ICR7SlNPTi5zdHJpbmdpZnkoZ3JhcGgsIG51bGwsIDIpfWApO1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0aW5nIHRvIGFzc2VtYmxlIHRoZSB0eXBlc2NyaXB0IGNvZGVgKTtcbiAgLy8gV2UgdHJhdmVyc2UgdGhlIGRlcGVuZGVuY3kgZ3JhcGggdG8gZ2V0IHRoZSB1bm9yZGVyZWQgSlNPTiBub2RlcyBpbnRvIGFuIG9yZGVyZWQgYXJyYXlcbiAgLy8gd2hlcmUgbm8gbm9kZSBpcyByZWZlcmVuY2VkIGJlZm9yZSBpdCdzIGRlZmluZWRcbiAgLy8gQXMgd2UgY2hlY2sgdGhhdCB0aGUgbm9kZXMgb24gYm90aCBlbmRzIG9mIGFuIGVkZ2UgZXhpc3Qgd2UgY2FuIGJlIHN1cmVcbiAgLy8gdGhhdCBubyBpbmZpbml0ZSBsb29wIGV4aXN0cywgdGhlcmUgY2FuIGJlIG5vIHN0cmF5IGRlcGVuZGVuY3kgb24gYSBub2RlXG4gIGNvbnN0IGV4cHJlc3Npb25zOiB0LlN0YXRlbWVudFtdID0gW107XG4gIGxldCBub2Rlc1RvVmlzaXQgPSBbLi4ubm9kZUlkc107XG4gIC8vIFRoaXMgZW5zdXJlcyB3ZSBkZXRlY3QgY3ljbGVzIGFuZCBkb24ndCBlbmQgdXAgaW4gYW4gZW5kbGVzcyBsb29wXG4gIGxldCBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uID0gMDtcbiAgZG8ge1xuICAgIG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSAwO1xuXG4gICAgLy8gRmluZCBuZXh0IG5vZGVzIHRvIHZpc2l0XG4gICAgY29uc3Qgbm9kZUV4cHJlc3Npb25HZW5lcmF0b3JzID0gZ3JhcGgubWFwTm9kZXMoKG5vZGVJZCwgeyBjb2RlIH0pID0+IHtcbiAgICAgIGlmICghbm9kZXNUb1Zpc2l0LmluY2x1ZGVzKG5vZGVJZCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdW5yZXNvbHZlZERlcGVuZGVuY2llcyA9IGdyYXBoXG4gICAgICAgIC5pbk5laWdoYm9ycyhub2RlSWQpXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IG5vZGVzVG9WaXNpdC5pbmNsdWRlcyhpdGVtKSk7XG5cbiAgICAgIGlmICh1bnJlc29sdmVkRGVwZW5kZW5jaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBub2Rlc1RvVmlzaXQgPSBub2Rlc1RvVmlzaXQuZmlsdGVyKChpZCkgPT4gbm9kZUlkICE9PSBpZCk7XG4gICAgICAgIG5vZGVzVmlzaXRlZFRoaXNJdGVyYXRpb24gPSBub2Rlc1Zpc2l0ZWRUaGlzSXRlcmF0aW9uICsgMTtcblxuICAgICAgICBsb2dnZXIuZGVidWcoYFZpc2l0aW5nIG5vZGUgJHtub2RlSWR9YCk7XG4gICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIC8vIEdlbmVyYXRlIHRoZSBjb2RlIGZvciB0aGUgbm9kZXNcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2Ygbm9kZUV4cHJlc3Npb25HZW5lcmF0b3JzKSB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICBleHByZXNzaW9ucy5wdXNoKC4uLihhd2FpdCBjb2RlKGdyYXBoKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGAke25vZGVzVG9WaXNpdC5sZW5ndGh9IHVudmlzaXRlZCBub2RlczogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICAgKTtcbiAgfSB3aGlsZSAobm9kZXNUb1Zpc2l0Lmxlbmd0aCA+IDAgJiYgbm9kZXNWaXNpdGVkVGhpc0l0ZXJhdGlvbiAhPSAwKTtcblxuICBpZiAobm9kZXNUb1Zpc2l0Lmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVGhlcmUgYXJlICR7XG4gICAgICAgIG5vZGVzVG9WaXNpdC5sZW5ndGhcbiAgICAgIH0gdGVycmFmb3JtIGVsZW1lbnRzIHRoYXQgY291bGQgbm90IGJlIHZpc2l0ZWQuXG4gICAgICBUaGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjeWNsZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaC5cbiAgICAgIFRoZXNlIG5vZGVzIGFyZTogJHtub2Rlc1RvVmlzaXQuam9pbihcIiwgXCIpfWAsXG4gICAgKTtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtub2Rlc1RvVmlzaXQubGVuZ3RofSB1bnZpc2l0ZWQgbm9kZXM6ICR7bm9kZXNUb1Zpc2l0LmpvaW4oXCIsIFwiKX1gLFxuICApO1xuXG4gIGNvbnN0IGJhY2tlbmRFeHByZXNzaW9ucyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBsYW4udGVycmFmb3JtPy5tYXAoKHRlcnJhZm9ybSkgPT5cbiAgICAgICAgYmFja2VuZFRvRXhwcmVzc2lvbihzY29wZSwgdGVycmFmb3JtLmJhY2tlbmQpLFxuICAgICAgKSB8fCBbUHJvbWlzZS5yZXNvbHZlKFtdKV0sXG4gICAgKVxuICApLnJlZHVjZSgoY2FycnksIGl0ZW0pID0+IFsuLi5jYXJyeSwgLi4uaXRlbV0sIFtdKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYFVzaW5nIHRoZXNlIGJhY2tlbmQgZXhwcmVzc2lvbnM6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBiYWNrZW5kRXhwcmVzc2lvbnMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgY29sbGVjdCBhbGwgbW9kdWxlIHNvdXJjZXNcbiAgY29uc3QgbW9kdWxlUmVxdWlyZW1lbnRzID0gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICBPYmplY3QudmFsdWVzKHBsYW4ubW9kdWxlIHx8IHt9KS5yZWR1Y2UoXG4gICAgICAgIChjYXJyeSwgbW9kdWxlQmxvY2spID0+IFtcbiAgICAgICAgICAuLi5jYXJyeSxcbiAgICAgICAgICAuLi5tb2R1bGVCbG9jay5yZWR1Y2UoXG4gICAgICAgICAgICAoYXJyLCB7IHNvdXJjZSwgdmVyc2lvbiB9KSA9PiBbXG4gICAgICAgICAgICAgIC4uLmFycixcbiAgICAgICAgICAgICAgdmVyc2lvbiA/IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAgOiBzb3VyY2UsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gYXMgc3RyaW5nW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgW10gYXMgc3RyaW5nW10sXG4gICAgICApIHx8IFtdLFxuICAgICksXG4gIF07XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBGb3VuZCB0aGVzZSBtb2R1bGVzOiAke0pTT04uc3RyaW5naWZ5KG1vZHVsZVJlcXVpcmVtZW50cywgbnVsbCwgMil9YCxcbiAgKTtcblxuICBpZiAoT2JqZWN0LmtleXMocGxhbi52YXJpYWJsZSB8fCB7fSkubGVuZ3RoID4gMCAmJiBleHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRlcnJhZm9ybSBWYXJpYWJsZXMgYXJlIG5vdCBhbHdheXMgdGhlIGJlc3QgZml0IGZvciBnZXR0aW5nIGlucHV0cyBpbiB0aGUgY29udGV4dCBvZiBUZXJyYWZvcm0gQ0RLLlxuWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBhdCBodHRwczovL2Nka3RuLmlvL2RvY3MvY29uY2VwdHMvdmFyaWFibGVzLWFuZC1vdXRwdXRzI2lucHV0LXZhcmlhYmxlc2AsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyUmVxdWlyZW1lbnRzID0gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbik7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgRm91bmQgdGhlc2UgcHJvdmlkZXIgcmVxdWlyZW1lbnRzOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgcHJvdmlkZXJSZXF1aXJlbWVudHMsXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfWAsXG4gICk7XG5cbiAgLy8gV2UgYWRkIGEgY29tbWVudCBpZiB0aGVyZSBhcmUgcHJvdmlkZXJzIHdpdGggbWlzc2luZyBzY2hlbWEgaW5mb3JtYXRpb25cbiAgY29uc3QgcHJvdmlkZXJzTGFja2luZ1NjaGVtYSA9IE9iamVjdC5rZXlzKHByb3ZpZGVyUmVxdWlyZW1lbnRzKS5maWx0ZXIoXG4gICAgKHByb3ZpZGVyTmFtZSkgPT5cbiAgICAgIHByb3ZpZGVyTmFtZSAhPT0gXCJ0ZXJyYWZvcm1cIiAmJlxuICAgICAgIU9iamVjdC5rZXlzKHByb3ZpZGVyU2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pLnNvbWUoKHNjaGVtYU5hbWUpID0+XG4gICAgICAgIHNjaGVtYU5hbWUuZW5kc1dpdGgocHJvdmlkZXJOYW1lKSxcbiAgICAgICksXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtcbiAgICAgIHByb3ZpZGVyc0xhY2tpbmdTY2hlbWEubGVuZ3RoXG4gICAgfSBwcm92aWRlcnMgbGFjayBzY2hlbWEgaW5mb3JtYXRpb246ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFwiLCBcIil9YCxcbiAgKTtcblxuICBpZiAocHJvdmlkZXJzTGFja2luZ1NjaGVtYS5sZW5ndGggPiAwKSB7XG4gICAgZXhwcmVzc2lvbnNbMF0gPSB0LmFkZENvbW1lbnQoXG4gICAgICBleHByZXNzaW9uc1swXSxcbiAgICAgIFwibGVhZGluZ1wiLFxuICAgICAgYFRoZSBmb2xsb3dpbmcgcHJvdmlkZXJzIGFyZSBtaXNzaW5nIHNjaGVtYSBpbmZvcm1hdGlvbiBhbmQgbWlnaHQgbmVlZCBtYW51YWwgYWRqdXN0bWVudHMgdG8gc3ludGhlc2l6ZSBjb3JyZWN0bHk6ICR7cHJvdmlkZXJzTGFja2luZ1NjaGVtYS5qb2luKFxuICAgICAgICBcIiwgXCIsXG4gICAgICApfS5cbkZvciBhIG1vcmUgcHJlY2lzZSBjb252ZXJzaW9uIHBsZWFzZSB1c2UgdGhlIC0tcHJvdmlkZXIgZmxhZyBpbiBjb252ZXJ0LmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFsd2F5cyBhZGQgY29uc3RydWN0c1xuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkNvbnN0cnVjdFwiLFxuICAgIHByb3ZpZGVyOiBcImNvbnN0cnVjdHNcIixcbiAgfSk7XG5cbiAgaWYgKHNjb3BlLmhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb24pIHtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIGNvbnN0cnVjdE5hbWU6IFwiVG9rZW5cIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgc3BlY2lmaWMgaW1wb3J0IGZvciBjb2RlQ29udGFpbmVyXG4gIGFkZEltcG9ydEZvckNvZGVDb250YWluZXIoc2NvcGUsIGNvZGVDb250YWluZXIpO1xuICBjb25zdCBjb25zdHJ1Y3RJbXBvcnRzID0gYnVpbGRJbXBvcnRzKHNjb3BlLmltcG9ydGFibGVzKTtcblxuICBjb25zdCBjb2RlID0gWy4uLihiYWNrZW5kRXhwcmVzc2lvbnMgfHwgW10pLCAuLi5leHByZXNzaW9uc107XG4gIGNvbnN0IGNvbmZpZ1R5cGVOYW1lID1cbiAgICBPYmplY3Qua2V5cyhzY29wZS50b3BMZXZlbENvbmZpZykubGVuZ3RoID4gMCA/IFwiTXlDb25maWdcIiA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBjbGFzc0NvbmZpZyA9IGNvbmZpZ1R5cGVOYW1lXG4gICAgPyBbZ2VuZXJhdGVDb25maWdUeXBlKGNvbmZpZ1R5cGVOYW1lLCBzY29wZS50b3BMZXZlbENvbmZpZyldXG4gICAgOiBbXTtcblxuICAvLyBXZSBzcGxpdCB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgc28gdGhhdCB1c2VycyBjYW4gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB3aGF0IHRvIGluc2VydCB3aGVyZVxuICByZXR1cm4ge1xuICAgIC8vIFRPRE86IFJlbW92ZSBpbXBvcnRzIGFuZCBjb2RlIGJlY2F1c2Ugcm9zZXR0YSB3b24ndCBiZSBhYmxlIHRvIHRyYW5zbGF0ZSB0aGVtXG4gICAgYWxsOiBhd2FpdCBnZW4oW1xuICAgICAgLi4uY29uc3RydWN0SW1wb3J0cyxcbiAgICAgIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpLFxuICAgICAgLi4uY2xhc3NDb25maWcsXG4gICAgICB3cmFwQ29kZUluQ29uc3RydWN0b3IoXG4gICAgICAgIGNvZGVDb250YWluZXIsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIFwiTXlDb252ZXJ0ZWRDb2RlXCIsXG4gICAgICAgIGNvbmZpZ1R5cGVOYW1lLFxuICAgICAgKSxcbiAgICBdKSxcbiAgICBpbXBvcnRzOiBhd2FpdCBnZW4oWy4uLmNvbnN0cnVjdEltcG9ydHMsIC4uLm1vZHVsZUltcG9ydHMocGxhbi5tb2R1bGUpXSksXG4gICAgY29kZTogYXdhaXQgZ2VuKGNvZGUpLFxuICAgIHByb3ZpZGVyczogT2JqZWN0LmVudHJpZXMocHJvdmlkZXJSZXF1aXJlbWVudHMpLm1hcCgoW3NvdXJjZSwgdmVyc2lvbl0pID0+XG4gICAgICB2ZXJzaW9uID09PSBcIipcIiA/IHNvdXJjZSA6IGAke3NvdXJjZX1AJHt2ZXJzaW9ufWAsXG4gICAgKSxcbiAgICBtb2R1bGVzOiBtb2R1bGVSZXF1aXJlbWVudHMsXG4gICAgLy8gV2UgdHJhY2sgc29tZSB1c2FnZSBkYXRhIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyB1c2VkXG4gICAgc3RhdHM6IHtcbiAgICAgIG51bWJlck9mTW9kdWxlczogbW9kdWxlUmVxdWlyZW1lbnRzLmxlbmd0aCxcbiAgICAgIG51bWJlck9mUHJvdmlkZXJzOiBPYmplY3Qua2V5cyhwcm92aWRlclJlcXVpcmVtZW50cykubGVuZ3RoLFxuICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZVN0YXRzKHBsYW4ucmVzb3VyY2UgfHwge30pLFxuICAgICAgZGF0YTogcmVzb3VyY2VTdGF0cyhwbGFuLmRhdGEgfHwge30pLFxuICAgICAgY29udmVydGVkTGluZXM6IGhjbC5zcGxpdChcIlxcblwiKS5sZW5ndGgsXG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBGaWxlID0geyBjb250ZW50czogc3RyaW5nOyBmaWxlTmFtZTogc3RyaW5nIH07XG5jb25zdCB0cmFuc2xhdG9ycyA9IHtcbiAgcHl0aG9uOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuUHl0aG9uVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlUHl0aG9uSW1wb3J0cyxcbiAgfSxcbiAgamF2YToge1xuICAgIHZpc2l0b3I6ICgpID0+IG5ldyByb3NldHRhLkphdmFWaXNpdG9yKCksXG4gICAgcG9zdFRyYW5zbGF0aW9uTXV0YXRpb246IHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgfSxcbiAgY3NoYXJwOiB7XG4gICAgdmlzaXRvcjogKCkgPT4gbmV3IHJvc2V0dGEuQ1NoYXJwVmlzaXRvcigpLFxuICAgIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uOiByZXBsYWNlQ3NoYXJwSW1wb3J0cyxcbiAgfSxcbiAgZ286IHtcbiAgICB2aXNpdG9yOiAoKSA9PiBuZXcgcm9zZXR0YS5Hb1Zpc2l0b3IoKSxcbiAgICBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbjogcmVwbGFjZUdvSW1wb3J0cyxcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIHRyYW5zbGF0b3JGb3JMYW5ndWFnZShsYW5ndWFnZToga2V5b2YgdHlwZW9mIHRyYW5zbGF0b3JzKSB7XG4gIHJldHVybiAoZmlsZTogRmlsZSwgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3I6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB7IHZpc2l0b3IsIHBvc3RUcmFuc2xhdGlvbk11dGF0aW9uIH0gPSB0cmFuc2xhdG9yc1tsYW5ndWFnZV07XG4gICAgY29uc3QgeyB0cmFuc2xhdGlvbiwgZGlhZ25vc3RpY3MgfSA9IHJvc2V0dGEudHJhbnNsYXRlVHlwZVNjcmlwdChcbiAgICAgIGZpbGUsXG4gICAgICB2aXNpdG9yKCksXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciA/IHsgaW5jbHVkZUNvbXBpbGVyRGlhZ25vc3RpY3M6IHRydWUgfSA6IHt9LFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICB0aHJvd09uVHJhbnNsYXRpb25FcnJvciAmJlxuICAgICAgZGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnKSA9PiBkaWFnLmlzRXJyb3IpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQ291bGQgbm90IHRyYW5zbGF0ZSBUUyB0byAke2xhbmd1YWdlfTpcXG4ke2ZpbGUuY29udGVudHN9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgdHJhbnNsYXRlIFRTIHRvICR7bGFuZ3VhZ2V9OiAke2RpYWdub3N0aWNzXG4gICAgICAgICAgLm1hcCgoZGlhZykgPT4gZGlhZy5mb3JtYXR0ZWRNZXNzYWdlKVxuICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwb3N0VHJhbnNsYXRpb25NdXRhdGlvbih0cmFuc2xhdGlvbik7XG4gIH07XG59XG5cbnR5cGUgQ29udmVydE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2UgdG8gY29udmVydCB0b1xuICAgKi9cbiAgbGFuZ3VhZ2U6IGtleW9mIHR5cGVvZiB0cmFuc2xhdG9ycyB8IFwidHlwZXNjcmlwdFwiO1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVyIHNjaGVtYSB0byB1c2UgZm9yIGNvbnZlcnNpb25cbiAgICovXG4gIHByb3ZpZGVyU2NoZW1hOiBQcm92aWRlclNjaGVtYTtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGNsYXNzIHRvIGV4dGVuZCBmcm9tLiBEZWZhdWx0cyB0byBgY29uc3RydWN0cy5Db25zdHJ1Y3RgXG4gICAqL1xuICBjb2RlQ29udGFpbmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdHJhbnNsYXRpb24gZmFpbHNcbiAgICogRGVmYXVsdHMgdG8gZmFsc2VcbiAgICovXG4gIHRocm93T25UcmFuc2xhdGlvbkVycm9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KFxuICBoY2w6IHN0cmluZyxcbiAge1xuICAgIGxhbmd1YWdlLFxuICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgIHRocm93T25UcmFuc2xhdGlvbkVycm9yID0gZmFsc2UsXG4gICAgY29kZUNvbnRhaW5lciA9IFwiY2RrdG4uVGVycmFmb3JtU3RhY2tcIixcbiAgfTogQ29udmVydE9wdGlvbnMsXG4pIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBcInRlcnJhZm9ybS50ZlwiO1xuICBjb25zdCB0cmFuc2xhdGVyID1cbiAgICBsYW5ndWFnZSA9PT0gXCJ0eXBlc2NyaXB0XCJcbiAgICAgID8gKGZpbGU6IEZpbGUsIF90aHJvd09uVHJhbnNsYXRpb25FcnJvcjogYm9vbGVhbikgPT4gZmlsZS5jb250ZW50c1xuICAgICAgOiB0cmFuc2xhdG9yRm9yTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIGlmICghdHJhbnNsYXRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGxhbmd1YWdlIHVzZWQ6IFwiICsgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgY29uc3QgdHNDb2RlID0gYXdhaXQgY29udmVydFRvVHlwZXNjcmlwdChoY2wsIHByb3ZpZGVyU2NoZW1hLCBjb2RlQ29udGFpbmVyKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnRzQ29kZSxcbiAgICBhbGw6IHRyYW5zbGF0ZXIoXG4gICAgICB7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmFsbCB9LFxuICAgICAgdGhyb3dPblRyYW5zbGF0aW9uRXJyb3IsXG4gICAgKSxcbiAgICBpbXBvcnRzOiB0cmFuc2xhdGVyKHsgZmlsZU5hbWUsIGNvbnRlbnRzOiB0c0NvZGUuaW1wb3J0cyB9LCBmYWxzZSksXG4gICAgY29kZTogdHJhbnNsYXRlcih7IGZpbGVOYW1lLCBjb250ZW50czogdHNDb2RlLmNvZGUgfSwgZmFsc2UpLFxuICAgIHN0YXRzOiB7IC4uLnRzQ29kZS5zdGF0cywgbGFuZ3VhZ2UgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlcnJhZm9ybUNvbmZpZ0Zyb21EaXIoaW1wb3J0UGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUoaW1wb3J0UGF0aCk7XG4gIGNvbnN0IGZpbGVDb250ZW50cyA9IGdsb2JcbiAgICAuc3luYyhcIi4vKi50ZlwiLCB7IGN3ZDogYWJzUGF0aCB9KVxuICAgIC5tYXAoKHApID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUoYWJzUGF0aCwgcCksIFwidXRmOFwiKSk7XG5cbiAgcmV0dXJuIGZpbGVDb250ZW50cy5qb2luKFwiXFxuXCIpO1xufVxuXG50eXBlIENka3RmSnNvbiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICB0ZXJyYWZvcm1Qcm92aWRlcnM6IGFueVtdO1xuICB0ZXJyYWZvcm1Nb2R1bGVzOiBhbnlbXTtcbn07XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udmVydFByb2plY3QoXG4gIGNvbWJpbmVkSGNsOiBzdHJpbmcsXG4gIHsgbGFuZ3VhZ2UsIHByb3ZpZGVyU2NoZW1hIH06IENvbnZlcnRPcHRpb25zLFxuKSB7XG4gIGlmIChsYW5ndWFnZSAhPT0gXCJ0eXBlc2NyaXB0XCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBsYW5ndWFnZSB1c2VkOiBcIiArIGxhbmd1YWdlKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbXBvcnRzLFxuICAgIGNvZGUsXG4gICAgcHJvdmlkZXJzLFxuICAgIG1vZHVsZXM6IHRmTW9kdWxlcyxcbiAgICBzdGF0cyxcbiAgfSA9IGF3YWl0IGNvbnZlcnQoY29tYmluZWRIY2wsIHtcbiAgICBsYW5ndWFnZSxcbiAgICBwcm92aWRlclNjaGVtYSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiAoaW5wdXRNYWluRmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpbXBvcnRNYWluRmlsZSA9IFtpbXBvcnRzLCBpbnB1dE1haW5GaWxlXS5qb2luKFwiXFxuXCIpO1xuICAgICAgY29uc3Qgb3V0cHV0TWFpbkZpbGUgPSBpbXBvcnRNYWluRmlsZS5yZXBsYWNlKENPREVfTUFSS0VSLCBjb2RlKTtcbiAgICAgIHJldHVybiBwcmV0dGllci5mb3JtYXQob3V0cHV0TWFpbkZpbGUsIHsgcGFyc2VyOiBcImJhYmVsXCIgfSk7XG4gICAgfSxcbiAgICBjZGt0Zkpzb246IChpbnB1dENka3RmSnNvbjogQ2RrdGZKc29uKSA9PiB7XG4gICAgICBjb25zdCBjZGt0Zkpzb24gPSB7IC4uLmlucHV0Q2RrdGZKc29uIH07XG4gICAgICBjZGt0Zkpzb24udGVycmFmb3JtUHJvdmlkZXJzID0gcHJvdmlkZXJzO1xuICAgICAgY2RrdGZKc29uLnRlcnJhZm9ybU1vZHVsZXMgPSB0Zk1vZHVsZXM7XG4gICAgICByZXR1cm4gY2RrdGZKc29uO1xuICAgIH0sXG4gICAgc3RhdHMsXG4gIH07XG59XG5cbmV4cG9ydCB7IGlzUmVnaXN0cnlNb2R1bGUsIGF0dHJpYnV0ZU5hbWVUb0Nka3RmTmFtZSB9O1xuIl19
@@ -72,8 +72,7 @@ async function extractReferencesFromExpression(input, nodeIds, scopedIds = []) {
72
72
  if (!corespondingNodeId) {
73
73
  // This is most likely a false positive, so we just ignore it
74
74
  // We include the log below to help debugging
75
- utils_1.logger.error(`Found a reference that is unknown: ${input} has reference "${value}".The id was not found in ${JSON.stringify(nodeIds)} with temporary values ${JSON.stringify(scopedIds)}.
76
- ${utils_1.leaveCommentText}`);
75
+ utils_1.logger.error(`Found a reference that is unknown: ${input} has reference "${value}". The id was not found in ${JSON.stringify(nodeIds)} with temporary values ${JSON.stringify(scopedIds)}.`);
77
76
  return carry;
78
77
  }
79
78
  if (scopedIds.includes(corespondingNodeId)) {
@@ -138,4 +137,4 @@ async function findUsedReferences(nodeIds, item) {
138
137
  return (await Promise.all(Object.values(item).map((i) => findUsedReferences(nodeIds, i)))).flat();
139
138
  }
140
139
  exports.findUsedReferences = findUsedReferences;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWZlcmVuY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILDhDQUd5QjtBQUN6QixtQ0FBbUQ7QUFFbkQsMkNBQTJDO0FBRTNDLFNBQWdCLHVCQUF1QixDQUNyQyxLQUFtQixFQUNuQixHQUFjO0lBRWQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxJQUFBLHdCQUFZLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBUkQsMERBUUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxVQUE4QjtJQUM5RCxJQUFJLENBQUMsaUNBQUcsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsVUFB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QyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPLENBQ0wsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25ELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDL0IsQ0FDRixDQUNGLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWCxDQUFDO0FBakNELGdEQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtcbiAgZ2V0UmVmZXJlbmNlc0luRXhwcmVzc2lvbixcbiAgVEZFeHByZXNzaW9uU3ludGF4VHJlZSBhcyB0ZXgsXG59IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7IGxlYXZlQ29tbWVudFRleHQsIGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUsIFJlZmVyZW5jZSwgVGVycmFmb3JtUmVzb3VyY2VCbG9jayB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWUgfSBmcm9tIFwiLi92YXJpYWJsZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvVmFyaWFibGVOYW1lKFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICByZWY6IFJlZmVyZW5jZSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gcmVmLnJlZmVyZW5jZWUuaWQuc3BsaXQoXCIuXCIpO1xuICBjb25zdCByZXNvdXJjZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIiA/IGAke3BhcnRzWzBdfS4ke3BhcnRzWzFdfWAgOiBwYXJ0c1swXTtcbiAgY29uc3QgbmFtZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIiA/IHBhcnRzWzJdIDogcGFydHNbMV07XG4gIHJldHVybiB2YXJpYWJsZU5hbWUoc2NvcGUsIHJlc291cmNlLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zUmVmZXJlbmNlKGV4cHJlc3Npb246IHRleC5FeHByZXNzaW9uVHlwZSkge1xuICBpZiAoIXRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNlZ21lbnRzID0gZXhwcmVzc2lvbi5tZXRhLnRyYXZlcnNhbDtcbiAgY29uc3Qgcm9vdFNlZ21lbnQgPSBzZWdtZW50c1swXS5zZWdtZW50O1xuICBjb25zdCBmdWxsQWNjZXNzb3IgPSBleHByZXNzaW9uLm1ldGEuZnVsbEFjY2Vzc29yO1xuXG4gIGlmIChcbiAgICByb290U2VnbWVudCA9PT0gXCJjb3VudFwiIHx8IC8vIGNvdW50IHZhcmlhYmxlXG4gICAgcm9vdFNlZ21lbnQgPT09IFwiZWFjaFwiIHx8IC8vIGVhY2ggdmFyaWFibGVcbiAgICAvLyBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9sYW5ndWFnZS9leHByZXNzaW9ucy9yZWZlcmVuY2VzLmh0bWwjZmlsZXN5c3RlbS1hbmQtd29ya3NwYWNlLWluZm9cbiAgICBmdWxsQWNjZXNzb3Iuc3RhcnRzV2l0aChcInBhdGgubW9kdWxlXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLnJvb3RcIikgfHxcbiAgICBmdWxsQWNjZXNzb3Iuc3RhcnRzV2l0aChcInBhdGguY3dkXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJ0ZXJyYWZvcm0ud29ya3NwYWNlXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJzZWxmLlwiKSAvLyBibG9jayBsb2NhbCB2YWx1ZVxuICApIHtcbiAgICBsb2dnZXIuZGVidWcoYHNraXBwaW5nICR7ZnVsbEFjY2Vzc29yfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbihcbiAgaW5wdXQ6IHN0cmluZyxcbiAgbm9kZUlkczogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHNjb3BlZElkczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXSwgLy8gZHluYW1pY3MgaW50cm9kdWNlIG5ldyBzY29wZWQgdmFyaWFibGVzIHRoYXQgYXJlIG5vdCB0aGUgZ2xvYmFsbHkgYWNjZXNzaWJsZSBpZHNcbik6IFByb21pc2U8UmVmZXJlbmNlW10+IHtcbiAgbG9nZ2VyLmRlYnVnKGBleHRyYWN0UmVmZXJlbmNlc0Zyb21FeHByZXNzaW9uKCR7aW5wdXR9KWApO1xuICBjb25zdCBwb3NzaWJsZVZhcmlhYmxlU3BvdHMgPSBhd2FpdCBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uKFxuICAgIFwibWFpbi50ZlwiLFxuICAgIGlucHV0LFxuICApO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgZm91bmQgcG9zc2libGUgdmFyaWFibGUgc3BvdHM6ICR7SlNPTi5zdHJpbmdpZnkocG9zc2libGVWYXJpYWJsZVNwb3RzKX1gLFxuICApO1xuXG4gIHJldHVybiBwb3NzaWJsZVZhcmlhYmxlU3BvdHMucmVkdWNlKChjYXJyeSwgc3BvdCkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIH0gPSBzcG90O1xuICAgIC8vIG5vIHJlZmVyZW5jZVxuICAgIGlmIChcbiAgICAgICF2YWx1ZS5pbmNsdWRlcyhcIi5cIikgfHwgLy8ganVzdCBhIGxpdGVyYWxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IC8vIGRhbmdsaW5nIHByb3BlcnR5IGFjY2Vzc1xuICAgICAgdmFsdWUuZW5kc1dpdGgoXCIuLi5cIikgfHwgLy8gc3ByZWFkIChsaWtlbHkgaW4gZm9yIGxvb3ApXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiY291bnQuXCIpIHx8IC8vIGNvdW50IHZhcmlhYmxlXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiZWFjaC5cIikgfHwgLy8gZWFjaCB2YXJpYWJsZVxuICAgICAgLy8gaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvcmVmZXJlbmNlcy5odG1sI2ZpbGVzeXN0ZW0tYW5kLXdvcmtzcGFjZS1pbmZvXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5tb2R1bGVcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJwYXRoLnJvb3RcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJwYXRoLmN3ZFwiKSB8fFxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcInRlcnJhZm9ybS53b3Jrc3BhY2VcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJzZWxmLlwiKSAvLyBibG9jayBsb2NhbCB2YWx1ZVxuICAgICkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAke3ZhbHVlfWApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cblxuICAgIGNvbnN0IHJlZmVyZW5jZVBhcnRzID0gdmFsdWUuc3BsaXQoXCIuXCIpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFNlYXJjaGluZyBmb3Igbm9kZSBpZCAnJHt2YWx1ZX0nIGluICR7SlNPTi5zdHJpbmdpZnkobm9kZUlkcyl9YCxcbiAgICApO1xuICAgIGNvbnN0IGNvcmVzcG9uZGluZ05vZGVJZCA9IFsuLi5ub2RlSWRzLCAuLi5zY29wZWRJZHNdLmZpbmQoKGlkKSA9PiB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGlkLnNwbGl0KFwiLlwiKTtcbiAgICAgIGNvbnN0IG1hdGNoZXNGaXJzdCA9IHBhcnRzWzBdID09PSByZWZlcmVuY2VQYXJ0c1swXTtcbiAgICAgIGNvbnN0IG1hdGNoZXNGaXJzdFR3byA9XG4gICAgICAgIG1hdGNoZXNGaXJzdCAmJlxuICAgICAgICAocGFydHNbMV0gPT09IHJlZmVyZW5jZVBhcnRzWzFdIHx8IHJlZmVyZW5jZVBhcnRzLmxlbmd0aCA9PT0gMSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIG1hdGNoZXNGaXJzdFR3byAmJlxuICAgICAgICAocGFydHNbMF0gPT09IFwiZGF0YVwiID8gcGFydHNbMl0gPT09IHJlZmVyZW5jZVBhcnRzWzJdIDogdHJ1ZSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvcmVzcG9uZGluZ05vZGVJZCkge1xuICAgICAgLy8gVGhpcyBpcyBtb3N0IGxpa2VseSBhIGZhbHNlIHBvc2l0aXZlLCBzbyB3ZSBqdXN0IGlnbm9yZSBpdFxuICAgICAgLy8gV2UgaW5jbHVkZSB0aGUgbG9nIGJlbG93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGb3VuZCBhIHJlZmVyZW5jZSB0aGF0IGlzIHVua25vd246ICR7aW5wdXR9IGhhcyByZWZlcmVuY2UgXCIke3ZhbHVlfVwiLlRoZSBpZCB3YXMgbm90IGZvdW5kIGluICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgbm9kZUlkcyxcbiAgICAgICAgKX0gd2l0aCB0ZW1wb3JhcnkgdmFsdWVzICR7SlNPTi5zdHJpbmdpZnkoc2NvcGVkSWRzKX0uXG4ke2xlYXZlQ29tbWVudFRleHR9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHNjb3BlZElkcy5pbmNsdWRlcyhjb3Jlc3BvbmRpbmdOb2RlSWQpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYHNraXBwaW5nICcke3ZhbHVlfScgc2luY2UgaXQncyBhIHNjb3BlZCB2YXJpYWJsZWApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYEZvdW5kIG5vZGUgaWQgJyR7Y29yZXNwb25kaW5nTm9kZUlkfSdgKTtcblxuICAgIGNvbnN0IHNwb3RQYXJ0cyA9IHZhbHVlLnNwbGl0KFwiLlwiKTtcbiAgICBsZXQgaXNUaGVyZUFOdW1lcmljQWNjZXNzb3IgPSBmYWxzZTtcbiAgICBjb25zdCByZWZlcmVuY2VTcG90UGFydHMgPSBzcG90UGFydHMuZmlsdGVyKChwYXJ0KSA9PiB7XG4gICAgICBpZiAoIU51bWJlci5pc05hTihwYXJzZUludChwYXJ0LCAxMCkpKSB7XG4gICAgICAgIGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yO1xuICAgIH0pO1xuICAgIGNvbnN0IGZ1bGxSZWZlcmVuY2UgPSBpc1RoZXJlQU51bWVyaWNBY2Nlc3NvclxuICAgICAgPyByZWZlcmVuY2VTcG90UGFydHMuc2xpY2UoMCwgMikuam9pbihcIi5cIilcbiAgICAgIDogdmFsdWU7XG5cbiAgICBjb25zdCBpc1ZhcmlhYmxlID0gdmFsdWUuc3RhcnRzV2l0aChcInZhci5cIik7XG4gICAgY29uc3QgdXNlRnFuID1cbiAgICAgIC8vIENhbiBub3QgdXNlIEZRTiBvbiB2YXJzXG4gICAgICAhaXNWYXJpYWJsZSAmJlxuICAgICAgLy8gQ2FuIG5vdCB1c2UgRlFOIG9uIGxvY2Fsc1xuICAgICAgIXZhbHVlLnN0YXJ0c1dpdGgoXCJsb2NhbC5cIikgJiZcbiAgICAgIC8vIElmIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIGlzXG4gICAgICAoaW5wdXQuc3Vic3RyKGVuZFBvc2l0aW9uICsgMSwgMSkgPT09IFwiKlwiIHx8IC8vIGEgKiAoc3BsYXQpIHdlIG5lZWQgdG8gdXNlIHRoZSBGUU5cbiAgICAgICAgaW5wdXQuc3Vic3RyKGVuZFBvc2l0aW9uLCAxKSA9PT0gXCJbXCIgfHwgLy8gYSBwcm9wZXJ0eSBhY2Nlc3NcbiAgICAgICAgaXNUaGVyZUFOdW1lcmljQWNjZXNzb3IpOyAvLyBhIG51bWVyaWMgYWNjZXNzXG5cbiAgICBjb25zdCByZWY6IFJlZmVyZW5jZSA9IHtcbiAgICAgIHN0YXJ0OiBzdGFydFBvc2l0aW9uLFxuICAgICAgZW5kOiBlbmRQb3NpdGlvbixcbiAgICAgIHJlZmVyZW5jZWU6IHtcbiAgICAgICAgaWQ6IGNvcmVzcG9uZGluZ05vZGVJZCxcbiAgICAgICAgZnVsbDogZnVsbFJlZmVyZW5jZSxcbiAgICAgIH0sXG4gICAgICB1c2VGcW4sXG4gICAgICBpc1ZhcmlhYmxlLFxuICAgIH07XG4gICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCByZWZlcmVuY2UgJHtKU09OLnN0cmluZ2lmeShyZWYpfWApO1xuICAgIHJldHVybiBbLi4uY2FycnksIHJlZl07XG4gIH0sIFtdIGFzIFJlZmVyZW5jZVtdKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRVc2VkUmVmZXJlbmNlcyhcbiAgbm9kZUlkczogc3RyaW5nW10sXG4gIGl0ZW06IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4pOiBQcm9taXNlPFJlZmVyZW5jZVtdPiB7XG4gIGxvZ2dlci5kZWJ1ZyhgZmluZFVzZWRSZWZlcmVuY2VzKCR7bm9kZUlkc30sICR7aXRlbX0pYCk7XG4gIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBhd2FpdCBleHRyYWN0UmVmZXJlbmNlc0Zyb21FeHByZXNzaW9uKGl0ZW0sIG5vZGVJZHMsIFtdKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaXRlbSAhPT0gXCJvYmplY3RcIiB8fCBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGl0ZW0ubWFwKChpKSA9PiBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgaSkpKVxuICAgICkuZmxhdCgpO1xuICB9XG5cbiAgaWYgKGl0ZW0gJiYgXCJkeW5hbWljXCIgaW4gaXRlbSkge1xuICAgIGNvbnN0IGR5biA9IChpdGVtIGFzIGFueSlbXCJkeW5hbWljXCJdO1xuICAgIGNvbnN0IHsgZm9yX2VhY2g6IF9mb3JfZWFjaCwgLi4ub3RoZXJzIH0gPSBkeW47XG4gICAgY29uc3QgZHluYW1pY1JlZiA9IE9iamVjdC5rZXlzKG90aGVycylbMF07XG4gICAgcmV0dXJuIGF3YWl0IGZpbmRVc2VkUmVmZXJlbmNlcyhbLi4ubm9kZUlkcywgZHluYW1pY1JlZl0sIGR5bik7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhpdGVtIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLm1hcCgoaSkgPT5cbiAgICAgICAgZmluZFVzZWRSZWZlcmVuY2VzKG5vZGVJZHMsIGkpLFxuICAgICAgKSxcbiAgICApXG4gICkuZmxhdCgpO1xufVxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWZlcmVuY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILDhDQUd5QjtBQUN6QixtQ0FBaUM7QUFFakMsMkNBQTJDO0FBRTNDLFNBQWdCLHVCQUF1QixDQUNyQyxLQUFtQixFQUNuQixHQUFjO0lBRWQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxJQUFBLHdCQUFZLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBUkQsMERBUUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxVQUE4QjtJQUM5RCxJQUFJLENBQUMsaUNBQUcsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsVUFB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LENBQUM7SUFFRCxPQUFPLENBQ0wsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25ELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDL0IsQ0FDRixDQUNGLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWCxDQUFDO0FBakNELGdEQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtcbiAgZ2V0UmVmZXJlbmNlc0luRXhwcmVzc2lvbixcbiAgVEZFeHByZXNzaW9uU3ludGF4VHJlZSBhcyB0ZXgsXG59IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUsIFJlZmVyZW5jZSwgVGVycmFmb3JtUmVzb3VyY2VCbG9jayB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWUgfSBmcm9tIFwiLi92YXJpYWJsZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvVmFyaWFibGVOYW1lKFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICByZWY6IFJlZmVyZW5jZSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gcmVmLnJlZmVyZW5jZWUuaWQuc3BsaXQoXCIuXCIpO1xuICBjb25zdCByZXNvdXJjZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIiA/IGAke3BhcnRzWzBdfS4ke3BhcnRzWzFdfWAgOiBwYXJ0c1swXTtcbiAgY29uc3QgbmFtZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIiA/IHBhcnRzWzJdIDogcGFydHNbMV07XG4gIHJldHVybiB2YXJpYWJsZU5hbWUoc2NvcGUsIHJlc291cmNlLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zUmVmZXJlbmNlKGV4cHJlc3Npb246IHRleC5FeHByZXNzaW9uVHlwZSkge1xuICBpZiAoIXRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNlZ21lbnRzID0gZXhwcmVzc2lvbi5tZXRhLnRyYXZlcnNhbDtcbiAgY29uc3Qgcm9vdFNlZ21lbnQgPSBzZWdtZW50c1swXS5zZWdtZW50O1xuICBjb25zdCBmdWxsQWNjZXNzb3IgPSBleHByZXNzaW9uLm1ldGEuZnVsbEFjY2Vzc29yO1xuXG4gIGlmIChcbiAgICByb290U2VnbWVudCA9PT0gXCJjb3VudFwiIHx8IC8vIGNvdW50IHZhcmlhYmxlXG4gICAgcm9vdFNlZ21lbnQgPT09IFwiZWFjaFwiIHx8IC8vIGVhY2ggdmFyaWFibGVcbiAgICAvLyBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9sYW5ndWFnZS9leHByZXNzaW9ucy9yZWZlcmVuY2VzLmh0bWwjZmlsZXN5c3RlbS1hbmQtd29ya3NwYWNlLWluZm9cbiAgICBmdWxsQWNjZXNzb3Iuc3RhcnRzV2l0aChcInBhdGgubW9kdWxlXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLnJvb3RcIikgfHxcbiAgICBmdWxsQWNjZXNzb3Iuc3RhcnRzV2l0aChcInBhdGguY3dkXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJ0ZXJyYWZvcm0ud29ya3NwYWNlXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJzZWxmLlwiKSAvLyBibG9jayBsb2NhbCB2YWx1ZVxuICApIHtcbiAgICBsb2dnZXIuZGVidWcoYHNraXBwaW5nICR7ZnVsbEFjY2Vzc29yfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbihcbiAgaW5wdXQ6IHN0cmluZyxcbiAgbm9kZUlkczogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHNjb3BlZElkczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXSwgLy8gZHluYW1pY3MgaW50cm9kdWNlIG5ldyBzY29wZWQgdmFyaWFibGVzIHRoYXQgYXJlIG5vdCB0aGUgZ2xvYmFsbHkgYWNjZXNzaWJsZSBpZHNcbik6IFByb21pc2U8UmVmZXJlbmNlW10+IHtcbiAgbG9nZ2VyLmRlYnVnKGBleHRyYWN0UmVmZXJlbmNlc0Zyb21FeHByZXNzaW9uKCR7aW5wdXR9KWApO1xuICBjb25zdCBwb3NzaWJsZVZhcmlhYmxlU3BvdHMgPSBhd2FpdCBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uKFxuICAgIFwibWFpbi50ZlwiLFxuICAgIGlucHV0LFxuICApO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgZm91bmQgcG9zc2libGUgdmFyaWFibGUgc3BvdHM6ICR7SlNPTi5zdHJpbmdpZnkocG9zc2libGVWYXJpYWJsZVNwb3RzKX1gLFxuICApO1xuXG4gIHJldHVybiBwb3NzaWJsZVZhcmlhYmxlU3BvdHMucmVkdWNlKChjYXJyeSwgc3BvdCkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIH0gPSBzcG90O1xuICAgIC8vIG5vIHJlZmVyZW5jZVxuICAgIGlmIChcbiAgICAgICF2YWx1ZS5pbmNsdWRlcyhcIi5cIikgfHwgLy8ganVzdCBhIGxpdGVyYWxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IC8vIGRhbmdsaW5nIHByb3BlcnR5IGFjY2Vzc1xuICAgICAgdmFsdWUuZW5kc1dpdGgoXCIuLi5cIikgfHwgLy8gc3ByZWFkIChsaWtlbHkgaW4gZm9yIGxvb3ApXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiY291bnQuXCIpIHx8IC8vIGNvdW50IHZhcmlhYmxlXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiZWFjaC5cIikgfHwgLy8gZWFjaCB2YXJpYWJsZVxuICAgICAgLy8gaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvcmVmZXJlbmNlcy5odG1sI2ZpbGVzeXN0ZW0tYW5kLXdvcmtzcGFjZS1pbmZvXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5tb2R1bGVcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJwYXRoLnJvb3RcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJwYXRoLmN3ZFwiKSB8fFxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcInRlcnJhZm9ybS53b3Jrc3BhY2VcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJzZWxmLlwiKSAvLyBibG9jayBsb2NhbCB2YWx1ZVxuICAgICkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAke3ZhbHVlfWApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cblxuICAgIGNvbnN0IHJlZmVyZW5jZVBhcnRzID0gdmFsdWUuc3BsaXQoXCIuXCIpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFNlYXJjaGluZyBmb3Igbm9kZSBpZCAnJHt2YWx1ZX0nIGluICR7SlNPTi5zdHJpbmdpZnkobm9kZUlkcyl9YCxcbiAgICApO1xuICAgIGNvbnN0IGNvcmVzcG9uZGluZ05vZGVJZCA9IFsuLi5ub2RlSWRzLCAuLi5zY29wZWRJZHNdLmZpbmQoKGlkKSA9PiB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGlkLnNwbGl0KFwiLlwiKTtcbiAgICAgIGNvbnN0IG1hdGNoZXNGaXJzdCA9IHBhcnRzWzBdID09PSByZWZlcmVuY2VQYXJ0c1swXTtcbiAgICAgIGNvbnN0IG1hdGNoZXNGaXJzdFR3byA9XG4gICAgICAgIG1hdGNoZXNGaXJzdCAmJlxuICAgICAgICAocGFydHNbMV0gPT09IHJlZmVyZW5jZVBhcnRzWzFdIHx8IHJlZmVyZW5jZVBhcnRzLmxlbmd0aCA9PT0gMSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIG1hdGNoZXNGaXJzdFR3byAmJlxuICAgICAgICAocGFydHNbMF0gPT09IFwiZGF0YVwiID8gcGFydHNbMl0gPT09IHJlZmVyZW5jZVBhcnRzWzJdIDogdHJ1ZSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvcmVzcG9uZGluZ05vZGVJZCkge1xuICAgICAgLy8gVGhpcyBpcyBtb3N0IGxpa2VseSBhIGZhbHNlIHBvc2l0aXZlLCBzbyB3ZSBqdXN0IGlnbm9yZSBpdFxuICAgICAgLy8gV2UgaW5jbHVkZSB0aGUgbG9nIGJlbG93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGb3VuZCBhIHJlZmVyZW5jZSB0aGF0IGlzIHVua25vd246ICR7aW5wdXR9IGhhcyByZWZlcmVuY2UgXCIke3ZhbHVlfVwiLiBUaGUgaWQgd2FzIG5vdCBmb3VuZCBpbiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIG5vZGVJZHMsXG4gICAgICAgICl9IHdpdGggdGVtcG9yYXJ5IHZhbHVlcyAke0pTT04uc3RyaW5naWZ5KHNjb3BlZElkcyl9LmAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cblxuICAgIGlmIChzY29wZWRJZHMuaW5jbHVkZXMoY29yZXNwb25kaW5nTm9kZUlkKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAnJHt2YWx1ZX0nIHNpbmNlIGl0J3MgYSBzY29wZWQgdmFyaWFibGVgKTtcbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCBub2RlIGlkICcke2NvcmVzcG9uZGluZ05vZGVJZH0nYCk7XG5cbiAgICBjb25zdCBzcG90UGFydHMgPSB2YWx1ZS5zcGxpdChcIi5cIik7XG4gICAgbGV0IGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yID0gZmFsc2U7XG4gICAgY29uc3QgcmVmZXJlbmNlU3BvdFBhcnRzID0gc3BvdFBhcnRzLmZpbHRlcigocGFydCkgPT4ge1xuICAgICAgaWYgKCFOdW1iZXIuaXNOYU4ocGFyc2VJbnQocGFydCwgMTApKSkge1xuICAgICAgICBpc1RoZXJlQU51bWVyaWNBY2Nlc3NvciA9IHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1RoZXJlQU51bWVyaWNBY2Nlc3NvcjtcbiAgICB9KTtcbiAgICBjb25zdCBmdWxsUmVmZXJlbmNlID0gaXNUaGVyZUFOdW1lcmljQWNjZXNzb3JcbiAgICAgID8gcmVmZXJlbmNlU3BvdFBhcnRzLnNsaWNlKDAsIDIpLmpvaW4oXCIuXCIpXG4gICAgICA6IHZhbHVlO1xuXG4gICAgY29uc3QgaXNWYXJpYWJsZSA9IHZhbHVlLnN0YXJ0c1dpdGgoXCJ2YXIuXCIpO1xuICAgIGNvbnN0IHVzZUZxbiA9XG4gICAgICAvLyBDYW4gbm90IHVzZSBGUU4gb24gdmFyc1xuICAgICAgIWlzVmFyaWFibGUgJiZcbiAgICAgIC8vIENhbiBub3QgdXNlIEZRTiBvbiBsb2NhbHNcbiAgICAgICF2YWx1ZS5zdGFydHNXaXRoKFwibG9jYWwuXCIpICYmXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpc1xuICAgICAgKGlucHV0LnN1YnN0cihlbmRQb3NpdGlvbiArIDEsIDEpID09PSBcIipcIiB8fCAvLyBhICogKHNwbGF0KSB3ZSBuZWVkIHRvIHVzZSB0aGUgRlFOXG4gICAgICAgIGlucHV0LnN1YnN0cihlbmRQb3NpdGlvbiwgMSkgPT09IFwiW1wiIHx8IC8vIGEgcHJvcGVydHkgYWNjZXNzXG4gICAgICAgIGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yKTsgLy8gYSBudW1lcmljIGFjY2Vzc1xuXG4gICAgY29uc3QgcmVmOiBSZWZlcmVuY2UgPSB7XG4gICAgICBzdGFydDogc3RhcnRQb3NpdGlvbixcbiAgICAgIGVuZDogZW5kUG9zaXRpb24sXG4gICAgICByZWZlcmVuY2VlOiB7XG4gICAgICAgIGlkOiBjb3Jlc3BvbmRpbmdOb2RlSWQsXG4gICAgICAgIGZ1bGw6IGZ1bGxSZWZlcmVuY2UsXG4gICAgICB9LFxuICAgICAgdXNlRnFuLFxuICAgICAgaXNWYXJpYWJsZSxcbiAgICB9O1xuICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgcmVmZXJlbmNlICR7SlNPTi5zdHJpbmdpZnkocmVmKX1gKTtcbiAgICByZXR1cm4gWy4uLmNhcnJ5LCByZWZdO1xuICB9LCBbXSBhcyBSZWZlcmVuY2VbXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kVXNlZFJlZmVyZW5jZXMoXG4gIG5vZGVJZHM6IHN0cmluZ1tdLFxuICBpdGVtOiBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLFxuKTogUHJvbWlzZTxSZWZlcmVuY2VbXT4ge1xuICBsb2dnZXIuZGVidWcoYGZpbmRVc2VkUmVmZXJlbmNlcygke25vZGVJZHN9LCAke2l0ZW19KWApO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gYXdhaXQgZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbihpdGVtLCBub2RlSWRzLCBbXSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIgfHwgaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtLm1hcCgoaSkgPT4gZmluZFVzZWRSZWZlcmVuY2VzKG5vZGVJZHMsIGkpKSlcbiAgICApLmZsYXQoKTtcbiAgfVxuXG4gIGlmIChpdGVtICYmIFwiZHluYW1pY1wiIGluIGl0ZW0pIHtcbiAgICBjb25zdCBkeW4gPSAoaXRlbSBhcyBhbnkpW1wiZHluYW1pY1wiXTtcbiAgICBjb25zdCB7IGZvcl9lYWNoOiBfZm9yX2VhY2gsIC4uLm90aGVycyB9ID0gZHluO1xuICAgIGNvbnN0IGR5bmFtaWNSZWYgPSBPYmplY3Qua2V5cyhvdGhlcnMpWzBdO1xuICAgIHJldHVybiBhd2FpdCBmaW5kVXNlZFJlZmVyZW5jZXMoWy4uLm5vZGVJZHMsIGR5bmFtaWNSZWZdLCBkeW4pO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIE9iamVjdC52YWx1ZXMoaXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KS5tYXAoKGkpID0+XG4gICAgICAgIGZpbmRVc2VkUmVmZXJlbmNlcyhub2RlSWRzLCBpKSxcbiAgICAgICksXG4gICAgKVxuICApLmZsYXQoKTtcbn1cbiJdfQ==
package/build/schema.d.ts CHANGED
@@ -5,14 +5,14 @@ declare const outputConfig: z.ZodArray<z.ZodObject<{
5
5
  sensitive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
6
6
  depends_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
7
7
  }, "strip", z.ZodTypeAny, {
8
+ sensitive?: boolean | undefined;
8
9
  value?: any;
9
10
  description?: string | undefined;
10
- sensitive?: boolean | undefined;
11
11
  depends_on?: string | undefined;
12
12
  }, {
13
+ sensitive?: boolean | undefined;
13
14
  value?: any;
14
15
  description?: string | undefined;
15
- sensitive?: boolean | undefined;
16
16
  depends_on?: string | undefined;
17
17
  }>, "many">;
18
18
  export type Output = z.infer<typeof outputConfig>;
@@ -33,25 +33,25 @@ declare const variableConfig: z.ZodArray<z.ZodObject<{
33
33
  condition?: any;
34
34
  }>, "many">>>;
35
35
  }, "strip", z.ZodTypeAny, {
36
+ sensitive?: boolean | undefined;
36
37
  type?: string | undefined;
37
- default?: any;
38
38
  description?: string | undefined;
39
- sensitive?: boolean | undefined;
40
- nullable?: boolean | undefined;
41
39
  validation?: {
42
40
  error_message: string;
43
41
  condition?: any;
44
42
  }[] | undefined;
43
+ default?: any;
44
+ nullable?: boolean | undefined;
45
45
  }, {
46
+ sensitive?: boolean | undefined;
46
47
  type?: string | undefined;
47
- default?: any;
48
48
  description?: string | undefined;
49
- sensitive?: boolean | undefined;
50
- nullable?: boolean | undefined;
51
49
  validation?: {
52
50
  error_message: string;
53
51
  condition?: any;
54
52
  }[] | undefined;
53
+ default?: any;
54
+ nullable?: boolean | undefined;
55
55
  }>, "many">;
56
56
  export type Variable = z.infer<typeof variableConfig>;
57
57
  declare const providerConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
@@ -95,19 +95,19 @@ declare const terraformConfig: z.ZodObject<{
95
95
  }>, z.ZodString]>>, "many">>;
96
96
  backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
97
97
  }, "strip", z.ZodTypeAny, {
98
- backend?: Record<string, Record<string, any>[]> | undefined;
98
+ required_version?: string | undefined;
99
99
  required_providers?: Record<string, string | {
100
100
  source?: string | undefined;
101
101
  version?: string | undefined;
102
102
  }>[] | undefined;
103
- required_version?: string | undefined;
104
- }, {
105
103
  backend?: Record<string, Record<string, any>[]> | undefined;
104
+ }, {
105
+ required_version?: string | undefined;
106
106
  required_providers?: Record<string, string | {
107
107
  source?: string | undefined;
108
108
  version?: string | undefined;
109
109
  }>[] | undefined;
110
- required_version?: string | undefined;
110
+ backend?: Record<string, Record<string, any>[]> | undefined;
111
111
  }>;
112
112
  export type TerraformConfig = z.infer<typeof terraformConfig>;
113
113
  export declare const schema: z.ZodObject<{
@@ -139,14 +139,14 @@ export declare const schema: z.ZodObject<{
139
139
  sensitive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
140
140
  depends_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
141
141
  }, "strip", z.ZodTypeAny, {
142
+ sensitive?: boolean | undefined;
142
143
  value?: any;
143
144
  description?: string | undefined;
144
- sensitive?: boolean | undefined;
145
145
  depends_on?: string | undefined;
146
146
  }, {
147
+ sensitive?: boolean | undefined;
147
148
  value?: any;
148
149
  description?: string | undefined;
149
- sensitive?: boolean | undefined;
150
150
  depends_on?: string | undefined;
151
151
  }>, "many">>>;
152
152
  provider: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
@@ -165,19 +165,19 @@ export declare const schema: z.ZodObject<{
165
165
  }>, z.ZodString]>>, "many">>;
166
166
  backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
167
167
  }, "strip", z.ZodTypeAny, {
168
- backend?: Record<string, Record<string, any>[]> | undefined;
168
+ required_version?: string | undefined;
169
169
  required_providers?: Record<string, string | {
170
170
  source?: string | undefined;
171
171
  version?: string | undefined;
172
172
  }>[] | undefined;
173
- required_version?: string | undefined;
174
- }, {
175
173
  backend?: Record<string, Record<string, any>[]> | undefined;
174
+ }, {
175
+ required_version?: string | undefined;
176
176
  required_providers?: Record<string, string | {
177
177
  source?: string | undefined;
178
178
  version?: string | undefined;
179
179
  }>[] | undefined;
180
- required_version?: string | undefined;
180
+ backend?: Record<string, Record<string, any>[]> | undefined;
181
181
  }>, "many">>;
182
182
  variable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
183
183
  type: z.ZodOptional<z.ZodString>;
@@ -196,102 +196,102 @@ export declare const schema: z.ZodObject<{
196
196
  condition?: any;
197
197
  }>, "many">>>;
198
198
  }, "strip", z.ZodTypeAny, {
199
+ sensitive?: boolean | undefined;
199
200
  type?: string | undefined;
200
- default?: any;
201
201
  description?: string | undefined;
202
- sensitive?: boolean | undefined;
203
- nullable?: boolean | undefined;
204
202
  validation?: {
205
203
  error_message: string;
206
204
  condition?: any;
207
205
  }[] | undefined;
206
+ default?: any;
207
+ nullable?: boolean | undefined;
208
208
  }, {
209
+ sensitive?: boolean | undefined;
209
210
  type?: string | undefined;
210
- default?: any;
211
211
  description?: string | undefined;
212
- sensitive?: boolean | undefined;
213
- nullable?: boolean | undefined;
214
212
  validation?: {
215
213
  error_message: string;
216
214
  condition?: any;
217
215
  }[] | undefined;
216
+ default?: any;
217
+ nullable?: boolean | undefined;
218
218
  }>, "many">>>;
219
219
  }, "strip", z.ZodTypeAny, {
220
- terraform?: {
221
- backend?: Record<string, Record<string, any>[]> | undefined;
222
- required_providers?: Record<string, string | {
223
- source?: string | undefined;
224
- version?: string | undefined;
225
- }>[] | undefined;
226
- required_version?: string | undefined;
227
- }[] | undefined;
228
220
  provider?: Record<string, Record<string, any>[]> | undefined;
221
+ data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
222
+ import?: {
223
+ to: string;
224
+ id: string;
225
+ provider?: any;
226
+ }[] | undefined;
227
+ locals?: Record<string, any>[] | undefined;
229
228
  module?: Record<string, z.objectOutputType<{
230
229
  source: z.ZodString;
231
230
  }, z.ZodTypeAny, "passthrough">[]> | undefined;
232
- resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
233
- data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
234
231
  output?: Record<string, {
232
+ sensitive?: boolean | undefined;
235
233
  value?: any;
236
234
  description?: string | undefined;
237
- sensitive?: boolean | undefined;
238
235
  depends_on?: string | undefined;
239
236
  }[]> | undefined;
237
+ resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
238
+ terraform?: {
239
+ required_version?: string | undefined;
240
+ required_providers?: Record<string, string | {
241
+ source?: string | undefined;
242
+ version?: string | undefined;
243
+ }>[] | undefined;
244
+ backend?: Record<string, Record<string, any>[]> | undefined;
245
+ }[] | undefined;
240
246
  variable?: Record<string, {
247
+ sensitive?: boolean | undefined;
241
248
  type?: string | undefined;
242
- default?: any;
243
249
  description?: string | undefined;
244
- sensitive?: boolean | undefined;
245
- nullable?: boolean | undefined;
246
250
  validation?: {
247
251
  error_message: string;
248
252
  condition?: any;
249
253
  }[] | undefined;
254
+ default?: any;
255
+ nullable?: boolean | undefined;
250
256
  }[]> | undefined;
257
+ }, {
258
+ provider?: Record<string, Record<string, any>[]> | undefined;
259
+ data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
251
260
  import?: {
252
261
  to: string;
253
262
  id: string;
254
263
  provider?: any;
255
264
  }[] | undefined;
256
265
  locals?: Record<string, any>[] | undefined;
257
- }, {
258
- terraform?: {
259
- backend?: Record<string, Record<string, any>[]> | undefined;
260
- required_providers?: Record<string, string | {
261
- source?: string | undefined;
262
- version?: string | undefined;
263
- }>[] | undefined;
264
- required_version?: string | undefined;
265
- }[] | undefined;
266
- provider?: Record<string, Record<string, any>[]> | undefined;
267
266
  module?: Record<string, z.objectInputType<{
268
267
  source: z.ZodString;
269
268
  }, z.ZodTypeAny, "passthrough">[]> | undefined;
270
- resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
271
- data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
272
269
  output?: Record<string, {
270
+ sensitive?: boolean | undefined;
273
271
  value?: any;
274
272
  description?: string | undefined;
275
- sensitive?: boolean | undefined;
276
273
  depends_on?: string | undefined;
277
274
  }[]> | undefined;
275
+ resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
276
+ terraform?: {
277
+ required_version?: string | undefined;
278
+ required_providers?: Record<string, string | {
279
+ source?: string | undefined;
280
+ version?: string | undefined;
281
+ }>[] | undefined;
282
+ backend?: Record<string, Record<string, any>[]> | undefined;
283
+ }[] | undefined;
278
284
  variable?: Record<string, {
285
+ sensitive?: boolean | undefined;
279
286
  type?: string | undefined;
280
- default?: any;
281
287
  description?: string | undefined;
282
- sensitive?: boolean | undefined;
283
- nullable?: boolean | undefined;
284
288
  validation?: {
285
289
  error_message: string;
286
290
  condition?: any;
287
291
  }[] | undefined;
292
+ default?: any;
293
+ nullable?: boolean | undefined;
288
294
  }[]> | undefined;
289
- import?: {
290
- to: string;
291
- id: string;
292
- provider?: any;
293
- }[] | undefined;
294
- locals?: Record<string, any>[] | undefined;
295
295
  }>;
296
296
  export {};
297
297
  //# sourceMappingURL=schema.d.ts.map
package/build/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { logger } from "@cdktn/commons";
2
- export declare const leaveCommentText = "Please leave a comment at https://cdk.tf/bugs/convert-expressions if you run into this issue.";
2
+ export declare const fileBugCommentText = "This is likely a bug in cdktn. Please report it at https://github.com/open-constructs/cdk-terrain/issues/new?assignees=&labels=bug&template=bug-report.md&title=.";
3
3
  export declare const camelCase: (str: string) => string;
4
4
  export declare const pascalCase: (str: string) => string;
5
5
  export declare function uniqueId(set: Set<string>, key: string): string;
package/build/utils.js CHANGED
@@ -3,13 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.uniqueId = exports.pascalCase = exports.camelCase = exports.leaveCommentText = exports.logger = void 0;
6
+ exports.uniqueId = exports.pascalCase = exports.camelCase = exports.fileBugCommentText = exports.logger = void 0;
7
7
  // Copyright (c) HashiCorp, Inc
8
8
  // SPDX-License-Identifier: MPL-2.0
9
9
  const camelcase_1 = __importDefault(require("camelcase"));
10
10
  var commons_1 = require("@cdktn/commons");
11
11
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return commons_1.logger; } });
12
- exports.leaveCommentText = `Please leave a comment at https://cdk.tf/bugs/convert-expressions if you run into this issue.`;
12
+ exports.fileBugCommentText = `This is likely a bug in cdktn. Please report it at https://github.com/open-constructs/cdk-terrain/issues/new?assignees=&labels=bug&template=bug-report.md&title=.`;
13
13
  const camelCase = (str) => (0, camelcase_1.default)(str.replace(/[-/]/g, "_"));
14
14
  exports.camelCase = camelCase;
15
15
  const pascalCase = (str) => (0, camelcase_1.default)(str.replace(/[-/]/g, "_"), { pascalCase: true });
@@ -22,4 +22,4 @@ function uniqueId(set, key) {
22
22
  return key;
23
23
  }
24
24
  exports.uniqueId = uniqueId;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywwREFBa0M7QUFFbEMsMENBQXdDO0FBQS9CLGlHQUFBLE1BQU0sT0FBQTtBQUVGLFFBQUEsZ0JBQWdCLEdBQUcsK0ZBQStGLENBQUM7QUFFekgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUEsbUJBQVMsRUFBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQWxFLFFBQUEsU0FBUyxhQUF5RDtBQUN4RSxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQ3hDLElBQUEsbUJBQVMsRUFBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRGhELFFBQUEsVUFBVSxjQUNzQztBQUU3RCxTQUFnQixRQUFRLENBQUMsR0FBZ0IsRUFBRSxHQUFXO0lBQ3BELElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDRCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCBjYW1lbGNhc2UgZnJvbSBcImNhbWVsY2FzZVwiO1xuXG5leHBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcblxuZXhwb3J0IGNvbnN0IGxlYXZlQ29tbWVudFRleHQgPSBgUGxlYXNlIGxlYXZlIGEgY29tbWVudCBhdCBodHRwczovL2Nkay50Zi9idWdzL2NvbnZlcnQtZXhwcmVzc2lvbnMgaWYgeW91IHJ1biBpbnRvIHRoaXMgaXNzdWUuYDtcblxuZXhwb3J0IGNvbnN0IGNhbWVsQ2FzZSA9IChzdHI6IHN0cmluZykgPT4gY2FtZWxjYXNlKHN0ci5yZXBsYWNlKC9bLS9dL2csIFwiX1wiKSk7XG5leHBvcnQgY29uc3QgcGFzY2FsQ2FzZSA9IChzdHI6IHN0cmluZykgPT5cbiAgY2FtZWxjYXNlKHN0ci5yZXBsYWNlKC9bLS9dL2csIFwiX1wiKSwgeyBwYXNjYWxDYXNlOiB0cnVlIH0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlSWQoc2V0OiBTZXQ8c3RyaW5nPiwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc2V0LmhhcyhrZXkpKSB7XG4gICAgcmV0dXJuIHVuaXF1ZUlkKHNldCwgYCR7a2V5fV8ke3NldC5zaXplfWApO1xuICB9XG4gIHNldC5hZGQoa2V5KTtcbiAgcmV0dXJuIGtleTtcbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywwREFBa0M7QUFFbEMsMENBQXdDO0FBQS9CLGlHQUFBLE1BQU0sT0FBQTtBQUVGLFFBQUEsa0JBQWtCLEdBQUcsbUtBQW1LLENBQUM7QUFFL0wsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUEsbUJBQVMsRUFBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQWxFLFFBQUEsU0FBUyxhQUF5RDtBQUN4RSxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQ3hDLElBQUEsbUJBQVMsRUFBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRGhELFFBQUEsVUFBVSxjQUNzQztBQUU3RCxTQUFnQixRQUFRLENBQUMsR0FBZ0IsRUFBRSxHQUFXO0lBQ3BELElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDRCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCBjYW1lbGNhc2UgZnJvbSBcImNhbWVsY2FzZVwiO1xuXG5leHBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcblxuZXhwb3J0IGNvbnN0IGZpbGVCdWdDb21tZW50VGV4dCA9IGBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBjZGt0bi4gUGxlYXNlIHJlcG9ydCBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1jb25zdHJ1Y3RzL2Nkay10ZXJyYWluL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9YnVnJnRlbXBsYXRlPWJ1Zy1yZXBvcnQubWQmdGl0bGU9LmA7XG5cbmV4cG9ydCBjb25zdCBjYW1lbENhc2UgPSAoc3RyOiBzdHJpbmcpID0+IGNhbWVsY2FzZShzdHIucmVwbGFjZSgvWy0vXS9nLCBcIl9cIikpO1xuZXhwb3J0IGNvbnN0IHBhc2NhbENhc2UgPSAoc3RyOiBzdHJpbmcpID0+XG4gIGNhbWVsY2FzZShzdHIucmVwbGFjZSgvWy0vXS9nLCBcIl9cIiksIHsgcGFzY2FsQ2FzZTogdHJ1ZSB9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZUlkKHNldDogU2V0PHN0cmluZz4sIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHNldC5oYXMoa2V5KSkge1xuICAgIHJldHVybiB1bmlxdWVJZChzZXQsIGAke2tleX1fJHtzZXQuc2l6ZX1gKTtcbiAgfVxuICBzZXQuYWRkKGtleSk7XG4gIHJldHVybiBrZXk7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ import rootConfig from "../../../eslint.config.mjs";
7
+
8
+ export default [
9
+ {
10
+ ignores: ["build/**", "dist/**"],
11
+ },
12
+ ...rootConfig,
13
+ ];