@brainfish-ai/devdoc 0.1.33 → 0.1.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/ai-agents/.claude/skills/blame-doc/SKILL.md +171 -0
  2. package/ai-agents/.claude/skills/bootstrap-docs/SKILL.md +332 -34
  3. package/ai-agents/.claude/skills/check-docs/SKILL.md +89 -13
  4. package/ai-agents/.claude/skills/commit-doc/SKILL.md +214 -0
  5. package/ai-agents/.claude/skills/create-doc/SKILL.md +198 -0
  6. package/ai-agents/.claude/skills/delete-doc/SKILL.md +164 -0
  7. package/ai-agents/.claude/skills/update-doc/SKILL.md +219 -0
  8. package/ai-agents/.cursor/rules/devdoc-blame.mdc +114 -0
  9. package/ai-agents/.cursor/rules/devdoc-bootstrap.mdc +174 -62
  10. package/ai-agents/.cursor/rules/devdoc-commit.mdc +103 -0
  11. package/ai-agents/.cursor/rules/devdoc-create.mdc +89 -0
  12. package/ai-agents/.cursor/rules/devdoc-delete.mdc +101 -0
  13. package/ai-agents/.cursor/rules/devdoc-update.mdc +95 -0
  14. package/ai-agents/.devdoc/context.json +66 -0
  15. package/ai-agents/.devdoc/templates/api-reference.md +211 -0
  16. package/ai-agents/.devdoc/templates/guide.md +133 -0
  17. package/ai-agents/.devdoc/templates/quickstart.md +179 -0
  18. package/ai-agents/.devdoc/templates/troubleshooting.md +215 -0
  19. package/ai-agents/.devdoc/templates/tutorial.md +212 -0
  20. package/ai-agents/CLAUDE.md +6 -3
  21. package/ai-agents/schemas/context.schema.json +259 -0
  22. package/dist/cli/commands/ai.js +16 -12
  23. package/dist/cli/commands/create.d.ts +12 -1
  24. package/dist/cli/commands/create.js +135 -94
  25. package/dist/cli/commands/init.js +11 -7
  26. package/dist/cli/index.js +2 -2
  27. package/package.json +1 -1
  28. package/ai-agents/.claude/skills/create-doc-page/SKILL.md +0 -274
  29. package/ai-agents/.claude/skills/docs-from-code/SKILL.md +0 -81
  30. package/ai-agents/.claude/skills/generate-api-docs/SKILL.md +0 -94
  31. package/ai-agents/.claude/skills/sync-docs/SKILL.md +0 -146
  32. package/ai-agents/.claude/skills/update-docs-json/SKILL.md +0 -60
  33. package/ai-agents/.cursor/rules/devdoc-sync.mdc +0 -105
@@ -87,19 +87,23 @@ const CLAUDE_SKILLS = [
87
87
  'bootstrap-docs',
88
88
  'migrate-docs',
89
89
  'import-api-spec',
90
- 'sync-docs',
91
90
  'check-docs',
92
- 'create-doc-page',
93
- 'update-docs-json',
94
- 'generate-api-docs',
95
- 'docs-from-code',
91
+ 'blame-doc',
92
+ 'create-doc',
93
+ 'update-doc',
94
+ 'delete-doc',
95
+ 'commit-doc',
96
96
  ];
97
97
  // Cursor rules to create
98
98
  const CURSOR_RULES = [
99
99
  'devdoc.mdc',
100
100
  'devdoc-bootstrap.mdc',
101
101
  'devdoc-migrate.mdc',
102
- 'devdoc-sync.mdc',
102
+ 'devdoc-blame.mdc',
103
+ 'devdoc-create.mdc',
104
+ 'devdoc-update.mdc',
105
+ 'devdoc-delete.mdc',
106
+ 'devdoc-commit.mdc',
103
107
  ];
104
108
  /**
105
109
  * Get the AI agents template directory path (handles both development and installed package scenarios)
@@ -311,12 +315,12 @@ async function ai(options) {
311
315
  console.log(' /bootstrap-docs - Analyze repo and generate initial documentation');
312
316
  console.log(' /migrate-docs - Migrate from Mintlify, Docusaurus, GitBook, etc.');
313
317
  console.log(' /import-api-spec - Import OpenAPI, GraphQL, or AsyncAPI specs');
314
- console.log(' /sync-docs - Find and fix outdated documentation');
315
318
  console.log(' /check-docs - Quick health check without changes');
316
- console.log(' /create-doc-page - Create a new documentation page');
317
- console.log(' /update-docs-json - Add pages to navigation');
318
- console.log(' /generate-api-docs - Generate API documentation');
319
- console.log(' /docs-from-code - Generate docs from specific code files');
319
+ console.log(' /blame-doc - Find duplicates, outdated content, discrepancies');
320
+ console.log(' /create-doc - Create a new documentation page');
321
+ console.log(' /update-doc - Update existing documentation');
322
+ console.log(' /delete-doc - Delete documentation pages');
323
+ console.log(' /commit-doc - Commit documentation changes');
320
324
  console.log();
321
325
  }
322
326
  if (tool === 'cursor' || tool === 'both') {
@@ -342,4 +346,4 @@ async function ai(options) {
342
346
  console.log();
343
347
  }
344
348
  }
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2FpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd01BLGdCQXVKQztBQS9WRCxnREFBd0I7QUFDeEIsd0RBQTBCO0FBQzFCLCtDQUE0QztBQVM1QyxzQ0FBc0M7QUFDdEMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxRQUFnQixFQUFFLFlBQXFCO0lBQzNELE1BQU0sUUFBUSxHQUFHLHdEQUFhLFVBQVUsR0FBQyxDQUFDO0lBQzFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxlQUFlLEdBQUcsWUFBWTtZQUNsQyxDQUFDLENBQUMsR0FBRyxRQUFRLEtBQUssWUFBWSxLQUFLO1lBQ25DLENBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxDQUFDO1FBRXBCLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdEMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsWUFBWSxDQUFDLFFBQWdCLEVBQUUsT0FBMkM7SUFDdkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0s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QUMsc0VBQXNFLENBQUMsQ0FBQztRQUNwRixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInO1xuXG50eXBlIEFJVG9vbCA9ICdjbGF1ZGUnIHwgJ2N1cnNvcicgfCAnYm90aCc7XG5cbmludGVyZmFjZSBBSU9wdGlvbnMge1xuICB0b29sPzogQUlUb29sO1xuICB1cGRhdGU/OiBib29sZWFuO1xufVxuXG4vLyBTaW1wbGUgcHJvbXB0IGhlbHBlciB1c2luZyByZWFkbGluZVxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheVF1ZXN0aW9uID0gZGVmYXVsdFZhbHVlIFxuICAgICAgPyBgJHtxdWVzdGlvbn0gKCR7ZGVmYXVsdFZhbHVlfSk6IGBcbiAgICAgIDogYCR7cXVlc3Rpb259OiBgO1xuICAgIFxuICAgIHJsLnF1ZXN0aW9uKGRpc3BsYXlRdWVzdGlvbiwgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHJlc29sdmUoYW5zd2VyLnRyaW0oKSB8fCBkZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0U2VsZWN0KHF1ZXN0aW9uOiBzdHJpbmcsIGNob2ljZXM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zb2xlLmxvZyhgXFxuJHtxdWVzdGlvbn1cXG5gKTtcbiAgY2hvaWNlcy5mb3JFYWNoKChjaG9pY2UsIGkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgICAke2kgKyAxfS4gJHtjaG9pY2UubGFiZWx9YCk7XG4gIH0pO1xuICBjb25zb2xlLmxvZygpO1xuICBcbiAgY29uc3QgcmVhZGxpbmUgPSBhd2FpdCBpbXBvcnQoJ3JlYWRsaW5lJyk7XG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbignRW50ZXIgbnVtYmVyOiAnLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChhbnN3ZXIudHJpbSgpLCAxMCkgLSAxO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBjaG9pY2VzLmxlbmd0aCkge1xuICAgICAgICByZXNvbHZlKGNob2ljZXNbaW5kZXhdLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlZmF1bHQgdG8gZmlyc3QgY2hvaWNlXG4gICAgICAgIHJlc29sdmUoY2hvaWNlc1swXS52YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyBDbGF1ZGUgQ29kZSBza2lsbHMgdG8gY3JlYXRlXG5jb25zdCBDTEFVREVfU0tJTExTID0gW1xuICAnYm9vdHN0cmFwLWRvY3MnLFxuICAnbWlncmF0ZS1kb2NzJyxcbiAgJ2ltcG9ydC1hcGktc3BlYycsXG4gICdzeW5jLWRvY3MnLFxuICAnY2hlY2stZG9jcycsXG4gICdjcmVhdGUtZG9jLXBhZ2UnLFxuICAndXBkYXRlLWRvY3MtanNvbicsXG4gICdnZW5lcmF0ZS1hcGktZG9jcycsXG4gICdkb2NzLWZyb20tY29kZScsXG5dO1xuXG4vLyBDdXJzb3IgcnVsZXMgdG8gY3JlYXRlXG5jb25zdCBDVVJTT1JfUlVMRVMgPSBbXG4gICdkZXZkb2MubWRjJyxcbiAgJ2RldmRvYy1ib290c3RyYXAubWRjJyxcbiAgJ2RldmRvYy1taWdyYXRlLm1kYycsXG4gICdkZXZkb2Mtc3luYy5tZGMnLFxuXTtcblxuLyoqXG4gKiBHZXQgdGhlIEFJIGFnZW50cyB0ZW1wbGF0ZSBkaXJlY3RvcnkgcGF0aCAoaGFuZGxlcyBib3RoIGRldmVsb3BtZW50IGFuZCBpbnN0YWxsZWQgcGFja2FnZSBzY2VuYXJpb3MpXG4gKi9cbmZ1bmN0aW9uIGdldFRlbXBsYXRlRGlyKCk6IHN0cmluZyB7XG4gIC8vIFRyeSByZWxhdGl2ZSB0byBjb21waWxlZCBkaXN0IChwYWNrYWdlcy9kZXZkb2MvZGlzdC9jbGkvY29tbWFuZHMgLT4gcGFja2FnZXMvZGV2ZG9jL2FpLWFnZW50cylcbiAgbGV0IHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2FpLWFnZW50cycpO1xuICBcbiAgaWYgKGZzLmV4aXN0c1N5bmModGVtcGxhdGVEaXIpKSB7XG4gICAgcmV0dXJuIHRlbXBsYXRlRGlyO1xuICB9XG4gIFxuICAvLyBUcnkgcmVsYXRpdmUgdG8gc291cmNlIChwYWNrYWdlcy9kZXZkb2Mvc3JjL2NsaS9jb21tYW5kcyAtPiBwYWNrYWdlcy9kZXZkb2MvYWktYWdlbnRzKVxuICB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdhaS1hZ2VudHMnKTtcbiAgXG4gIGlmIChmcy5leGlzdHNTeW5jKHRlbXBsYXRlRGlyKSkge1xuICAgIHJldHVybiB0ZW1wbGF0ZURpcjtcbiAgfVxuICBcbiAgLy8gVHJ5IGRldmRvYy90ZW1wbGF0ZXMgYXQgcmVwbyByb290IChkZXZlbG9wbWVudCAtIG1vbm9yZXBvIHN0cnVjdHVyZSlcbiAgLy8gX19kaXJuYW1lIGlzIHBhY2thZ2VzL2RldmRvYy9kaXN0L2NsaS9jb21tYW5kcyAtPiBnbyB1cCA1IGxldmVscyB0byByZXBvIHJvb3RcbiAgdGVtcGxhdGVEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnLi4nLCAnLi4nLCAnZGV2ZG9jJywgJ3RlbXBsYXRlcycsICdzdGFydGVyJyk7XG4gIFxuICBpZiAoZnMuZXhpc3RzU3luYyh0ZW1wbGF0ZURpcikpIHtcbiAgICByZXR1cm4gdGVtcGxhdGVEaXI7XG4gIH1cbiAgXG4gIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgdGVtcGxhdGUgZGlyZWN0b3J5Jyk7XG59XG5cbi8qKlxuICogQ29weSBDTEFVREUubWQgdG8gcHJvamVjdCByb290XG4gKiBSZXR1cm5zICdjcmVhdGVkJyB8ICd1cGRhdGVkJyB8ICdza2lwcGVkJ1xuICovXG5mdW5jdGlvbiBjb3B5Q2xhdWRlTWQocHJvamVjdFBhdGg6IHN0cmluZywgdGVtcGxhdGVEaXI6IHN0cmluZyk6ICdjcmVhdGVkJyB8ICd1cGRhdGVkJyB8ICdza2lwcGVkJyB7XG4gIGNvbnN0IHNvdXJjZVBhdGggPSBwYXRoLmpvaW4odGVtcGxhdGVEaXIsICdDTEFVREUubWQnKTtcbiAgY29uc3QgZGVzdFBhdGggPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsICdDTEFVREUubWQnKTtcbiAgXG4gIGlmICghZnMuZXhpc3RzU3luYyhzb3VyY2VQYXRoKSkge1xuICAgIHJldHVybiAnc2tpcHBlZCc7XG4gIH1cbiAgXG4gIGNvbnN0IGV4aXN0ZWQgPSBmcy5leGlzdHNTeW5jKGRlc3RQYXRoKTtcbiAgZnMuY29weVN5bmMoc291cmNlUGF0aCwgZGVzdFBhdGgpO1xuICByZXR1cm4gZXhpc3RlZCA/ICd1cGRhdGVkJyA6ICdjcmVhdGVkJztcbn1cblxuLyoqXG4gKiBDb3B5IENsYXVkZSBDb2RlIHNraWxscyB0byAuY2xhdWRlL3NraWxscy9cbiAqIFJldHVybnMgYXJyYXkgb2YgeyBza2lsbCwgc3RhdHVzOiAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfVxuICovXG5mdW5jdGlvbiBjb3B5Q2xhdWRlU2tpbGxzKHByb2plY3RQYXRoOiBzdHJpbmcsIHRlbXBsYXRlRGlyOiBzdHJpbmcpOiB7IHNraWxsOiBzdHJpbmc7IHN0YXR1czogJ2NyZWF0ZWQnIHwgJ3VwZGF0ZWQnIH1bXSB7XG4gIGNvbnN0IHJlc3VsdHM6IHsgc2tpbGw6IHN0cmluZzsgc3RhdHVzOiAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfVtdID0gW107XG4gIGNvbnN0IHNvdXJjZVNraWxsc0RpciA9IHBhdGguam9pbih0ZW1wbGF0ZURpciwgJy5jbGF1ZGUnLCAnc2tpbGxzJyk7XG4gIGNvbnN0IGRlc3RTa2lsbHNEaXIgPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsICcuY2xhdWRlJywgJ3NraWxscycpO1xuICBcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHNvdXJjZVNraWxsc0RpcikpIHtcbiAgICBsb2dnZXIud2FybignQ2xhdWRlIHNraWxscyB0ZW1wbGF0ZSBkaXJlY3Rvcnkgbm90IGZvdW5kJyk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbiAgXG4gIC8vIEVuc3VyZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZXhpc3RzXG4gIGZzLmVuc3VyZURpclN5bmMoZGVzdFNraWxsc0Rpcik7XG4gIFxuICBmb3IgKGNvbnN0IHNraWxsIG9mIENMQVVERV9TS0lMTFMpIHtcbiAgICBjb25zdCBzb3VyY2VEaXIgPSBwYXRoLmpvaW4oc291cmNlU2tpbGxzRGlyLCBza2lsbCk7XG4gICAgY29uc3QgZGVzdERpciA9IHBhdGguam9pbihkZXN0U2tpbGxzRGlyLCBza2lsbCk7XG4gICAgXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoc291cmNlRGlyKSkge1xuICAgICAgY29uc3QgZXhpc3RlZCA9IGZzLmV4aXN0c1N5bmMoZGVzdERpcik7XG4gICAgICBmcy5jb3B5U3luYyhzb3VyY2VEaXIsIGRlc3REaXIpO1xuICAgICAgcmVzdWx0cy5wdXNoKHsgc2tpbGwsIHN0YXR1czogZXhpc3RlZCA/ICd1cGRhdGVkJyA6ICdjcmVhdGVkJyB9KTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIENvcHkgQ3Vyc29yIHJ1bGVzIHRvIC5jdXJzb3IvcnVsZXMvXG4gKiBSZXR1cm5zIGFycmF5IG9mIHsgcnVsZSwgc3RhdHVzOiAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfVxuICovXG5mdW5jdGlvbiBjb3B5Q3Vyc29yUnVsZXMocHJvamVjdFBhdGg6IHN0cmluZywgdGVtcGxhdGVEaXI6IHN0cmluZyk6IHsgcnVsZTogc3RyaW5nOyBzdGF0dXM6ICdjcmVhdGVkJyB8ICd1cGRhdGVkJyB9W10ge1xuICBjb25zdCByZXN1bHRzOiB7IHJ1bGU6IHN0cmluZzsgc3RhdHVzOiAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfVtdID0gW107XG4gIGNvbnN0IHNvdXJjZVJ1bGVzRGlyID0gcGF0aC5qb2luKHRlbXBsYXRlRGlyLCAnLmN1cnNvcicsICdydWxlcycpO1xuICBjb25zdCBkZXN0UnVsZXNEaXIgPSBwYXRoLmpvaW4ocHJvamVjdFBhdGgsICcuY3Vyc29yJywgJ3J1bGVzJyk7XG4gIFxuICBpZiAoIWZzLmV4aXN0c1N5bmMoc291cmNlUnVsZXNEaXIpKSB7XG4gICAgbG9nZ2VyLndhcm4oJ0N1cnNvciBydWxlcyB0ZW1wbGF0ZSBkaXJlY3Rvcnkgbm90IGZvdW5kJyk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbiAgXG4gIC8vIEVuc3VyZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZXhpc3RzXG4gIGZzLmVuc3VyZURpclN5bmMoZGVzdFJ1bGVzRGlyKTtcbiAgXG4gIGZvciAoY29uc3QgcnVsZSBvZiBDVVJTT1JfUlVMRVMpIHtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5qb2luKHNvdXJjZVJ1bGVzRGlyLCBydWxlKTtcbiAgICBjb25zdCBkZXN0UGF0aCA9IHBhdGguam9pbihkZXN0UnVsZXNEaXIsIHJ1bGUpO1xuICAgIFxuICAgIGlmIChmcy5leGlzdHNTeW5jKHNvdXJjZVBhdGgpKSB7XG4gICAgICBjb25zdCBleGlzdGVkID0gZnMuZXhpc3RzU3luYyhkZXN0UGF0aCk7XG4gICAgICBmcy5jb3B5U3luYyhzb3VyY2VQYXRoLCBkZXN0UGF0aCk7XG4gICAgICByZXN1bHRzLnB1c2goeyBydWxlLCBzdGF0dXM6IGV4aXN0ZWQgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCcgfSk7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBBSSB0b29scyBhcmUgYWxyZWFkeSBpbnN0YWxsZWRcbiAqL1xuZnVuY3Rpb24gY2hlY2tFeGlzdGluZ0luc3RhbGxhdGlvbihwcm9qZWN0UGF0aDogc3RyaW5nKTogeyBjbGF1ZGU6IGJvb2xlYW47IGN1cnNvcjogYm9vbGVhbiB9IHtcbiAgY29uc3QgY2xhdWRlRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLmNsYXVkZScsICdza2lsbHMnKTtcbiAgY29uc3QgY3Vyc29yRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLmN1cnNvcicsICdydWxlcycpO1xuICBcbiAgcmV0dXJuIHtcbiAgICBjbGF1ZGU6IGZzLmV4aXN0c1N5bmMoY2xhdWRlRGlyKSAmJiBmcy5yZWFkZGlyU3luYyhjbGF1ZGVEaXIpLmxlbmd0aCA+IDAsXG4gICAgY3Vyc29yOiBmcy5leGlzdHNTeW5jKGN1cnNvckRpcikgJiYgZnMucmVhZGRpclN5bmMoY3Vyc29yRGlyKS5zb21lKGYgPT4gZi5zdGFydHNXaXRoKCdkZXZkb2MnKSksXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhaShvcHRpb25zOiBBSU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coKTtcbiAgXG4gIGNvbnN0IHByb2plY3RQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBjaGVja0V4aXN0aW5nSW5zdGFsbGF0aW9uKHByb2plY3RQYXRoKTtcbiAgY29uc3QgaXNVcGRhdGUgPSBvcHRpb25zLnVwZGF0ZSB8fCBleGlzdGluZy5jbGF1ZGUgfHwgZXhpc3RpbmcuY3Vyc29yO1xuICBcbiAgaWYgKGlzVXBkYXRlKSB7XG4gICAgbG9nZ2VyLmluZm8oJ0RldkRvYyBBSSBBZ2VudCBVcGRhdGUnKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIuaW5mbygnRGV2RG9jIEFJIEFnZW50IFNldHVwJyk7XG4gIH1cbiAgY29uc29sZS5sb2coKTtcblxuICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgRGV2RG9jIHByb2plY3RcbiAgY29uc3QgZG9jc0pzb25QYXRoID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnZG9jcy5qc29uJyk7XG4gIGNvbnN0IGhhc0RvY3NKc29uID0gZnMuZXhpc3RzU3luYyhkb2NzSnNvblBhdGgpO1xuICBcbiAgaWYgKCFoYXNEb2NzSnNvbikge1xuICAgIGxvZ2dlci53YXJuKCdObyBkb2NzLmpzb24gZm91bmQuIFRoaXMgbWF5IG5vdCBiZSBhIERldkRvYyBwcm9qZWN0LicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gIH1cblxuICAvLyBHZXQgdGVtcGxhdGUgZGlyZWN0b3J5XG4gIGxldCB0ZW1wbGF0ZURpcjogc3RyaW5nO1xuICB0cnkge1xuICAgIHRlbXBsYXRlRGlyID0gZ2V0VGVtcGxhdGVEaXIoKTtcbiAgfSBjYXRjaCB7XG4gICAgbG9nZ2VyLmVycm9yKCdDb3VsZCBub3QgZmluZCBBSSBhZ2VudCB0ZW1wbGF0ZXMuIFBsZWFzZSBlbnN1cmUgRGV2RG9jIGlzIGluc3RhbGxlZCBjb3JyZWN0bHkuJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgLy8gR2V0IHRvb2wgc2VsZWN0aW9uIGlmIG5vdCBwcm92aWRlZFxuICBsZXQgdG9vbDogQUlUb29sID0gb3B0aW9ucy50b29sIHx8ICdib3RoJztcbiAgXG4gIGlmICghb3B0aW9ucy50b29sKSB7XG4gICAgLy8gSWYgdXBkYXRpbmcsIGRlZmF1bHQgdG8gdXBkYXRpbmcgd2hhdCdzIGFscmVhZHkgaW5zdGFsbGVkXG4gICAgaWYgKGlzVXBkYXRlICYmIGV4aXN0aW5nLmNsYXVkZSAmJiAhZXhpc3RpbmcuY3Vyc29yKSB7XG4gICAgICB0b29sID0gJ2NsYXVkZSc7XG4gICAgfSBlbHNlIGlmIChpc1VwZGF0ZSAmJiBleGlzdGluZy5jdXJzb3IgJiYgIWV4aXN0aW5nLmNsYXVkZSkge1xuICAgICAgdG9vbCA9ICdjdXJzb3InO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0b29sQ2hvaWNlcyA9IFtcbiAgICAgICAgeyB2YWx1ZTogJ2JvdGgnLCBsYWJlbDogJ0JvdGggLSBDbGF1ZGUgQ29kZSBhbmQgQ3Vyc29yJyB9LFxuICAgICAgICB7IHZhbHVlOiAnY2xhdWRlJywgbGFiZWw6ICdDbGF1ZGUgQ29kZSAtIFNraWxscyBhbmQgQ0xBVURFLm1kJyB9LFxuICAgICAgICB7IHZhbHVlOiAnY3Vyc29yJywgbGFiZWw6ICdDdXJzb3IgLSBSdWxlcyAoLmN1cnNvci9ydWxlcy8pJyB9LFxuICAgICAgXTtcblxuICAgICAgdG9vbCA9IGF3YWl0IHByb21wdFNlbGVjdCgnV2hpY2ggQUkgdG9vbCBkbyB5b3UgdXNlPycsIHRvb2xDaG9pY2VzKSBhcyBBSVRvb2w7XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coKTtcbiAgaWYgKGlzVXBkYXRlKSB7XG4gICAgbG9nZ2VyLmluZm8oJ1VwZGF0aW5nIEFJIGFnZW50IGNvbmZpZ3VyYXRpb24uLi4nKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIuaW5mbygnU2V0dGluZyB1cCBBSSBhZ2VudCBjb25maWd1cmF0aW9uLi4uJyk7XG4gIH1cbiAgY29uc29sZS5sb2coKTtcblxuICBsZXQgY3JlYXRlZENvdW50ID0gMDtcbiAgbGV0IHVwZGF0ZWRDb3VudCA9IDA7XG5cbiAgLy8gU2V0dXAgQ2xhdWRlIENvZGVcbiAgaWYgKHRvb2wgPT09ICdjbGF1ZGUnIHx8IHRvb2wgPT09ICdib3RoJykge1xuICAgIC8vIENvcHkgQ0xBVURFLm1kXG4gICAgY29uc3QgY2xhdWRlTWRTdGF0dXMgPSBjb3B5Q2xhdWRlTWQocHJvamVjdFBhdGgsIHRlbXBsYXRlRGlyKTtcbiAgICBpZiAoY2xhdWRlTWRTdGF0dXMgPT09ICdjcmVhdGVkJykge1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgQ0xBVURFLm1kJyk7XG4gICAgICBjcmVhdGVkQ291bnQrKztcbiAgICB9IGVsc2UgaWYgKGNsYXVkZU1kU3RhdHVzID09PSAndXBkYXRlZCcpIHtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCdVcGRhdGVkIENMQVVERS5tZCcpO1xuICAgICAgdXBkYXRlZENvdW50Kys7XG4gICAgfVxuICAgIFxuICAgIC8vIENvcHkgc2tpbGxzXG4gICAgY29uc3Qgc2tpbGxSZXN1bHRzID0gY29weUNsYXVkZVNraWxscyhwcm9qZWN0UGF0aCwgdGVtcGxhdGVEaXIpO1xuICAgIGZvciAoY29uc3QgeyBza2lsbCwgc3RhdHVzIH0gb2Ygc2tpbGxSZXN1bHRzKSB7XG4gICAgICBpZiAoc3RhdHVzID09PSAnY3JlYXRlZCcpIHtcbiAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgLmNsYXVkZS9za2lsbHMvJHtza2lsbH0vU0tJTEwubWRgKTtcbiAgICAgICAgY3JlYXRlZENvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuc3VjY2VzcyhgVXBkYXRlZCAuY2xhdWRlL3NraWxscy8ke3NraWxsfS9TS0lMTC5tZGApO1xuICAgICAgICB1cGRhdGVkQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXR1cCBDdXJzb3JcbiAgaWYgKHRvb2wgPT09ICdjdXJzb3InIHx8IHRvb2wgPT09ICdib3RoJykge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHRzID0gY29weUN1cnNvclJ1bGVzKHByb2plY3RQYXRoLCB0ZW1wbGF0ZURpcik7XG4gICAgZm9yIChjb25zdCB7IHJ1bGUsIHN0YXR1cyB9IG9mIHJ1bGVSZXN1bHRzKSB7XG4gICAgICBpZiAoc3RhdHVzID09PSAnY3JlYXRlZCcpIHtcbiAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYENyZWF0ZWQgLmN1cnNvci9ydWxlcy8ke3J1bGV9YCk7XG4gICAgICAgIGNyZWF0ZWRDb3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFVwZGF0ZWQgLmN1cnNvci9ydWxlcy8ke3J1bGV9YCk7XG4gICAgICAgIHVwZGF0ZWRDb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFN1bW1hcnlcbiAgY29uc29sZS5sb2coKTtcbiAgaWYgKHVwZGF0ZWRDb3VudCA+IDAgJiYgY3JlYXRlZENvdW50ID4gMCkge1xuICAgIGxvZ2dlci5zdWNjZXNzKGBBSSBhZ2VudCBjb25maWd1cmF0aW9uIGNvbXBsZXRlISAoJHtjcmVhdGVkQ291bnR9IGNyZWF0ZWQsICR7dXBkYXRlZENvdW50fSB1cGRhdGVkKWApO1xuICB9IGVsc2UgaWYgKHVwZGF0ZWRDb3VudCA+IDApIHtcbiAgICBsb2dnZXIuc3VjY2VzcyhgQUkgYWdlbnQgY29uZmlndXJhdGlvbiB1cGRhdGVkISAoJHt1cGRhdGVkQ291bnR9IGZpbGVzKWApO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5zdWNjZXNzKCdBSSBhZ2VudCBjb25maWd1cmF0aW9uIGNvbXBsZXRlIScpO1xuICB9XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgaWYgKHRvb2wgPT09ICdjbGF1ZGUnIHx8IHRvb2wgPT09ICdib3RoJykge1xuICAgIGNvbnNvbGUubG9nKCdBdmFpbGFibGUgQ2xhdWRlIENvZGUgY29tbWFuZHM6Jyk7XG4gICAgY29uc29sZS5sb2coJyAgL2Jvb3RzdHJhcC1kb2NzICAgIC0gQW5hbHl6ZSByZXBvIGFuZCBnZW5lcmF0ZSBpbml0aWFsIGRvY3VtZW50YXRpb24nKTtcbiAgICBjb25zb2xlLmxvZygnICAvbWlncmF0ZS1kb2NzICAgICAgLSBNaWdyYXRlIGZyb20gTWludGxpZnksIERvY3VzYXVydXMsIEdpdEJvb2ssIGV0Yy4nKTtcbiAgICBjb25zb2xlLmxvZygnICAvaW1wb3J0LWFwaS1zcGVjICAgLSBJbXBvcnQgT3BlbkFQSSwgR3JhcGhRTCwgb3IgQXN5bmNBUEkgc3BlY3MnKTtcbiAgICBjb25zb2xlLmxvZygnICAvc3luYy1kb2NzICAgICAgICAgLSBGaW5kIGFuZCBmaXggb3V0ZGF0ZWQgZG9jdW1lbnRhdGlvbicpO1xuICAgIGNvbnNvbGUubG9nKCcgIC9jaGVjay1kb2NzICAgICAgICAtIFF1aWNrIGhlYWx0aCBjaGVjayB3aXRob3V0IGNoYW5nZXMnKTtcbiAgICBjb25zb2xlLmxvZygnICAvY3JlYXRlLWRvYy1wYWdlICAgLSBDcmVhdGUgYSBuZXcgZG9jdW1lbnRhdGlvbiBwYWdlJyk7XG4gICAgY29uc29sZS5sb2coJyAgL3VwZGF0ZS1kb2NzLWpzb24gIC0gQWRkIHBhZ2VzIHRvIG5hdmlnYXRpb24nKTtcbiAgICBjb25zb2xlLmxvZygnICAvZ2VuZXJhdGUtYXBpLWRvY3MgLSBHZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbicpO1xuICAgIGNvbnNvbGUubG9nKCcgIC9kb2NzLWZyb20tY29kZSAgICAtIEdlbmVyYXRlIGRvY3MgZnJvbSBzcGVjaWZpYyBjb2RlIGZpbGVzJyk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgfVxuXG4gIGlmICh0b29sID09PSAnY3Vyc29yJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICBjb25zb2xlLmxvZygnQ3Vyc29yIHJ1bGVzIGNvbmZpZ3VyZWQgZm9yICoubWR4IGZpbGVzLicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coJ1N1Z2dlc3RlZCBwcm9tcHRzIGluIEFnZW50IG1vZGU6Jyk7XG4gICAgY29uc29sZS5sb2coJyAgXCJBbmFseXplIHRoaXMgcmVwbyBhbmQgZ2VuZXJhdGUgaW5pdGlhbCBkb2N1bWVudGF0aW9uXCInKTtcbiAgICBjb25zb2xlLmxvZygnICBcIk1pZ3JhdGUgbXkgTWludGxpZnkgZG9jcyB0byBEZXZEb2MgZm9ybWF0XCInKTtcbiAgICBjb25zb2xlLmxvZygnICBcIkNoZWNrIG15IGRvY3MgZm9yIG91dGRhdGVkIGNvbnRlbnRcIicpO1xuICAgIGNvbnNvbGUubG9nKCcgIFwiQ3JlYXRlIGEgbmV3IGd1aWRlIGFib3V0IGF1dGhlbnRpY2F0aW9uXCInKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICB9XG5cbiAgY29uc29sZS5sb2coJ1F1aWNrIHN0YXJ0OicpO1xuICBpZiAodG9vbCA9PT0gJ2NsYXVkZScgfHwgdG9vbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc29sZS5sb2coJyAgQ2xhdWRlIENvZGU6IC9ib290c3RyYXAtZG9jcycpO1xuICB9XG4gIGlmICh0b29sID09PSAnY3Vyc29yJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICBjb25zb2xlLmxvZygnICBDdXJzb3I6IEFzayBcImdlbmVyYXRlIGluaXRpYWwgZG9jdW1lbnRhdGlvbiBmcm9tIHRoaXMgcmVwb1wiJyk7XG4gIH1cbiAgY29uc29sZS5sb2coKTtcbiAgXG4gIGlmIChpc1VwZGF0ZSkge1xuICAgIGNvbnNvbGUubG9nKCdUaXA6IFJlc3RhcnQgQ2xhdWRlIENvZGUgb3IgQ3Vyc29yIHRvIGxvYWQgdGhlIHVwZGF0ZWQgc2tpbGxzL3J1bGVzLicpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gIH1cbn1cbiJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2FpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNE1BLGdCQXVKQztBQW5XRCxnREFBd0I7QUFDeEIsd0RBQTBCO0FBQzFCLCtDQUE0QztBQVM1QyxzQ0FBc0M7QUFDdEMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxRQUFnQixFQUFFLFlBQXFCO0lBQzNELE1BQU0sUUFBUSxHQUFHLHdEQUFhLFVBQVUsR0FBQyxDQUFDO0lBQzFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxlQUFlLEdBQUcsWUFBWTtZQUNsQyxDQUFDLENBQUMsR0FBRyxRQUFRLEtBQUssWUFBWSxLQUFLO1lBQ25DLENBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxDQUFDO1FBRXBCLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdEMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsWUFBWSxDQUFDLFFBQWdCLEVBQUUsT0FBMkM7SUFDdkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0s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QUksUUFBUSxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7UUFDcEYsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJztcblxudHlwZSBBSVRvb2wgPSAnY2xhdWRlJyB8ICdjdXJzb3InIHwgJ2JvdGgnO1xuXG5pbnRlcmZhY2UgQUlPcHRpb25zIHtcbiAgdG9vbD86IEFJVG9vbDtcbiAgdXBkYXRlPzogYm9vbGVhbjtcbn1cblxuLy8gU2ltcGxlIHByb21wdCBoZWxwZXIgdXNpbmcgcmVhZGxpbmVcbmFzeW5jIGZ1bmN0aW9uIHByb21wdChxdWVzdGlvbjogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZWFkbGluZSA9IGF3YWl0IGltcG9ydCgncmVhZGxpbmUnKTtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlRdWVzdGlvbiA9IGRlZmF1bHRWYWx1ZSBcbiAgICAgID8gYCR7cXVlc3Rpb259ICgke2RlZmF1bHRWYWx1ZX0pOiBgXG4gICAgICA6IGAke3F1ZXN0aW9ufTogYDtcbiAgICBcbiAgICBybC5xdWVzdGlvbihkaXNwbGF5UXVlc3Rpb24sIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICByZXNvbHZlKGFuc3dlci50cmltKCkgfHwgZGVmYXVsdFZhbHVlIHx8ICcnKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdFNlbGVjdChxdWVzdGlvbjogc3RyaW5nLCBjaG9pY2VzOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc29sZS5sb2coYFxcbiR7cXVlc3Rpb259XFxuYCk7XG4gIGNob2ljZXMuZm9yRWFjaCgoY2hvaWNlLCBpKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCAgJHtpICsgMX0uICR7Y2hvaWNlLmxhYmVsfWApO1xuICB9KTtcbiAgY29uc29sZS5sb2coKTtcbiAgXG4gIGNvbnN0IHJlYWRsaW5lID0gYXdhaXQgaW1wb3J0KCdyZWFkbGluZScpO1xuICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcmwucXVlc3Rpb24oJ0VudGVyIG51bWJlcjogJywgKGFuc3dlcikgPT4ge1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQoYW5zd2VyLnRyaW0oKSwgMTApIC0gMTtcbiAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgY2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzb2x2ZShjaG9pY2VzW2luZGV4XS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEZWZhdWx0IHRvIGZpcnN0IGNob2ljZVxuICAgICAgICByZXNvbHZlKGNob2ljZXNbMF0udmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gQ2xhdWRlIENvZGUgc2tpbGxzIHRvIGNyZWF0ZVxuY29uc3QgQ0xBVURFX1NLSUxMUyA9IFtcbiAgJ2Jvb3RzdHJhcC1kb2NzJyxcbiAgJ21pZ3JhdGUtZG9jcycsXG4gICdpbXBvcnQtYXBpLXNwZWMnLFxuICAnY2hlY2stZG9jcycsXG4gICdibGFtZS1kb2MnLFxuICAnY3JlYXRlLWRvYycsXG4gICd1cGRhdGUtZG9jJyxcbiAgJ2RlbGV0ZS1kb2MnLFxuICAnY29tbWl0LWRvYycsXG5dO1xuXG4vLyBDdXJzb3IgcnVsZXMgdG8gY3JlYXRlXG5jb25zdCBDVVJTT1JfUlVMRVMgPSBbXG4gICdkZXZkb2MubWRjJyxcbiAgJ2RldmRvYy1ib290c3RyYXAubWRjJyxcbiAgJ2RldmRvYy1taWdyYXRlLm1kYycsXG4gICdkZXZkb2MtYmxhbWUubWRjJyxcbiAgJ2RldmRvYy1jcmVhdGUubWRjJyxcbiAgJ2RldmRvYy11cGRhdGUubWRjJyxcbiAgJ2RldmRvYy1kZWxldGUubWRjJyxcbiAgJ2RldmRvYy1jb21taXQubWRjJyxcbl07XG5cbi8qKlxuICogR2V0IHRoZSBBSSBhZ2VudHMgdGVtcGxhdGUgZGlyZWN0b3J5IHBhdGggKGhhbmRsZXMgYm90aCBkZXZlbG9wbWVudCBhbmQgaW5zdGFsbGVkIHBhY2thZ2Ugc2NlbmFyaW9zKVxuICovXG5mdW5jdGlvbiBnZXRUZW1wbGF0ZURpcigpOiBzdHJpbmcge1xuICAvLyBUcnkgcmVsYXRpdmUgdG8gY29tcGlsZWQgZGlzdCAocGFja2FnZXMvZGV2ZG9jL2Rpc3QvY2xpL2NvbW1hbmRzIC0+IHBhY2thZ2VzL2RldmRvYy9haS1hZ2VudHMpXG4gIGxldCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdhaS1hZ2VudHMnKTtcbiAgXG4gIGlmIChmcy5leGlzdHNTeW5jKHRlbXBsYXRlRGlyKSkge1xuICAgIHJldHVybiB0ZW1wbGF0ZURpcjtcbiAgfVxuICBcbiAgLy8gVHJ5IHJlbGF0aXZlIHRvIHNvdXJjZSAocGFja2FnZXMvZGV2ZG9jL3NyYy9jbGkvY29tbWFuZHMgLT4gcGFja2FnZXMvZGV2ZG9jL2FpLWFnZW50cylcbiAgdGVtcGxhdGVEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnYWktYWdlbnRzJyk7XG4gIFxuICBpZiAoZnMuZXhpc3RzU3luYyh0ZW1wbGF0ZURpcikpIHtcbiAgICByZXR1cm4gdGVtcGxhdGVEaXI7XG4gIH1cbiAgXG4gIC8vIFRyeSBkZXZkb2MvdGVtcGxhdGVzIGF0IHJlcG8gcm9vdCAoZGV2ZWxvcG1lbnQgLSBtb25vcmVwbyBzdHJ1Y3R1cmUpXG4gIC8vIF9fZGlybmFtZSBpcyBwYWNrYWdlcy9kZXZkb2MvZGlzdC9jbGkvY29tbWFuZHMgLT4gZ28gdXAgNSBsZXZlbHMgdG8gcmVwbyByb290XG4gIHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJy4uJywgJy4uJywgJ2RldmRvYycsICd0ZW1wbGF0ZXMnLCAnc3RhcnRlcicpO1xuICBcbiAgaWYgKGZzLmV4aXN0c1N5bmModGVtcGxhdGVEaXIpKSB7XG4gICAgcmV0dXJuIHRlbXBsYXRlRGlyO1xuICB9XG4gIFxuICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRlbXBsYXRlIGRpcmVjdG9yeScpO1xufVxuXG4vKipcbiAqIENvcHkgQ0xBVURFLm1kIHRvIHByb2plY3Qgcm9vdFxuICogUmV0dXJucyAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfCAnc2tpcHBlZCdcbiAqL1xuZnVuY3Rpb24gY29weUNsYXVkZU1kKHByb2plY3RQYXRoOiBzdHJpbmcsIHRlbXBsYXRlRGlyOiBzdHJpbmcpOiAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfCAnc2tpcHBlZCcge1xuICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5qb2luKHRlbXBsYXRlRGlyLCAnQ0xBVURFLm1kJyk7XG4gIGNvbnN0IGRlc3RQYXRoID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnQ0xBVURFLm1kJyk7XG4gIFxuICBpZiAoIWZzLmV4aXN0c1N5bmMoc291cmNlUGF0aCkpIHtcbiAgICByZXR1cm4gJ3NraXBwZWQnO1xuICB9XG4gIFxuICBjb25zdCBleGlzdGVkID0gZnMuZXhpc3RzU3luYyhkZXN0UGF0aCk7XG4gIGZzLmNvcHlTeW5jKHNvdXJjZVBhdGgsIGRlc3RQYXRoKTtcbiAgcmV0dXJuIGV4aXN0ZWQgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCc7XG59XG5cbi8qKlxuICogQ29weSBDbGF1ZGUgQ29kZSBza2lsbHMgdG8gLmNsYXVkZS9za2lsbHMvXG4gKiBSZXR1cm5zIGFycmF5IG9mIHsgc2tpbGwsIHN0YXR1czogJ2NyZWF0ZWQnIHwgJ3VwZGF0ZWQnIH1cbiAqL1xuZnVuY3Rpb24gY29weUNsYXVkZVNraWxscyhwcm9qZWN0UGF0aDogc3RyaW5nLCB0ZW1wbGF0ZURpcjogc3RyaW5nKTogeyBza2lsbDogc3RyaW5nOyBzdGF0dXM6ICdjcmVhdGVkJyB8ICd1cGRhdGVkJyB9W10ge1xuICBjb25zdCByZXN1bHRzOiB7IHNraWxsOiBzdHJpbmc7IHN0YXR1czogJ2NyZWF0ZWQnIHwgJ3VwZGF0ZWQnIH1bXSA9IFtdO1xuICBjb25zdCBzb3VyY2VTa2lsbHNEaXIgPSBwYXRoLmpvaW4odGVtcGxhdGVEaXIsICcuY2xhdWRlJywgJ3NraWxscycpO1xuICBjb25zdCBkZXN0U2tpbGxzRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLmNsYXVkZScsICdza2lsbHMnKTtcbiAgXG4gIGlmICghZnMuZXhpc3RzU3luYyhzb3VyY2VTa2lsbHNEaXIpKSB7XG4gICAgbG9nZ2VyLndhcm4oJ0NsYXVkZSBza2lsbHMgdGVtcGxhdGUgZGlyZWN0b3J5IG5vdCBmb3VuZCcpO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG4gIFxuICAvLyBFbnN1cmUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0c1xuICBmcy5lbnN1cmVEaXJTeW5jKGRlc3RTa2lsbHNEaXIpO1xuICBcbiAgZm9yIChjb25zdCBza2lsbCBvZiBDTEFVREVfU0tJTExTKSB7XG4gICAgY29uc3Qgc291cmNlRGlyID0gcGF0aC5qb2luKHNvdXJjZVNraWxsc0Rpciwgc2tpbGwpO1xuICAgIGNvbnN0IGRlc3REaXIgPSBwYXRoLmpvaW4oZGVzdFNraWxsc0Rpciwgc2tpbGwpO1xuICAgIFxuICAgIGlmIChmcy5leGlzdHNTeW5jKHNvdXJjZURpcikpIHtcbiAgICAgIGNvbnN0IGV4aXN0ZWQgPSBmcy5leGlzdHNTeW5jKGRlc3REaXIpO1xuICAgICAgZnMuY29weVN5bmMoc291cmNlRGlyLCBkZXN0RGlyKTtcbiAgICAgIHJlc3VsdHMucHVzaCh7IHNraWxsLCBzdGF0dXM6IGV4aXN0ZWQgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCcgfSk7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBDb3B5IEN1cnNvciBydWxlcyB0byAuY3Vyc29yL3J1bGVzL1xuICogUmV0dXJucyBhcnJheSBvZiB7IHJ1bGUsIHN0YXR1czogJ2NyZWF0ZWQnIHwgJ3VwZGF0ZWQnIH1cbiAqL1xuZnVuY3Rpb24gY29weUN1cnNvclJ1bGVzKHByb2plY3RQYXRoOiBzdHJpbmcsIHRlbXBsYXRlRGlyOiBzdHJpbmcpOiB7IHJ1bGU6IHN0cmluZzsgc3RhdHVzOiAnY3JlYXRlZCcgfCAndXBkYXRlZCcgfVtdIHtcbiAgY29uc3QgcmVzdWx0czogeyBydWxlOiBzdHJpbmc7IHN0YXR1czogJ2NyZWF0ZWQnIHwgJ3VwZGF0ZWQnIH1bXSA9IFtdO1xuICBjb25zdCBzb3VyY2VSdWxlc0RpciA9IHBhdGguam9pbih0ZW1wbGF0ZURpciwgJy5jdXJzb3InLCAncnVsZXMnKTtcbiAgY29uc3QgZGVzdFJ1bGVzRGlyID0gcGF0aC5qb2luKHByb2plY3RQYXRoLCAnLmN1cnNvcicsICdydWxlcycpO1xuICBcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHNvdXJjZVJ1bGVzRGlyKSkge1xuICAgIGxvZ2dlci53YXJuKCdDdXJzb3IgcnVsZXMgdGVtcGxhdGUgZGlyZWN0b3J5IG5vdCBmb3VuZCcpO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG4gIFxuICAvLyBFbnN1cmUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0c1xuICBmcy5lbnN1cmVEaXJTeW5jKGRlc3RSdWxlc0Rpcik7XG4gIFxuICBmb3IgKGNvbnN0IHJ1bGUgb2YgQ1VSU09SX1JVTEVTKSB7XG4gICAgY29uc3Qgc291cmNlUGF0aCA9IHBhdGguam9pbihzb3VyY2VSdWxlc0RpciwgcnVsZSk7XG4gICAgY29uc3QgZGVzdFBhdGggPSBwYXRoLmpvaW4oZGVzdFJ1bGVzRGlyLCBydWxlKTtcbiAgICBcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzb3VyY2VQYXRoKSkge1xuICAgICAgY29uc3QgZXhpc3RlZCA9IGZzLmV4aXN0c1N5bmMoZGVzdFBhdGgpO1xuICAgICAgZnMuY29weVN5bmMoc291cmNlUGF0aCwgZGVzdFBhdGgpO1xuICAgICAgcmVzdWx0cy5wdXNoKHsgcnVsZSwgc3RhdHVzOiBleGlzdGVkID8gJ3VwZGF0ZWQnIDogJ2NyZWF0ZWQnIH0pO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgQUkgdG9vbHMgYXJlIGFscmVhZHkgaW5zdGFsbGVkXG4gKi9cbmZ1bmN0aW9uIGNoZWNrRXhpc3RpbmdJbnN0YWxsYXRpb24ocHJvamVjdFBhdGg6IHN0cmluZyk6IHsgY2xhdWRlOiBib29sZWFuOyBjdXJzb3I6IGJvb2xlYW4gfSB7XG4gIGNvbnN0IGNsYXVkZURpciA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJy5jbGF1ZGUnLCAnc2tpbGxzJyk7XG4gIGNvbnN0IGN1cnNvckRpciA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJy5jdXJzb3InLCAncnVsZXMnKTtcbiAgXG4gIHJldHVybiB7XG4gICAgY2xhdWRlOiBmcy5leGlzdHNTeW5jKGNsYXVkZURpcikgJiYgZnMucmVhZGRpclN5bmMoY2xhdWRlRGlyKS5sZW5ndGggPiAwLFxuICAgIGN1cnNvcjogZnMuZXhpc3RzU3luYyhjdXJzb3JEaXIpICYmIGZzLnJlYWRkaXJTeW5jKGN1cnNvckRpcikuc29tZShmID0+IGYuc3RhcnRzV2l0aCgnZGV2ZG9jJykpLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWkob3B0aW9uczogQUlPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKCk7XG4gIFxuICBjb25zdCBwcm9qZWN0UGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IGV4aXN0aW5nID0gY2hlY2tFeGlzdGluZ0luc3RhbGxhdGlvbihwcm9qZWN0UGF0aCk7XG4gIGNvbnN0IGlzVXBkYXRlID0gb3B0aW9ucy51cGRhdGUgfHwgZXhpc3RpbmcuY2xhdWRlIHx8IGV4aXN0aW5nLmN1cnNvcjtcbiAgXG4gIGlmIChpc1VwZGF0ZSkge1xuICAgIGxvZ2dlci5pbmZvKCdEZXZEb2MgQUkgQWdlbnQgVXBkYXRlJyk7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmluZm8oJ0RldkRvYyBBSSBBZ2VudCBTZXR1cCcpO1xuICB9XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIERldkRvYyBwcm9qZWN0XG4gIGNvbnN0IGRvY3NKc29uUGF0aCA9IHBhdGguam9pbihwcm9qZWN0UGF0aCwgJ2RvY3MuanNvbicpO1xuICBjb25zdCBoYXNEb2NzSnNvbiA9IGZzLmV4aXN0c1N5bmMoZG9jc0pzb25QYXRoKTtcbiAgXG4gIGlmICghaGFzRG9jc0pzb24pIHtcbiAgICBsb2dnZXIud2FybignTm8gZG9jcy5qc29uIGZvdW5kLiBUaGlzIG1heSBub3QgYmUgYSBEZXZEb2MgcHJvamVjdC4nKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICB9XG5cbiAgLy8gR2V0IHRlbXBsYXRlIGRpcmVjdG9yeVxuICBsZXQgdGVtcGxhdGVEaXI6IHN0cmluZztcbiAgdHJ5IHtcbiAgICB0ZW1wbGF0ZURpciA9IGdldFRlbXBsYXRlRGlyKCk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ2dlci5lcnJvcignQ291bGQgbm90IGZpbmQgQUkgYWdlbnQgdGVtcGxhdGVzLiBQbGVhc2UgZW5zdXJlIERldkRvYyBpcyBpbnN0YWxsZWQgY29ycmVjdGx5LicpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIC8vIEdldCB0b29sIHNlbGVjdGlvbiBpZiBub3QgcHJvdmlkZWRcbiAgbGV0IHRvb2w6IEFJVG9vbCA9IG9wdGlvbnMudG9vbCB8fCAnYm90aCc7XG4gIFxuICBpZiAoIW9wdGlvbnMudG9vbCkge1xuICAgIC8vIElmIHVwZGF0aW5nLCBkZWZhdWx0IHRvIHVwZGF0aW5nIHdoYXQncyBhbHJlYWR5IGluc3RhbGxlZFxuICAgIGlmIChpc1VwZGF0ZSAmJiBleGlzdGluZy5jbGF1ZGUgJiYgIWV4aXN0aW5nLmN1cnNvcikge1xuICAgICAgdG9vbCA9ICdjbGF1ZGUnO1xuICAgIH0gZWxzZSBpZiAoaXNVcGRhdGUgJiYgZXhpc3RpbmcuY3Vyc29yICYmICFleGlzdGluZy5jbGF1ZGUpIHtcbiAgICAgIHRvb2wgPSAnY3Vyc29yJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG9vbENob2ljZXMgPSBbXG4gICAgICAgIHsgdmFsdWU6ICdib3RoJywgbGFiZWw6ICdCb3RoIC0gQ2xhdWRlIENvZGUgYW5kIEN1cnNvcicgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2NsYXVkZScsIGxhYmVsOiAnQ2xhdWRlIENvZGUgLSBTa2lsbHMgYW5kIENMQVVERS5tZCcgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2N1cnNvcicsIGxhYmVsOiAnQ3Vyc29yIC0gUnVsZXMgKC5jdXJzb3IvcnVsZXMvKScgfSxcbiAgICAgIF07XG5cbiAgICAgIHRvb2wgPSBhd2FpdCBwcm9tcHRTZWxlY3QoJ1doaWNoIEFJIHRvb2wgZG8geW91IHVzZT8nLCB0b29sQ2hvaWNlcykgYXMgQUlUb29sO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKCk7XG4gIGlmIChpc1VwZGF0ZSkge1xuICAgIGxvZ2dlci5pbmZvKCdVcGRhdGluZyBBSSBhZ2VudCBjb25maWd1cmF0aW9uLi4uJyk7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmluZm8oJ1NldHRpbmcgdXAgQUkgYWdlbnQgY29uZmlndXJhdGlvbi4uLicpO1xuICB9XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgbGV0IGNyZWF0ZWRDb3VudCA9IDA7XG4gIGxldCB1cGRhdGVkQ291bnQgPSAwO1xuXG4gIC8vIFNldHVwIENsYXVkZSBDb2RlXG4gIGlmICh0b29sID09PSAnY2xhdWRlJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICAvLyBDb3B5IENMQVVERS5tZFxuICAgIGNvbnN0IGNsYXVkZU1kU3RhdHVzID0gY29weUNsYXVkZU1kKHByb2plY3RQYXRoLCB0ZW1wbGF0ZURpcik7XG4gICAgaWYgKGNsYXVkZU1kU3RhdHVzID09PSAnY3JlYXRlZCcpIHtcbiAgICAgIGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIENMQVVERS5tZCcpO1xuICAgICAgY3JlYXRlZENvdW50Kys7XG4gICAgfSBlbHNlIGlmIChjbGF1ZGVNZFN0YXR1cyA9PT0gJ3VwZGF0ZWQnKSB7XG4gICAgICBsb2dnZXIuc3VjY2VzcygnVXBkYXRlZCBDTEFVREUubWQnKTtcbiAgICAgIHVwZGF0ZWRDb3VudCsrO1xuICAgIH1cbiAgICBcbiAgICAvLyBDb3B5IHNraWxsc1xuICAgIGNvbnN0IHNraWxsUmVzdWx0cyA9IGNvcHlDbGF1ZGVTa2lsbHMocHJvamVjdFBhdGgsIHRlbXBsYXRlRGlyKTtcbiAgICBmb3IgKGNvbnN0IHsgc2tpbGwsIHN0YXR1cyB9IG9mIHNraWxsUmVzdWx0cykge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gJ2NyZWF0ZWQnKSB7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKGBDcmVhdGVkIC5jbGF1ZGUvc2tpbGxzLyR7c2tpbGx9L1NLSUxMLm1kYCk7XG4gICAgICAgIGNyZWF0ZWRDb3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFVwZGF0ZWQgLmNsYXVkZS9za2lsbHMvJHtza2lsbH0vU0tJTEwubWRgKTtcbiAgICAgICAgdXBkYXRlZENvdW50Kys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0dXAgQ3Vyc29yXG4gIGlmICh0b29sID09PSAnY3Vyc29yJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICBjb25zdCBydWxlUmVzdWx0cyA9IGNvcHlDdXJzb3JSdWxlcyhwcm9qZWN0UGF0aCwgdGVtcGxhdGVEaXIpO1xuICAgIGZvciAoY29uc3QgeyBydWxlLCBzdGF0dXMgfSBvZiBydWxlUmVzdWx0cykge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gJ2NyZWF0ZWQnKSB7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKGBDcmVhdGVkIC5jdXJzb3IvcnVsZXMvJHtydWxlfWApO1xuICAgICAgICBjcmVhdGVkQ291bnQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5zdWNjZXNzKGBVcGRhdGVkIC5jdXJzb3IvcnVsZXMvJHtydWxlfWApO1xuICAgICAgICB1cGRhdGVkQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdW1tYXJ5XG4gIGNvbnNvbGUubG9nKCk7XG4gIGlmICh1cGRhdGVkQ291bnQgPiAwICYmIGNyZWF0ZWRDb3VudCA+IDApIHtcbiAgICBsb2dnZXIuc3VjY2VzcyhgQUkgYWdlbnQgY29uZmlndXJhdGlvbiBjb21wbGV0ZSEgKCR7Y3JlYXRlZENvdW50fSBjcmVhdGVkLCAke3VwZGF0ZWRDb3VudH0gdXBkYXRlZClgKTtcbiAgfSBlbHNlIGlmICh1cGRhdGVkQ291bnQgPiAwKSB7XG4gICAgbG9nZ2VyLnN1Y2Nlc3MoYEFJIGFnZW50IGNvbmZpZ3VyYXRpb24gdXBkYXRlZCEgKCR7dXBkYXRlZENvdW50fSBmaWxlcylgKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIuc3VjY2VzcygnQUkgYWdlbnQgY29uZmlndXJhdGlvbiBjb21wbGV0ZSEnKTtcbiAgfVxuICBjb25zb2xlLmxvZygpO1xuXG4gIGlmICh0b29sID09PSAnY2xhdWRlJyB8fCB0b29sID09PSAnYm90aCcpIHtcbiAgICBjb25zb2xlLmxvZygnQXZhaWxhYmxlIENsYXVkZSBDb2RlIGNvbW1hbmRzOicpO1xuICAgIGNvbnNvbGUubG9nKCcgIC9ib290c3RyYXAtZG9jcyAgICAtIEFuYWx5emUgcmVwbyBhbmQgZ2VuZXJhdGUgaW5pdGlhbCBkb2N1bWVudGF0aW9uJyk7XG4gICAgY29uc29sZS5sb2coJyAgL21pZ3JhdGUtZG9jcyAgICAgIC0gTWlncmF0ZSBmcm9tIE1pbnRsaWZ5LCBEb2N1c2F1cnVzLCBHaXRCb29rLCBldGMuJyk7XG4gICAgY29uc29sZS5sb2coJyAgL2ltcG9ydC1hcGktc3BlYyAgIC0gSW1wb3J0IE9wZW5BUEksIEdyYXBoUUwsIG9yIEFzeW5jQVBJIHNwZWNzJyk7XG4gICAgY29uc29sZS5sb2coJyAgL2NoZWNrLWRvY3MgICAgICAgIC0gUXVpY2sgaGVhbHRoIGNoZWNrIHdpdGhvdXQgY2hhbmdlcycpO1xuICAgIGNvbnNvbGUubG9nKCcgIC9ibGFtZS1kb2MgICAgICAgICAtIEZpbmQgZHVwbGljYXRlcywgb3V0ZGF0ZWQgY29udGVudCwgZGlzY3JlcGFuY2llcycpO1xuICAgIGNvbnNvbGUubG9nKCcgIC9jcmVhdGUtZG9jICAgICAgICAtIENyZWF0ZSBhIG5ldyBkb2N1bWVudGF0aW9uIHBhZ2UnKTtcbiAgICBjb25zb2xlLmxvZygnICAvdXBkYXRlLWRvYyAgICAgICAgLSBVcGRhdGUgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbicpO1xuICAgIGNvbnNvbGUubG9nKCcgIC9kZWxldGUtZG9jICAgICAgICAtIERlbGV0ZSBkb2N1bWVudGF0aW9uIHBhZ2VzJyk7XG4gICAgY29uc29sZS5sb2coJyAgL2NvbW1pdC1kb2MgICAgICAgIC0gQ29tbWl0IGRvY3VtZW50YXRpb24gY2hhbmdlcycpO1xuICAgIGNvbnNvbGUubG9nKCk7XG4gIH1cblxuICBpZiAodG9vbCA9PT0gJ2N1cnNvcicgfHwgdG9vbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc29sZS5sb2coJ0N1cnNvciBydWxlcyBjb25maWd1cmVkIGZvciAqLm1keCBmaWxlcy4nKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKCdTdWdnZXN0ZWQgcHJvbXB0cyBpbiBBZ2VudCBtb2RlOicpO1xuICAgIGNvbnNvbGUubG9nKCcgIFwiQW5hbHl6ZSB0aGlzIHJlcG8gYW5kIGdlbmVyYXRlIGluaXRpYWwgZG9jdW1lbnRhdGlvblwiJyk7XG4gICAgY29uc29sZS5sb2coJyAgXCJNaWdyYXRlIG15IE1pbnRsaWZ5IGRvY3MgdG8gRGV2RG9jIGZvcm1hdFwiJyk7XG4gICAgY29uc29sZS5sb2coJyAgXCJDaGVjayBteSBkb2NzIGZvciBvdXRkYXRlZCBjb250ZW50XCInKTtcbiAgICBjb25zb2xlLmxvZygnICBcIkNyZWF0ZSBhIG5ldyBndWlkZSBhYm91dCBhdXRoZW50aWNhdGlvblwiJyk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdRdWljayBzdGFydDonKTtcbiAgaWYgKHRvb2wgPT09ICdjbGF1ZGUnIHx8IHRvb2wgPT09ICdib3RoJykge1xuICAgIGNvbnNvbGUubG9nKCcgIENsYXVkZSBDb2RlOiAvYm9vdHN0cmFwLWRvY3MnKTtcbiAgfVxuICBpZiAodG9vbCA9PT0gJ2N1cnNvcicgfHwgdG9vbCA9PT0gJ2JvdGgnKSB7XG4gICAgY29uc29sZS5sb2coJyAgQ3Vyc29yOiBBc2sgXCJnZW5lcmF0ZSBpbml0aWFsIGRvY3VtZW50YXRpb24gZnJvbSB0aGlzIHJlcG9cIicpO1xuICB9XG4gIGNvbnNvbGUubG9nKCk7XG4gIFxuICBpZiAoaXNVcGRhdGUpIHtcbiAgICBjb25zb2xlLmxvZygnVGlwOiBSZXN0YXJ0IENsYXVkZSBDb2RlIG9yIEN1cnNvciB0byBsb2FkIHRoZSB1cGRhdGVkIHNraWxscy9ydWxlcy4nKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICB9XG59XG4iXX0=
@@ -16,13 +16,24 @@ declare const TEMPLATES: {
16
16
  };
17
17
  };
18
18
  type TemplateType = keyof typeof TEMPLATES;
19
+ declare const DOC_TYPES: {
20
+ readonly public: {
21
+ readonly name: "Public";
22
+ readonly description: "User-facing docs with custom subdomain and deployment";
23
+ };
24
+ readonly internal: {
25
+ readonly name: "Internal";
26
+ readonly description: "Developer docs for local/private use (no subdomain needed)";
27
+ };
28
+ };
29
+ type DocType = keyof typeof DOC_TYPES;
19
30
  interface CreateOptions {
20
31
  template?: TemplateType;
32
+ docType?: DocType;
21
33
  git?: boolean;
22
34
  install?: boolean;
23
35
  url?: string;
24
36
  subdomain?: string;
25
- ai?: boolean | 'claude' | 'cursor' | 'both';
26
37
  }
27
38
  export declare function create(projectDirectory: string | undefined, options: CreateOptions): Promise<void>;
28
39
  export {};