jsii-pacmak 1.44.2 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ const lib_1 = require("../lib");
8
8
  const logging_1 = require("../lib/logging");
9
9
  const version_1 = require("../lib/version");
10
10
  (async function main() {
11
- var _a;
11
+ var _a, _b;
12
12
  const argv = yargs
13
13
  .env('JSII_PACMAK')
14
14
  .command(['$0 [PROJECTS...]', 'generate [PROJECTS...]'], 'Generates jsii bindings for the selected project(s)', (argv) => argv.positional('PROJECTS', {
@@ -89,7 +89,7 @@ const version_1 = require("../lib/version");
89
89
  .option('rosetta-translate-live', {
90
90
  type: 'boolean',
91
91
  desc: "Translate code samples on-the-fly if they can't be found in the samples tablet (deprecated)",
92
- default: true,
92
+ default: undefined,
93
93
  })
94
94
  .option('rosetta-unknown-snippets', {
95
95
  type: 'string',
@@ -126,6 +126,13 @@ const version_1 = require("../lib/version");
126
126
  lib_1.configureLogging({ level: argv.verbose !== undefined ? argv.verbose : 0 });
127
127
  // Default to 4 threads in case of concurrency, good enough for most situations
128
128
  logging_1.debug('command line arguments:', argv);
129
+ if (argv['rosetta-translate-live'] !== undefined &&
130
+ argv['rosetta-unknown-snippets'] !== undefined) {
131
+ throw new Error('Prefer using --rosetta-unknown-snippets over --rosetta-translate-live');
132
+ }
133
+ const rosettaUnknownSnippets = (_a = argv['rosetta-unknown-snippets']) !== null && _a !== void 0 ? _a : (argv['rosetta-translate-live']
134
+ ? jsii_rosetta_1.UnknownSnippetMode.TRANSLATE
135
+ : jsii_rosetta_1.UnknownSnippetMode.VERBATIM);
129
136
  return lib_1.pacmak({
130
137
  argv,
131
138
  clean: argv.clean,
@@ -138,10 +145,9 @@ const version_1 = require("../lib/version");
138
145
  outputDirectory: argv.outdir,
139
146
  parallel: argv.parallel,
140
147
  recurse: argv.recurse,
141
- rosettaLiveConversion: argv['rosetta-translate-live'],
142
- rosettaUnknownSnippets: argv['rosetta-unknown-snippets'],
148
+ rosettaUnknownSnippets,
143
149
  rosettaTablet: argv['rosetta-tablet'],
144
- targets: (_a = argv.targets) === null || _a === void 0 ? void 0 : _a.map((target) => target),
150
+ targets: (_b = argv.targets) === null || _b === void 0 ? void 0 : _b.map((target) => target),
145
151
  updateNpmIgnoreFiles: argv.npmignore,
146
152
  validateAssemblies: argv['validate-assemblies'],
147
153
  });
@@ -149,4 +155,4 @@ const version_1 = require("../lib/version");
149
155
  process.stderr.write(`${err.stack}\n`);
150
156
  process.exit(1);
151
157
  });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wYWNtYWsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2lpLXBhY21hay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxnQ0FBOEI7QUFFOUIsK0NBQWtEO0FBQ2xELCtCQUErQjtBQUUvQixnQ0FBOEQ7QUFDOUQsNENBQXVDO0FBQ3ZDLDRDQUE4QztBQUU5QyxDQUFDLEtBQUssVUFBVSxJQUFJOztJQUNsQixNQUFNLElBQUksR0FBRyxLQUFLO1NBQ2YsR0FBRyxDQUFDLGFBQWEsQ0FBQztTQUNsQixPQUFPLENBQ04sQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQyxFQUMvQyxxREFBcUQsRUFDckQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO1FBQzFCLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztLQUNmLENBQUMsQ0FDTDtTQUNBLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUN0QixJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxpREFBaUQ7UUFDdkQsa0JBQWtCLEVBQ2hCLHlEQUF5RDtRQUMzRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBVSxDQUFDO1FBQ2xDLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7U0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2hCLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsNkNBQTZDO1FBQ25ELGtCQUFrQixFQUFFLDBDQUEwQztRQUM5RCxRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNuQixLQUFLLEVBQUUsR0FBRztRQUNW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LElBQUksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgJ0Bqc2lpL2NoZWNrLW5vZGUvcnVuJztcblxuaW1wb3J0IHsgVW5rbm93blNuaXBwZXRNb2RlIH0gZnJvbSAnanNpaS1yb3NldHRhJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHsgcGFjbWFrLCBjb25maWd1cmVMb2dnaW5nLCBUYXJnZXROYW1lIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSAnLi4vbGliL2xvZ2dpbmcnO1xuaW1wb3J0IHsgVkVSU0lPTl9ERVNDIH0gZnJvbSAnLi4vbGliL3ZlcnNpb24nO1xuXG4oYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLmVudignSlNJSV9QQUNNQUsnKVxuICAgIC5jb21tYW5kKFxuICAgICAgWyckMCAgW1BST0pFQ1RTLi4uXScsICdnZW5lcmF0ZSBbUFJPSkVDVFMuLi5dJ10sXG4gICAgICAnR2VuZXJhdGVzIGpzaWkgYmluZGluZ3MgZm9yIHRoZSBzZWxlY3RlZCBwcm9qZWN0KHMpJyxcbiAgICAgIChhcmd2KSA9PlxuICAgICAgICBhcmd2LnBvc2l0aW9uYWwoJ1BST0pFQ1RTJywge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGRlc2M6ICdQcm9qZWN0KHMpIHRvIGdlbmVyYXRlJyxcbiAgICAgICAgICBub3JtYWxpemU6IHRydWUsXG4gICAgICAgICAgZGVmYXVsdDogWycuJ10sXG4gICAgICAgIH0pLFxuICAgIClcbiAgICAub3B0aW9uKCd0YXJnZXRzJywge1xuICAgICAgYWxpYXM6IFsndGFyZ2V0JywgJ3QnXSxcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICBkZXNjOiAndGFyZ2V0IGxhbmd1YWdlcyBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgYmluZGluZ3MnLFxuICAgICAgZGVmYXVsdERlc2NyaXB0aW9uOlxuICAgICAgICAnYWxsIHRhcmdldHMgZGVmaW5lZCBpbiBgcGFja2FnZS5qc29uYCB3aWxsIGJlIGdlbmVyYXRlZCcsXG4gICAgICBjaG9pY2VzOiBPYmplY3QudmFsdWVzKFRhcmdldE5hbWUpLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbignb3V0ZGlyJywge1xuICAgICAgYWxpYXM6ICdvJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVzYzogJ2RpcmVjdG9yeSB3aGVyZSBhcnRpZmFjdHMgd2lsbCBiZSBnZW5lcmF0ZWQnLFxuICAgICAgZGVmYXVsdERlc2NyaXB0aW9uOiAnYmFzZWQgb24gYGpzaWkub3V0cHV0YCBpbiBgcGFja2FnZS5qc29uYCcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdjb2RlLW9ubHknLCB7XG4gICAgICBhbGlhczogJ2MnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ2dlbmVyYXRlIGNvZGUgb25seSAoaW5zdGVhZCBvZiBidWlsZGluZyBhbmQgcGFja2FnaW5nKScsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2ZpbmdlcnByaW50Jywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ2F0dGFjaCBhIGZpbmdlcnByaW50IHRvIHRoZSBnZW5lcmF0ZWQgYXJ0aWZhY3RzLCBhbmQgc2tpcCBnZW5lcmF0aW9uIGlmIG91dGRpciBjb250YWlucyBhcnRpZmFjdHMgdGhhdCBoYXZlIGEgbWF0Y2hpbmcgZmluZ2VycHJpbnQnLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2ZvcmNlJywge1xuICAgICAgYWxpYXM6ICdmJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdmb3JjZSBnZW5lcmF0aW9uIG9mIG5ldyBhcnRpZmFjdHMsIGV2ZW4gaWYgdGhlIGZpbmdlcnByaW50cyBtYXRjaCcsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2ZvcmNlLXN1YmRpcmVjdG9yeScsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdmb3JjZSBnZW5lcmF0aW9uIGludG8gYSB0YXJnZXQtbmFtZWQgc3ViZGlyZWN0b3J5LCBldmVuIGluIHNpbmdsZS10YXJnZXQgbW9kZScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignZm9yY2UtdGFyZ2V0Jywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ2ZvcmNlIGdlbmVyYXRpb24gb2YgdGhlIGdpdmVuIHRhcmdldHMsIGV2ZW4gaWYgdGhlIHNvdXJjZSBwYWNrYWdlLmpzb24gZG9lc250IGRlY2xhcmUgaXQnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdyZWN1cnNlJywge1xuICAgICAgYWxpYXM6ICdSJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdyZWN1cnNpdmVseSBnZW5lcmF0ZSBhbmQgYnVpbGQgYWxsIGRlcGVuZGVuY2llcyBpbnRvIGBvdXRkaXJgJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndmVyYm9zZScsIHtcbiAgICAgIGFsaWFzOiAndicsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjOiAnZW1pdCB2ZXJib3NlIGJ1aWxkIG91dHB1dCcsXG4gICAgICBjb3VudDogdHJ1ZSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgfSlcbiAgICAub3B0aW9uKCdjbGVhbicsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdjbGVhbiB1cCB0ZW1wb3JhcnkgZmlsZXMgdXBvbiBzdWNjZXNzICh1c2UgLS1uby1jbGVhbiB0byBkaXNhYmxlKScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignbnBtaWdub3JlJywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ0F1dG8tdXBkYXRlIC5ucG1pZ25vcmUgdG8gZXhjbHVkZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBhbmQgaW5jbHVkZSB0aGUgLmpzaWkgZmlsZScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigncm9zZXR0YS10YWJsZXQnLCB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlc2M6IFwiTG9jYXRpb24gb2YgYSBqc2lpLXJvc2V0dGEgdGFibGV0IHdpdGggc2FtcGxlIHRyYW5zbGF0aW9ucyAoY3JlYXRlZCB1c2luZyAnanNpaS1yb3NldHRhIGV4dHJhY3QnKVwiLFxuICAgIH0pXG4gICAgLm9wdGlvbigncm9zZXR0YS10cmFuc2xhdGUtbGl2ZScsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6IFwiVHJhbnNsYXRlIGNvZGUgc2FtcGxlcyBvbi10aGUtZmx5IGlmIHRoZXkgY2FuJ3QgYmUgZm91bmQgaW4gdGhlIHNhbXBsZXMgdGFibGV0IChkZXByZWNhdGVkKVwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3Jvc2V0dGEtdW5rbm93bi1zbmlwcGV0cycsIHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgVW5rbm93blNuaXBwZXRNb2RlLlZFUkJBVElNLFxuICAgICAgICBVbmtub3duU25pcHBldE1vZGUuVFJBTlNMQVRFLFxuICAgICAgICBVbmtub3duU25pcHBldE1vZGUuRkFJTCxcbiAgICAgIF0sXG4gICAgICBkZXNjOiBcIldoYXQgdG8gZG8gd2l0aCBjb2RlIHNhbXBsZXMgaWYgdGhleSBjYW4ndCBiZSBmb3VuZCBpbiB0aGUgc2FtcGxlcyB0YWJsZXRcIixcbiAgICB9KVxuICAgIC5vcHRpb24oJ3BhcmFsbGVsJywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ0dlbmVyYXRlIGFsbCBjb25maWd1cmVkIHRhcmdldHMgaW4gcGFyYWxsZWwgKGRpc2FibGluZyB0aGlzIG1pZ2h0IGhlbHAgaWYgeW91IGVuY291bnRlciBFTUZJTEUgZXJyb3JzKScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignZG90bmV0LW51Z2V0LWdsb2JhbC1wYWNrYWdlcy1mb2xkZXInLCB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlc2M6ICdDb25maWd1cmUgYSBkaWZmZXJlbnQgTnVHZXQgcGFja2FnZSBjYWNoZSBmb3IgTnVHZXQnLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgLy8gVGhpcyBpcyBhIGhpZGRlbiBvcHRpb24sIGZvbGtzIG5lZWQgbm90IGJvdGhlciBpdCB1bmxlc3MgdGhleSdyZSB2ZXJ5IGFkdmFuY2VkXG4gICAgICBoaWRkZW46IHRydWUsXG4gICAgICAvLyBUaGlzIGlzIGV4cGVjdGVkIHRvIGJlIGEgcGF0aCwgd2hpY2ggc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbiAgICAgIG5vcm1hbGl6ZTogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3ZhbGlkYXRlLWFzc2VtYmxpZXMnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjOiAnV2hldGhlciBqc2lpIGFzc2VtYmxpZXMgc2hvdWxkIGJlIHZhbGlkYXRlZC4gVGhpcyBjYW4gYmUgZXhwZW5zaXZlIGFuZCBpcyBza2lwcGVkIGJ5IGRlZmF1bHQuJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLnZlcnNpb24oVkVSU0lPTl9ERVNDKVxuICAgIC5zdHJpY3QoKS5hcmd2O1xuXG4gIGNvbmZpZ3VyZUxvZ2dpbmcoeyBsZXZlbDogYXJndi52ZXJib3NlICE9PSB1bmRlZmluZWQgPyBhcmd2LnZlcmJvc2UgOiAwIH0pO1xuXG4gIC8vIERlZmF1bHQgdG8gNCB0aHJlYWRzIGluIGNhc2Ugb2YgY29uY3VycmVuY3ksIGdvb2QgZW5vdWdoIGZvciBtb3N0IHNpdHVhdGlvbnNcbiAgZGVidWcoJ2NvbW1hbmQgbGluZSBhcmd1bWVudHM6JywgYXJndik7XG5cbiAgcmV0dXJuIHBhY21hayh7XG4gICAgYXJndixcbiAgICBjbGVhbjogYXJndi5jbGVhbixcbiAgICBjb2RlT25seTogYXJndlsnY29kZS1vbmx5J10sXG4gICAgZmluZ2VycHJpbnQ6IGFyZ3YuZmluZ2VycHJpbnQsXG4gICAgZm9yY2U6IGFyZ3YuZm9yY2UsXG4gICAgZm9yY2VTdWJkaXJlY3Rvcnk6IGFyZ3ZbJ2ZvcmNlLXN1YmRpcmVjdG9yeSddLFxuICAgIGZvcmNlVGFyZ2V0OiBhcmd2Wydmb3JjZS10YXJnZXQnXSxcbiAgICBpbnB1dERpcmVjdG9yaWVzOiBhcmd2LlBST0pFQ1RTLFxuICAgIG91dHB1dERpcmVjdG9yeTogYXJndi5vdXRkaXIsXG4gICAgcGFyYWxsZWw6IGFyZ3YucGFyYWxsZWwsXG4gICAgcmVjdXJzZTogYXJndi5yZWN1cnNlLFxuICAgIHJvc2V0dGFMaXZlQ29udmVyc2lvbjogYXJndlsncm9zZXR0YS10cmFuc2xhdGUtbGl2ZSddLFxuICAgIHJvc2V0dGFVbmtub3duU25pcHBldHM6IGFyZ3ZbJ3Jvc2V0dGEtdW5rbm93bi1zbmlwcGV0cyddIGFzXG4gICAgICB8IFVua25vd25TbmlwcGV0TW9kZVxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgcm9zZXR0YVRhYmxldDogYXJndlsncm9zZXR0YS10YWJsZXQnXSxcbiAgICB0YXJnZXRzOiBhcmd2LnRhcmdldHM/Lm1hcCgodGFyZ2V0KSA9PiB0YXJnZXQgYXMgVGFyZ2V0TmFtZSksXG4gICAgdXBkYXRlTnBtSWdub3JlRmlsZXM6IGFyZ3YubnBtaWdub3JlLFxuICAgIHZhbGlkYXRlQXNzZW1ibGllczogYXJndlsndmFsaWRhdGUtYXNzZW1ibGllcyddLFxuICB9KTtcbn0pKCkuY2F0Y2goKGVycikgPT4ge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShgJHtlcnIuc3RhY2t9XFxuYCk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wYWNtYWsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2lpLXBhY21hay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxnQ0FBOEI7QUFFOUIsK0NBQWtEO0FBQ2xELCtCQUErQjtBQUUvQixnQ0FBOEQ7QUFDOUQsNENBQXVDO0FBQ3ZDLDRDQUE4QztBQUU5QyxDQUFDLEtBQUssVUFBVSxJQUFJOztJQUNsQixNQUFNLElBQUksR0FBRyxLQUFLO1NBQ2YsR0FBRyxDQUFDLGFBQWEsQ0FBQztTQUNsQixPQUFPLENBQ04sQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQyxFQUMvQyxxREFBcUQsRUFDckQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO1FBQzFCLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixTQUFTLEVBQUUsSUFBSTtRQUNmLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztLQUNmLENBQUMsQ0FDTDtTQUNBLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUN0QixJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxpREFBaUQ7UUFDdkQsa0JBQWtCLEVBQ2hCLHlEQUF5RDtRQUMzRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBVSxDQUFDO1FBQ2xDLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7U0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2hCLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsNkNBQTZDO1FBQ25ELGtCQUFrQixFQUFFLDBDQUEwQztRQUM5RCxRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNuQixLQUFLLEVBQUUsR0FBRztRQUNW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RUFBRSxFQUFFLENBQUMsTUFBb0IsQ0FBQztRQUM1RCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUztRQUNwQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7S0FDaEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgJ0Bqc2lpL2NoZWNrLW5vZGUvcnVuJztcblxuaW1wb3J0IHsgVW5rbm93blNuaXBwZXRNb2RlIH0gZnJvbSAnanNpaS1yb3NldHRhJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHsgcGFjbWFrLCBjb25maWd1cmVMb2dnaW5nLCBUYXJnZXROYW1lIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSAnLi4vbGliL2xvZ2dpbmcnO1xuaW1wb3J0IHsgVkVSU0lPTl9ERVNDIH0gZnJvbSAnLi4vbGliL3ZlcnNpb24nO1xuXG4oYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLmVudignSlNJSV9QQUNNQUsnKVxuICAgIC5jb21tYW5kKFxuICAgICAgWyckMCAgW1BST0pFQ1RTLi4uXScsICdnZW5lcmF0ZSBbUFJPSkVDVFMuLi5dJ10sXG4gICAgICAnR2VuZXJhdGVzIGpzaWkgYmluZGluZ3MgZm9yIHRoZSBzZWxlY3RlZCBwcm9qZWN0KHMpJyxcbiAgICAgIChhcmd2KSA9PlxuICAgICAgICBhcmd2LnBvc2l0aW9uYWwoJ1BST0pFQ1RTJywge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGRlc2M6ICdQcm9qZWN0KHMpIHRvIGdlbmVyYXRlJyxcbiAgICAgICAgICBub3JtYWxpemU6IHRydWUsXG4gICAgICAgICAgZGVmYXVsdDogWycuJ10sXG4gICAgICAgIH0pLFxuICAgIClcbiAgICAub3B0aW9uKCd0YXJnZXRzJywge1xuICAgICAgYWxpYXM6IFsndGFyZ2V0JywgJ3QnXSxcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICBkZXNjOiAndGFyZ2V0IGxhbmd1YWdlcyBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgYmluZGluZ3MnLFxuICAgICAgZGVmYXVsdERlc2NyaXB0aW9uOlxuICAgICAgICAnYWxsIHRhcmdldHMgZGVmaW5lZCBpbiBgcGFja2FnZS5qc29uYCB3aWxsIGJlIGdlbmVyYXRlZCcsXG4gICAgICBjaG9pY2VzOiBPYmplY3QudmFsdWVzKFRhcmdldE5hbWUpLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbignb3V0ZGlyJywge1xuICAgICAgYWxpYXM6ICdvJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVzYzogJ2RpcmVjdG9yeSB3aGVyZSBhcnRpZmFjdHMgd2lsbCBiZSBnZW5lcmF0ZWQnLFxuICAgICAgZGVmYXVsdERlc2NyaXB0aW9uOiAnYmFzZWQgb24gYGpzaWkub3V0cHV0YCBpbiBgcGFja2FnZS5qc29uYCcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdjb2RlLW9ubHknLCB7XG4gICAgICBhbGlhczogJ2MnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ2dlbmVyYXRlIGNvZGUgb25seSAoaW5zdGVhZCBvZiBidWlsZGluZyBhbmQgcGFja2FnaW5nKScsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2ZpbmdlcnByaW50Jywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ2F0dGFjaCBhIGZpbmdlcnByaW50IHRvIHRoZSBnZW5lcmF0ZWQgYXJ0aWZhY3RzLCBhbmQgc2tpcCBnZW5lcmF0aW9uIGlmIG91dGRpciBjb250YWlucyBhcnRpZmFjdHMgdGhhdCBoYXZlIGEgbWF0Y2hpbmcgZmluZ2VycHJpbnQnLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2ZvcmNlJywge1xuICAgICAgYWxpYXM6ICdmJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdmb3JjZSBnZW5lcmF0aW9uIG9mIG5ldyBhcnRpZmFjdHMsIGV2ZW4gaWYgdGhlIGZpbmdlcnByaW50cyBtYXRjaCcsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2ZvcmNlLXN1YmRpcmVjdG9yeScsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdmb3JjZSBnZW5lcmF0aW9uIGludG8gYSB0YXJnZXQtbmFtZWQgc3ViZGlyZWN0b3J5LCBldmVuIGluIHNpbmdsZS10YXJnZXQgbW9kZScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignZm9yY2UtdGFyZ2V0Jywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ2ZvcmNlIGdlbmVyYXRpb24gb2YgdGhlIGdpdmVuIHRhcmdldHMsIGV2ZW4gaWYgdGhlIHNvdXJjZSBwYWNrYWdlLmpzb24gZG9lc250IGRlY2xhcmUgaXQnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdyZWN1cnNlJywge1xuICAgICAgYWxpYXM6ICdSJyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdyZWN1cnNpdmVseSBnZW5lcmF0ZSBhbmQgYnVpbGQgYWxsIGRlcGVuZGVuY2llcyBpbnRvIGBvdXRkaXJgJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndmVyYm9zZScsIHtcbiAgICAgIGFsaWFzOiAndicsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjOiAnZW1pdCB2ZXJib3NlIGJ1aWxkIG91dHB1dCcsXG4gICAgICBjb3VudDogdHJ1ZSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgfSlcbiAgICAub3B0aW9uKCdjbGVhbicsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdjbGVhbiB1cCB0ZW1wb3JhcnkgZmlsZXMgdXBvbiBzdWNjZXNzICh1c2UgLS1uby1jbGVhbiB0byBkaXNhYmxlKScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignbnBtaWdub3JlJywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVzYzogJ0F1dG8tdXBkYXRlIC5ucG1pZ25vcmUgdG8gZXhjbHVkZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBhbmQgaW5jbHVkZSB0aGUgLmpzaWkgZmlsZScsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigncm9zZXR0YS10YWJsZXQnLCB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlc2M6IFwiTG9jYXRpb24gb2YgYSBqc2lpLXJvc2V0dGEgdGFibGV0IHdpdGggc2FtcGxlIHRyYW5zbGF0aW9ucyAoY3JlYXRlZCB1c2luZyAnanNpaS1yb3NldHRhIGV4dHJhY3QnKVwiLFxuICAgIH0pXG4gICAgLm9wdGlvbigncm9zZXR0YS10cmFuc2xhdGUtbGl2ZScsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6IFwiVHJhbnNsYXRlIGNvZGUgc2FtcGxlcyBvbi10aGUtZmx5IGlmIHRoZXkgY2FuJ3QgYmUgZm91bmQgaW4gdGhlIHNhbXBsZXMgdGFibGV0IChkZXByZWNhdGVkKVwiLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgIH0pXG4gICAgLm9wdGlvbigncm9zZXR0YS11bmtub3duLXNuaXBwZXRzJywge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICBVbmtub3duU25pcHBldE1vZGUuVkVSQkFUSU0sXG4gICAgICAgIFVua25vd25TbmlwcGV0TW9kZS5UUkFOU0xBVEUsXG4gICAgICAgIFVua25vd25TbmlwcGV0TW9kZS5GQUlMLFxuICAgICAgXSxcbiAgICAgIGRlc2M6IFwiV2hhdCB0byBkbyB3aXRoIGNvZGUgc2FtcGxlcyBpZiB0aGV5IGNhbid0IGJlIGZvdW5kIGluIHRoZSBzYW1wbGVzIHRhYmxldFwiLFxuICAgIH0pXG4gICAgLm9wdGlvbigncGFyYWxsZWwnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjOiAnR2VuZXJhdGUgYWxsIGNvbmZpZ3VyZWQgdGFyZ2V0cyBpbiBwYXJhbGxlbCAoZGlzYWJsaW5nIHRoaXMgbWlnaHQgaGVscCBpZiB5b3UgZW5jb3VudGVyIEVNRklMRSBlcnJvcnMpJyxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSlcbiAgICAub3B0aW9uKCdkb3RuZXQtbnVnZXQtZ2xvYmFsLXBhY2thZ2VzLWZvbGRlcicsIHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVzYzogJ0NvbmZpZ3VyZSBhIGRpZmZlcmVudCBOdUdldCBwYWNrYWdlIGNhY2hlIGZvciBOdUdldCcsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICAvLyBUaGlzIGlzIGEgaGlkZGVuIG9wdGlvbiwgZm9sa3MgbmVlZCBub3QgYm90aGVyIGl0IHVubGVzcyB0aGV5J3JlIHZlcnkgYWR2YW5jZWRcbiAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgIC8vIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYSBwYXRoLCB3aGljaCBzaG91bGQgYmUgbm9ybWFsaXplZFxuICAgICAgbm9ybWFsaXplOiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndmFsaWRhdGUtYXNzZW1ibGllcycsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdXaGV0aGVyIGpzaWkgYXNzZW1ibGllcyBzaG91bGQgYmUgdmFsaWRhdGVkLiBUaGlzIGNhbiBiZSBleHBlbnNpdmUgYW5kIGlzIHNraXBwZWQgYnkgZGVmYXVsdC4nLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAudmVyc2lvbihWRVJTSU9OX0RFU0MpXG4gICAgLnN0cmljdCgpLmFyZ3Y7XG5cbiAgY29uZmlndXJlTG9nZ2luZyh7IGxldmVsOiBhcmd2LnZlcmJvc2UgIT09IHVuZGVmaW5lZCA/IGFyZ3YudmVyYm9zZSA6IDAgfSk7XG5cbiAgLy8gRGVmYXVsdCB0byA0IHRocmVhZHMgaW4gY2FzZSBvZiBjb25jdXJyZW5jeSwgZ29vZCBlbm91Z2ggZm9yIG1vc3Qgc2l0dWF0aW9uc1xuICBkZWJ1ZygnY29tbWFuZCBsaW5lIGFyZ3VtZW50czonLCBhcmd2KTtcblxuICBpZiAoXG4gICAgYXJndlsncm9zZXR0YS10cmFuc2xhdGUtbGl2ZSddICE9PSB1bmRlZmluZWQgJiZcbiAgICBhcmd2Wydyb3NldHRhLXVua25vd24tc25pcHBldHMnXSAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdQcmVmZXIgdXNpbmcgLS1yb3NldHRhLXVua25vd24tc25pcHBldHMgb3ZlciAtLXJvc2V0dGEtdHJhbnNsYXRlLWxpdmUnLFxuICAgICk7XG4gIH1cblxuICBjb25zdCByb3NldHRhVW5rbm93blNuaXBwZXRzID1cbiAgICAoYXJndlsncm9zZXR0YS11bmtub3duLXNuaXBwZXRzJ10gYXMgVW5rbm93blNuaXBwZXRNb2RlIHwgdW5kZWZpbmVkKSA/P1xuICAgIChhcmd2Wydyb3NldHRhLXRyYW5zbGF0ZS1saXZlJ11cbiAgICAgID8gVW5rbm93blNuaXBwZXRNb2RlLlRSQU5TTEFURVxuICAgICAgOiBVbmtub3duU25pcHBldE1vZGUuVkVSQkFUSU0pO1xuXG4gIHJldHVybiBwYWNtYWsoe1xuICAgIGFyZ3YsXG4gICAgY2xlYW46IGFyZ3YuY2xlYW4sXG4gICAgY29kZU9ubHk6IGFyZ3ZbJ2NvZGUtb25seSddLFxuICAgIGZpbmdlcnByaW50OiBhcmd2LmZpbmdlcnByaW50LFxuICAgIGZvcmNlOiBhcmd2LmZvcmNlLFxuICAgIGZvcmNlU3ViZGlyZWN0b3J5OiBhcmd2Wydmb3JjZS1zdWJkaXJlY3RvcnknXSxcbiAgICBmb3JjZVRhcmdldDogYXJndlsnZm9yY2UtdGFyZ2V0J10sXG4gICAgaW5wdXREaXJlY3RvcmllczogYXJndi5QUk9KRUNUUyxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IGFyZ3Yub3V0ZGlyLFxuICAgIHBhcmFsbGVsOiBhcmd2LnBhcmFsbGVsLFxuICAgIHJlY3Vyc2U6IGFyZ3YucmVjdXJzZSxcbiAgICByb3NldHRhVW5rbm93blNuaXBwZXRzLFxuICAgIHJvc2V0dGFUYWJsZXQ6IGFyZ3ZbJ3Jvc2V0dGEtdGFibGV0J10sXG4gICAgdGFyZ2V0czogYXJndi50YXJnZXRzPy5tYXAoKHRhcmdldCkgPT4gdGFyZ2V0IGFzIFRhcmdldE5hbWUpLFxuICAgIHVwZGF0ZU5wbUlnbm9yZUZpbGVzOiBhcmd2Lm5wbWlnbm9yZSxcbiAgICB2YWxpZGF0ZUFzc2VtYmxpZXM6IGFyZ3ZbJ3ZhbGlkYXRlLWFzc2VtYmxpZXMnXSxcbiAgfSk7XG59KSgpLmNhdGNoKChlcnIpID0+IHtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYCR7ZXJyLnN0YWNrfVxcbmApO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
@@ -31,7 +31,7 @@ export declare type Callback = (packageDir: string, meta: PackageJson, root: boo
31
31
  */
32
32
  export interface TraverseDependencyGraphHost {
33
33
  readonly readJson: typeof fs.readJson;
34
- readonly resolveDependencyDirectory: typeof util.resolveDependencyDirectory;
34
+ readonly findDependencyDirectory: typeof util.findDependencyDirectory;
35
35
  }
36
36
  /**
37
37
  * Contents of the `package.json` file.
@@ -19,7 +19,7 @@ const util = require("./util");
19
19
  */
20
20
  async function traverseDependencyGraph(packageDir, callback, host = {
21
21
  readJson: fs.readJson,
22
- resolveDependencyDirectory: util.resolveDependencyDirectory,
22
+ findDependencyDirectory: util.findDependencyDirectory,
23
23
  }) {
24
24
  return real$traverseDependencyGraph(packageDir, callback, host, new Set());
25
25
  }
@@ -40,9 +40,11 @@ async function real$traverseDependencyGraph(packageDir, callback, host, visited)
40
40
  ...Object.keys((_a = meta.dependencies) !== null && _a !== void 0 ? _a : {}),
41
41
  ...Object.keys((_b = meta.peerDependencies) !== null && _b !== void 0 ? _b : {}),
42
42
  ]);
43
- return Promise.all(Array.from(deps).map((dep) => {
44
- const dependencyDir = host.resolveDependencyDirectory(packageDir, dep);
43
+ return Promise.all(Array.from(deps)
44
+ .filter((m) => !util.isBuiltinModule(m))
45
+ .map(async (dep) => {
46
+ const dependencyDir = await host.findDependencyDirectory(dep, packageDir);
45
47
  return real$traverseDependencyGraph(dependencyDir, callback, host, visited);
46
48
  })).then();
47
49
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlcGVuZGVuY3ktZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtCQUE0QjtBQUU1QiwrQkFBK0I7QUFFL0I7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0ksS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxVQUFrQixFQUNsQixRQUFrQixFQUNsQixPQUFvQztJQUNsQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7SUFDckIsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtDQUM1RDtJQUVELE9BQU8sNEJBQTRCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFURCwwREFTQztBQXFDRCxLQUFLLFVBQVUsNEJBQTRCLENBQ3pDLFVBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLElBQWlDLEVBQ2pDLE9BQW9COztJQUVwQix5RUFBeUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQWdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDM0MsV0FBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FDakMsQ0FBQztJQUNGLElBQUksQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtRQUMvQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0tBQ2Y7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQixHQUFHLE1BQU0sQ0FBQyxJQUFJLE9BQUMsSUFBSSxDQUFDLFlBQVksbUNBQUksRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsTUFBTSxDQUFDLElBQUksT0FBQyxJQUFJLENBQUMsZ0JBQWdCLG1DQUFJLEVBQUUsQ0FBQztLQUM1QyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDM0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RSxPQUFPLDRCQUE0QixDQUNqQyxhQUFhLEVBQ2IsUUFBUSxFQUNSLElBQUksRUFDSixPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUVILENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHJhdmVyc2VzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGFuZCBpbnZva2VzIHRoZSBwcm92aWRlZCBjYWxsYmFjayBtZXRob2QgZm9yXG4gKiBlYWNoIGluZGl2aWR1YWwgZGVwZW5kZW5jeSByb290IGRpcmVjdG9yeSAoaW5jbHVkaW5nIHRoZSBjdXJyZW50IHBhY2thZ2UpLlxuICogVGhlIGRlcGVuZGVuY3kgcm9vdHMgYXJlIGRlLWR1cGxpY2F0ZWQgYmFzZWQgb24gdGhlaXIgYWJzb2x1dGUgcGF0aCBvbiB0aGVcbiAqIGZpbGUgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBwYWNrYWdlRGlyIHRoZSBjdXJyZW50IHBhY2thZ2UncyByb290IGRpcmVjdG9yeSAoaS5lOiB3aGVyZSB0aGVcbiAqICAgICAgICAgICAgICAgICAgIGBwYWNrYWdlLmpzb25gIGZpbGUgaXMgbG9jYXRlZClcbiAqIEBwYXJhbSBjYWxsYmFjayAgIHRoZSBmdW5jdGlvbiB0byBpbnZva2Ugd2l0aCBlYWNoIHBhY2thZ2UncyBpbmZvcm1hdGlvbnNcbiAqIEBwYXJhbSBob3N0ICAgICAgIHRoZSBkZXBlbmRlbmN5IGdyYXBoIHRyYXZlcnNhbCBob3N0IHRvIHVzZSAodGhpcyBwYXJhbWV0ZXJcbiAqICAgICAgICAgICAgICAgICAgIHNob3VsZCB0eXBpY2FsbHkgbm90IGJlIHByb3ZpZGVkIHVubGVzcyB0aGlzIG1vZHVsZSBpc1xuICogICAgICAgICAgICAgICAgICAgYmVpbmcgdW5pdCB0ZXN0ZWQpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmF2ZXJzZURlcGVuZGVuY3lHcmFwaChcbiAgcGFja2FnZURpcjogc3RyaW5nLFxuICBjYWxsYmFjazogQ2FsbGJhY2ssXG4gIGhvc3Q6IFRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoSG9zdCA9IHtcbiAgICByZWFkSnNvbjogZnMucmVhZEpzb24sXG4gICAgcmVzb2x2ZURlcGVuZGVuY3lEaXJlY3Rvcnk6IHV0aWwucmVzb2x2ZURlcGVuZGVuY3lEaXJlY3RvcnksXG4gIH0sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHJlYWwkdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgocGFja2FnZURpciwgY2FsbGJhY2ssIGhvc3QsIG5ldyBTZXQoKSk7XG59XG5cbi8qKlxuICogQSBjYWxsYmFjayBpbnZva2VkIGZvciBlYWNoIG5vZGUgaW4gYSBOUE0gbW9kdWxlJ3MgZGVwZW5kZW5jeSBncmFwaC5cbiAqXG4gKiBAcGFyYW0gcGFja2FnZURpciB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjdXJyZW50IHBhY2thZ2UgaXMgbG9jYXRlZC5cbiAqIEBwYXJhbSBtZXRhICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSBmb3IgdGhpcyBwYWNrYWdlLlxuICogQHBhcmFtIHJvb3QgICAgICAgd2hldGhlciB0aGlzIHBhY2thZ2UgaXMgdGhlIHJvb3QgdGhhdCB3YXMgcHJvdmlkZWQgdG8gdGhlXG4gKiAgICAgICAgICAgICAgICAgICBgdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGhgIGNhbGwuXG4gKlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgcGFja2FnZSdzIG93biBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIHByb2Nlc3NlZCxcbiAqICAgICAgICAgIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgdHlwZSBDYWxsYmFjayA9IChcbiAgcGFja2FnZURpcjogc3RyaW5nLFxuICBtZXRhOiBQYWNrYWdlSnNvbixcbiAgcm9vdDogYm9vbGVhbixcbikgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbi8qKlxuICogSG9zdCBtZXRob2RzIGZvciB0cmF2ZXJzaW5nIGRlcGVuZGVuY3kgZ3JhcGhzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoSG9zdCB7XG4gIHJlYWRvbmx5IHJlYWRKc29uOiB0eXBlb2YgZnMucmVhZEpzb247XG4gIHJlYWRvbmx5IHJlc29sdmVEZXBlbmRlbmN5RGlyZWN0b3J5OiB0eXBlb2YgdXRpbC5yZXNvbHZlRGVwZW5kZW5jeURpcmVjdG9yeTtcbn1cblxuLyoqXG4gKiBDb250ZW50cyBvZiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlSnNvbiB7XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhbCR0cmF2ZXJzZURlcGVuZGVuY3lHcmFwaChcbiAgcGFja2FnZURpcjogc3RyaW5nLFxuICBjYWxsYmFjazogQ2FsbGJhY2ssXG4gIGhvc3Q6IFRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoSG9zdCxcbiAgdmlzaXRlZDogU2V0PHN0cmluZz4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gV2UncmUgYXQgdGhlIHJvb3QgaWYgd2UgaGF2ZSBub3QgdmlzaXRlZCBhbnl0aGluZyB5ZXQuIEhvdyBjb252ZW5pZW50IVxuICBjb25zdCBpc1Jvb3QgPSB2aXNpdGVkLnNpemUgPT09IDA7XG4gIGlmICh2aXNpdGVkLmhhcyhwYWNrYWdlRGlyKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgdmlzaXRlZC5hZGQocGFja2FnZURpcik7XG5cbiAgY29uc3QgbWV0YTogUGFja2FnZUpzb24gPSBhd2FpdCBob3N0LnJlYWRKc29uKFxuICAgIGpvaW4ocGFja2FnZURpciwgJ3BhY2thZ2UuanNvbicpLFxuICApO1xuICBpZiAoIShhd2FpdCBjYWxsYmFjayhwYWNrYWdlRGlyLCBtZXRhLCBpc1Jvb3QpKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBkZXBzID0gbmV3IFNldChbXG4gICAgLi4uT2JqZWN0LmtleXMobWV0YS5kZXBlbmRlbmNpZXMgPz8ge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKG1ldGEucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gIF0pO1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgQXJyYXkuZnJvbShkZXBzKS5tYXAoKGRlcCkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeURpciA9IGhvc3QucmVzb2x2ZURlcGVuZGVuY3lEaXJlY3RvcnkocGFja2FnZURpciwgZGVwKTtcbiAgICAgIHJldHVybiByZWFsJHRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoKFxuICAgICAgICBkZXBlbmRlbmN5RGlyLFxuICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgaG9zdCxcbiAgICAgICAgdmlzaXRlZCxcbiAgICAgICk7XG4gICAgfSksXG4gICAgLy8gVGhlIGZvbGxvd2luZyBcIi50aGVuXCIgbGl0ZXJhbGx5IGp1c3QgdHVybnMgYSBgUHJvbWlzZTxUPmAgaW50byBhIGBQcm9taXNlPHZvaWQ+YC4gQ29udmVuaWVudCFcbiAgKS50aGVuKCk7XG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlcGVuZGVuY3ktZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtCQUE0QjtBQUU1QiwrQkFBK0I7QUFFL0I7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0ksS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxVQUFrQixFQUNsQixRQUFrQixFQUNsQixPQUFvQztJQUNsQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7SUFDckIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtDQUN0RDtJQUVELE9BQU8sNEJBQTRCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFURCwwREFTQztBQXFDRCxLQUFLLFVBQVUsNEJBQTRCLENBQ3pDLFVBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLElBQWlDLEVBQ2pDLE9BQW9COztJQUVwQix5RUFBeUU7SUFDekUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQWdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDM0MsV0FBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FDakMsQ0FBQztJQUNGLElBQUksQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtRQUMvQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0tBQ2Y7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQixHQUFHLE1BQU0sQ0FBQyxJQUFJLE9BQUMsSUFBSSxDQUFDLFlBQVksbUNBQUksRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsTUFBTSxDQUFDLElBQUksT0FBQyxJQUFJLENBQUMsZ0JBQWdCLG1DQUFJLEVBQUUsQ0FBQztLQUM1QyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNqQixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FDdEQsR0FBRyxFQUNILFVBQVUsQ0FDWCxDQUFDO1FBQ0YsT0FBTyw0QkFBNEIsQ0FDakMsYUFBYSxFQUNiLFFBQVEsRUFDUixJQUFJLEVBQ0osT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDLENBQUMsQ0FFTCxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcblxuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFRyYXZlcnNlcyB0aGUgZGVwZW5kZW5jeSBncmFwaCBhbmQgaW52b2tlcyB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgbWV0aG9kIGZvclxuICogZWFjaCBpbmRpdmlkdWFsIGRlcGVuZGVuY3kgcm9vdCBkaXJlY3RvcnkgKGluY2x1ZGluZyB0aGUgY3VycmVudCBwYWNrYWdlKS5cbiAqIFRoZSBkZXBlbmRlbmN5IHJvb3RzIGFyZSBkZS1kdXBsaWNhdGVkIGJhc2VkIG9uIHRoZWlyIGFic29sdXRlIHBhdGggb24gdGhlXG4gKiBmaWxlIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFja2FnZURpciB0aGUgY3VycmVudCBwYWNrYWdlJ3Mgcm9vdCBkaXJlY3RvcnkgKGkuZTogd2hlcmUgdGhlXG4gKiAgICAgICAgICAgICAgICAgICBgcGFja2FnZS5qc29uYCBmaWxlIGlzIGxvY2F0ZWQpXG4gKiBAcGFyYW0gY2FsbGJhY2sgICB0aGUgZnVuY3Rpb24gdG8gaW52b2tlIHdpdGggZWFjaCBwYWNrYWdlJ3MgaW5mb3JtYXRpb25zXG4gKiBAcGFyYW0gaG9zdCAgICAgICB0aGUgZGVwZW5kZW5jeSBncmFwaCB0cmF2ZXJzYWwgaG9zdCB0byB1c2UgKHRoaXMgcGFyYW1ldGVyXG4gKiAgICAgICAgICAgICAgICAgICBzaG91bGQgdHlwaWNhbGx5IG5vdCBiZSBwcm92aWRlZCB1bmxlc3MgdGhpcyBtb2R1bGUgaXNcbiAqICAgICAgICAgICAgICAgICAgIGJlaW5nIHVuaXQgdGVzdGVkKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgY2FsbGJhY2s6IENhbGxiYWNrLFxuICBob3N0OiBUcmF2ZXJzZURlcGVuZGVuY3lHcmFwaEhvc3QgPSB7XG4gICAgcmVhZEpzb246IGZzLnJlYWRKc29uLFxuICAgIGZpbmREZXBlbmRlbmN5RGlyZWN0b3J5OiB1dGlsLmZpbmREZXBlbmRlbmN5RGlyZWN0b3J5LFxuICB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiByZWFsJHRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoKHBhY2thZ2VEaXIsIGNhbGxiYWNrLCBob3N0LCBuZXcgU2V0KCkpO1xufVxuXG4vKipcbiAqIEEgY2FsbGJhY2sgaW52b2tlZCBmb3IgZWFjaCBub2RlIGluIGEgTlBNIG1vZHVsZSdzIGRlcGVuZGVuY3kgZ3JhcGguXG4gKlxuICogQHBhcmFtIHBhY2thZ2VEaXIgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgY3VycmVudCBwYWNrYWdlIGlzIGxvY2F0ZWQuXG4gKiBAcGFyYW0gbWV0YSAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgZm9yIHRoaXMgcGFja2FnZS5cbiAqIEBwYXJhbSByb290ICAgICAgIHdoZXRoZXIgdGhpcyBwYWNrYWdlIGlzIHRoZSByb290IHRoYXQgd2FzIHByb3ZpZGVkIHRvIHRoZVxuICogICAgICAgICAgICAgICAgICAgYHRyYXZlcnNlRGVwZW5kZW5jeUdyYXBoYCBjYWxsLlxuICpcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGlzIHBhY2thZ2UncyBvd24gZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBwcm9jZXNzZWQsXG4gKiAgICAgICAgICBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbGJhY2sgPSAoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgbWV0YTogUGFja2FnZUpzb24sXG4gIHJvb3Q6IGJvb2xlYW4sXG4pID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuXG4vKipcbiAqIEhvc3QgbWV0aG9kcyBmb3IgdHJhdmVyc2luZyBkZXBlbmRlbmN5IGdyYXBocy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmF2ZXJzZURlcGVuZGVuY3lHcmFwaEhvc3Qge1xuICByZWFkb25seSByZWFkSnNvbjogdHlwZW9mIGZzLnJlYWRKc29uO1xuICByZWFkb25seSBmaW5kRGVwZW5kZW5jeURpcmVjdG9yeTogdHlwZW9mIHV0aWwuZmluZERlcGVuZGVuY3lEaXJlY3Rvcnk7XG59XG5cbi8qKlxuICogQ29udGVudHMgb2YgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZUpzb24ge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWwkdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgoXG4gIHBhY2thZ2VEaXI6IHN0cmluZyxcbiAgY2FsbGJhY2s6IENhbGxiYWNrLFxuICBob3N0OiBUcmF2ZXJzZURlcGVuZGVuY3lHcmFwaEhvc3QsXG4gIHZpc2l0ZWQ6IFNldDxzdHJpbmc+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIFdlJ3JlIGF0IHRoZSByb290IGlmIHdlIGhhdmUgbm90IHZpc2l0ZWQgYW55dGhpbmcgeWV0LiBIb3cgY29udmVuaWVudCFcbiAgY29uc3QgaXNSb290ID0gdmlzaXRlZC5zaXplID09PSAwO1xuICBpZiAodmlzaXRlZC5oYXMocGFja2FnZURpcikpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHZpc2l0ZWQuYWRkKHBhY2thZ2VEaXIpO1xuXG4gIGNvbnN0IG1ldGE6IFBhY2thZ2VKc29uID0gYXdhaXQgaG9zdC5yZWFkSnNvbihcbiAgICBqb2luKHBhY2thZ2VEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgKTtcbiAgaWYgKCEoYXdhaXQgY2FsbGJhY2socGFja2FnZURpciwgbWV0YSwgaXNSb290KSkpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZGVwcyA9IG5ldyBTZXQoW1xuICAgIC4uLk9iamVjdC5rZXlzKG1ldGEuZGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICAuLi5PYmplY3Qua2V5cyhtZXRhLnBlZXJEZXBlbmRlbmNpZXMgPz8ge30pLFxuICBdKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIEFycmF5LmZyb20oZGVwcylcbiAgICAgIC5maWx0ZXIoKG0pID0+ICF1dGlsLmlzQnVpbHRpbk1vZHVsZShtKSlcbiAgICAgIC5tYXAoYXN5bmMgKGRlcCkgPT4ge1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RGlyID0gYXdhaXQgaG9zdC5maW5kRGVwZW5kZW5jeURpcmVjdG9yeShcbiAgICAgICAgICBkZXAsXG4gICAgICAgICAgcGFja2FnZURpcixcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlYWwkdHJhdmVyc2VEZXBlbmRlbmN5R3JhcGgoXG4gICAgICAgICAgZGVwZW5kZW5jeURpcixcbiAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICBob3N0LFxuICAgICAgICAgIHZpc2l0ZWQsXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAvLyBUaGUgZm9sbG93aW5nIFwiLnRoZW5cIiBsaXRlcmFsbHkganVzdCB0dXJucyBhIGBQcm9taXNlPFQ+YCBpbnRvIGEgYFByb21pc2U8dm9pZD5gLiBDb252ZW5pZW50IVxuICApLnRoZW4oKTtcbn1cbiJdfQ==
package/lib/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { configure as configureLogging } from './logging';
6
6
  /**
7
7
  * Generates code in the desired targets.
8
8
  */
9
- export declare function pacmak({ argv, clean, codeOnly, fingerprint, force, forceSubdirectory, forceTarget, inputDirectories, outputDirectory, parallel, recurse, rosettaLiveConversion, rosettaTablet, targets, timers, rosettaUnknownSnippets, updateNpmIgnoreFiles, validateAssemblies, }: PacmakOptions): Promise<void>;
9
+ export declare function pacmak({ argv, clean, codeOnly, fingerprint, force, forceSubdirectory, forceTarget, inputDirectories, outputDirectory, parallel, recurse, rosettaTablet, targets, timers, rosettaUnknownSnippets, updateNpmIgnoreFiles, validateAssemblies, }: PacmakOptions): Promise<void>;
10
10
  /**
11
11
  * Options provided to the `pacmak` function.
12
12
  */
@@ -81,18 +81,10 @@ export interface PacmakOptions {
81
81
  * @default false
82
82
  */
83
83
  readonly recurse?: boolean;
84
- /**
85
- * Whether `jsii-rosetta` conversion should be performed in-band for examples found in documentation which are not
86
- * already translated in the `rosettaTablet` file.
87
- *
88
- * @default false
89
- * @deprecated Use `rosettaUnknownSnippets` instead.
90
- */
91
- readonly rosettaLiveConversion?: boolean;
92
84
  /**
93
85
  * How rosetta should treat snippets that cannot be loaded from a translation tablet.
94
86
  *
95
- * @default - falls back to the default of `rosettaLiveConversion`.
87
+ * @default UnknownSnippetMode.VERBATIM
96
88
  */
97
89
  readonly rosettaUnknownSnippets?: UnknownSnippetMode;
98
90
  /**
package/lib/index.js CHANGED
@@ -14,11 +14,8 @@ Object.defineProperty(exports, "configureLogging", { enumerable: true, get: func
14
14
  /**
15
15
  * Generates code in the desired targets.
16
16
  */
17
- async function pacmak({ argv = {}, clean = true, codeOnly = false, fingerprint = true, force = false, forceSubdirectory = true, forceTarget = false, inputDirectories, outputDirectory, parallel = true, recurse = false, rosettaLiveConversion, rosettaTablet, targets = Object.values(targets_1.TargetName), timers = new timer_1.Timers(), rosettaUnknownSnippets = undefined, updateNpmIgnoreFiles = false, validateAssemblies = false, }) {
18
- const unknownSnippets = rosettaUnknownSnippets !== null && rosettaUnknownSnippets !== void 0 ? rosettaUnknownSnippets : (rosettaLiveConversion
19
- ? jsii_rosetta_1.UnknownSnippetMode.TRANSLATE
20
- : jsii_rosetta_1.UnknownSnippetMode.VERBATIM);
21
- const rosetta = new jsii_rosetta_1.Rosetta({ unknownSnippets });
17
+ async function pacmak({ argv = {}, clean = true, codeOnly = false, fingerprint = true, force = false, forceSubdirectory = true, forceTarget = false, inputDirectories, outputDirectory, parallel = true, recurse = false, rosettaTablet, targets = Object.values(targets_1.TargetName), timers = new timer_1.Timers(), rosettaUnknownSnippets = undefined, updateNpmIgnoreFiles = false, validateAssemblies = false, }) {
18
+ const rosetta = new jsii_rosetta_1.Rosetta({ unknownSnippets: rosettaUnknownSnippets });
22
19
  if (rosettaTablet) {
23
20
  await rosetta.loadTabletFromFile(rosettaTablet);
24
21
  }
@@ -141,4 +138,4 @@ function describePackages(target) {
141
138
  return `${modules.length} modules`;
142
139
  }
143
140
  //#endregion
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEM7QUFDMUMsK0NBQTJEO0FBRTNELHFDQUFxQztBQUNyQywrQ0FBcUU7QUFFckUsdUNBQXFEO0FBTzVDLDJGQVBjLG9CQUFVLE9BT2Q7QUFObkIsbUNBQWlDO0FBRWpDLGlDQUFpQztBQUtqQyxxQ0FBMEQ7QUFBakQsMkdBQUEsU0FBUyxPQUFvQjtBQUV0Qzs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsRUFDM0IsSUFBSSxHQUFHLEVBQUUsRUFDVCxLQUFLLEdBQUcsSUFBSSxFQUNaLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLEtBQUssR0FBRyxLQUFLLEVBQ2IsaUJBQWlCLEdBQUcsSUFBSSxFQUN4QixXQUFXLEdBQUcsS0FBSyxFQUNuQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsR0FBRyxJQUFJLEVBQ2YsT0FBTyxHQUFHLEtBQUssRUFDZixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFVLENBQUMsRUFDbkMsTUFBTSxHQUFHLElBQUksY0FBTSxFQUFFLEVBQ3JCLHNCQUFzQixHQUFHLFNBQVMsRUFDbEMsb0JBQW9CLEdBQUcsS0FBSyxFQUM1QixrQkFBa0IsR0FBRyxLQUFLLEdBQ1o7SUFDZCxNQUFNLGVBQWUsR0FDbkIsc0JBQXNCLGFBQXRCLHNCQUFzQixjQUF0QixzQkFBc0IsR0FDdEIsQ0FBQyxxQkFBcUI7UUFDcEIsQ0FBQyxDQUFDLGlDQUFrQixDQUFDLFNBQVM7UUFDOUIsQ0FBQyxDQUFDLGlDQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDakQsSUFBSSxhQUFhLEVBQUU7UUFD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Qy9CLEVBQUUsUUFBUSxFQUF5QjtJQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO1FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUTtZQUM3QixDQUFDLENBQUMscUNBQXFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLHdEQUF3RDtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ2xCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUNOLENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxZQUFZO0FBRVoseUJBQXlCO0FBRXpCLFNBQVMsZ0JBQWdCLENBQUMsTUFBaUI7SUFDekMsTUFBTSxPQUFPLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IFJvc2V0dGEsIFVua25vd25TbmlwcGV0TW9kZSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7IGZpbmRKc2lpTW9kdWxlcywgdXBkYXRlQWxsTnBtSWdub3JlcyB9IGZyb20gJy4vbnBtLW1vZHVsZXMnO1xuaW1wb3J0IHsgSnNpaU1vZHVsZSB9IGZyb20gJy4vcGFja2FnaW5nJztcbmltcG9ydCB7IEFMTF9CVUlMREVSUywgVGFyZ2V0TmFtZSB9IGZyb20gJy4vdGFyZ2V0cyc7XG5pbXBvcnQgeyBUaW1lcnMgfSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuL3V0aWwnO1xuXG4vLyNyZWdpb24gRXhwb3J0ZWQgQVBJc1xuXG5leHBvcnQgeyBUYXJnZXROYW1lIH07XG5leHBvcnQgeyBjb25maWd1cmUgYXMgY29uZmlndXJlTG9nZ2luZyB9IGZyb20gJy4vbG9nZ2luZyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGNvZGUgaW4gdGhlIGRlc2lyZWQgdGFyZ2V0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhY21hayh7XG4gIGFyZ3YgPSB7fSxcbiAgY2xlYW4gPSB0cnVlLFxuICBjb2RlT25seSA9IGZhbHNlLFxuICBmaW5nZXJwcmludCA9IHRydWUsXG4gIGZvcmNlID0gZmFsc2UsXG4gIGZvcmNlU3ViZGlyZWN0b3J5ID0gdHJ1ZSxcbiAgZm9yY2VUYXJnZXQgPSBmYWxzZSxcbiAgaW5wdXREaXJlY3RvcmllcyxcbiAgb3V0cHV0RGlyZWN0b3J5LFxuICBwYXJhbGxlbCA9IHRydWUsXG4gIHJlY3Vyc2UgPSBmYWxzZSxcbiAgcm9zZXR0YUxpdmVDb252ZXJzaW9uLFxuICByb3NldHRhVGFibGV0LFxuICB0YXJnZXRzID0gT2JqZWN0LnZhbHVlcyhUYXJnZXROYW1lKSxcbiAgdGltZXJzID0gbmV3IFRpbWVycygpLFxuICByb3NldHRhVW5rbm93blNuaXBwZXRzID0gdW5kZWZpbmVkLFxuICB1cGRhdGVOcG1JZ25vcmVGaWxlcyA9IGZhbHNlLFxuICB2YWxpZGF0ZUFzc2VtYmxpZXMgPSBmYWxzZSxcbn06IFBhY21ha09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdW5rbm93blNuaXBwZXRzID1cbiAgICByb3NldHRhVW5rbm93blNuaXBwZXRzID8/XG4gICAgKHJvc2V0dGFMaXZlQ29udmVyc2lvblxuICAgICAgPyBVbmtub3duU25pcHBldE1vZGUuVFJBTlNMQVRFXG4gICAgICA6IFVua25vd25TbmlwcGV0TW9kZS5WRVJCQVRJTSk7XG5cbiAgY29uc3Qgcm9zZXR0YSA9IG5ldyBSb3NldHRhKHsgdW5rbm93blNuaXBwZXRzIH0pO1xuICBpZiAocm9zZXR0YVRhYmxldCkge1xuICAgIGF3YWl0IHJvc2V0dGEubG9hZFRhYmxldEZyb21GaWxlKHJvc2V0dGFUYWJsZXQpO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCA9IGF3YWl0IGZpbmRKc2lpTW9kdWxlcyhcbiAgICBpbnB1dERpcmVjdG9yaWVzLFxuICAgIHJlY3Vyc2UsXG4gICk7XG4gIGNvbnN0IG1vZHVsZXNUb1BhY2thZ2VGbGF0ID0gZmxhdHRlbihtb2R1bGVzVG9QYWNrYWdlU29ydGVkKTtcblxuICBsb2dnaW5nLmluZm8oYEZvdW5kICR7bW9kdWxlc1RvUGFja2FnZUZsYXQubGVuZ3RofSBtb2R1bGVzIHRvIHBhY2thZ2VgKTtcbiAgaWYgKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ2dpbmcud2FybignTm90aGluZyB0byBkbycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvdXRwdXREaXJlY3RvcnkpIHtcbiAgICBmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzVG9QYWNrYWdlRmxhdCkge1xuICAgICAgbW9kLm91dHB1dERpcmVjdG9yeSA9IG91dHB1dERpcmVjdG9yeTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodXBkYXRlTnBtSWdub3JlRmlsZXMpIHtcbiAgICAvLyBpZiBvdXRkaXIgaXMgY29taW5nIGZyb20gcGFja2FnZS5qc29uLCB2ZXJpZnkgaXQgaXMgZXhjbHVkZWQgYnkgLm5wbWlnbm9yZS4gaWYgaXQgaXMgZXhwbGljaXRseVxuICAgIC8vIGRlZmluZWQgdmlhIC0tb3V0LCBkb24ndCBwZXJmb3JtIHRoaXMgdmVyaWZpY2F0aW9uLlxuICAgIGF3YWl0IHVwZGF0ZUFsbE5wbUlnbm9yZXMobW9kdWxlc1RvUGFja2FnZUZsYXQpO1xuICB9XG5cbiAgYXdhaXQgdGltZXJzLnJlY29yZEFzeW5jKCducG0gcGFjaycsICgpID0+IHtcbiAgICBsb2dnaW5nLmluZm8oJ1BhY2thZ2luZyBOUE0gYnVuZGxlcycpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChtb2R1bGVzVG9QYWNrYWdlRmxhdC5tYXAoKG0pID0+IG0ubnBtUGFjaygpKSk7XG4gIH0pO1xuXG4gIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnbG9hZCBqc2lpJywgKCkgPT4ge1xuICAgIGxvZ2dpbmcuaW5mbygnTG9hZGluZyBqc2lpIGFzc2VtYmxpZXMgYW5kIHRyYW5zbGF0aW9ucycpO1xuICAgIGNvbnN0IHN5c3RlbSA9IG5ldyBUeXBlU3lzdGVtKCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZUZsYXQubWFwKGFzeW5jIChtKSA9PiB7XG4gICAgICAgIGF3YWl0IG0ubG9hZChzeXN0ZW0sIHZhbGlkYXRlQXNzZW1ibGllcyk7XG4gICAgICAgIHJldHVybiByb3NldHRhLmFkZEFzc2VtYmx5KG0uYXNzZW1ibHkuc3BlYywgbS5tb2R1bGVEaXJlY3RvcnkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0YXJnZXRTZXRzID0gc2xpY2VUYXJnZXRzKFxuICAgICAgbW9kdWxlc1RvUGFja2FnZVNvcnRlZCxcbiAgICAgIHRhcmdldHMsXG4gICAgICBmb3JjZVRhcmdldCxcbiAgICApO1xuICAgIGlmICh0YXJnZXRTZXRzLmV2ZXJ5KChzKSA9PiBzLm1vZHVsZXNTb3J0ZWQubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTm9uZSBvZiB0aGUgcmVxdWVzdGVkIHBhY2thZ2VzIGhhZCBhbnkgdGFyZ2V0cyB0byBidWlsZCBmb3IgJyR7dGFyZ2V0cy5qb2luKFxuICAgICAgICAgICcsICcsXG4gICAgICAgICl9JyAodXNlIC0tZm9yY2UtdGFyZ2V0IHRvIGZvcmNlKWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBlckxhbmd1YWdlRGlyZWN0b3J5ID0gdGFyZ2V0U2V0cy5sZW5ndGggPiAxIHx8IGZvcmNlU3ViZGlyZWN0b3J5O1xuXG4gICAgLy8gV2UgcnVuIGFsbCB0YXJnZXQgc2V0cyBpbiBwYXJhbGxlbCBmb3IgbWluaW1hbCB3YWxsIGNsb2NrIHRpbWVcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hcFBhcmFsbGVsT3JTZXJpYWwoXG4gICAgICAgIHRhcmdldFNldHMsXG4gICAgICAgIGFzeW5jICh0YXJnZXRTZXQpID0+IHtcbiAgICAgICAgICBsb2dnaW5nLmluZm8oXG4gICAgICAgICAgICBgUGFja2FnaW5nICcke3RhcmdldFNldC50YXJnZXRUeXBlfScgZm9yICR7ZGVzY3JpYmVQYWNrYWdlcyhcbiAgICAgICAgICAgICAgdGFyZ2V0U2V0LFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRpbWVyc1xuICAgICAgICAgICAgLnJlY29yZEFzeW5jKHRhcmdldFNldC50YXJnZXRUeXBlLCAoKSA9PlxuICAgICAgICAgICAgICBidWlsZFRhcmdldHNGb3JMYW5ndWFnZShcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQudGFyZ2V0VHlwZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRTZXQubW9kdWxlc1NvcnRlZCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcmd2LFxuICAgICAgICAgICAgICAgICAgY2xlYW4sXG4gICAgICAgICAgICAgICAgICBjb2RlT25seSxcbiAgICAgICAgICAgICAgICAgIGZpbmdlcnByaW50LFxuICAgICAgICAgICAgICAgICAgZm9yY2UsXG4gICAgICAgICAgICAgICAgICBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgIHJvc2V0dGEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAoKSA9PiBsb2dnaW5nLmluZm8oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZpbmlzaGVkYCksXG4gICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm4oYCR7dGFyZ2V0U2V0LnRhcmdldFR5cGV9IGZhaWxlZGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBwYXJhbGxlbCB9LFxuICAgICAgKSxcbiAgICApO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChjbGVhbikge1xuICAgICAgbG9nZ2luZy5kZWJ1ZygnQ2xlYW5pbmcgdXAnKTtcbiAgICAgIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnY2xlYW51cCcsICgpID0+XG4gICAgICAgIFByb21pc2UuYWxsKG1vZHVsZXNUb1BhY2thZ2VGbGF0Lm1hcCgobSkgPT4gbS5jbGVhbnVwKCkpKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dpbmcuaW5mbygnVGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHJldGFpbmVkICgtLW5vLWNsZWFuKScpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2dpbmcuaW5mbyhgUGFja2FnZWQuICR7dGltZXJzLmRpc3BsYXkoKX1gKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHByb3ZpZGVkIHRvIHRoZSBgcGFjbWFrYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNtYWtPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsbCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoYXQgd2VyZSBwcm92aWRlZC4gVGhpcyBpbmNsdWRlcyB0YXJnZXQtc3BlY2lmaWMgcGFyYW1ldGVycywgdGhlXG4gICAqIGhhbmRsaW5nIG9mIHdoaWNoIGlzIHVwIHRvIHRoZSBjb2RlIGdlbmVyYXRvcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBhcmd2PzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHVwb24gY29tcGxldGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIHNvdXJjZSBjb2RlIG9ubHkgKGFzIG9wcG9zZWQgdG8gYnVpbHQgcGFja2FnZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGluY2x1ZGUgYSBmaW5nZXJwcmludCBpbiBnZW5lcmF0ZWQgY29kZSwgdG8gYXZvaWQgcmUtZ2VuZXJhdGluZ1xuICAgKiBjb2RlIGlmIHRoZSBzb3VyY2UgYXNzZW1ibHkgaGFzIG5vdCBjaGFuZ2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmaW5nZXJwcmludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWx3YXlzIHJlLWdlbmVyYXRlIGNvZGUsIGV2ZW4gaWYgdGhlIGZpbmdlcnByaW50IGhhcyBub3QgY2hhbmdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWx3YXlzIGVtaXQgY29kZSBpbiBhIHBlci1sYW5ndWFnZSBzdWJkaXJlY3RvcnksIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBvbmUgdGFyZ2V0IGxhbmd1YWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVN1YmRpcmVjdG9yeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsd2F5cyB0cnkgdG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIHNlbGVjdGVkIHRhcmdldHMsIGV2ZW4gaWYgdGhvc2UgYXJlIG5vdCBjb25maWd1cmVkLiBVc2UgdGhpcyBvcHRpb24gYXQgeW91ciBvd25cbiAgICogcmlzaywgYXMgdGhlcmUgYXJlIHNpZ25pZmljYW50IGNoYW5jZXMgY29kZSBnZW5lcmF0b3JzIGNhbm5vdCBvcGVyYXRlIHdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVRhcmdldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGlucHV0IGFzc2VtYmxpZXMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dERpcmVjdG9yaWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBvdXRwdXQgZ2VuZXJhdGVkIHBhY2thZ2VzIG9yIGNvZGUgKGlmICBgY29kZU9ubHlgIGlzIGB0cnVlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ29uZmlndXJlZCBpbiBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBhcmFsbGVsaXplIGNvZGUgZ2VuZXJhdGlvbi4gVHVybmluZyB0aGlzIHRvIGBmYWxzZWAgY2FuIGJlIGJlbmVmaWNpYWwgaW4gY2VydGFpbiByZXNvdXJjZS1jb25zdHJhaW5lZFxuICAgKiBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgZnJlZSBDSS9DRCBvZmZlcmluZ3MsIGFzIGl0IHJlZHVjZXMgdGhlIHByZXNzdXJlIG9uIElPLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgZ2VuZXJhdGUgZm9yIHRoZSBzZWxlY3RlZCBwYWNrYWdlcycgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYGpzaWktcm9zZXR0YWAgY29udmVyc2lvbiBzaG91bGQgYmUgcGVyZm9ybWVkIGluLWJhbmQgZm9yIGV4YW1wbGVzIGZvdW5kIGluIGRvY3VtZW50YXRpb24gd2hpY2ggYXJlIG5vdFxuICAgKiBhbHJlYWR5IHRyYW5zbGF0ZWQgaW4gdGhlIGByb3NldHRhVGFibGV0YCBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHJvc2V0dGFVbmtub3duU25pcHBldHNgIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSByb3NldHRhTGl2ZUNvbnZlcnNpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgcm9zZXR0YSBzaG91bGQgdHJlYXQgc25pcHBldHMgdGhhdCBjYW5ub3QgYmUgbG9hZGVkIGZyb20gYSB0cmFuc2xhdGlvbiB0YWJsZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsbHMgYmFjayB0byB0aGUgZGVmYXVsdCBvZiBgcm9zZXR0YUxpdmVDb252ZXJzaW9uYC5cbiAgICovXG4gIHJlYWRvbmx5IHJvc2V0dGFVbmtub3duU25pcHBldHM/OiBVbmtub3duU25pcHBldE1vZGU7XG5cbiAgLyoqXG4gICAqIEEgUm9zZXR0YSB0YWJsZXQgZmlsZSB3aGVyZSB0cmFuc2xhdGlvbnMgZm9yIGNvZGUgZXhhbXBsZXMgY2FuIGJlIGZvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvc2V0dGFUYWJsZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHRhcmdldHMgZm9yIHdoaWNoIGNvZGUgc2hvdWxkIGJlIGdlbmVyYXRlZC4gVW5sZXNzIGBmb3JjZVRhcmdldGAgaXMgYHRydWVgLCBhIGdpdmVuIHRhcmdldCB3aWxsIG9ubHlcbiAgICogYmUgZ2VuZXJhdGVkIGZvciBhc3NlbWJsaWVzIHRoYXQgaGF2ZSBjb25maWd1cmVkIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBPYmplY3QudmFsdWVzKFRhcmdldE5hbWUpXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRzPzogcmVhZG9ubHkgVGFyZ2V0TmFtZVtdO1xuXG4gIC8qKlxuICAgKiBBIGBUaW1lcnNgIG9iamVjdCwgaWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGluY2x1ZGluZyB0aGUgcm9zZXR0YSBydW4gaW4gYSBsYXJnZXIgc2V0IG9mIHRpbWVkIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSB0aW1lcnM/OiBUaW1lcnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIC5ucG1pZ25vcmUgZmlsZXMgaWYgYG91dHB1dERpcmVjdG9yeWAgY29tZXMgZnJvbSB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVOcG1JZ25vcmVGaWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYXNzZW1ibGllcyBzaG91bGQgYmUgdmFsaWRhdGVkIG9yIG5vdC4gVmFsaWRhdGlvbiBjYW4gYmUgZXhwZW5zaXZlIGFuZCBjYW4gYmUgc2tpcHBlZCBpZiB0aGUgYXNzZW1ibGllc1xuICAgKiBjYW4gYmUgYXNzdW1lZCB0byBiZSB2YWxpZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlQXNzZW1ibGllcz86IGJvb2xlYW47XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gQnVpbGRpbmdcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRUYXJnZXRzRm9yTGFuZ3VhZ2UoXG4gIHRhcmdldExhbmd1YWdlOiBzdHJpbmcsXG4gIG1vZHVsZXM6IFRvcG9zb3J0ZWQ8SnNpaU1vZHVsZT4sXG4gIHtcbiAgICBhcmd2LFxuICAgIGNsZWFuLFxuICAgIGNvZGVPbmx5LFxuICAgIGZpbmdlcnByaW50LFxuICAgIGZvcmNlLFxuICAgIHBlckxhbmd1YWdlRGlyZWN0b3J5LFxuICAgIHJvc2V0dGEsXG4gIH06IHtcbiAgICBhcmd2OiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbiAgICBjbGVhbjogYm9vbGVhbjtcbiAgICBjb2RlT25seTogYm9vbGVhbjtcbiAgICBmaW5nZXJwcmludDogYm9vbGVhbjtcbiAgICBmb3JjZTogYm9vbGVhbjtcbiAgICBwZXJMYW5ndWFnZURpcmVjdG9yeTogYm9vbGVhbjtcbiAgICByb3NldHRhOiBSb3NldHRhO1xuICB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIGBgYXJndi50YXJnZXRgYCBpcyBndWFyYW50ZWVkIHZhbGlkIGJ5IGBgeWFyZ3NgYCB0aHJvdWdoIHRoZSBgYGNob2ljZXNgYCBkaXJlY3RpdmUuXG4gIGNvbnN0IGZhY3RvcnkgPSBBTExfQlVJTERFUlNbdGFyZ2V0TGFuZ3VhZ2UgYXMgVGFyZ2V0TmFtZV07XG4gIGlmICghZmFjdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdGFyZ2V0OiAnJHt0YXJnZXRMYW5ndWFnZX0nYCk7XG4gIH1cblxuICByZXR1cm4gZmFjdG9yeShtb2R1bGVzLCB7XG4gICAgY2xlYW46IGNsZWFuLFxuICAgIGNvZGVPbmx5OiBjb2RlT25seSxcbiAgICByb3NldHRhLFxuICAgIGZvcmNlOiBmb3JjZSxcbiAgICBmaW5nZXJwcmludDogZmluZ2VycHJpbnQsXG4gICAgYXJndW1lbnRzOiBhcmd2LFxuICAgIGxhbmd1YWdlU3ViZGlyZWN0b3J5OiBwZXJMYW5ndWFnZURpcmVjdG9yeSxcbiAgfSkuYnVpbGRNb2R1bGVzKCk7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gVGFyZ2V0IFNsaWNpbmdcblxuLyoqXG4gKiBBIHNldCBvZiBwYWNrYWdlcyAodGFyZ2V0cykgdHJhbnNsYXRlZCBpbnRvIHRoZSBzYW1lIGxhbmd1YWdlXG4gKi9cbmludGVyZmFjZSBUYXJnZXRTZXQge1xuICB0YXJnZXRUeXBlOiBzdHJpbmc7XG5cbiAgLy8gU29ydGVkIGludG8gdG9wb3NvcnRlZCB0cmFuY2hlc1xuICBtb2R1bGVzU29ydGVkOiBUb3Bvc29ydGVkPEpzaWlNb2R1bGU+O1xufVxuXG5mdW5jdGlvbiBzbGljZVRhcmdldHMoXG4gIG1vZHVsZXNTb3J0ZWQ6IFRvcG9zb3J0ZWQ8SnNpaU1vZHVsZT4sXG4gIHJlcXVlc3RlZFRhcmdldHM6IHJlYWRvbmx5IFRhcmdldE5hbWVbXSxcbiAgZm9yY2U6IGJvb2xlYW4sXG4pOiByZWFkb25seSBUYXJnZXRTZXRbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxUYXJnZXRTZXQ+KCk7XG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIHJlcXVlc3RlZFRhcmdldHMpIHtcbiAgICByZXQucHVzaCh7XG4gICAgICB0YXJnZXRUeXBlOiB0YXJnZXQsXG4gICAgICBtb2R1bGVzU29ydGVkOiBtb2R1bGVzU29ydGVkXG4gICAgICAgIC5tYXAoKG1vZHVsZXMpID0+XG4gICAgICAgICAgbW9kdWxlcy5maWx0ZXIoKG0pID0+IGZvcmNlIHx8IG0uYXZhaWxhYmxlVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQpKSxcbiAgICAgICAgKVxuICAgICAgICAuZmlsdGVyKChtcykgPT4gbXMubGVuZ3RoID4gMCksXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBQYXJhbGxlbGl6YXRpb25cblxuZnVuY3Rpb24gbWFwUGFyYWxsZWxPclNlcmlhbDxULCBSPihcbiAgY29sbGVjdGlvbjogcmVhZG9ubHkgVFtdLFxuICBtYXBwZXI6IChpdGVtOiBUKSA9PiBQcm9taXNlPFI+LFxuICB7IHBhcmFsbGVsIH06IHsgcGFyYWxsZWw6IGJvb2xlYW4gfSxcbik6IEFycmF5PFByb21pc2U8Uj4+IHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PFByb21pc2U8Uj4+KCk7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0LnB1c2goXG4gICAgICByZXN1bHQubGVuZ3RoID09PSAwIHx8IHBhcmFsbGVsXG4gICAgICAgID8gLy8gUnVubmluZyBwYXJhbGxlbCwgb3IgZmlyc3QgZWxlbWVudFxuICAgICAgICAgIG1hcHBlcihpdGVtKVxuICAgICAgICA6IC8vIFdhaXQgZm9yIHRoZSBwcmV2aW91cyBwcm9taXNlLCB0aGVuIG1ha2UgdGhlIG5leHQgb25lXG4gICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXS50aGVuKFxuICAgICAgICAgICAgKCkgPT4gbWFwcGVyKGl0ZW0pLFxuICAgICAgICAgICAgKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvciksXG4gICAgICAgICAgKSxcbiAgICApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gTWlzYy4gVXRpbGl0aWVzXG5cbmZ1bmN0aW9uIGRlc2NyaWJlUGFja2FnZXModGFyZ2V0OiBUYXJnZXRTZXQpIHtcbiAgY29uc3QgbW9kdWxlcyA9IGZsYXR0ZW4odGFyZ2V0Lm1vZHVsZXNTb3J0ZWQpO1xuICBpZiAobW9kdWxlcy5sZW5ndGggPiAwICYmIG1vZHVsZXMubGVuZ3RoIDwgNSkge1xuICAgIHJldHVybiBtb2R1bGVzLm1hcCgobSkgPT4gbS5uYW1lKS5qb2luKCcsICcpO1xuICB9XG4gIHJldHVybiBgJHttb2R1bGVzLmxlbmd0aH0gbW9kdWxlc2A7XG59XG5cbi8vI2VuZHJlZ2lvblxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEM7QUFDMUMsK0NBQTJEO0FBRTNELHFDQUFxQztBQUNyQywrQ0FBcUU7QUFFckUsdUNBQXFEO0FBTzVDLDJGQVBjLG9CQUFVLE9BT2Q7QUFObkIsbUNBQWlDO0FBRWpDLGlDQUFpQztBQUtqQyxxQ0FBMEQ7QUFBakQsMkdBQUEsU0FBUyxPQUFvQjtBQUV0Qzs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQUMsRUFDM0IsSUFBSSxHQUFHLEVBQUUsRUFDVCxLQUFLLEdBQUcsSUFBSSxFQUNaLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLEtBQUssR0FBRyxLQUFLLEVBQ2IsaUJBQWlCLEdBQUcsSUFBSSxFQUN4QixXQUFXLEdBQUcsS0FBSyxFQUNuQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsR0FBRyxJQUFJLEVBQ2YsT0FBTyxHQUFHLEtBQUssRUFDZixhQUFhLEVBQ2IsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQVUsQ0FBQyxFQUNuQyxNQUFNLEdBQUcsSUFBSSxjQUFNLEVBQUUsRUFDckIsc0JBQXNCLEdBQUcsU0FBUyxFQUNsQyxvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FDWjtJQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDekUsSUFBSSxhQUFhLEVBQUU7UUFDakIsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDakQ7SUFFRCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sNkJBQWUsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sQ0FDUixDQUFDO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxjQUFPLENBQUMs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QUksUUFBUTtZQUM3QixDQUFDLENBQUMscUNBQXFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLHdEQUF3RDtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ2xCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUNOLENBQUM7S0FDSDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxZQUFZO0FBRVoseUJBQXlCO0FBRXpCLFNBQVMsZ0JBQWdCLENBQUMsTUFBaUI7SUFDekMsTUFBTSxPQUFPLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IFJvc2V0dGEsIFVua25vd25TbmlwcGV0TW9kZSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5cbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnaW5nJztcbmltcG9ydCB7IGZpbmRKc2lpTW9kdWxlcywgdXBkYXRlQWxsTnBtSWdub3JlcyB9IGZyb20gJy4vbnBtLW1vZHVsZXMnO1xuaW1wb3J0IHsgSnNpaU1vZHVsZSB9IGZyb20gJy4vcGFja2FnaW5nJztcbmltcG9ydCB7IEFMTF9CVUlMREVSUywgVGFyZ2V0TmFtZSB9IGZyb20gJy4vdGFyZ2V0cyc7XG5pbXBvcnQgeyBUaW1lcnMgfSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuL3V0aWwnO1xuXG4vLyNyZWdpb24gRXhwb3J0ZWQgQVBJc1xuXG5leHBvcnQgeyBUYXJnZXROYW1lIH07XG5leHBvcnQgeyBjb25maWd1cmUgYXMgY29uZmlndXJlTG9nZ2luZyB9IGZyb20gJy4vbG9nZ2luZyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGNvZGUgaW4gdGhlIGRlc2lyZWQgdGFyZ2V0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhY21hayh7XG4gIGFyZ3YgPSB7fSxcbiAgY2xlYW4gPSB0cnVlLFxuICBjb2RlT25seSA9IGZhbHNlLFxuICBmaW5nZXJwcmludCA9IHRydWUsXG4gIGZvcmNlID0gZmFsc2UsXG4gIGZvcmNlU3ViZGlyZWN0b3J5ID0gdHJ1ZSxcbiAgZm9yY2VUYXJnZXQgPSBmYWxzZSxcbiAgaW5wdXREaXJlY3RvcmllcyxcbiAgb3V0cHV0RGlyZWN0b3J5LFxuICBwYXJhbGxlbCA9IHRydWUsXG4gIHJlY3Vyc2UgPSBmYWxzZSxcbiAgcm9zZXR0YVRhYmxldCxcbiAgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXMoVGFyZ2V0TmFtZSksXG4gIHRpbWVycyA9IG5ldyBUaW1lcnMoKSxcbiAgcm9zZXR0YVVua25vd25TbmlwcGV0cyA9IHVuZGVmaW5lZCxcbiAgdXBkYXRlTnBtSWdub3JlRmlsZXMgPSBmYWxzZSxcbiAgdmFsaWRhdGVBc3NlbWJsaWVzID0gZmFsc2UsXG59OiBQYWNtYWtPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvc2V0dGEgPSBuZXcgUm9zZXR0YSh7IHVua25vd25TbmlwcGV0czogcm9zZXR0YVVua25vd25TbmlwcGV0cyB9KTtcbiAgaWYgKHJvc2V0dGFUYWJsZXQpIHtcbiAgICBhd2FpdCByb3NldHRhLmxvYWRUYWJsZXRGcm9tRmlsZShyb3NldHRhVGFibGV0KTtcbiAgfVxuXG4gIGNvbnN0IG1vZHVsZXNUb1BhY2thZ2VTb3J0ZWQgPSBhd2FpdCBmaW5kSnNpaU1vZHVsZXMoXG4gICAgaW5wdXREaXJlY3RvcmllcyxcbiAgICByZWN1cnNlLFxuICApO1xuICBjb25zdCBtb2R1bGVzVG9QYWNrYWdlRmxhdCA9IGZsYXR0ZW4obW9kdWxlc1RvUGFja2FnZVNvcnRlZCk7XG5cbiAgbG9nZ2luZy5pbmZvKGBGb3VuZCAke21vZHVsZXNUb1BhY2thZ2VGbGF0Lmxlbmd0aH0gbW9kdWxlcyB0byBwYWNrYWdlYCk7XG4gIGlmIChtb2R1bGVzVG9QYWNrYWdlRmxhdC5sZW5ndGggPT09IDApIHtcbiAgICBsb2dnaW5nLndhcm4oJ05vdGhpbmcgdG8gZG8nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAob3V0cHV0RGlyZWN0b3J5KSB7XG4gICAgZm9yIChjb25zdCBtb2Qgb2YgbW9kdWxlc1RvUGFja2FnZUZsYXQpIHtcbiAgICAgIG1vZC5vdXRwdXREaXJlY3RvcnkgPSBvdXRwdXREaXJlY3Rvcnk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHVwZGF0ZU5wbUlnbm9yZUZpbGVzKSB7XG4gICAgLy8gaWYgb3V0ZGlyIGlzIGNvbWluZyBmcm9tIHBhY2thZ2UuanNvbiwgdmVyaWZ5IGl0IGlzIGV4Y2x1ZGVkIGJ5IC5ucG1pZ25vcmUuIGlmIGl0IGlzIGV4cGxpY2l0bHlcbiAgICAvLyBkZWZpbmVkIHZpYSAtLW91dCwgZG9uJ3QgcGVyZm9ybSB0aGlzIHZlcmlmaWNhdGlvbi5cbiAgICBhd2FpdCB1cGRhdGVBbGxOcG1JZ25vcmVzKG1vZHVsZXNUb1BhY2thZ2VGbGF0KTtcbiAgfVxuXG4gIGF3YWl0IHRpbWVycy5yZWNvcmRBc3luYygnbnBtIHBhY2snLCAoKSA9PiB7XG4gICAgbG9nZ2luZy5pbmZvKCdQYWNrYWdpbmcgTlBNIGJ1bmRsZXMnKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwobW9kdWxlc1RvUGFja2FnZUZsYXQubWFwKChtKSA9PiBtLm5wbVBhY2soKSkpO1xuICB9KTtcblxuICBhd2FpdCB0aW1lcnMucmVjb3JkQXN5bmMoJ2xvYWQganNpaScsICgpID0+IHtcbiAgICBsb2dnaW5nLmluZm8oJ0xvYWRpbmcganNpaSBhc3NlbWJsaWVzIGFuZCB0cmFuc2xhdGlvbnMnKTtcbiAgICBjb25zdCBzeXN0ZW0gPSBuZXcgVHlwZVN5c3RlbSgpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIG1vZHVsZXNUb1BhY2thZ2VGbGF0Lm1hcChhc3luYyAobSkgPT4ge1xuICAgICAgICBhd2FpdCBtLmxvYWQoc3lzdGVtLCB2YWxpZGF0ZUFzc2VtYmxpZXMpO1xuICAgICAgICByZXR1cm4gcm9zZXR0YS5hZGRBc3NlbWJseShtLmFzc2VtYmx5LnNwZWMsIG0ubW9kdWxlRGlyZWN0b3J5KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgdGFyZ2V0U2V0cyA9IHNsaWNlVGFyZ2V0cyhcbiAgICAgIG1vZHVsZXNUb1BhY2thZ2VTb3J0ZWQsXG4gICAgICB0YXJnZXRzLFxuICAgICAgZm9yY2VUYXJnZXQsXG4gICAgKTtcbiAgICBpZiAodGFyZ2V0U2V0cy5ldmVyeSgocykgPT4gcy5tb2R1bGVzU29ydGVkLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE5vbmUgb2YgdGhlIHJlcXVlc3RlZCBwYWNrYWdlcyBoYWQgYW55IHRhcmdldHMgdG8gYnVpbGQgZm9yICcke3RhcmdldHMuam9pbihcbiAgICAgICAgICAnLCAnLFxuICAgICAgICApfScgKHVzZSAtLWZvcmNlLXRhcmdldCB0byBmb3JjZSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwZXJMYW5ndWFnZURpcmVjdG9yeSA9IHRhcmdldFNldHMubGVuZ3RoID4gMSB8fCBmb3JjZVN1YmRpcmVjdG9yeTtcblxuICAgIC8vIFdlIHJ1biBhbGwgdGFyZ2V0IHNldHMgaW4gcGFyYWxsZWwgZm9yIG1pbmltYWwgd2FsbCBjbG9jayB0aW1lXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXBQYXJhbGxlbE9yU2VyaWFsKFxuICAgICAgICB0YXJnZXRTZXRzLFxuICAgICAgICBhc3luYyAodGFyZ2V0U2V0KSA9PiB7XG4gICAgICAgICAgbG9nZ2luZy5pbmZvKFxuICAgICAgICAgICAgYFBhY2thZ2luZyAnJHt0YXJnZXRTZXQudGFyZ2V0VHlwZX0nIGZvciAke2Rlc2NyaWJlUGFja2FnZXMoXG4gICAgICAgICAgICAgIHRhcmdldFNldCxcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aW1lcnNcbiAgICAgICAgICAgIC5yZWNvcmRBc3luYyh0YXJnZXRTZXQudGFyZ2V0VHlwZSwgKCkgPT5cbiAgICAgICAgICAgICAgYnVpbGRUYXJnZXRzRm9yTGFuZ3VhZ2UoXG4gICAgICAgICAgICAgICAgdGFyZ2V0U2V0LnRhcmdldFR5cGUsXG4gICAgICAgICAgICAgICAgdGFyZ2V0U2V0Lm1vZHVsZXNTb3J0ZWQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJndixcbiAgICAgICAgICAgICAgICAgIGNsZWFuLFxuICAgICAgICAgICAgICAgICAgY29kZU9ubHksXG4gICAgICAgICAgICAgICAgICBmaW5nZXJwcmludCxcbiAgICAgICAgICAgICAgICAgIGZvcmNlLFxuICAgICAgICAgICAgICAgICAgcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICByb3NldHRhLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgKCkgPT4gbG9nZ2luZy5pbmZvKGAke3RhcmdldFNldC50YXJnZXRUeXBlfSBmaW5pc2hlZGApLFxuICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuKGAke3RhcmdldFNldC50YXJnZXRUeXBlfSBmYWlsZWRgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgcGFyYWxsZWwgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoY2xlYW4pIHtcbiAgICAgIGxvZ2dpbmcuZGVidWcoJ0NsZWFuaW5nIHVwJyk7XG4gICAgICBhd2FpdCB0aW1lcnMucmVjb3JkQXN5bmMoJ2NsZWFudXAnLCAoKSA9PlxuICAgICAgICBQcm9taXNlLmFsbChtb2R1bGVzVG9QYWNrYWdlRmxhdC5tYXAoKG0pID0+IG0uY2xlYW51cCgpKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnaW5nLmluZm8oJ1RlbXBvcmFyeSBkaXJlY3RvcmllcyByZXRhaW5lZCAoLS1uby1jbGVhbiknKTtcbiAgICB9XG4gIH1cblxuICBsb2dnaW5nLmluZm8oYFBhY2thZ2VkLiAke3RpbWVycy5kaXNwbGF5KCl9YCk7XG59XG5cbi8qKlxuICogT3B0aW9ucyBwcm92aWRlZCB0byB0aGUgYHBhY21ha2AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFjbWFrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGwgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0aGF0IHdlcmUgcHJvdmlkZWQuIFRoaXMgaW5jbHVkZXMgdGFyZ2V0LXNwZWNpZmljIHBhcmFtZXRlcnMsIHRoZVxuICAgKiBoYW5kbGluZyBvZiB3aGljaCBpcyB1cCB0byB0aGUgY29kZSBnZW5lcmF0b3JzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgYXJndj86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNsZWFuIHVwIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB1cG9uIGNvbXBsZXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBnZW5lcmF0ZSBzb3VyY2UgY29kZSBvbmx5IChhcyBvcHBvc2VkIHRvIGJ1aWx0IHBhY2thZ2VzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBpbmNsdWRlIGEgZmluZ2VycHJpbnQgaW4gZ2VuZXJhdGVkIGNvZGUsIHRvIGF2b2lkIHJlLWdlbmVyYXRpbmdcbiAgICogY29kZSBpZiB0aGUgc291cmNlIGFzc2VtYmx5IGhhcyBub3QgY2hhbmdlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmluZ2VycHJpbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsd2F5cyByZS1nZW5lcmF0ZSBjb2RlLCBldmVuIGlmIHRoZSBmaW5nZXJwcmludCBoYXMgbm90IGNoYW5nZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBlbWl0IGNvZGUgaW4gYSBwZXItbGFuZ3VhZ2Ugc3ViZGlyZWN0b3J5LCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lIHRhcmdldCBsYW5ndWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VTdWJkaXJlY3Rvcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbHdheXMgdHJ5IHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBzZWxlY3RlZCB0YXJnZXRzLCBldmVuIGlmIHRob3NlIGFyZSBub3QgY29uZmlndXJlZC4gVXNlIHRoaXMgb3B0aW9uIGF0IHlvdXIgb3duXG4gICAqIHJpc2ssIGFzIHRoZXJlIGFyZSBzaWduaWZpY2FudCBjaGFuY2VzIGNvZGUgZ2VuZXJhdG9ycyBjYW5ub3Qgb3BlcmF0ZSB3aXRob3V0IGFueSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VUYXJnZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBiZSBjb25zaWRlcmVkIGZvciBpbnB1dCBhc3NlbWJsaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXREaXJlY3RvcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gb3V0cHV0IGdlbmVyYXRlZCBwYWNrYWdlcyBvciBjb2RlIChpZiAgYGNvZGVPbmx5YCBpcyBgdHJ1ZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENvbmZpZ3VyZWQgaW4gYHBhY2thZ2UuanNvbmBcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBwYXJhbGxlbGl6ZSBjb2RlIGdlbmVyYXRpb24uIFR1cm5pbmcgdGhpcyB0byBgZmFsc2VgIGNhbiBiZSBiZW5lZmljaWFsIGluIGNlcnRhaW4gcmVzb3VyY2UtY29uc3RyYWluZWRcbiAgICogZW52aXJvbm1lbnRzLCBzdWNoIGFzIGZyZWUgQ0kvQ0Qgb2ZmZXJpbmdzLCBhcyBpdCByZWR1Y2VzIHRoZSBwcmVzc3VyZSBvbiBJTy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY3Vyc2l2ZWx5IGdlbmVyYXRlIGZvciB0aGUgc2VsZWN0ZWQgcGFja2FnZXMnIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgcm9zZXR0YSBzaG91bGQgdHJlYXQgc25pcHBldHMgdGhhdCBjYW5ub3QgYmUgbG9hZGVkIGZyb20gYSB0cmFuc2xhdGlvbiB0YWJsZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVua25vd25TbmlwcGV0TW9kZS5WRVJCQVRJTVxuICAgKi9cbiAgcmVhZG9ubHkgcm9zZXR0YVVua25vd25TbmlwcGV0cz86IFVua25vd25TbmlwcGV0TW9kZTtcblxuICAvKipcbiAgICogQSBSb3NldHRhIHRhYmxldCBmaWxlIHdoZXJlIHRyYW5zbGF0aW9ucyBmb3IgY29kZSBleGFtcGxlcyBjYW4gYmUgZm91bmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcm9zZXR0YVRhYmxldD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFyZ2V0cyBmb3Igd2hpY2ggY29kZSBzaG91bGQgYmUgZ2VuZXJhdGVkLiBVbmxlc3MgYGZvcmNlVGFyZ2V0YCBpcyBgdHJ1ZWAsIGEgZ2l2ZW4gdGFyZ2V0IHdpbGwgb25seVxuICAgKiBiZSBnZW5lcmF0ZWQgZm9yIGFzc2VtYmxpZXMgdGhhdCBoYXZlIGNvbmZpZ3VyZWQgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9iamVjdC52YWx1ZXMoVGFyZ2V0TmFtZSlcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldHM/OiByZWFkb25seSBUYXJnZXROYW1lW107XG5cbiAgLyoqXG4gICAqIEEgYFRpbWVyc2Agb2JqZWN0LCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gaW5jbHVkaW5nIHRoZSByb3NldHRhIHJ1biBpbiBhIGxhcmdlciBzZXQgb2YgdGltZWQgb3BlcmF0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVycz86IFRpbWVycztcblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgLm5wbWlnbm9yZSBmaWxlcyBpZiBgb3V0cHV0RGlyZWN0b3J5YCBjb21lcyBmcm9tIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZU5wbUlnbm9yZUZpbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhc3NlbWJsaWVzIHNob3VsZCBiZSB2YWxpZGF0ZWQgb3Igbm90LiBWYWxpZGF0aW9uIGNhbiBiZSBleHBlbnNpdmUgYW5kIGNhbiBiZSBza2lwcGVkIGlmIHRoZSBhc3NlbWJsaWVzXG4gICAqIGNhbiBiZSBhc3N1bWVkIHRvIGJlIHZhbGlkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVBc3NlbWJsaWVzPzogYm9vbGVhbjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBCdWlsZGluZ1xuXG5hc3luYyBmdW5jdGlvbiBidWlsZFRhcmdldHNGb3JMYW5ndWFnZShcbiAgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZyxcbiAgbW9kdWxlczogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPixcbiAge1xuICAgIGFyZ3YsXG4gICAgY2xlYW4sXG4gICAgY29kZU9ubHksXG4gICAgZmluZ2VycHJpbnQsXG4gICAgZm9yY2UsXG4gICAgcGVyTGFuZ3VhZ2VEaXJlY3RvcnksXG4gICAgcm9zZXR0YSxcbiAgfToge1xuICAgIGFyZ3Y6IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICAgIGNsZWFuOiBib29sZWFuO1xuICAgIGNvZGVPbmx5OiBib29sZWFuO1xuICAgIGZpbmdlcnByaW50OiBib29sZWFuO1xuICAgIGZvcmNlOiBib29sZWFuO1xuICAgIHBlckxhbmd1YWdlRGlyZWN0b3J5OiBib29sZWFuO1xuICAgIHJvc2V0dGE6IFJvc2V0dGE7XG4gIH0sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gYGBhcmd2LnRhcmdldGBgIGlzIGd1YXJhbnRlZWQgdmFsaWQgYnkgYGB5YXJnc2BgIHRocm91Z2ggdGhlIGBgY2hvaWNlc2BgIGRpcmVjdGl2ZS5cbiAgY29uc3QgZmFjdG9yeSA9IEFMTF9CVUlMREVSU1t0YXJnZXRMYW5ndWFnZSBhcyBUYXJnZXROYW1lXTtcbiAgaWYgKCFmYWN0b3J5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0YXJnZXQ6ICcke3RhcmdldExhbmd1YWdlfSdgKTtcbiAgfVxuXG4gIHJldHVybiBmYWN0b3J5KG1vZHVsZXMsIHtcbiAgICBjbGVhbjogY2xlYW4sXG4gICAgY29kZU9ubHk6IGNvZGVPbmx5LFxuICAgIHJvc2V0dGEsXG4gICAgZm9yY2U6IGZvcmNlLFxuICAgIGZpbmdlcnByaW50OiBmaW5nZXJwcmludCxcbiAgICBhcmd1bWVudHM6IGFyZ3YsXG4gICAgbGFuZ3VhZ2VTdWJkaXJlY3Rvcnk6IHBlckxhbmd1YWdlRGlyZWN0b3J5LFxuICB9KS5idWlsZE1vZHVsZXMoKTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBUYXJnZXQgU2xpY2luZ1xuXG4vKipcbiAqIEEgc2V0IG9mIHBhY2thZ2VzICh0YXJnZXRzKSB0cmFuc2xhdGVkIGludG8gdGhlIHNhbWUgbGFuZ3VhZ2VcbiAqL1xuaW50ZXJmYWNlIFRhcmdldFNldCB7XG4gIHRhcmdldFR5cGU6IHN0cmluZztcblxuICAvLyBTb3J0ZWQgaW50byB0b3Bvc29ydGVkIHRyYW5jaGVzXG4gIG1vZHVsZXNTb3J0ZWQ6IFRvcG9zb3J0ZWQ8SnNpaU1vZHVsZT47XG59XG5cbmZ1bmN0aW9uIHNsaWNlVGFyZ2V0cyhcbiAgbW9kdWxlc1NvcnRlZDogVG9wb3NvcnRlZDxKc2lpTW9kdWxlPixcbiAgcmVxdWVzdGVkVGFyZ2V0czogcmVhZG9ubHkgVGFyZ2V0TmFtZVtdLFxuICBmb3JjZTogYm9vbGVhbixcbik6IHJlYWRvbmx5IFRhcmdldFNldFtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFRhcmdldFNldD4oKTtcbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgcmVxdWVzdGVkVGFyZ2V0cykge1xuICAgIHJldC5wdXNoKHtcbiAgICAgIHRhcmdldFR5cGU6IHRhcmdldCxcbiAgICAgIG1vZHVsZXNTb3J0ZWQ6IG1vZHVsZXNTb3J0ZWRcbiAgICAgICAgLm1hcCgobW9kdWxlcykgPT5cbiAgICAgICAgICBtb2R1bGVzLmZpbHRlcigobSkgPT4gZm9yY2UgfHwgbS5hdmFpbGFibGVUYXJnZXRzLmluY2x1ZGVzKHRhcmdldCkpLFxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKG1zKSA9PiBtcy5sZW5ndGggPiAwKSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIFBhcmFsbGVsaXphdGlvblxuXG5mdW5jdGlvbiBtYXBQYXJhbGxlbE9yU2VyaWFsPFQsIFI+KFxuICBjb2xsZWN0aW9uOiByZWFkb25seSBUW10sXG4gIG1hcHBlcjogKGl0ZW06IFQpID0+IFByb21pc2U8Uj4sXG4gIHsgcGFyYWxsZWwgfTogeyBwYXJhbGxlbDogYm9vbGVhbiB9LFxuKTogQXJyYXk8UHJvbWlzZTxSPj4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8UHJvbWlzZTxSPj4oKTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHQucHVzaChcbiAgICAgIHJlc3VsdC5sZW5ndGggPT09IDAgfHwgcGFyYWxsZWxcbiAgICAgICAgPyAvLyBSdW5uaW5nIHBhcmFsbGVsLCBvciBmaXJzdCBlbGVtZW50XG4gICAgICAgICAgbWFwcGVyKGl0ZW0pXG4gICAgICAgIDogLy8gV2FpdCBmb3IgdGhlIHByZXZpb3VzIHByb21pc2UsIHRoZW4gbWFrZSB0aGUgbmV4dCBvbmVcbiAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiBtYXBwZXIoaXRlbSksXG4gICAgICAgICAgICAoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSxcbiAgICAgICAgICApLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBNaXNjLiBVdGlsaXRpZXNcblxuZnVuY3Rpb24gZGVzY3JpYmVQYWNrYWdlcyh0YXJnZXQ6IFRhcmdldFNldCkge1xuICBjb25zdCBtb2R1bGVzID0gZmxhdHRlbih0YXJnZXQubW9kdWxlc1NvcnRlZCk7XG4gIGlmIChtb2R1bGVzLmxlbmd0aCA+IDAgJiYgbW9kdWxlcy5sZW5ndGggPCA1KSB7XG4gICAgcmV0dXJuIG1vZHVsZXMubWFwKChtKSA9PiBtLm5hbWUpLmpvaW4oJywgJyk7XG4gIH1cbiAgcmV0dXJuIGAke21vZHVsZXMubGVuZ3RofSBtb2R1bGVzYDtcbn1cblxuLy8jZW5kcmVnaW9uXG4iXX0=
@@ -47,9 +47,22 @@ async function findJsiiModules(directories, recurse) {
47
47
  ];
48
48
  // if --recurse is set, find dependency dirs and build them.
49
49
  if (recurse) {
50
- await Promise.all(dependencyNames
51
- .map((dep) => util_1.resolveDependencyDirectory(realPath, dep))
52
- .map((depDir) => visitPackage(depDir, false)));
50
+ await Promise.all(dependencyNames.flatMap(async (dep) => {
51
+ if (util_1.isBuiltinModule(dep)) {
52
+ return [];
53
+ }
54
+ try {
55
+ const depDir = await util_1.findDependencyDirectory(dep, realPath);
56
+ return [await visitPackage(depDir, false)];
57
+ }
58
+ catch (e) {
59
+ // Some modules like `@types/node` cannot be require()d, but we also don't need them.
60
+ if (!['MODULE_NOT_FOUND', 'ERR_PACKAGE_PATH_NOT_EXPORTED'].includes(e.code)) {
61
+ throw e;
62
+ }
63
+ return [];
64
+ }
65
+ }));
53
66
  }
54
67
  // outdir is either by package.json/jsii.outdir (relative to package root) or via command line (relative to cwd)
55
68
  const outputDirectory = pkg.jsii.outdir && path.resolve(realPath, pkg.jsii.outdir);
@@ -108,4 +121,4 @@ async function updateNpmIgnore(packageDir, excludeOutdir) {
108
121
  }
109
122
  }
110
123
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLW1vZHVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJucG0tbW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUU3QiwwQ0FBMEM7QUFDMUMsMkNBQXlDO0FBQ3pDLHlDQUF5RDtBQUN6RCxpQ0FBb0Q7QUFFcEQ7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FDbkMsV0FBOEIsRUFDOUIsT0FBZ0I7SUFFaEIsTUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sMEJBQWUsQ0FDcEIsR0FBRyxFQUNILENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUN6QixDQUFDO0lBRUYsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFXLEVBQUUsTUFBZTs7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6QixPQUFPO1NBQ1IsQ0FBQyxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLFFBQUMsR0FBRyxDQUFDLElBQUksMENBQUUsTUFBTSxDQUFBLElBQUksUUFBQyxHQUFHLENBQUMsSUFBSSwwQ0FBRSxPQUFPLENBQUEsRUFBRTtZQUMzQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLElBQUksS0FBSyxDQUNiLDZCQUE2QixRQUFRLG9DQUFvQyxDQUMxRSxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLDJDQUEyQzthQUNwRDtTQUNGO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUNiLDhDQUE4QyxJQUFJLENBQUMsU0FBUyxDQUMxRCxHQUFHLEVBQ0gsU0FBUyxFQUNULENBQUMsQ0FDRixFQUFFLENBQ0osQ0FBQztTQUNIO1FBRUQsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxNQUFNLENBQUMsSUFBSSxPQUFDLEdBQUcsQ0FBQyxZQUFZLG1DQUFJLEVBQUUsQ0FBQztZQUN0QyxHQUFHLE1BQU0sQ0FBQyxJQUFJLE9BQUMsR0FBRyxDQUFDLGdCQUFnQixtQ0FBSSxFQUFFLENBQUM7WUFDMUMsR0FBRyxNQUFNLENBQUMsSUFBSSxPQUFDLEdBQUcsQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQztTQUMxQyxDQUFDO1FBRUYsNERBQTREO1FBQzVELElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGVBQWU7aUJBQ1osR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxpQ0FBMEIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQ3ZELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNoRCxDQUFDO1NBQ0g7UUFFRCxnSEFBZ0g7UUFDaEgsTUFBTSxlQUFlLEdBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtRQUV4RixHQUFHLENBQUMsSUFBSSxDQUNOLElBQUksc0JBQVUsQ0FBQztZQUNiLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLGVBQWUsRUFBRSxRQUFRO1lBQ3pCLHNCQUFzQixFQUFFLGVBQWU7WUFDdkMsZ0JBQWdCLEVBQUUsT0FBTztZQUN6QixlQUFlO1NBQ2hCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUExRUQsMENBMEVDO0FBRU0sS0FBSyxVQUFVLG1CQUFtQixDQUN2QyxRQUFzQjtJQUV0QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ25CLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FDMUQsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQVJELGtEQVFDO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FDNUIsVUFBa0IsRUFDbEIsYUFBaUM7SUFFakMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUNoQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDdEMsS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ25FO0lBRUQsa0VBQWtFO0lBQ2xFLG1EQUFtRDtJQUNuRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RCLGNBQWMsQ0FDWixzQ0FBc0MsRUFDdEMsTUFBTSxFQUNOLGVBQWUsQ0FDaEIsQ0FBQztRQUNGLGNBQWMsQ0FDWixzREFBc0QsRUFDdEQsTUFBTSxFQUNOLFFBQVEsQ0FDVCxDQUFDO0tBQ0g7SUFFRCxJQUFJLGFBQWEsRUFBRTtRQUNqQixjQUFjLENBQ1oscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUN6QyxDQUFDO0tBQ0g7SUFFRCxjQUFjLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVyRCxJQUFJLFFBQVEsRUFBRTtRQUNaLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7S0FDcEM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFlLEVBQUUsR0FBRyxRQUFrQjtRQUM1RCxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFNBQVMsY0FBYyxDQUFDLE9BQWUsRUFBRSxHQUFHLFFBQWtCO1FBQzVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyx3QkFBd0I7YUFDakM7WUFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBRWhCLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzNCLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDZjtZQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNwZWMgZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4uL2xpYi9sb2dnaW5nJztcbmltcG9ydCB7IEpzaWlNb2R1bGUgfSBmcm9tICcuL3BhY2thZ2luZyc7XG5pbXBvcnQgeyB0b3BvbG9naWNhbFNvcnQsIFRvcG9zb3J0ZWQgfSBmcm9tICcuL3RvcG9zb3J0JztcbmltcG9ydCB7IHJlc29sdmVEZXBlbmRlbmN5RGlyZWN0b3J5IH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBGaW5kIGFsbCBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBwYWNrYWdlcmRcbiAqXG4gKiBJZiB0aGUgaW5wdXQgbGlzdCBpcyBlbXB0eSwgaW5jbHVkZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4gKlxuICogVGhlIHJlc3VsdCBpcyB0b3BvbG9naWNhbGx5IHNvcnRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRKc2lpTW9kdWxlcyhcbiAgZGlyZWN0b3JpZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICByZWN1cnNlOiBib29sZWFuLFxuKTogUHJvbWlzZTxUb3Bvc29ydGVkPEpzaWlNb2R1bGU+PiB7XG4gIGNvbnN0IHJldDogSnNpaU1vZHVsZVtdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCB0b1Zpc2l0ID0gZGlyZWN0b3JpZXMubGVuZ3RoID4gMCA/IGRpcmVjdG9yaWVzIDogWycuJ107XG4gIGF3YWl0IFByb21pc2UuYWxsKHRvVmlzaXQubWFwKChkaXIpID0+IHZpc2l0UGFja2FnZShkaXIsIHRydWUpKSk7XG5cbiAgcmV0dXJuIHRvcG9sb2dpY2FsU29ydChcbiAgICByZXQsXG4gICAgKG0pID0+IG0ubmFtZSxcbiAgICAobSkgPT4gbS5kZXBlbmRlbmN5TmFtZXMsXG4gICk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gdmlzaXRQYWNrYWdlKGRpcjogc3RyaW5nLCBpc1Jvb3Q6IGJvb2xlYW4pIHtcbiAgICBjb25zdCByZWFsUGF0aCA9IGF3YWl0IGZzLnJlYWxwYXRoKGRpcik7XG4gICAgaWYgKHZpc2l0ZWQuaGFzKHJlYWxQYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gQWxyZWFkeSB2aXNpdGVkXG4gICAgdmlzaXRlZC5hZGQocmVhbFBhdGgpO1xuXG4gICAgY29uc3QgcGtnID0gYXdhaXQgZnMucmVhZEpzb24ocGF0aC5qb2luKHJlYWxQYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgIGlmICghcGtnLmpzaWk/Lm91dGRpciB8fCAhcGtnLmpzaWk/LnRhcmdldHMpIHtcbiAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIFwianNpaVwiIHNlY3Rpb24gaW4gJHtyZWFsUGF0aH0uIEV4cGVjdGluZyBcIm91dGRpclwiIGFuZCBcInRhcmdldHNcImAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47IC8vIGp1c3QgbW92ZSBvbiwgdGhpcyBpcyBub3QgYSBqc2lpIHBhY2thZ2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBrZy5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBwYWNrYWdlLmpzb24gZG9lcyBub3QgaGF2ZSBhICduYW1lJyBmaWVsZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwa2csXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgLi4uT2JqZWN0LmtleXMocGtnLmRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cuZGV2RGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICBdO1xuXG4gICAgLy8gaWYgLS1yZWN1cnNlIGlzIHNldCwgZmluZCBkZXBlbmRlbmN5IGRpcnMgYW5kIGJ1aWxkIHRoZW0uXG4gICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBkZXBlbmRlbmN5TmFtZXNcbiAgICAgICAgICAubWFwKChkZXApID0+IHJlc29sdmVEZXBlbmRlbmN5RGlyZWN0b3J5KHJlYWxQYXRoLCBkZXApKVxuICAgICAgICAgIC5tYXAoKGRlcERpcikgPT4gdmlzaXRQYWNrYWdlKGRlcERpciwgZmFsc2UpKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gb3V0ZGlyIGlzIGVpdGhlciBieSBwYWNrYWdlLmpzb24vanNpaS5vdXRkaXIgKHJlbGF0aXZlIHRvIHBhY2thZ2Ugcm9vdCkgb3IgdmlhIGNvbW1hbmQgbGluZSAocmVsYXRpdmUgdG8gY3dkKVxuICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9XG4gICAgICBwa2cuanNpaS5vdXRkaXIgJiYgcGF0aC5yZXNvbHZlKHJlYWxQYXRoLCBwa2cuanNpaS5vdXRkaXIpO1xuICAgIGNvbnN0IHRhcmdldHMgPSBbLi4uT2JqZWN0LmtleXMocGtnLmpzaWkudGFyZ2V0cyksICdqcyddOyAvLyBcImpzXCIgaXMgYW4gaW1wbGljaXQgdGFyZ2V0LlxuXG4gICAgcmV0LnB1c2goXG4gICAgICBuZXcgSnNpaU1vZHVsZSh7XG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBtb2R1bGVEaXJlY3Rvcnk6IHJlYWxQYXRoLFxuICAgICAgICBkZWZhdWx0T3V0cHV0RGlyZWN0b3J5OiBvdXRwdXREaXJlY3RvcnksXG4gICAgICAgIGF2YWlsYWJsZVRhcmdldHM6IHRhcmdldHMsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFsbE5wbUlnbm9yZXMoXG4gIHBhY2thZ2VzOiBKc2lpTW9kdWxlW10sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICB1cGRhdGVOcG1JZ25vcmUocGtnLm1vZHVsZURpcmVjdG9yeSwgcGtnLm91dHB1dERpcmVjdG9yeSksXG4gICAgKSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTnBtSWdub3JlKFxuICBwYWNrYWdlRGlyOiBzdHJpbmcsXG4gIGV4Y2x1ZGVPdXRkaXI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbikge1xuICBjb25zdCBucG1JZ25vcmVQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VEaXIsICcubnBtaWdub3JlJyk7XG4gIGxldCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGxldCBtb2RpZmllZCA9IGZhbHNlO1xuICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhucG1JZ25vcmVQYXRoKSkge1xuICAgIGxpbmVzID0gKGF3YWl0IGZzLnJlYWRGaWxlKG5wbUlnbm9yZVBhdGgpKS50b1N0cmluZygpLnNwbGl0KCdcXG4nKTtcbiAgfVxuXG4gIC8vIGlmIHRoaXMgaXMgYSBmcmVzaCAubnBtaWdub3JlLCB3ZSBjYW4gYmUgYSBiaXQgbW9yZSBvcGluaW9uYXRlZFxuICAvLyBvdGhlcndpc2UsIHdlIGFkZCBqdXN0IGFkZCBzdHVmZiB0aGF0J3MgY3JpdGljYWxcbiAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUgdHlwZXNjcmlwdCBzb3VyY2UgYW5kIGNvbmZpZycsXG4gICAgICAnKi50cycsXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgKTtcbiAgICBpbmNsdWRlUGF0dGVybihcbiAgICAgICdJbmNsdWRlIGphdmFzY3JpcHQgZmlsZXMgYW5kIHR5cGVzY3JpcHQgZGVjbGFyYXRpb25zJyxcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLmQudHMnLFxuICAgICk7XG4gIH1cblxuICBpZiAoZXhjbHVkZU91dGRpcikge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUganNpaSBvdXRkaXInLFxuICAgICAgcGF0aC5yZWxhdGl2ZShwYWNrYWdlRGlyLCBleGNsdWRlT3V0ZGlyKSxcbiAgICApO1xuICB9XG5cbiAgaW5jbHVkZVBhdHRlcm4oJ0luY2x1ZGUgLmpzaWknLCBzcGVjLlNQRUNfRklMRV9OQU1FKTtcblxuICBpZiAobW9kaWZpZWQpIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUobnBtSWdub3JlUGF0aCwgYCR7bGluZXMuam9pbignXFxuJyl9XFxuYCk7XG4gICAgbG9nZ2luZy5pbmZvKCdVcGRhdGVkIC5ucG1pZ25vcmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluY2x1ZGVQYXR0ZXJuKGNvbW1lbnQ6IHN0cmluZywgLi4ucGF0dGVybnM6IHN0cmluZ1tdKSB7XG4gICAgZXhjbHVkZVBhdHRlcm4oY29tbWVudCwgLi4ucGF0dGVybnMubWFwKChwKSA9PiBgISR7cH1gKSk7XG4gIH1cblxuICBmdW5jdGlvbiBleGNsdWRlUGF0dGVybihjb21tZW50OiBzdHJpbmcsIC4uLnBhdHRlcm5zOiBzdHJpbmdbXSkge1xuICAgIGxldCBmaXJzdCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICBpZiAobGluZXMuaW5jbHVkZXMocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGluIC5ucG1pZ25vcmVcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgIGxpbmVzLnB1c2goYCMgJHtjb21tZW50fWApO1xuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsaW5lcy5wdXNoKHBhdHRlcm4pO1xuICAgIH1cbiAgfVxufVxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLW1vZHVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJucG0tbW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUU3QiwwQ0FBMEM7QUFDMUMsMkNBQXlDO0FBQ3pDLHlDQUF5RDtBQUN6RCxpQ0FBa0U7QUFFbEU7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FDbkMsV0FBOEIsRUFDOUIsT0FBZ0I7SUFFaEIsTUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sMEJBQWUsQ0FDcEIsR0FBRyxFQUNILENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUN6QixDQUFDO0lBRUYsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFXLEVBQUUsTUFBZTs7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6QixPQUFPO1NBQ1IsQ0FBQyxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztR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LEdBQUcsUUFBa0I7UUFDNUQsY0FBYyxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFlLEVBQUUsR0FBRyxRQUFrQjtRQUM1RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixPQUFPLENBQUMsd0JBQXdCO2FBQ2pDO1lBRUQsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVoQixJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ2Y7WUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzcGVjIGZyb20gJ0Bqc2lpL3NwZWMnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tICcuLi9saWIvbG9nZ2luZyc7XG5pbXBvcnQgeyBKc2lpTW9kdWxlIH0gZnJvbSAnLi9wYWNrYWdpbmcnO1xuaW1wb3J0IHsgdG9wb2xvZ2ljYWxTb3J0LCBUb3Bvc29ydGVkIH0gZnJvbSAnLi90b3Bvc29ydCc7XG5pbXBvcnQgeyBmaW5kRGVwZW5kZW5jeURpcmVjdG9yeSwgaXNCdWlsdGluTW9kdWxlIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBGaW5kIGFsbCBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBwYWNrYWdlcmRcbiAqXG4gKiBJZiB0aGUgaW5wdXQgbGlzdCBpcyBlbXB0eSwgaW5jbHVkZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4gKlxuICogVGhlIHJlc3VsdCBpcyB0b3BvbG9naWNhbGx5IHNvcnRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRKc2lpTW9kdWxlcyhcbiAgZGlyZWN0b3JpZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICByZWN1cnNlOiBib29sZWFuLFxuKTogUHJvbWlzZTxUb3Bvc29ydGVkPEpzaWlNb2R1bGU+PiB7XG4gIGNvbnN0IHJldDogSnNpaU1vZHVsZVtdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCB0b1Zpc2l0ID0gZGlyZWN0b3JpZXMubGVuZ3RoID4gMCA/IGRpcmVjdG9yaWVzIDogWycuJ107XG4gIGF3YWl0IFByb21pc2UuYWxsKHRvVmlzaXQubWFwKChkaXIpID0+IHZpc2l0UGFja2FnZShkaXIsIHRydWUpKSk7XG5cbiAgcmV0dXJuIHRvcG9sb2dpY2FsU29ydChcbiAgICByZXQsXG4gICAgKG0pID0+IG0ubmFtZSxcbiAgICAobSkgPT4gbS5kZXBlbmRlbmN5TmFtZXMsXG4gICk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gdmlzaXRQYWNrYWdlKGRpcjogc3RyaW5nLCBpc1Jvb3Q6IGJvb2xlYW4pIHtcbiAgICBjb25zdCByZWFsUGF0aCA9IGF3YWl0IGZzLnJlYWxwYXRoKGRpcik7XG4gICAgaWYgKHZpc2l0ZWQuaGFzKHJlYWxQYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gQWxyZWFkeSB2aXNpdGVkXG4gICAgdmlzaXRlZC5hZGQocmVhbFBhdGgpO1xuXG4gICAgY29uc3QgcGtnID0gYXdhaXQgZnMucmVhZEpzb24ocGF0aC5qb2luKHJlYWxQYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgIGlmICghcGtnLmpzaWk/Lm91dGRpciB8fCAhcGtnLmpzaWk/LnRhcmdldHMpIHtcbiAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIFwianNpaVwiIHNlY3Rpb24gaW4gJHtyZWFsUGF0aH0uIEV4cGVjdGluZyBcIm91dGRpclwiIGFuZCBcInRhcmdldHNcImAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47IC8vIGp1c3QgbW92ZSBvbiwgdGhpcyBpcyBub3QgYSBqc2lpIHBhY2thZ2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBrZy5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBwYWNrYWdlLmpzb24gZG9lcyBub3QgaGF2ZSBhICduYW1lJyBmaWVsZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBwa2csXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgLi4uT2JqZWN0LmtleXMocGtnLmRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwa2cuZGV2RGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICBdO1xuXG4gICAgLy8gaWYgLS1yZWN1cnNlIGlzIHNldCwgZmluZCBkZXBlbmRlbmN5IGRpcnMgYW5kIGJ1aWxkIHRoZW0uXG4gICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBkZXBlbmRlbmN5TmFtZXMuZmxhdE1hcChhc3luYyAoZGVwKSA9PiB7XG4gICAgICAgICAgaWYgKGlzQnVpbHRpbk1vZHVsZShkZXApKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlcERpciA9IGF3YWl0IGZpbmREZXBlbmRlbmN5RGlyZWN0b3J5KGRlcCwgcmVhbFBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIFthd2FpdCB2aXNpdFBhY2thZ2UoZGVwRGlyLCBmYWxzZSldO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgbW9kdWxlcyBsaWtlIGBAdHlwZXMvbm9kZWAgY2Fubm90IGJlIHJlcXVpcmUoKWQsIGJ1dCB3ZSBhbHNvIGRvbid0IG5lZWQgdGhlbS5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIVsnTU9EVUxFX05PVF9GT1VORCcsICdFUlJfUEFDS0FHRV9QQVRIX05PVF9FWFBPUlRFRCddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIGUuY29kZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gb3V0ZGlyIGlzIGVpdGhlciBieSBwYWNrYWdlLmpzb24vanNpaS5vdXRkaXIgKHJlbGF0aXZlIHRvIHBhY2thZ2Ugcm9vdCkgb3IgdmlhIGNvbW1hbmQgbGluZSAocmVsYXRpdmUgdG8gY3dkKVxuICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9XG4gICAgICBwa2cuanNpaS5vdXRkaXIgJiYgcGF0aC5yZXNvbHZlKHJlYWxQYXRoLCBwa2cuanNpaS5vdXRkaXIpO1xuICAgIGNvbnN0IHRhcmdldHMgPSBbLi4uT2JqZWN0LmtleXMocGtnLmpzaWkudGFyZ2V0cyksICdqcyddOyAvLyBcImpzXCIgaXMgYW4gaW1wbGljaXQgdGFyZ2V0LlxuXG4gICAgcmV0LnB1c2goXG4gICAgICBuZXcgSnNpaU1vZHVsZSh7XG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBtb2R1bGVEaXJlY3Rvcnk6IHJlYWxQYXRoLFxuICAgICAgICBkZWZhdWx0T3V0cHV0RGlyZWN0b3J5OiBvdXRwdXREaXJlY3RvcnksXG4gICAgICAgIGF2YWlsYWJsZVRhcmdldHM6IHRhcmdldHMsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFsbE5wbUlnbm9yZXMoXG4gIHBhY2thZ2VzOiBKc2lpTW9kdWxlW10sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICB1cGRhdGVOcG1JZ25vcmUocGtnLm1vZHVsZURpcmVjdG9yeSwgcGtnLm91dHB1dERpcmVjdG9yeSksXG4gICAgKSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTnBtSWdub3JlKFxuICBwYWNrYWdlRGlyOiBzdHJpbmcsXG4gIGV4Y2x1ZGVPdXRkaXI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbikge1xuICBjb25zdCBucG1JZ25vcmVQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VEaXIsICcubnBtaWdub3JlJyk7XG4gIGxldCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGxldCBtb2RpZmllZCA9IGZhbHNlO1xuICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhucG1JZ25vcmVQYXRoKSkge1xuICAgIGxpbmVzID0gKGF3YWl0IGZzLnJlYWRGaWxlKG5wbUlnbm9yZVBhdGgpKS50b1N0cmluZygpLnNwbGl0KCdcXG4nKTtcbiAgfVxuXG4gIC8vIGlmIHRoaXMgaXMgYSBmcmVzaCAubnBtaWdub3JlLCB3ZSBjYW4gYmUgYSBiaXQgbW9yZSBvcGluaW9uYXRlZFxuICAvLyBvdGhlcndpc2UsIHdlIGFkZCBqdXN0IGFkZCBzdHVmZiB0aGF0J3MgY3JpdGljYWxcbiAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUgdHlwZXNjcmlwdCBzb3VyY2UgYW5kIGNvbmZpZycsXG4gICAgICAnKi50cycsXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgKTtcbiAgICBpbmNsdWRlUGF0dGVybihcbiAgICAgICdJbmNsdWRlIGphdmFzY3JpcHQgZmlsZXMgYW5kIHR5cGVzY3JpcHQgZGVjbGFyYXRpb25zJyxcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLmQudHMnLFxuICAgICk7XG4gIH1cblxuICBpZiAoZXhjbHVkZU91dGRpcikge1xuICAgIGV4Y2x1ZGVQYXR0ZXJuKFxuICAgICAgJ0V4Y2x1ZGUganNpaSBvdXRkaXInLFxuICAgICAgcGF0aC5yZWxhdGl2ZShwYWNrYWdlRGlyLCBleGNsdWRlT3V0ZGlyKSxcbiAgICApO1xuICB9XG5cbiAgaW5jbHVkZVBhdHRlcm4oJ0luY2x1ZGUgLmpzaWknLCBzcGVjLlNQRUNfRklMRV9OQU1FKTtcblxuICBpZiAobW9kaWZpZWQpIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUobnBtSWdub3JlUGF0aCwgYCR7bGluZXMuam9pbignXFxuJyl9XFxuYCk7XG4gICAgbG9nZ2luZy5pbmZvKCdVcGRhdGVkIC5ucG1pZ25vcmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluY2x1ZGVQYXR0ZXJuKGNvbW1lbnQ6IHN0cmluZywgLi4ucGF0dGVybnM6IHN0cmluZ1tdKSB7XG4gICAgZXhjbHVkZVBhdHRlcm4oY29tbWVudCwgLi4ucGF0dGVybnMubWFwKChwKSA9PiBgISR7cH1gKSk7XG4gIH1cblxuICBmdW5jdGlvbiBleGNsdWRlUGF0dGVybihjb21tZW50OiBzdHJpbmcsIC4uLnBhdHRlcm5zOiBzdHJpbmdbXSkge1xuICAgIGxldCBmaXJzdCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICBpZiAobGluZXMuaW5jbHVkZXMocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGluIC5ucG1pZ25vcmVcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgIGxpbmVzLnB1c2goYCMgJHtjb21tZW50fWApO1xuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsaW5lcy5wdXNoKHBhdHRlcm4pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -149,7 +149,10 @@ class DotNetDocGenerator {
149
149
  xml.att(name, value);
150
150
  }
151
151
  const xmlstring = xml.end({ allowEmpty: true, pretty: false });
152
- for (const line of xmlstring.split('\n').map((x) => x.trim())) {
152
+ const trimLeft = tag !== 'code';
153
+ for (const line of xmlstring
154
+ .split('\n')
155
+ .map((x) => (trimLeft ? x.trim() : x.trimRight()))) {
153
156
  this.code.line(`/// ${line}`);
154
157
  }
155
158
  }
@@ -165,4 +168,4 @@ function shouldMentionStability(s) {
165
168
  // Don't render "stable" or "external", those are both stable by implication
166
169
  return s === spec.Stability.Deprecated || s === spec.Stability.Experimental;
167
170
  }
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90bmV0ZG9jZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG90bmV0ZG9jZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQywrQ0FPc0I7QUFDdEIseUNBQXlDO0FBRXpDLDBCQUF3RDtBQUN4RCxzQ0FBMEM7QUFDMUMsMkNBQThDO0FBRTlDOzs7O0dBSUc7QUFDSCxNQUFhLGtCQUFrQjtJQUk3QixZQUNFLElBQWUsRUFDRSxPQUFnQixFQUNoQixRQUF1QjtRQUR2QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWU7UUFMekIsY0FBUyxHQUFvQixJQUFJLDJCQUFlLEVBQUUsQ0FBQztRQU9sRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUFDLEdBQXNCLEVBQUUsV0FBd0I7UUFDOUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUV0Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsc0JBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVwRCxrREFBa0Q7UUFDbEQsTUFBTSxTQUFTLEdBQUcsR0FBa0IsQ0FBQztRQUNyQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7Z0JBQ3JDLG1GQUFtRjtnQkFDbkYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7cUJBQzdCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7cUJBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxjQUFFLEtBQUssQ0FBQyxJ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NUUsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzcGVjIGZyb20gJ0Bqc2lpL3NwZWMnO1xuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSAnY29kZW1ha2VyJztcbmltcG9ydCB7XG4gIFJvc2V0dGEsXG4gIFRhcmdldExhbmd1YWdlLFxuICBUcmFuc2xhdGlvbixcbiAgZW5mb3JjZXNTdHJpY3RNb2RlLFxuICBtYXJrRG93blRvWG1sRG9jLFxuICBBcGlMb2NhdGlvbixcbn0gZnJvbSAnanNpaS1yb3NldHRhJztcbmltcG9ydCAqIGFzIHhtbGJ1aWxkZXIgZnJvbSAneG1sYnVpbGRlcic7XG5cbmltcG9ydCB7IElOQ09NUExFVEVfRElTQ0xBSU1FUl9OT05DT01QSUxJTkcgfSBmcm9tICcuLic7XG5pbXBvcnQgeyByZW5kZXJTdW1tYXJ5IH0gZnJvbSAnLi4vX3V0aWxzJztcbmltcG9ydCB7IERvdE5ldE5hbWVVdGlscyB9IGZyb20gJy4vbmFtZXV0aWxzJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIEpzaWkgYXR0cmlidXRlcyBhbmQgY2FsbHMgZm9yIHRoZSAuTkVUIHJ1bnRpbWVcbiAqXG4gKiBVc2VzIHRoZSBzYW1lIGluc3RhbmNlIG9mIENvZGVNYWtlciBhcyB0aGUgcmVzdCBvZiB0aGUgY29kZVxuICovXG5leHBvcnQgY2xhc3MgRG90TmV0RG9jR2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb2RlOiBDb2RlTWFrZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZXV0aWxzOiBEb3ROZXROYW1lVXRpbHMgPSBuZXcgRG90TmV0TmFtZVV0aWxzKCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGNvZGU6IENvZGVNYWtlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvc2V0dGE6IFJvc2V0dGEsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhc3NlbWJseTogc3BlYy5Bc3NlbWJseSxcbiAgKSB7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbGwgZG9jdW1lbnRhdGlvbiBkZXBlbmRpbmcgb24gd2hhdCBpcyBhdmFpbGFibGUgaW4gdGhlIGpzaWkgbW9kZWxcbiAgICpcbiAgICogVXNlZCBieSBhbGwga2luZCBvZiBtZW1iZXJzICsgY2xhc3NlcywgaW50ZXJmYWNlcywgZW51bXNcbiAgICogT3JkZXIgc2hvdWxkIGJlXG4gICAqIFN1bW1hcnlcbiAgICogUGFyYW1cbiAgICogUmV0dXJuc1xuICAgKiBSZW1hcmtzIChpbmNsdWRlcyBleGFtcGxlcywgbGlua3MsIGRlcHJlY2F0ZWQpXG4gICAqL1xuICBwdWJsaWMgZW1pdERvY3Mob2JqOiBzcGVjLkRvY3VtZW50YWJsZSwgYXBpTG9jYXRpb246IEFwaUxvY2F0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZG9jcyA9IG9iai5kb2NzO1xuXG4gICAgLy8gVGhlIGRvY3MgbWF5IGJlIHVuZGVmaW5lZCBhdCB0aGUgbWV0aG9kIGxldmVsIGJ1dCBub3QgdGhlIHBhcmFtZXRlcnMgbGV2ZWxcbiAgICB0aGlzLmVtaXRYbWxEb2MoJ3N1bW1hcnknLCByZW5kZXJTdW1tYXJ5KG9iai5kb2NzKSk7XG5cbiAgICAvLyBIYW5kbGluZyBwYXJhbWV0ZXJzIG9ubHkgaWYgdGhlIG9iaiBpcyBhIG1ldGhvZFxuICAgIGNvbnN0IG9iak1ldGhvZCA9IG9iaiBhcyBzcGVjLk1ldGhvZDtcbiAgICBpZiAob2JqTWV0aG9kLnBhcmFtZXRlcnMpIHtcbiAgICAgIG9iak1ldGhvZC5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIC8vIFJlbW92ZSBhbnkgc2x1ZyBgQGAgZnJvbSB0aGUgcGFyYW1ldGVyIG5hbWUgLSBpdCdzIG5vdCBzdXBwb3NlZCB0byBzaG93IHVwIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHRoaXMubmFtZXV0aWxzXG4gICAgICAgICAgLmNvbnZlcnRQYXJhbWV0ZXJOYW1lKHBhcmFtLm5hbWUpXG4gICAgICAgICAgLnJlcGxhY2UoL15ALywgJycpO1xuICAgICAgICB0aGlzLmVtaXRYbWxEb2MoJ3BhcmFtJywgcGFyYW0uZG9jcz8uc3VtbWFyeSA/PyAnJywge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgbmFtZTogcGFyYW1OYW1lIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwZG9jZnggbmFtZXNwYWNlZG9jZCBhIHZhbGlkIGluc3RhbmNlIG9mIGRvY3NcbiAgICBpZiAoIWRvY3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZG9jcy5yZXR1cm5zKSB7XG4gICAgICB0aGlzLmVtaXRYbWxEb2MoJ3JldHVybnMnLCBkb2NzLnJldHVybnMpO1xuICAgIH1cblxuICAgIC8vIFJlbWFya3MgZG9lcyBub3QgdXNlIGVtaXRYbWxEb2MoKSBiZWNhdXNlIHRoZSByZW1hcmtzIGNhbiBjb250YWluIGNvZGUgYmxvY2tzXG4gICAgLy8gd2hpY2ggYXJlIGZlbmNlZCB3aXRoIDxjb2RlPiB0YWdzLCB3aGljaCB3b3VsZCBiZSBlc2NhcGVkIHRvXG4gICAgLy8gJmx0O2NvZGUmZ3Q7IGlmIHdlIHVzZWQgdGhlIHhtbCBidWlsZGVyLlxuICAgIGNvbnN0IHJlbWFya3MgPSB0aGlzLnJlbmRlclJlbWFya3MoZG9jcywgYXBpTG9jYXRpb24pO1xuICAgIGlmIChyZW1hcmtzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPHJlbWFya3M+Jyk7XG4gICAgICByZW1hcmtzLmZvckVhY2goKHIpID0+IHRoaXMuY29kZS5saW5lKGAvLy8gJHtyfWAudHJpbVJpZ2h0KCkpKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9yZW1hcmtzPicpO1xuICAgIH1cblxuICAgIGlmIChkb2NzLmV4YW1wbGUpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPGV4YW1wbGU+Jyk7XG4gICAgICB0aGlzLmVtaXRYbWxEb2MoJ2NvZGUnLCB0aGlzLmNvbnZlcnRFeGFtcGxlKGRvY3MuZXhhbXBsZSwgYXBpTG9jYXRpb24pKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9leGFtcGxlPicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbWl0TWFya2Rvd25Bc1JlbWFya3MoXG4gICAgbWFya2Rvd246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24sXG4gICkge1xuICAgIGlmICghbWFya2Rvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGVkID0gbWFya0Rvd25Ub1htbERvYyhcbiAgICAgIHRoaXMuY29udmVydFNhbXBsZXNJbk1hcmtkb3duKG1hcmtkb3duLCBhcGlMb2NhdGlvbiksXG4gICAgKTtcbiAgICBjb25zdCBsaW5lcyA9IHRyYW5zbGF0ZWQuc3BsaXQoJ1xcbicpO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8cmVtYXJrcz4nKTtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKGAvLy8gJHtsaW5lfWAudHJpbVJpZ2h0KCkpO1xuICAgIH1cbiAgICB0aGlzLmNvZGUubGluZSgnLy8vIDwvcmVtYXJrcz4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsaW5lcyB0aGF0IHNob3VsZCBnbyBpbnRvIHRoZSA8cmVtYXJrcz4gc2VjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJSZW1hcmtzKGRvY3M6IHNwZWMuRG9jcywgYXBpTG9jYXRpb246IEFwaUxvY2F0aW9uKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChkb2NzLnJlbWFya3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBtYXJrRG93blRvWG1sRG9jKFxuICAgICAgICB0aGlzLmNvbnZlcnRTYW1wbGVzSW5NYXJrZG93bihkb2NzLnJlbWFya3MsIGFwaUxvY2F0aW9uKSxcbiAgICAgICk7XG4gICAgICByZXQucHVzaCguLi50cmFuc2xhdGVkLnNwbGl0KCdcXG4nKSk7XG4gICAgICByZXQucHVzaCgnJyk7XG4gICAgfVxuXG4gICAgLy8gQWxsIHRoZSBcInRhZ3NcIiBuZWVkIHRvIGJlIHJlbmRlcmVkIHdpdGggZW1weXQgbGluZXMgYmV0d2VlbiB0aGVtIG9yIHRoZXknbGwgYmUgd29yZCB3cmFwcGVkLlxuXG4gICAgaWYgKGRvY3MuZGVmYXVsdCkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnZGVmYXVsdCcsIGRvY3MuZGVmYXVsdCk7XG4gICAgfVxuICAgIGlmIChkb2NzLnN0YWJpbGl0eSAmJiBzaG91bGRNZW50aW9uU3RhYmlsaXR5KGRvY3Muc3RhYmlsaXR5KSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZShcbiAgICAgICAgJ3N0YWJpbGl0eScsXG4gICAgICAgIHRoaXMubmFtZXV0aWxzLmNhcGl0YWxpemVXb3JkKGRvY3Muc3RhYmlsaXR5KSxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChkb2NzLnNlZSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnc2VlJywgZG9jcy5zZWUpO1xuICAgIH1cbiAgICBpZiAoZG9jcy5zdWJjbGFzc2FibGUpIHtcbiAgICAgIGVtaXREb2NBdHRyaWJ1dGUoJ3N1YmNsYXNzYWJsZScsICcnKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZG9jcy5jdXN0b20gPz8ge30pKSB7XG4gICAgICBjb25zdCBleHRyYVNwYWNlID0gayA9PT0gJ2xpbmsnID8gJyAnIDogJyc7IC8vIEV4dHJhIHNwYWNlIGZvciAnQGxpbmsnIHRvIGtlZXAgdW5pdCB0ZXN0cyBoYXBweVxuICAgICAgZW1pdERvY0F0dHJpYnV0ZShrLCB2ICsgZXh0cmFTcGFjZSk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGVtcHR5IGxpbmVzXG4gICAgd2hpbGUgKHJldC5sZW5ndGggPiAwICYmIHJldFswXSA9PT0gJycpIHtcbiAgICAgIHJldC5zaGlmdCgpO1xuICAgIH1cbiAgICB3aGlsZSAocmV0Lmxlbmd0aCA+IDAgJiYgcmV0W3JldC5sZW5ndGggLSAxXSA9PT0gJycpIHtcbiAgICAgIHJldC5wb3AoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuXG4gICAgZnVuY3Rpb24gZW1pdERvY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGxzID0gY29udGVudHMuc3BsaXQoJ1xcbicpO1xuICAgICAgcmV0LnB1c2goYDxzdHJvbmc+JHt1Y0ZpcnN0KG5hbWUpfTwvc3Ryb25nPjogJHtsc1swXX1gKTtcbiAgICAgIHJldC5wdXNoKC4uLmxzLnNsaWNlKDEpKTtcbiAgICAgIHJldC5wdXNoKCcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFeGFtcGxlKGV4YW1wbGU6IHN0cmluZywgYXBpTG9jYXRpb246IEFwaUxvY2F0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yb3NldHRhLnRyYW5zbGF0ZUV4YW1wbGUoXG4gICAgICBhcGlMb2NhdGlvbixcbiAgICAgIGV4YW1wbGUsXG4gICAgICBUYXJnZXRMYW5ndWFnZS5DU0hBUlAsXG4gICAgICBlbmZvcmNlc1N0cmljdE1vZGUodGhpcy5hc3NlbWJseSksXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhEaXNjbGFpbWVyKHRyYW5zbGF0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0U2FtcGxlc0luTWFya2Rvd24obWFya2Rvd246IHN0cmluZywgYXBpOiBBcGlMb2NhdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm9zZXR0YS50cmFuc2xhdGVTbmlwcGV0c0luTWFya2Rvd24oXG4gICAgICBhcGksXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRhcmdldExhbmd1YWdlLkNTSEFSUCxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICAgICh0cmFucykgPT4gKHtcbiAgICAgICAgbGFuZ3VhZ2U6IHRyYW5zLmxhbmd1YWdlLFxuICAgICAgICBzb3VyY2U6IHRoaXMucHJlZml4RGlzY2xhaW1lcih0cmFucyksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVmaXhEaXNjbGFpbWVyKHRyYW5zbGF0ZWQ6IFRyYW5zbGF0aW9uKSB7XG4gICAgaWYgKCF0cmFuc2xhdGVkLmRpZENvbXBpbGUgJiYgSU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElORykge1xuICAgICAgcmV0dXJuIGAvLyAke0lOQ09NUExFVEVfRElTQ0xBSU1FUl9OT05DT01QSUxJTkd9XFxuJHt0cmFuc2xhdGVkLnNvdXJjZX1gO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNsYXRlZC5zb3VyY2U7XG4gIH1cblxuICBwcml2YXRlIGVtaXRYbWxEb2MoXG4gICAgdGFnOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIHsgYXR0cmlidXRlcyA9IHt9IH06IHsgYXR0cmlidXRlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeG1sID0geG1sYnVpbGRlci5jcmVhdGUodGFnLCB7IGhlYWRsZXNzOiB0cnVlIH0pLnRleHQoY29udGVudCk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICB4bWwuYXR0KG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgeG1sc3RyaW5nID0geG1sLmVuZCh7IGFsbG93RW1wdHk6IHRydWUsIHByZXR0eTogZmFsc2UgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgeG1sc3RyaW5nLnNwbGl0KCdcXG4nKS5tYXAoKHgpID0+IHgudHJpbSgpKSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXBwZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXJcbiAqL1xuZnVuY3Rpb24gdWNGaXJzdCh4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIHguc3Vic3RyKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB4LnN1YnN0cigxKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkTWVudGlvblN0YWJpbGl0eShzOiBzcGVjLlN0YWJpbGl0eSkge1xuICAvLyBEb24ndCByZW5kZXIgXCJzdGFibGVcIiBvciBcImV4dGVybmFsXCIsIHRob3NlIGFyZSBib3RoIHN0YWJsZSBieSBpbXBsaWNhdGlvblxuICByZXR1cm4gcyA9PT0gc3BlYy5TdGFiaWxpdHkuRGVwcmVjYXRlZCB8fCBzID09PSBzcGVjLlN0YWJpbGl0eS5FeHBlcmltZW50YWw7XG59XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90bmV0ZG9jZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG90bmV0ZG9jZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQywrQ0FPc0I7QUFDdEIseUNBQXlDO0FBRXpDLDBCQUF3RDtBQUN4RCxzQ0FBMEM7QUFDMUMsMkNBQThDO0FBRTlDOzs7O0dBSUc7QUFDSCxNQUFhLGtCQUFrQjtJQUk3QixZQUNFLElBQWUsRUFDRSxPQUFnQixFQUNoQixRQUF1QjtRQUR2QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWU7UUFMekIsY0FBUyxHQUFvQixJQUFJLDJCQUFlLEVBQUUsQ0FBQztRQU9sRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUFDLEdBQXNCLEVBQUUsV0FBd0I7UUFDOUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUV0Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsc0JBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVwRCxrREFBa0Q7UUFDbEQsTUFBTSxTQUFTLEdBQUcsR0FBa0IsQ0FBQztRQUNyQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7Z0JBQ3JDLG1GQUFtRjtnQkFDbkYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7cUJBQzdCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7cUJBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxjQUFFLEtBQUssQ0FBQyxJQUFJLDBDQUFFLE9BQU8sbUNBQUksRUFBRSxFQUFFO29CQUNsRCxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2lCQUNoQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLCtEQUErRDtRQUMvRCwyQ0FBMkM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEQsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQzFCLFFBQTRCLEVBQzVCLFdBQXdCO1FBRXhCLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBRywrQkFBZ0IsQ0FDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FDckQsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsSUFBZSxFQUFFLFdBQXdCOztRQUM3RCxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sVUFBVSxHQUFHLCtCQUFnQixDQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FDekQsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNkO1FBRUQsK0ZBQStGO1FBRS9GLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1RCxnQkFBZ0IsQ0FDZCxXQUFXLEVBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM5QyxDQUFDO1NBQ0g7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN0QztRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxPQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3RELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsbURBQW1EO1lBQy9GLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCwwQ0FBMEM7UUFDMUMsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3RDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLEdBQUcsQ0FBQztRQUVYLFNBQVMsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLFFBQWdCO1lBQ3RELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQWUsRUFBRSxXQUF3QjtRQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUM5QyxXQUFXLEVBQ1gsT0FBTyxFQUNQLDZCQUFjLENBQUMsTUFBTSxFQUNyQixpQ0FBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2xDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsUUFBZ0IsRUFBRSxHQUFnQjtRQUNqRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQzdDLEdBQUcsRUFDSCxRQUFRLEVBQ1IsNkJBQWMsQ0FBQyxNQUFNLEVBQ3JCLGlDQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7U0FDckMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsVUFBdUI7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksc0NBQWtDLEVBQUU7WUFDaEUsT0FBTyxNQUFNLHNDQUFrQyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN6RTtRQUNELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVSxDQUNoQixHQUFXLEVBQ1gsT0FBZSxFQUNmLEVBQUUsVUFBVSxHQUFHLEVBQUUsS0FBa0QsRUFBRTtRQUVyRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTztTQUNSO1FBRUQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEI7UUFDRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxHQUFHLEtBQUssTUFBTSxDQUFDO1FBQ2hDLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUzthQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7Q0FDRjtBQWpNRCxnREFpTUM7QUFFRDs7R0FFRztBQUNILFNBQVMsT0FBTyxDQUFDLENBQVM7SUFDeEIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLENBQWlCO0lBQy9DLDRFQUE0RTtJQUM1RSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNwZWMgZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBDb2RlTWFrZXIgfSBmcm9tICdjb2RlbWFrZXInO1xuaW1wb3J0IHtcbiAgUm9zZXR0YSxcbiAgVGFyZ2V0TGFuZ3VhZ2UsXG4gIFRyYW5zbGF0aW9uLFxuICBlbmZvcmNlc1N0cmljdE1vZGUsXG4gIG1hcmtEb3duVG9YbWxEb2MsXG4gIEFwaUxvY2F0aW9uLFxufSBmcm9tICdqc2lpLXJvc2V0dGEnO1xuaW1wb3J0ICogYXMgeG1sYnVpbGRlciBmcm9tICd4bWxidWlsZGVyJztcblxuaW1wb3J0IHsgSU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElORyB9IGZyb20gJy4uJztcbmltcG9ydCB7IHJlbmRlclN1bW1hcnkgfSBmcm9tICcuLi9fdXRpbHMnO1xuaW1wb3J0IHsgRG90TmV0TmFtZVV0aWxzIH0gZnJvbSAnLi9uYW1ldXRpbHMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgSnNpaSBhdHRyaWJ1dGVzIGFuZCBjYWxscyBmb3IgdGhlIC5ORVQgcnVudGltZVxuICpcbiAqIFVzZXMgdGhlIHNhbWUgaW5zdGFuY2Ugb2YgQ29kZU1ha2VyIGFzIHRoZSByZXN0IG9mIHRoZSBjb2RlXG4gKi9cbmV4cG9ydCBjbGFzcyBEb3ROZXREb2NHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZGU6IENvZGVNYWtlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1ldXRpbHM6IERvdE5ldE5hbWVVdGlscyA9IG5ldyBEb3ROZXROYW1lVXRpbHMoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgY29kZTogQ29kZU1ha2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9zZXR0YTogUm9zZXR0YSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2VtYmx5OiBzcGVjLkFzc2VtYmx5LFxuICApIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBkb2N1bWVudGF0aW9uIGRlcGVuZGluZyBvbiB3aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUganNpaSBtb2RlbFxuICAgKlxuICAgKiBVc2VkIGJ5IGFsbCBraW5kIG9mIG1lbWJlcnMgKyBjbGFzc2VzLCBpbnRlcmZhY2VzLCBlbnVtc1xuICAgKiBPcmRlciBzaG91bGQgYmVcbiAgICogU3VtbWFyeVxuICAgKiBQYXJhbVxuICAgKiBSZXR1cm5zXG4gICAqIFJlbWFya3MgKGluY2x1ZGVzIGV4YW1wbGVzLCBsaW5rcywgZGVwcmVjYXRlZClcbiAgICovXG4gIHB1YmxpYyBlbWl0RG9jcyhvYmo6IHNwZWMuRG9jdW1lbnRhYmxlLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBkb2NzID0gb2JqLmRvY3M7XG5cbiAgICAvLyBUaGUgZG9jcyBtYXkgYmUgdW5kZWZpbmVkIGF0IHRoZSBtZXRob2QgbGV2ZWwgYnV0IG5vdCB0aGUgcGFyYW1ldGVycyBsZXZlbFxuICAgIHRoaXMuZW1pdFhtbERvYygnc3VtbWFyeScsIHJlbmRlclN1bW1hcnkob2JqLmRvY3MpKTtcblxuICAgIC8vIEhhbmRsaW5nIHBhcmFtZXRlcnMgb25seSBpZiB0aGUgb2JqIGlzIGEgbWV0aG9kXG4gICAgY29uc3Qgb2JqTWV0aG9kID0gb2JqIGFzIHNwZWMuTWV0aG9kO1xuICAgIGlmIChvYmpNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgb2JqTWV0aG9kLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBzbHVnIGBAYCBmcm9tIHRoZSBwYXJhbWV0ZXIgbmFtZSAtIGl0J3Mgbm90IHN1cHBvc2VkIHRvIHNob3cgdXAgaGVyZS5cbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhpcy5uYW1ldXRpbHNcbiAgICAgICAgICAuY29udmVydFBhcmFtZXRlck5hbWUocGFyYW0ubmFtZSlcbiAgICAgICAgICAucmVwbGFjZSgvXkAvLCAnJyk7XG4gICAgICAgIHRoaXMuZW1pdFhtbERvYygncGFyYW0nLCBwYXJhbS5kb2NzPy5zdW1tYXJ5ID8/ICcnLCB7XG4gICAgICAgICAgYXR0cmlidXRlczogeyBuYW1lOiBwYXJhbU5hbWUgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBkb2NmeCBuYW1lc3BhY2Vkb2NkIGEgdmFsaWQgaW5zdGFuY2Ugb2YgZG9jc1xuICAgIGlmICghZG9jcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2NzLnJldHVybnMpIHtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygncmV0dXJucycsIGRvY3MucmV0dXJucyk7XG4gICAgfVxuXG4gICAgLy8gUmVtYXJrcyBkb2VzIG5vdCB1c2UgZW1pdFhtbERvYygpIGJlY2F1c2UgdGhlIHJlbWFya3MgY2FuIGNvbnRhaW4gY29kZSBibG9ja3NcbiAgICAvLyB3aGljaCBhcmUgZmVuY2VkIHdpdGggPGNvZGU+IHRhZ3MsIHdoaWNoIHdvdWxkIGJlIGVzY2FwZWQgdG9cbiAgICAvLyAmbHQ7Y29kZSZndDsgaWYgd2UgdXNlZCB0aGUgeG1sIGJ1aWxkZXIuXG4gICAgY29uc3QgcmVtYXJrcyA9IHRoaXMucmVuZGVyUmVtYXJrcyhkb2NzLCBhcGlMb2NhdGlvbik7XG4gICAgaWYgKHJlbWFya3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8cmVtYXJrcz4nKTtcbiAgICAgIHJlbWFya3MuZm9yRWFjaCgocikgPT4gdGhpcy5jb2RlLmxpbmUoYC8vLyAke3J9YC50cmltUmlnaHQoKSkpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L3JlbWFya3M+Jyk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3MuZXhhbXBsZSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8ZXhhbXBsZT4nKTtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygnY29kZScsIHRoaXMuY29udmVydEV4YW1wbGUoZG9jcy5leGFtcGxlLCBhcGlMb2NhdGlvbikpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L2V4YW1wbGU+Jyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVtaXRNYXJrZG93bkFzUmVtYXJrcyhcbiAgICBtYXJrZG93bjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGFwaUxvY2F0aW9uOiBBcGlMb2NhdGlvbixcbiAgKSB7XG4gICAgaWYgKCFtYXJrZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBtYXJrRG93blRvWG1sRG9jKFxuICAgICAgdGhpcy5jb252ZXJ0U2FtcGxlc0luTWFya2Rvd24obWFya2Rvd24sIGFwaUxvY2F0aW9uKSxcbiAgICApO1xuICAgIGNvbnN0IGxpbmVzID0gdHJhbnNsYXRlZC5zcGxpdCgnXFxuJyk7XG5cbiAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxyZW1hcmtzPicpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YC50cmltUmlnaHQoKSk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9yZW1hcmtzPicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpbmVzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIDxyZW1hcmtzPiBzZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclJlbWFya3MoZG9jczogc3BlYy5Eb2NzLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmV0OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGRvY3MucmVtYXJrcykge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IG1hcmtEb3duVG9YbWxEb2MoXG4gICAgICAgIHRoaXMuY29udmVydFNhbXBsZXNJbk1hcmtkb3duKGRvY3MucmVtYXJrcywgYXBpTG9jYXRpb24pLFxuICAgICAgKTtcbiAgICAgIHJldC5wdXNoKC4uLnRyYW5zbGF0ZWQuc3BsaXQoJ1xcbicpKTtcbiAgICAgIHJldC5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBBbGwgdGhlIFwidGFnc1wiIG5lZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBlbXB5dCBsaW5lcyBiZXR3ZWVuIHRoZW0gb3IgdGhleSdsbCBiZSB3b3JkIHdyYXBwZWQuXG5cbiAgICBpZiAoZG9jcy5kZWZhdWx0KSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdkZWZhdWx0JywgZG9jcy5kZWZhdWx0KTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc3RhYmlsaXR5ICYmIHNob3VsZE1lbnRpb25TdGFiaWxpdHkoZG9jcy5zdGFiaWxpdHkpKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKFxuICAgICAgICAnc3RhYmlsaXR5JyxcbiAgICAgICAgdGhpcy5uYW1ldXRpbHMuY2FwaXRhbGl6ZVdvcmQoZG9jcy5zdGFiaWxpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc2VlKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdzZWUnLCBkb2NzLnNlZSk7XG4gICAgfVxuICAgIGlmIChkb2NzLnN1YmNsYXNzYWJsZSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnc3ViY2xhc3NhYmxlJywgJycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkb2NzLmN1c3RvbSA/PyB7fSkpIHtcbiAgICAgIGNvbnN0IGV4dHJhU3BhY2UgPSBrID09PSAnbGluaycgPyAnICcgOiAnJzsgLy8gRXh0cmEgc3BhY2UgZm9yICdAbGluaycgdG8ga2VlcCB1bml0IHRlc3RzIGhhcHB5XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKGssIHYgKyBleHRyYVNwYWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXNcbiAgICB3aGlsZSAocmV0Lmxlbmd0aCA+IDAgJiYgcmV0WzBdID09PSAnJykge1xuICAgICAgcmV0LnNoaWZ0KCk7XG4gICAgfVxuICAgIHdoaWxlIChyZXQubGVuZ3RoID4gMCAmJiByZXRbcmV0Lmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgICAgcmV0LnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG5cbiAgICBmdW5jdGlvbiBlbWl0RG9jQXR0cmlidXRlKG5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgICAgY29uc3QgbHMgPSBjb250ZW50cy5zcGxpdCgnXFxuJyk7XG4gICAgICByZXQucHVzaChgPHN0cm9uZz4ke3VjRmlyc3QobmFtZSl9PC9zdHJvbmc+OiAke2xzWzBdfWApO1xuICAgICAgcmV0LnB1c2goLi4ubHMuc2xpY2UoMSkpO1xuICAgICAgcmV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEV4YW1wbGUoZXhhbXBsZTogc3RyaW5nLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSB0aGlzLnJvc2V0dGEudHJhbnNsYXRlRXhhbXBsZShcbiAgICAgIGFwaUxvY2F0aW9uLFxuICAgICAgZXhhbXBsZSxcbiAgICAgIFRhcmdldExhbmd1YWdlLkNTSEFSUCxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnByZWZpeERpc2NsYWltZXIodHJhbnNsYXRlZCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRTYW1wbGVzSW5NYXJrZG93bihtYXJrZG93bjogc3RyaW5nLCBhcGk6IEFwaUxvY2F0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yb3NldHRhLnRyYW5zbGF0ZVNuaXBwZXRzSW5NYXJrZG93bihcbiAgICAgIGFwaSxcbiAgICAgIG1hcmtkb3duLFxuICAgICAgVGFyZ2V0TGFuZ3VhZ2UuQ1NIQVJQLFxuICAgICAgZW5mb3JjZXNTdHJpY3RNb2RlKHRoaXMuYXNzZW1ibHkpLFxuICAgICAgKHRyYW5zKSA9PiAoe1xuICAgICAgICBsYW5ndWFnZTogdHJhbnMubGFuZ3VhZ2UsXG4gICAgICAgIHNvdXJjZTogdGhpcy5wcmVmaXhEaXNjbGFpbWVyKHRyYW5zKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpeERpc2NsYWltZXIodHJhbnNsYXRlZDogVHJhbnNsYXRpb24pIHtcbiAgICBpZiAoIXRyYW5zbGF0ZWQuZGlkQ29tcGlsZSAmJiBJTkNPTVBMRVRFX0RJU0NMQUlNRVJfTk9OQ09NUElMSU5HKSB7XG4gICAgICByZXR1cm4gYC8vICR7SU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElOR31cXG4ke3RyYW5zbGF0ZWQuc291cmNlfWA7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2xhdGVkLnNvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFhtbERvYyhcbiAgICB0YWc6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgeyBhdHRyaWJ1dGVzID0ge30gfTogeyBhdHRyaWJ1dGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0gfSA9IHt9LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB4bWwgPSB4bWxidWlsZGVyLmNyZWF0ZSh0YWcsIHsgaGVhZGxlc3M6IHRydWUgfSkudGV4dChjb250ZW50KTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykpIHtcbiAgICAgIHhtbC5hdHQobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCB4bWxzdHJpbmcgPSB4bWwuZW5kKHsgYWxsb3dFbXB0eTogdHJ1ZSwgcHJldHR5OiBmYWxzZSB9KTtcbiAgICBjb25zdCB0cmltTGVmdCA9IHRhZyAhPT0gJ2NvZGUnO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiB4bWxzdHJpbmdcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5tYXAoKHgpID0+ICh0cmltTGVmdCA/IHgudHJpbSgpIDogeC50cmltUmlnaHQoKSkpKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShgLy8vICR7bGluZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlclxuICovXG5mdW5jdGlvbiB1Y0ZpcnN0KHg6IHN0cmluZykge1xuICByZXR1cm4geC5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIHguc3Vic3RyKDEpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRNZW50aW9uU3RhYmlsaXR5KHM6IHNwZWMuU3RhYmlsaXR5KSB7XG4gIC8vIERvbid0IHJlbmRlciBcInN0YWJsZVwiIG9yIFwiZXh0ZXJuYWxcIiwgdGhvc2UgYXJlIGJvdGggc3RhYmxlIGJ5IGltcGxpY2F0aW9uXG4gIHJldHVybiBzID09PSBzcGVjLlN0YWJpbGl0eS5EZXByZWNhdGVkIHx8IHMgPT09IHNwZWMuU3RhYmlsaXR5LkV4cGVyaW1lbnRhbDtcbn1cbiJdfQ==