@dollhousemcp/mcp-server 1.7.4 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/README.github.md +90 -1
  3. package/README.md +1 -1
  4. package/README.md.backup +90 -1
  5. package/README.npm.md +1 -1
  6. package/dist/collection/CollectionBrowser.js +2 -2
  7. package/dist/collection/CollectionSearch.js +3 -3
  8. package/dist/collection/PersonaDetails.js +2 -2
  9. package/dist/config/ConfigManager.d.ts +20 -0
  10. package/dist/config/ConfigManager.d.ts.map +1 -1
  11. package/dist/config/ConfigManager.js +48 -4
  12. package/dist/generated/version.d.ts +2 -2
  13. package/dist/generated/version.js +3 -3
  14. package/dist/handlers/ConfigHandler.d.ts +30 -0
  15. package/dist/handlers/ConfigHandler.d.ts.map +1 -1
  16. package/dist/handlers/ConfigHandler.js +149 -21
  17. package/dist/index.d.ts +4 -6
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +73 -52
  20. package/dist/portfolio/GitHubPortfolioIndexer.d.ts.map +1 -1
  21. package/dist/portfolio/GitHubPortfolioIndexer.js +8 -5
  22. package/dist/portfolio/PortfolioIndexManager.d.ts +1 -1
  23. package/dist/portfolio/PortfolioIndexManager.js +2 -2
  24. package/dist/portfolio/PortfolioRepoManager.d.ts +16 -2
  25. package/dist/portfolio/PortfolioRepoManager.d.ts.map +1 -1
  26. package/dist/portfolio/PortfolioRepoManager.js +95 -18
  27. package/dist/portfolio/PortfolioSyncManager.d.ts.map +1 -1
  28. package/dist/portfolio/PortfolioSyncManager.js +23 -15
  29. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  30. package/dist/security/audit/config/suppressions.js +11 -1
  31. package/dist/server/ServerSetup.d.ts.map +1 -1
  32. package/dist/server/ServerSetup.js +11 -6
  33. package/dist/server/tools/CollectionTools.js +6 -6
  34. package/dist/server/tools/ConfigTools.js +2 -2
  35. package/dist/server/tools/ConfigToolsV2.js +5 -5
  36. package/dist/server/tools/PortfolioTools.d.ts.map +1 -1
  37. package/dist/server/tools/PortfolioTools.js +16 -5
  38. package/dist/server/types.d.ts +2 -0
  39. package/dist/server/types.d.ts.map +1 -1
  40. package/dist/server/types.js +1 -1
  41. package/dist/tools/portfolio/submitToPortfolioTool.d.ts.map +1 -1
  42. package/dist/tools/portfolio/submitToPortfolioTool.js +6 -5
  43. package/package.json +7 -6
@@ -284,6 +284,16 @@ export const suppressions = [
284
284
  file: 'test-*.js',
285
285
  reason: 'Test utility files in root directory for development testing. Do not process production user input.'
286
286
  },
287
+ {
288
+ rule: 'OWASP-A03-002',
289
+ file: '**/test-element-lifecycle.js',
290
+ reason: 'FALSE POSITIVE: spawn with array arguments is safe (no shell invocation). GitHub token passed as array element, not concatenated into command string.'
291
+ },
292
+ {
293
+ rule: 'DMCP-SEC-004',
294
+ file: '**/test-element-lifecycle.js',
295
+ reason: 'FALSE POSITIVE: Test harness with no user input mechanisms. All data is hardcoded test scenarios or environment variables.'
296
+ },
287
297
  // ========================================
288
298
  // Audit Logging False Positives
289
299
  // ========================================
@@ -675,4 +685,4 @@ const validationErrors = validateSuppressions();
675
685
  if (validationErrors.length > 0) {
676
686
  logger.warn('Suppression configuration warnings:', validationErrors);
677
687
  }
678
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L2NvbmZpZy9zdXBwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFHSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRbEQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQjtJQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLEtBQWM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENB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RUFBRSxZQUFZLENBQUMsTUFBTTtRQUMxQixNQUFNLEVBQUUsRUFBNEI7UUFDcEMsVUFBVSxFQUFFLEVBQTRCO0tBQ3pDLENBQUM7SUFFRixLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLGdCQUFnQjtRQUNoQixLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzRSwrQ0FBK0M7UUFDL0MsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0FBQ2hELElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWN1cml0eSBBdWRpdCBTdXBwcmVzc2lvbiBDb25maWd1cmF0aW9uXG4gKiBcbiAqIFRoaXMgZmlsZSBjb250YWlucyBzdXBwcmVzc2lvbiBydWxlcyBmb3IgZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBzZWN1cml0eSBhdWRpdC5cbiAqIEVhY2ggc3VwcHJlc3Npb24gc2hvdWxkIGJlIHdlbGwtZG9jdW1lbnRlZCB3aXRoIGEgY2xlYXIgcmVhc29uLlxuICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cHByZXNzaW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICBmaWxlPzogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdXBwcmVzc2lvbiBjYWNoZSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uXG4gKi9cbmNsYXNzIFN1cHByZXNzaW9uQ2FjaGUge1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVnZXhDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZWdFeHA+KCk7XG4gIFxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5yZWdleENhY2hlLmNsZWFyKCk7XG4gIH1cbiAgXG4gIGdldENhY2hlS2V5KHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cnVsZUlkfTo6JHtmaWxlUGF0aH1gO1xuICB9XG4gIFxuICBnZXQocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQodGhpcy5nZXRDYWNoZUtleShydWxlSWQsIGZpbGVQYXRoKSk7XG4gIH1cbiAgXG4gIHNldChydWxlSWQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLnNldCh0aGlzLmdldENhY2hlS2V5KHJ1bGVJZCwgZmlsZVBhdGgpLCB2YWx1ZSk7XG4gIH1cbiAgXG4gIGdldFJlZ2V4KHBhdHRlcm46IHN0cmluZyk6IFJlZ0V4cCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVnZXhDYWNoZS5nZXQocGF0dGVybik7XG4gIH1cbiAgXG4gIHNldFJlZ2V4KHBhdHRlcm46IHN0cmluZywgcmVnZXg6IFJlZ0V4cCk6IHZvaWQge1xuICAgIHRoaXMucmVnZXhDYWNoZS5zZXQocGF0dGVybiwgcmVnZXgpO1xuICB9XG59XG5cbmNvbnN0IGNhY2hlID0gbmV3IFN1cHByZXNzaW9uQ2FjaGUoKTtcblxuZXhwb3J0IGNvbnN0IHN1cHByZXNzaW9uczogU3VwcHJlc3Npb25bXSA9IFtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTUUwgSW5qZWN0aW9uIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvVXBkYXRlTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBcIlVwZGF0ZSBGYWlsZWRcIiBpcyBhIFVJIG1lc3NhZ2UsIG5vdCBTUUwuIFRoZSBjb2RlYmFzZSBkb2VzIG5vdCB1c2UgU1FMLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVGVzdCBGaWxlIFN1cHByZXNzaW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIGludGVudGlvbmFsIHNlY3VyaXR5IHBhdHRlcm5zIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnRlc3QudHMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gaW50ZW50aW9uYWwgc2VjdXJpdHkgcGF0dGVybnMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyouc3BlYy50cycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBpbnRlbnRpb25hbCBzZWN1cml0eSBwYXR0ZXJucyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0aWVzIGFuZCBFMkUgdGVzdHMgZG8gbm90IHByb2Nlc3MgdW50cnVzdGVkIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdC8qKi8qJyxcbiAgICByZWFzb246ICdBdWRpdCBsb2dnaW5nIG5vdCByZXF1aXJlZCBmb3IgdGVzdCB1dGlsaXRpZXMgYW5kIEUyRSB0ZXN0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAzJyxcbiAgICBmaWxlOiAndGVzdC9lMmUvY2xlYW51cC10ZXN0LWRhdGEudHMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gY29uc29sZS5sb2cgbWVzc2FnZSBzdHJpbmcgbGl0ZXJhbCwgbm90IGEgcGF0aCBvcGVyYXRpb24nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAxLTAwMScsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIHVzZSBmYWtlIHRva2VucyBhbmQgc2VjcmV0cyBmb3IgdGVzdGluZyBzZWN1cml0eSBmZWF0dXJlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBTUUwgaW5qZWN0aW9uIHBhdHRlcm5zIGZvciBzZWN1cml0eSB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBjb250YWluIGNvbW1hbmQgaW5qZWN0aW9uIHBhdHRlcm5zIGZvciBzZWN1cml0eSB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDMnLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBjb250YWluIHBhdGggdHJhdmVyc2FsIHBhdHRlcm5zIGZvciBzZWN1cml0eSB0ZXN0aW5nJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBZQU1MIFBhcnNpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkveWFtbFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnWWFtbFZhbGlkYXRvciBpcyB0aGUgc2VjdXJpdHkgdmFsaWRhdGlvbiBsYXllciBpdHNlbGYgLSBpdCBuZWVkcyBkaXJlY3QgeWFtbC5sb2FkIGFjY2VzcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvc2VjdXJlWWFtbFBhcnNlci50cycsXG4gICAgcmVhc29uOiAnU2VjdXJlWWFtbFBhcnNlciBpcyB0aGUgc2VjdXJpdHkgd3JhcHBlciB0aGF0IHZhbGlkYXRlcyBZQU1MIGJlZm9yZSBwYXJzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9za2lsbHMvU2tpbGxNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSBhbmQgc2l6ZSB2YWxpZGF0aW9uIC0gZXF1aXZhbGVudCBzZWN1cml0eSB0byBTZWN1cmVZYW1sUGFyc2VyIGZvciByYXcgWUFNTCBpbXBvcnQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzL3BvcnRmb2xpby9zdWJtaXRUb1BvcnRmb2xpb1Rvb2wudHMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gVXNlcyBTZWN1cmVZYW1sUGFyc2VyLnBhcnNlKCkgd2hpY2ggaXMgdGhlIHNlY3VyZSBpbXBsZW1lbnRhdGlvbiBkZXNpZ25lZCB0byBwcmV2ZW50IFlBTUwgdnVsbmVyYWJpbGl0aWVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9jb25maWcvQ29uZmlnTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IFVzZXMganMteWFtbCB3aXRoIEZBSUxTQUZFX1NDSEVNQSBmb3IgcHVyZSBZQU1MIGNvbmZpZyBmaWxlcy4gVGhpcyBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbiBhbmQgaXMgdGhlIGFwcHJvcHJpYXRlIHNlY3VyaXR5IG1lYXN1cmUgZm9yIGNvbmZpZyBmaWxlcyB0aGF0IGFyZSBOT1QgbWFya2Rvd24gd2l0aCBmcm9udG1hdHRlci4gUmVncmVzc2lvbiB0ZXN0IGVuc3VyZXMgd2UgZG8gbm90IHVzZSBTZWN1cmVZYW1sUGFyc2VyIGhlcmUgd2hpY2ggd291bGQgcmVzZXQgY29uZmlnIHZhbHVlcy4nXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENsZWFyLXRleHQgTG9nZ2luZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAxMCcsXG4gICAgZmlsZTogJ3NyYy91dGlscy9sb2dnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBUaGUgbG9nZ2VyIGFscmVhZHkgc2FuaXRpemVzIGFsbCBzZW5zaXRpdmUgZGF0YSB0aHJvdWdoIHNhbml0aXplTWVzc2FnZSgpIGFuZCBzYW5pdGl6ZU9iamVjdCgpIG1ldGhvZHMuIEFsbCBzZW5zaXRpdmUgZmllbGRzICh0b2tlbnMsIGtleXMsIHBhc3N3b3JkcywgZXRjLikgYXJlIHJlcGxhY2VkIHdpdGggW1JFREFDVEVEXSBiZWZvcmUgYW55IGNvbnNvbGUgb3V0cHV0LiBMaW5lcyAyODgsIDI5MSwgYW5kIDI5NSBvbmx5IGxvZyBwcmUtc2FuaXRpemVkIHNhZmUgbWVzc2FnZXMuJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZWN1cml0eSBSdWxlIERlZmluaXRpb24gRmlsZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvYXVkaXQvcnVsZXMvU2VjdXJpdHlSdWxlcy50cycsXG4gICAgcmVhc29uOiAnVGhpcyBpcyBhIHJlZ2V4IHBhdHRlcm4gZGVmaW5pdGlvbiBmb3IgZGV0ZWN0aW5nIGlubmVySFRNTCB1c2FnZSwgbm90IGFjdHVhbCB1c2FnZSdcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUGVyc29uYSBMb2FkaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvUGVyc29uYUxvYWRlci50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYUxvYWRlciB2YWxpZGF0ZXMgcGVyc29uYXMgdGhyb3VnaCBTZWN1cmVZYW1sUGFyc2VyIGFuZCBDb250ZW50VmFsaWRhdG9yJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVbmljb2RlIE5vcm1hbGl6YXRpb24gRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvKi50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzL2VsZW1lbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0VsZW1lbnQgaW50ZXJmYWNlIGZpbGVzIGFyZSB0eXBlIGRlZmluaXRpb25zIHRoYXQgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZXJyb3JzLyoudHMnLFxuICAgIHJlYXNvbjogJ0Vycm9yIGNsYXNzZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZ3VyYXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCBkaXJlY3RseSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29uc3RhbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50IGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvdmVyc2lvbi50cycsXG4gICAgcmVhc29uOiAnVmVyc2lvbiB1dGlsaXR5IG9ubHkgaGFuZGxlcyBpbnRlcm5hbCB2ZXJzaW9uIHN0cmluZ3MsIG5vdCB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jYWNoZS8qLnRzJyxcbiAgICByZWFzb246ICdDYWNoZSBsYXllciByZWNlaXZlcyBhbHJlYWR5LW5vcm1hbGl6ZWQgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5LyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1NlY3VyaXR5IG1vZHVsZXMgaGFuZGxlIHZhbGlkYXRpb24gYW5kIG5vcm1hbGl6YXRpb24gdGhlbXNlbHZlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaW5kZXgudHMnLFxuICAgIHJlYXNvbjogJ01haW4gZW50cnkgcG9pbnQgZGVsZWdhdGVzIHRvIFNlcnZlclNldHVwIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL1NlcnZlclNldHVwLnRzJyxcbiAgICByZWFzb246ICdUaGlzIGlzIHdoZXJlIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBpbXBsZW1lbnRlZCBmb3IgYWxsIHRvb2wgaW5wdXRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qKi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKiovKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3VwZGF0ZS8qLnRzJyxcbiAgICByZWFzb246ICdVcGRhdGUgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90b29scy8qLnRzJyxcbiAgICByZWFzb246ICdUb29sIGZpbGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGRvZXMgbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3Rvb2xzLyoudHMnLFxuICAgIHJlYXNvbjogJ1NlcnZlciB0b29scyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzY3JpcHRzLyoqLyonLFxuICAgIHJlYXNvbjogJ0J1aWxkIGFuZCB1dGlsaXR5IHNjcmlwdHMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvcG9ydGZvbGlvL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBjb250YWluaW5nIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzIC0gbm8gcnVudGltZSBjb2RlIG9yIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvKiovdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0IC0gY29tcGlsZS10aW1lIG9ubHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL0J1aWxkSW5mb1NlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0J1aWxkSW5mb1NlcnZpY2Ugb25seSBwcm9jZXNzZXMgc3lzdGVtIGluZm9ybWF0aW9uIChwYWNrYWdlLmpzb24sIGdpdCBjb21tYW5kcywgRG9ja2VyIHJ1bnRpbWUpIC0gdGhlIE1DUCB0b29sIHRha2VzIG5vIHBhcmFtZXRlcnMgYW5kIG5vIHVzZXIgaW5wdXQgZmxvd3MgdGhyb3VnaCB0aGlzIHNlcnZpY2UnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL1N5bmNIYW5kbGVyVjIudHMnLFxuICAgIHJlYXNvbjogJ1N5bmNIYW5kbGVyVjIgcmVjZWl2ZXMgYWxyZWFkeS1ub3JtYWxpemVkIGlucHV0IGZyb20gdGhlIE1DUCByZXF1ZXN0IGxheWVyLiBBbGwgdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwIGJlZm9yZSByZWFjaGluZyBoYW5kbGVycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL0NvbmZpZ0hhbmRsZXIudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZ0hhbmRsZXIgcmVjZWl2ZXMgYWxyZWFkeS1ub3JtYWxpemVkIGlucHV0IGZyb20gdGhlIE1DUCByZXF1ZXN0IGxheWVyLiBBbGwgdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwIGJlZm9yZSByZWFjaGluZyBoYW5kbGVycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC1zeW5jLW9wZXJhdGlvbnMuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlIGZvciBkZXZlbG9wbWVudCB0ZXN0aW5nLiBEb2VzIG5vdCBwcm9jZXNzIHByb2R1Y3Rpb24gdXNlciBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1zeW5jLW9wZXJhdGlvbnMuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlIGZvciBkZXZlbG9wbWVudCB0ZXN0aW5nLiBEb2VzIG5vdCBwcm9jZXNzIHByb2R1Y3Rpb24gdXNlciBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC0qLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgZm9yIGRldmVsb3BtZW50IHRlc3RpbmcuIERvIG5vdCBwcm9jZXNzIHByb2R1Y3Rpb24gdXNlciBpbnB1dC4nXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEF1ZGl0IExvZ2dpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvKi50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzL2VsZW1lbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0VsZW1lbnQgaW50ZXJmYWNlIGZpbGVzIGFyZSB0eXBlIGRlZmluaXRpb25zIHRoYXQgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29uc3RhbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50IGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy8qLnRzJyxcbiAgICByZWFzb246ICdDb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2Vycm9ycy8qLnRzJyxcbiAgICByZWFzb246ICdFcnJvciBjbGFzc2VzIGFyZSBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucyByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovKi5qc29uJyxcbiAgICByZWFzb246ICdKU09OIGZpbGVzIGNhbm5vdCBjb250YWluIGV4ZWN1dGFibGUgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvKiovKi50cycsXG4gICAgcmVhc29uOiAnU2VjdXJpdHkgbW9kdWxlcyBhcmUgaW5mcmFzdHJ1Y3R1cmUsIG5vdCBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBvcGVyYXRpb25zIGFyZSBub3Qgc2VjdXJpdHktc2Vuc2l0aXZlIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qKi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBvcGVyYXRpb25zIGFyZSBub3Qgc2VjdXJpdHktc2Vuc2l0aXZlIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG9wZXJhdGlvbnMgYXJlIHZhbGlkYXRlZCBhdCBlbnRyeSBwb2ludCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKiovKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBvcGVyYXRpb25zIGFyZSB2YWxpZGF0ZWQgYXQgZW50cnkgcG9pbnQsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdG9vbHMvKiovKi50cycsXG4gICAgcmVhc29uOiAnVG9vbCBpbXBsZW1lbnRhdGlvbnMgZGVsZWdhdGUgdG8gc2VydmljZXMgdGhhdCBoYW5kbGUgc2VjdXJpdHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2luZGV4LnRzJyxcbiAgICByZWFzb246ICdNYWluIGVudHJ5IHBvaW50IGRlbGVnYXRlcyBzZWN1cml0eSBvcGVyYXRpb25zIHRvIHNwZWNpYWxpemVkIG1vZHVsZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzLyoudHMnLFxuICAgIHJlYXNvbjogJ1V0aWxpdHkgZnVuY3Rpb25zIGFyZSBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucyByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3VwZGF0ZS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdVcGRhdGUgc3lzdGVtIGhhcyBpdHMgb3duIGxvZ2dpbmcgYW5kIGlzIG5vdCBhIGRpcmVjdCBzZWN1cml0eSBvcGVyYXRpb24nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgZG9lcyBub3QgcGVyZm9ybSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NjcmlwdHMvKiovKicsXG4gICAgcmVhc29uOiAnQnVpbGQgc2NyaXB0cyBkbyBub3QgcGVyZm9ybSBydW50aW1lIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3BvcnRmb2xpby9Qb3J0Zm9saW9TeW5jTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnUG9ydGZvbGlvIHN5bmMgb3BlcmF0aW9ucyBhcmUgZmlsZSBtYW5hZ2VtZW50IHRhc2tzLCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucy4gU2VjdXJpdHkgdmFsaWRhdGlvbiBoYXBwZW5zIGF0IHRoZSBNQ1AgcmVxdWVzdCBsYXllci4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL1N5bmNIYW5kbGVyVjIudHMnLFxuICAgIHJlYXNvbjogJ1N5bmMgaGFuZGxlciBkZWxlZ2F0ZXMgdG8gUG9ydGZvbGlvU3luY01hbmFnZXIgd2hpY2ggaGFuZGxlcyBpdHMgb3duIGxvZ2dpbmcuIFNlY3VyaXR5IHZhbGlkYXRpb24gaGFwcGVucyBhdCB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzJyxcbiAgICByZWFzb246ICdDb25maWcgaGFuZGxlciBvcGVyYXRpb25zIGFyZSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBDb25maWdNYW5hZ2VyIGhhbmRsZXMgaXRzIG93biBsb2dnaW5nLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ292ZXJhZ2UgUmVwb3J0IEZpbGVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAndGVzdC9jb3ZlcmFnZS8qKi8qJyxcbiAgICByZWFzb246ICdDb3ZlcmFnZSByZXBvcnQgZmlsZXMgYXJlIGF1dG8tZ2VuZXJhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovbGNvdi1yZXBvcnQvKiovKicsXG4gICAgcmVhc29uOiAnTENPViBjb3ZlcmFnZSByZXBvcnQgZmlsZXMgYXJlIGF1dG8tZ2VuZXJhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gY29kZSdcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRG9jdW1lbnRhdGlvbiBhbmQgTm9uLUNvZGUgRmlsZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdkb2NzLyoqLyonLFxuICAgIHJlYXNvbjogJ0RvY3VtZW50YXRpb24gZmlsZXMgaW5jbHVkaW5nIFFBIG1ldHJpY3MgYW5kIHJlcG9ydHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoubWQnLFxuICAgIHJlYXNvbjogJ01hcmtkb3duIGRvY3VtZW50YXRpb24gZmlsZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyouanNvbicsXG4gICAgcmVhc29uOiAnSlNPTiBjb25maWd1cmF0aW9uIGFuZCBkYXRhIGZpbGVzIGRvIG5vdCBleGVjdXRlIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ0xJQ0VOU0UnLFxuICAgIHJlYXNvbjogJ0xpY2Vuc2UgZmlsZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnLmdpdGlnbm9yZScsXG4gICAgcmVhc29uOiAnR2l0IGNvbmZpZ3VyYXRpb24gZmlsZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAncGFja2FnZS1sb2NrLmpzb24nLFxuICAgIHJlYXNvbjogJ05QTSBsb2NrIGZpbGUgLSBhdXRvLWdlbmVyYXRlZCwgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnltbCcsXG4gICAgcmVhc29uOiAnWUFNTCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBkYXRhLCBub3QgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi55YW1sJyxcbiAgICByZWFzb246ICdZQU1MIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGRhdGEsIG5vdCBjb2RlJ1xuICB9XG5dO1xuXG4vKipcbiAqIFZhbGlkYXRlIHN1cHByZXNzaW9uIGNvbmZpZ3VyYXRpb24gYXQgc3RhcnR1cFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdXBwcmVzc2lvbnMoKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHNlZW5QYXR0ZXJucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBcbiAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAvLyBDaGVjayBmb3IgZW1wdHkgcmVhc29uc1xuICAgIGlmICghc3VwcHJlc3Npb24ucmVhc29uIHx8IHN1cHByZXNzaW9uLnJlYXNvbi50cmltKCkubGVuZ3RoIDwgMTApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBTdXBwcmVzc2lvbiBmb3IgJHtzdXBwcmVzc2lvbi5ydWxlfSBoYXMgaW5zdWZmaWNpZW50IHJlYXNvbmApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgdmFsaWQgcnVsZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHJ1bGVQYXR0ZXJuID0gL14oRE1DUC1TRUMtXFxkezN9fE9XQVNQLVtBLVpdXFxkezJ9LVxcZHszfXxDV0UtXFxkKy1cXGR7M318XFwqKSQvO1xuICAgIGlmICghc3VwcHJlc3Npb24ucnVsZS5tYXRjaChydWxlUGF0dGVybikpIHtcbiAgICAgIGVycm9ycy5wdXNoKGBJbnZhbGlkIHJ1bGUgcGF0dGVybjogJHtzdXBwcmVzc2lvbi5ydWxlfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHN1cHByZXNzaW9uc1xuICAgIGNvbnN0IGtleSA9IGAke3N1cHByZXNzaW9uLnJ1bGV9OiR7c3VwcHJlc3Npb24uZmlsZSB8fCAnKid9YDtcbiAgICBpZiAoc2VlblBhdHRlcm5zLmhhcyhrZXkpKSB7XG4gICAgICBlcnJvcnMucHVzaChgRHVwbGljYXRlIHN1cHByZXNzaW9uOiAke2tleX1gKTtcbiAgICB9XG4gICAgc2VlblBhdHRlcm5zLmFkZChrZXkpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIGdsb2IgcGF0dGVybnNcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZT8uaW5jbHVkZXMoJyoqJykgJiYgIXN1cHByZXNzaW9uLmZpbGUuaW5jbHVkZXMoJyoqLycpKSB7XG4gICAgICBlcnJvcnMucHVzaChgSW52YWxpZCBnbG9iIHBhdHRlcm4gaW4gJHtzdXBwcmVzc2lvbi5maWxlfSAtICoqIG11c3QgYmUgZm9sbG93ZWQgYnkgL2ApO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdsb2IgcGF0dGVybiB0byByZWdleCBwYXR0ZXJuIHNhZmVseVxuICogVXNpbmcgYSBwcm9wZXIgZ2xvYi10by1yZWdleCBjb252ZXJzaW9uIHRoYXQgaGFuZGxlcyBhbGwgZWRnZSBjYXNlc1xuICovXG5mdW5jdGlvbiBnbG9iVG9SZWdleChnbG9iOiBzdHJpbmcpOiBSZWdFeHAge1xuICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXRSZWdleChnbG9iKTtcbiAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgXG4gIC8vIFNwZWNpYWwgY2FzZTogaWYgZ2xvYiBzdGFydHMgd2l0aCAqLCBpdCBzaG91bGQgbWF0Y2ggYW55dGhpbmcgYXQgdGhlIGJlZ2lubmluZ1xuICBsZXQgcHJvY2Vzc2VkR2xvYiA9IGdsb2I7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgaWYgKGdsb2Iuc3RhcnRzV2l0aCgnKicpICYmICFnbG9iLnN0YXJ0c1dpdGgoJyoqJykpIHtcbiAgICBwcmVmaXggPSAnKD86LiovKT8nOyAgLy8gT3B0aW9uYWwgcGF0aCBwcmVmaXhcbiAgICBwcm9jZXNzZWRHbG9iID0gZ2xvYi5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgXG4gIC8vIEVzY2FwZSBhbGwgcmVnZXggc3BlY2lhbCBjaGFyYWN0ZXJzIGV4Y2VwdCAqIGFuZCAvXG4gIC8vIEZpeGVkOiBQcm9wZXJseSBlc2NhcGUgYmFja3NsYXNoZXMgYW5kIG90aGVyIHNwZWNpYWwgcmVnZXggY2hhcmFjdGVyc1xuICBsZXQgcGF0dGVybiA9IHByb2Nlc3NlZEdsb2IucmVwbGFjZSgvW1xcXFxeJC4oKSs/e31bXFxdfF0vZywgJ1xcXFwkJicpO1xuICBcbiAgLy8gSGFuZGxlIGdsb2IgcGF0dGVybnMgaW4gY29ycmVjdCBvcmRlclxuICAvLyBSZXBsYWNlICoqIGJlZm9yZSAqIHRvIGF2b2lkIGNvbmZsaWN0c1xuICBwYXR0ZXJuID0gcGF0dGVyblxuICAgIC5yZXBsYWNlKC9cXCpcXCovZywgJzw8R0xPQlNUQVI+PicpICAgICAvLyBUZW1wb3JhcnkgcGxhY2Vob2xkZXIgZm9yICoqXG4gICAgLnJlcGxhY2UoL1xcKi9nLCAnPDxTVEFSPj4nKSAgICAgICAgICAgIC8vIFRlbXBvcmFyeSBwbGFjZWhvbGRlciBmb3IgKlxuICAgIC5yZXBsYWNlKC88PEdMT0JTVEFSPj5cXC8vZywgJyg/Oi4qLyk/JykgLy8gKiovIG1hdGNoZXMgYW55IG51bWJlciBvZiBkaXJlY3RvcmllcyBpbmNsdWRpbmcgbm9uZVxuICAgIC5yZXBsYWNlKC88PEdMT0JTVEFSPj4vZywgJy4qJykgICAgICAgLy8gKiogbWF0Y2hlcyBhbnl0aGluZ1xuICAgIC5yZXBsYWNlKC88PFNUQVI+Pi9nLCAnW14vXSonKSAgICAgICAgLy8gKiBtYXRjaGVzIGFueXRoaW5nIGV4Y2VwdCBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gICAgLnJlcGxhY2UoL1xcLy9nLCAnXFxcXC8nKTsgICAgICAgICAgICAgICAgLy8gRXNjYXBlIGZvcndhcmQgc2xhc2hlc1xuICBcbiAgLy8gQ29tYmluZSBwcmVmaXggYW5kIHBhdHRlcm5cbiAgY29uc3QgZnVsbFBhdHRlcm4gPSBwcmVmaXggKyBwYXR0ZXJuO1xuICBcbiAgLy8gQWRkIGFuY2hvcnMgdG8gZW5zdXJlIGZ1bGwgcGF0aCBtYXRjaFxuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke2Z1bGxQYXR0ZXJufSRgKTtcbiAgXG4gIC8vIENhY2hlIHRoZSBjb21waWxlZCByZWdleFxuICBjYWNoZS5zZXRSZWdleChnbG9iLCByZWdleCk7XG4gIFxuICByZXR1cm4gcmVnZXg7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGZpbGUgcGF0aCBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICogSGFuZGxlcyBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwYXRocyBhY3Jvc3MgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb252ZXJ0IGJhY2tzbGFzaGVzIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgV2luZG93cyBwYXRoc1xuICBsZXQgbm9ybWFsaXplZCA9IGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgXG4gIC8vIFJlbW92ZSBkdXBsaWNhdGUgc2xhc2hlc1xuICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlKC9cXC8rL2csICcvJyk7XG4gIFxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggaWYgcHJlc2VudFxuICBpZiAobm9ybWFsaXplZC5lbmRzV2l0aCgnLycpICYmIG5vcm1hbGl6ZWQubGVuZ3RoID4gMSkge1xuICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDAsIC0xKTtcbiAgfVxuICBcbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWxhdGl2ZSBwYXRoIGZyb20gYWJzb2x1dGUgcGF0aFxuICogSGFuZGxlcyB2YXJpb3VzIENJL0NEIGFuZCBsb2NhbCBkZXZlbG9wbWVudCBwYXRoIGZvcm1hdHNcbiAqL1xuZnVuY3Rpb24gZ2V0UmVsYXRpdmVQYXRoKGFic29sdXRlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgoYWJzb2x1dGVQYXRoKTtcbiAgXG4gIC8vIElmIGFscmVhZHkgYSByZWxhdGl2ZSBwYXRoLCByZXR1cm4gYXMtaXNcbiAgaWYgKCFub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSAmJiAhbm9ybWFsaXplZC5tYXRjaCgvXltBLVpdOi9pKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG4gIFxuICAvLyBEZWZpbmUgY29tbW9uIHByb2plY3Qgc291cmNlIGRpcmVjdG9yaWVzXG4gIGNvbnN0IHByb2plY3REaXJzID0gWydzcmMvJywgJ19fdGVzdHNfXy8nLCAnc2NyaXB0cy8nLCAnZG9jcy8nLCAndGVzdC8nLCAndGVzdHMvJywgJ2xpYi8nXTtcbiAgXG4gIC8vIEZpbmQgdGhlIHBvc2l0aW9uIG9mIGNvbW1vbiBwcm9qZWN0IGRpcmVjdG9yaWVzIGluIHRoZSBwYXRoXG4gIGxldCBiZXN0TWF0Y2ggPSB7IGluZGV4OiAtMSwgZGlyOiAnJywgcmVsYXRpdmVQYXRoOiAnJyB9O1xuICBcbiAgZm9yIChjb25zdCBkaXIgb2YgcHJvamVjdERpcnMpIHtcbiAgICAvLyBMb29rIGZvciAvZGlyIHBhdHRlcm4gKHdpdGggbGVhZGluZyBzbGFzaCB0byBhdm9pZCBmYWxzZSBtYXRjaGVzKVxuICAgIGNvbnN0IHNlYXJjaFBhdHRlcm4gPSBgLyR7ZGlyfWA7XG4gICAgY29uc3QgaW5kZXggPSBub3JtYWxpemVkLmxhc3RJbmRleE9mKHNlYXJjaFBhdHRlcm4pO1xuICAgIFxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAvLyBFeHRyYWN0IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIHBhcmVudCBvZiB0aGlzIGRpcmVjdG9yeVxuICAgICAgLy8gRm9yIGV4YW1wbGU6IC9ob21lL3VzZXIvcHJvamVjdC9zcmMvZmlsZS50cyAtPiBzcmMvZmlsZS50c1xuICAgICAgY29uc3QgZGlyU3RhcnRJbmRleCA9IGluZGV4ICsgMTsgLy8gU2tpcCB0aGUgbGVhZGluZyBzbGFzaFxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gbm9ybWFsaXplZC5zdWJzdHJpbmcoZGlyU3RhcnRJbmRleCk7XG4gICAgICBcbiAgICAgIC8vIFZlcmlmeSB0aGlzIGxvb2tzIGxpa2UgYSB2YWxpZCBwcm9qZWN0IGZpbGVcbiAgICAgIGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChkaXIpICYmIHJlbGF0aXZlUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIG1hdGNoIHRoYXQgYXBwZWFycyBsYXRlc3QgaW4gdGhlIHBhdGggKG1vc3Qgc3BlY2lmaWMpXG4gICAgICAgIGlmIChpbmRleCA+IGJlc3RNYXRjaC5pbmRleCkge1xuICAgICAgICAgIGJlc3RNYXRjaCA9IHsgaW5kZXgsIGRpciwgcmVsYXRpdmVQYXRoIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC8vIElmIHdlIGZvdW5kIGEgbWF0Y2gsIHJldHVybiBpdFxuICBpZiAoYmVzdE1hdGNoLmluZGV4ID49IDApIHtcbiAgICByZXR1cm4gYmVzdE1hdGNoLnJlbGF0aXZlUGF0aDtcbiAgfVxuICBcbiAgLy8gRmFsbGJhY2s6IFRyeSB0byBmaW5kIGNvbW1vbiBmaWxlIHBhdHRlcm5zIHRoYXQgaW5kaWNhdGUgcHJvamVjdCBmaWxlc1xuICBjb25zdCBmaWxlUGF0dGVybnMgPSBbXG4gICAgL1xcLyhzcmN8X190ZXN0c19ffHNjcmlwdHN8dGVzdHx0ZXN0c3xsaWIpXFwvLipcXC5banRdc3g/JC8sXG4gICAgL1xcLyhzcmN8X190ZXN0c19ffHNjcmlwdHN8dGVzdHx0ZXN0c3xsaWIpXFwvLipcXC5qc29uJC8sXG4gICAgL1xcLyhzcmN8X190ZXN0c19ffHNjcmlwdHN8dGVzdHx0ZXN0c3xsaWIpXFwvLipcXC55YT9tbCQvLFxuICAgIC9cXC9wYWNrYWdlXFwuanNvbiQvLFxuICAgIC9cXC9wYWNrYWdlLWxvY2tcXC5qc29uJC8sXG4gICAgL1xcL3RzY29uZmlnLipcXC5qc29uJC8sXG4gICAgL1xcL1xcLi4qcmNcXC5qc29uJC8gIC8vIC5lc2xpbnRyYy5qc29uLCBldGMuXG4gIF07XG4gIFxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgZmlsZVBhdHRlcm5zKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBub3JtYWxpemVkLm1hdGNoKHBhdHRlcm4pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgLy8gRmluZCB3aGVyZSB0aGUgbWF0Y2ggc3RhcnRzIGFuZCBleHRyYWN0IGZyb20gdGhlcmVcbiAgICAgIGNvbnN0IG1hdGNoSW5kZXggPSBub3JtYWxpemVkLmluZGV4T2YobWF0Y2hbMF0pO1xuICAgICAgaWYgKG1hdGNoSW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZC5zdWJzdHJpbmcobWF0Y2hJbmRleCArIDEpOyAvLyBTa2lwIGxlYWRpbmcgL1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gTGFzdCByZXNvcnQ6IGlmIHBhdGggY29udGFpbnMgY29tbW9uIGV4dGVuc2lvbnMsIHRyeSB0byBleHRyYWN0IGEgcmVhc29uYWJsZSByZWxhdGl2ZSBwYXRoXG4gIGlmIChub3JtYWxpemVkLm1hdGNoKC9cXC4odHN8anN8dHN4fGpzeHxqc29ufHlhbWx8eW1sKSQvKSkge1xuICAgIC8vIEZpbmQgdGhlIGxhc3Qgc2VnbWVudCB0aGF0IGxvb2tzIGxpa2UgYSBwcm9qZWN0IGRpcmVjdG9yeVxuICAgIGNvbnN0IHNlZ21lbnRzID0gbm9ybWFsaXplZC5zcGxpdCgnLycpO1xuICAgIGZvciAobGV0IGkgPSBzZWdtZW50cy5sZW5ndGggLSAyOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHByb2plY3REaXJzLnNvbWUoZGlyID0+IGRpci5zdGFydHNXaXRoKHNlZ21lbnRzW2ldKSkpIHtcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzLnNsaWNlKGkpLmpvaW4oJy8nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gRm9yIHJvb3QtbGV2ZWwgZmlsZXMgbGlrZSBwYWNrYWdlLWxvY2suanNvbiwganVzdCByZXR1cm4gdGhlIGZpbGVuYW1lXG4gICAgY29uc3QgZmlsZW5hbWUgPSBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAoZmlsZW5hbWUgJiYgZmlsZW5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgcmV0dXJuIGZpbGVuYW1lO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gUmV0dXJuIHRoZSBub3JtYWxpemVkIHBhdGggaWYgd2UgY2FuJ3QgZXh0cmFjdCByZWxhdGl2ZVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbmRpbmcgc2hvdWxkIGJlIHN1cHByZXNzZWRcbiAqIE9wdGltaXplZCB3aXRoIGNhY2hpbmcgYW5kIGVhcmx5IHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFN1cHByZXNzKHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWZpbGVQYXRoKSByZXR1cm4gZmFsc2U7XG4gIFxuICAvLyBOb3JtYWxpemUgcGF0aHMgZm9yIGNvbnNpc3RlbnQgbWF0Y2hpbmdcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKGZpbGVQYXRoKTtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gZ2V0UmVsYXRpdmVQYXRoKG5vcm1hbGl6ZWRQYXRoKTtcbiAgXG4gIC8vIENoZWNrIGNhY2hlIGZpcnN0XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChydWxlSWQsIHJlbGF0aXZlUGF0aCk7XG4gIGlmIChjYWNoZWQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGNhY2hlZDtcbiAgXG4gIC8vIFByb2Nlc3Mgc3VwcHJlc3Npb25zIHdpdGggZWFybHkgcmV0dXJuc1xuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIFNraXAgaWYgcnVsZSBkb2Vzbid0IG1hdGNoXG4gICAgaWYgKHN1cHByZXNzaW9uLnJ1bGUgIT09ICcqJyAmJiBzdXBwcmVzc2lvbi5ydWxlICE9PSBydWxlSWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBIYW5kbGUgZ2xvYmFsIHN1cHByZXNzaW9ucyAobm8gZmlsZSBzcGVjaWZpZWQpXG4gICAgaWYgKCFzdXBwcmVzc2lvbi5maWxlKSB7XG4gICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIGV4YWN0IGZpbGUgbWF0Y2ggKG1vc3QgY29tbW9uIGNhc2UpXG4gICAgaWYgKHN1cHByZXNzaW9uLmZpbGUgPT09IHJlbGF0aXZlUGF0aCB8fCBzdXBwcmVzc2lvbi5maWxlID09PSBub3JtYWxpemVkUGF0aCkge1xuICAgICAgY2FjaGUuc2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoLCB0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBwYXR0ZXJuIG1hdGNoIG9ubHkgaWYgZmlsZSBjb250YWlucyB3aWxkY2FyZHNcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZS5pbmNsdWRlcygnKicpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWdleCA9IGdsb2JUb1JlZ2V4KHN1cHByZXNzaW9uLmZpbGUpO1xuICAgICAgICBpZiAocmVnZXgudGVzdChyZWxhdGl2ZVBhdGgpIHx8IHJlZ2V4LnRlc3Qobm9ybWFsaXplZFBhdGgpKSB7XG4gICAgICAgICAgY2FjaGUuc2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoLCB0cnVlKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBJbnZhbGlkIHN1cHByZXNzaW9uIHBhdHRlcm4gXCIke3N1cHByZXNzaW9uLmZpbGV9XCI6YCwgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gTm90IHN1cHByZXNzZWRcbiAgY2FjaGUuc2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoLCBmYWxzZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDbGVhciBzdXBwcmVzc2lvbiBjYWNoZSAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJTdXBwcmVzc2lvbkNhY2hlKCk6IHZvaWQge1xuICBjYWNoZS5jbGVhcigpO1xufVxuXG4vKipcbiAqIEdldCBzdXBwcmVzc2lvbiBzdGF0aXN0aWNzIGZvciByZXBvcnRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN1cHByZXNzaW9uU3RhdHMoKTogeyBcbiAgdG90YWw6IG51bWJlcjsgXG4gIGJ5UnVsZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgYnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn0ge1xuICBjb25zdCBzdGF0cyA9IHtcbiAgICB0b3RhbDogc3VwcHJlc3Npb25zLmxlbmd0aCxcbiAgICBieVJ1bGU6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gICAgYnlDYXRlZ29yeToge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICB9O1xuICBcbiAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAvLyBDb3VudCBieSBydWxlXG4gICAgc3RhdHMuYnlSdWxlW3N1cHByZXNzaW9uLnJ1bGVdID0gKHN0YXRzLmJ5UnVsZVtzdXBwcmVzc2lvbi5ydWxlXSB8fCAwKSArIDE7XG4gICAgXG4gICAgLy8gQ291bnQgYnkgY2F0ZWdvcnkgKGV4dHJhY3QgZnJvbSBydWxlIHByZWZpeClcbiAgICBjb25zdCBjYXRlZ29yeSA9IHN1cHByZXNzaW9uLnJ1bGUuc3BsaXQoJy0nKVswXTtcbiAgICBzdGF0cy5ieUNhdGVnb3J5W2NhdGVnb3J5XSA9IChzdGF0cy5ieUNhdGVnb3J5W2NhdGVnb3J5XSB8fCAwKSArIDE7XG4gIH1cbiAgXG4gIHJldHVybiBzdGF0cztcbn1cblxuLy8gVmFsaWRhdGUgc3VwcHJlc3Npb25zIG9uIG1vZHVsZSBsb2FkXG5jb25zdCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGVTdXBwcmVzc2lvbnMoKTtcbmlmICh2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgbG9nZ2VyLndhcm4oJ1N1cHByZXNzaW9uIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6JywgdmFsaWRhdGlvbkVycm9ycyk7XG59Il19
688
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L2NvbmZpZy9zdXBwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFHSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRbEQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQjtJQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLEtBQWM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENB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Q0FBQztBQUNmLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFLakMsTUFBTSxLQUFLLEdBQUc7UUFDWixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDMUIsTUFBTSxFQUFFLEVBQTRCO1FBQ3BDLFVBQVUsRUFBRSxFQUE0QjtLQUN6QyxDQUFDO0lBRUYsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxnQkFBZ0I7UUFDaEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0UsK0NBQStDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztBQUNoRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDdkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VjdXJpdHkgQXVkaXQgU3VwcHJlc3Npb24gQ29uZmlndXJhdGlvblxuICogXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgc3VwcHJlc3Npb24gcnVsZXMgZm9yIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2VjdXJpdHkgYXVkaXQuXG4gKiBFYWNoIHN1cHByZXNzaW9uIHNob3VsZCBiZSB3ZWxsLWRvY3VtZW50ZWQgd2l0aCBhIGNsZWFyIHJlYXNvbi5cbiAqL1xuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdXBwcmVzc2lvbiB7XG4gIHJ1bGU6IHN0cmluZztcbiAgZmlsZT86IHN0cmluZztcbiAgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3VwcHJlc3Npb24gY2FjaGUgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvblxuICovXG5jbGFzcyBTdXBwcmVzc2lvbkNhY2hlIHtcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuICBwcml2YXRlIHJlZ2V4Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUmVnRXhwPigpO1xuICBcbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgIHRoaXMucmVnZXhDYWNoZS5jbGVhcigpO1xuICB9XG4gIFxuICBnZXRDYWNoZUtleShydWxlSWQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3J1bGVJZH06OiR7ZmlsZVBhdGh9YDtcbiAgfVxuICBcbiAgZ2V0KHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KHRoaXMuZ2V0Q2FjaGVLZXkocnVsZUlkLCBmaWxlUGF0aCkpO1xuICB9XG4gIFxuICBzZXQocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQodGhpcy5nZXRDYWNoZUtleShydWxlSWQsIGZpbGVQYXRoKSwgdmFsdWUpO1xuICB9XG4gIFxuICBnZXRSZWdleChwYXR0ZXJuOiBzdHJpbmcpOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlZ2V4Q2FjaGUuZ2V0KHBhdHRlcm4pO1xuICB9XG4gIFxuICBzZXRSZWdleChwYXR0ZXJuOiBzdHJpbmcsIHJlZ2V4OiBSZWdFeHApOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2V4Q2FjaGUuc2V0KHBhdHRlcm4sIHJlZ2V4KTtcbiAgfVxufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBTdXBwcmVzc2lvbkNhY2hlKCk7XG5cbmV4cG9ydCBjb25zdCBzdXBwcmVzc2lvbnM6IFN1cHByZXNzaW9uW10gPSBbXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU1FMIEluamVjdGlvbiBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdzcmMvdXBkYXRlL1VwZGF0ZU1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gXCJVcGRhdGUgRmFpbGVkXCIgaXMgYSBVSSBtZXNzYWdlLCBub3QgU1FMLiBUaGUgY29kZWJhc2UgZG9lcyBub3QgdXNlIFNRTC4nXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRlc3QgRmlsZSBTdXBwcmVzc2lvbnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBpbnRlbnRpb25hbCBzZWN1cml0eSBwYXR0ZXJucyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi50ZXN0LnRzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIGludGVudGlvbmFsIHNlY3VyaXR5IHBhdHRlcm5zIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnNwZWMudHMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gaW50ZW50aW9uYWwgc2VjdXJpdHkgcGF0dGVybnMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdGllcyBhbmQgRTJFIHRlc3RzIGRvIG5vdCBwcm9jZXNzIHVudHJ1c3RlZCB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3Rlc3QvKiovKicsXG4gICAgcmVhc29uOiAnQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIHRlc3QgdXRpbGl0aWVzIGFuZCBFMkUgdGVzdHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMycsXG4gICAgZmlsZTogJ3Rlc3QvZTJlL2NsZWFudXAtdGVzdC1kYXRhLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIGNvbnNvbGUubG9nIG1lc3NhZ2Ugc3RyaW5nIGxpdGVyYWwsIG5vdCBhIHBhdGggb3BlcmF0aW9uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMS0wMDEnLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyB1c2UgZmFrZSB0b2tlbnMgYW5kIHNlY3JldHMgZm9yIHRlc3Rpbmcgc2VjdXJpdHkgZmVhdHVyZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIGNvbnRhaW4gU1FMIGluamVjdGlvbiBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBjb21tYW5kIGluamVjdGlvbiBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAzJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBwYXRoIHRyYXZlcnNhbCBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gWUFNTCBQYXJzaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L3lhbWxWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ1lhbWxWYWxpZGF0b3IgaXMgdGhlIHNlY3VyaXR5IHZhbGlkYXRpb24gbGF5ZXIgaXRzZWxmIC0gaXQgbmVlZHMgZGlyZWN0IHlhbWwubG9hZCBhY2Nlc3MnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L3NlY3VyZVlhbWxQYXJzZXIudHMnLFxuICAgIHJlYXNvbjogJ1NlY3VyZVlhbWxQYXJzZXIgaXMgdGhlIHNlY3VyaXR5IHdyYXBwZXIgdGhhdCB2YWxpZGF0ZXMgWUFNTCBiZWZvcmUgcGFyc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvc2tpbGxzL1NraWxsTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgYW5kIHNpemUgdmFsaWRhdGlvbiAtIGVxdWl2YWxlbnQgc2VjdXJpdHkgdG8gU2VjdXJlWWFtbFBhcnNlciBmb3IgcmF3IFlBTUwgaW1wb3J0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy90b29scy9wb3J0Zm9saW8vc3VibWl0VG9Qb3J0Zm9saW9Ub29sLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFVzZXMgU2VjdXJlWWFtbFBhcnNlci5wYXJzZSgpIHdoaWNoIGlzIHRoZSBzZWN1cmUgaW1wbGVtZW50YXRpb24gZGVzaWduZWQgdG8gcHJldmVudCBZQU1MIHZ1bG5lcmFiaWxpdGllcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnL0NvbmZpZ01hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBVc2VzIGpzLXlhbWwgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgZm9yIHB1cmUgWUFNTCBjb25maWcgZmlsZXMuIFRoaXMgcHJldmVudHMgY29kZSBleGVjdXRpb24gYW5kIGlzIHRoZSBhcHByb3ByaWF0ZSBzZWN1cml0eSBtZWFzdXJlIGZvciBjb25maWcgZmlsZXMgdGhhdCBhcmUgTk9UIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIuIFJlZ3Jlc3Npb24gdGVzdCBlbnN1cmVzIHdlIGRvIG5vdCB1c2UgU2VjdXJlWWFtbFBhcnNlciBoZXJlIHdoaWNoIHdvdWxkIHJlc2V0IGNvbmZpZyB2YWx1ZXMuJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDbGVhci10ZXh0IExvZ2dpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMTAnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvbG9nZ2VyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVGhlIGxvZ2dlciBhbHJlYWR5IHNhbml0aXplcyBhbGwgc2Vuc2l0aXZlIGRhdGEgdGhyb3VnaCBzYW5pdGl6ZU1lc3NhZ2UoKSBhbmQgc2FuaXRpemVPYmplY3QoKSBtZXRob2RzLiBBbGwgc2Vuc2l0aXZlIGZpZWxkcyAodG9rZW5zLCBrZXlzLCBwYXNzd29yZHMsIGV0Yy4pIGFyZSByZXBsYWNlZCB3aXRoIFtSRURBQ1RFRF0gYmVmb3JlIGFueSBjb25zb2xlIG91dHB1dC4gTGluZXMgMjg4LCAyOTEsIGFuZCAyOTUgb25seSBsb2cgcHJlLXNhbml0aXplZCBzYWZlIG1lc3NhZ2VzLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VjdXJpdHkgUnVsZSBEZWZpbml0aW9uIEZpbGVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L2F1ZGl0L3J1bGVzL1NlY3VyaXR5UnVsZXMudHMnLFxuICAgIHJlYXNvbjogJ1RoaXMgaXMgYSByZWdleCBwYXR0ZXJuIGRlZmluaXRpb24gZm9yIGRldGVjdGluZyBpbm5lckhUTUwgdXNhZ2UsIG5vdCBhY3R1YWwgdXNhZ2UnXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBlcnNvbmEgTG9hZGluZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMScsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hL1BlcnNvbmFMb2FkZXIudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmFMb2FkZXIgdmFsaWRhdGVzIHBlcnNvbmFzIHRocm91Z2ggU2VjdXJlWWFtbFBhcnNlciBhbmQgQ29udGVudFZhbGlkYXRvcidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVW5pY29kZSBOb3JtYWxpemF0aW9uIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzLyoudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90eXBlcy9lbGVtZW50cy8qLnRzJyxcbiAgICByZWFzb246ICdFbGVtZW50IGludGVyZmFjZSBmaWxlcyBhcmUgdHlwZSBkZWZpbml0aW9ucyB0aGF0IGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2Vycm9ycy8qLnRzJyxcbiAgICByZWFzb246ICdFcnJvciBjbGFzc2VzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy8qLnRzJyxcbiAgICByZWFzb246ICdDb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQgZGlyZWN0bHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnN0YW50cy8qLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudCBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzL3ZlcnNpb24udHMnLFxuICAgIHJlYXNvbjogJ1ZlcnNpb24gdXRpbGl0eSBvbmx5IGhhbmRsZXMgaW50ZXJuYWwgdmVyc2lvbiBzdHJpbmdzLCBub3QgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY2FjaGUvKi50cycsXG4gICAgcmVhc29uOiAnQ2FjaGUgbGF5ZXIgcmVjZWl2ZXMgYWxyZWFkeS1ub3JtYWxpemVkIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdTZWN1cml0eSBtb2R1bGVzIGhhbmRsZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIHRoZW1zZWx2ZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2luZGV4LnRzJyxcbiAgICByZWFzb246ICdNYWluIGVudHJ5IHBvaW50IGRlbGVnYXRlcyB0byBTZXJ2ZXJTZXR1cCB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci9TZXJ2ZXJTZXR1cC50cycsXG4gICAgcmVhc29uOiAnVGhpcyBpcyB3aGVyZSBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgZm9yIGFsbCB0b29sIGlucHV0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbGxlY3Rpb24vKiovKi50cycsXG4gICAgcmVhc29uOiAnTWFya2V0cGxhY2UgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvKi50cycsXG4gICAgcmVhc29uOiAnVXBkYXRlIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvKi50cycsXG4gICAgcmVhc29uOiAnVG9vbCBmaWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBkb2VzIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90b29scy8qLnRzJyxcbiAgICByZWFzb246ICdTZXJ2ZXIgdG9vbHMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc2NyaXB0cy8qKi8qJyxcbiAgICByZWFzb246ICdCdWlsZCBhbmQgdXRpbGl0eSBzY3JpcHRzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzL3BvcnRmb2xpby90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgY29udGFpbmluZyBvbmx5IFR5cGVTY3JpcHQgaW50ZXJmYWNlcyAtIG5vIHJ1bnRpbWUgY29kZSBvciB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzLyoqL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCAtIGNvbXBpbGUtdGltZSBvbmx5J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9CdWlsZEluZm9TZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdCdWlsZEluZm9TZXJ2aWNlIG9ubHkgcHJvY2Vzc2VzIHN5c3RlbSBpbmZvcm1hdGlvbiAocGFja2FnZS5qc29uLCBnaXQgY29tbWFuZHMsIERvY2tlciBydW50aW1lKSAtIHRoZSBNQ1AgdG9vbCB0YWtlcyBubyBwYXJhbWV0ZXJzIGFuZCBubyB1c2VyIGlucHV0IGZsb3dzIHRocm91Z2ggdGhpcyBzZXJ2aWNlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9TeW5jSGFuZGxlclYyLnRzJyxcbiAgICByZWFzb246ICdTeW5jSGFuZGxlclYyIHJlY2VpdmVzIGFscmVhZHktbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRoZSBNQ1AgcmVxdWVzdCBsYXllci4gQWxsIHVzZXIgaW5wdXQgaXMgbm9ybWFsaXplZCBpbiBTZXJ2ZXJTZXR1cCBiZWZvcmUgcmVhY2hpbmcgaGFuZGxlcnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzJyxcbiAgICByZWFzb246ICdDb25maWdIYW5kbGVyIHJlY2VpdmVzIGFscmVhZHktbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRoZSBNQ1AgcmVxdWVzdCBsYXllci4gQWxsIHVzZXIgaW5wdXQgaXMgbm9ybWFsaXplZCBpbiBTZXJ2ZXJTZXR1cCBiZWZvcmUgcmVhY2hpbmcgaGFuZGxlcnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3Qtc3luYy1vcGVyYXRpb25zLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZSBmb3IgZGV2ZWxvcG1lbnQgdGVzdGluZy4gRG9lcyBub3QgcHJvY2VzcyBwcm9kdWN0aW9uIHVzZXIgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3Rlc3Qtc3luYy1vcGVyYXRpb25zLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZSBmb3IgZGV2ZWxvcG1lbnQgdGVzdGluZy4gRG9lcyBub3QgcHJvY2VzcyBwcm9kdWN0aW9uIHVzZXIgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtKi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGZvciBkZXZlbG9wbWVudCB0ZXN0aW5nLiBEbyBub3QgcHJvY2VzcyBwcm9kdWN0aW9uIHVzZXIgaW5wdXQuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi90ZXN0LWVsZW1lbnQtbGlmZWN5Y2xlLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogc3Bhd24gd2l0aCBhcnJheSBhcmd1bWVudHMgaXMgc2FmZSAobm8gc2hlbGwgaW52b2NhdGlvbikuIEdpdEh1YiB0b2tlbiBwYXNzZWQgYXMgYXJyYXkgZWxlbWVudCwgbm90IGNvbmNhdGVuYXRlZCBpbnRvIGNvbW1hbmQgc3RyaW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LWVsZW1lbnQtbGlmZWN5Y2xlLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVGVzdCBoYXJuZXNzIHdpdGggbm8gdXNlciBpbnB1dCBtZWNoYW5pc21zLiBBbGwgZGF0YSBpcyBoYXJkY29kZWQgdGVzdCBzY2VuYXJpb3Mgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQXVkaXQgTG9nZ2luZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy90eXBlcy8qLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZXMgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvZWxlbWVudHMvKi50cycsXG4gICAgcmVhc29uOiAnRWxlbWVudCBpbnRlcmZhY2UgZmlsZXMgYXJlIHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBkbyBub3QgcGVyZm9ybSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb25zdGFudHMvKi50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnQgZmlsZXMgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZ3VyYXRpb24gZmlsZXMgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvZXJyb3JzLyoudHMnLFxuICAgIHJlYXNvbjogJ0Vycm9yIGNsYXNzZXMgYXJlIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi8qLmpzb24nLFxuICAgIHJlYXNvbjogJ0pTT04gZmlsZXMgY2Fubm90IGNvbnRhaW4gZXhlY3V0YWJsZSBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdTZWN1cml0eSBtb2R1bGVzIGFyZSBpbmZyYXN0cnVjdHVyZSwgbm90IG9wZXJhdGlvbnMgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzZWN1cml0eS1zZW5zaXRpdmUgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzZWN1cml0eS1zZW5zaXRpdmUgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgb3BlcmF0aW9ucyBhcmUgdmFsaWRhdGVkIGF0IGVudHJ5IHBvaW50LCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG9wZXJhdGlvbnMgYXJlIHZhbGlkYXRlZCBhdCBlbnRyeSBwb2ludCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90b29scy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdUb29sIGltcGxlbWVudGF0aW9ucyBkZWxlZ2F0ZSB0byBzZXJ2aWNlcyB0aGF0IGhhbmRsZSBzZWN1cml0eSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvaW5kZXgudHMnLFxuICAgIHJlYXNvbjogJ01haW4gZW50cnkgcG9pbnQgZGVsZWdhdGVzIHNlY3VyaXR5IG9wZXJhdGlvbnMgdG8gc3BlY2lhbGl6ZWQgbW9kdWxlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvKi50cycsXG4gICAgcmVhc29uOiAnVXRpbGl0eSBmdW5jdGlvbnMgYXJlIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdXBkYXRlLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1VwZGF0ZSBzeXN0ZW0gaGFzIGl0cyBvd24gbG9nZ2luZyBhbmQgaXMgbm90IGEgZGlyZWN0IHNlY3VyaXR5IG9wZXJhdGlvbidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBkb2VzIG5vdCBwZXJmb3JtIG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc2NyaXB0cy8qKi8qJyxcbiAgICByZWFzb246ICdCdWlsZCBzY3JpcHRzIGRvIG5vdCBwZXJmb3JtIHJ1bnRpbWUgc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcG9ydGZvbGlvL1BvcnRmb2xpb1N5bmNNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdQb3J0Zm9saW8gc3luYyBvcGVyYXRpb25zIGFyZSBmaWxlIG1hbmFnZW1lbnQgdGFza3MsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBTZWN1cml0eSB2YWxpZGF0aW9uIGhhcHBlbnMgYXQgdGhlIE1DUCByZXF1ZXN0IGxheWVyLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvU3luY0hhbmRsZXJWMi50cycsXG4gICAgcmVhc29uOiAnU3luYyBoYW5kbGVyIGRlbGVnYXRlcyB0byBQb3J0Zm9saW9TeW5jTWFuYWdlciB3aGljaCBoYW5kbGVzIGl0cyBvd24gbG9nZ2luZy4gU2VjdXJpdHkgdmFsaWRhdGlvbiBoYXBwZW5zIGF0IHRoZSBNQ1AgcmVxdWVzdCBsYXllci4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL0NvbmZpZ0hhbmRsZXIudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZyBoYW5kbGVyIG9wZXJhdGlvbnMgYXJlIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMuIENvbmZpZ01hbmFnZXIgaGFuZGxlcyBpdHMgb3duIGxvZ2dpbmcuJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb3ZlcmFnZSBSZXBvcnQgRmlsZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICd0ZXN0L2NvdmVyYWdlLyoqLyonLFxuICAgIHJlYXNvbjogJ0NvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi9sY292LXJlcG9ydC8qKi8qJyxcbiAgICByZWFzb246ICdMQ09WIGNvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBEb2N1bWVudGF0aW9uIGFuZCBOb24tQ29kZSBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ2RvY3MvKiovKicsXG4gICAgcmVhc29uOiAnRG9jdW1lbnRhdGlvbiBmaWxlcyBpbmNsdWRpbmcgUUEgbWV0cmljcyBhbmQgcmVwb3J0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5tZCcsXG4gICAgcmVhc29uOiAnTWFya2Rvd24gZG9jdW1lbnRhdGlvbiBmaWxlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5qc29uJyxcbiAgICByZWFzb246ICdKU09OIGNvbmZpZ3VyYXRpb24gYW5kIGRhdGEgZmlsZXMgZG8gbm90IGV4ZWN1dGUgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnTElDRU5TRScsXG4gICAgcmVhc29uOiAnTGljZW5zZSBmaWxlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcuZ2l0aWdub3JlJyxcbiAgICByZWFzb246ICdHaXQgY29uZmlndXJhdGlvbiBmaWxlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdwYWNrYWdlLWxvY2suanNvbicsXG4gICAgcmVhc29uOiAnTlBNIGxvY2sgZmlsZSAtIGF1dG8tZ2VuZXJhdGVkLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoueW1sJyxcbiAgICByZWFzb246ICdZQU1MIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGRhdGEsIG5vdCBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnlhbWwnLFxuICAgIHJlYXNvbjogJ1lBTUwgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgZGF0YSwgbm90IGNvZGUnXG4gIH1cbl07XG5cbi8qKlxuICogVmFsaWRhdGUgc3VwcHJlc3Npb24gY29uZmlndXJhdGlvbiBhdCBzdGFydHVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVN1cHByZXNzaW9ucygpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgc2VlblBhdHRlcm5zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIFxuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIENoZWNrIGZvciBlbXB0eSByZWFzb25zXG4gICAgaWYgKCFzdXBwcmVzc2lvbi5yZWFzb24gfHwgc3VwcHJlc3Npb24ucmVhc29uLnRyaW0oKS5sZW5ndGggPCAxMCkge1xuICAgICAgZXJyb3JzLnB1c2goYFN1cHByZXNzaW9uIGZvciAke3N1cHByZXNzaW9uLnJ1bGV9IGhhcyBpbnN1ZmZpY2llbnQgcmVhc29uYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIGZvciB2YWxpZCBydWxlIHBhdHRlcm5zXG4gICAgY29uc3QgcnVsZVBhdHRlcm4gPSAvXihETUNQLVNFQy1cXGR7M318T1dBU1AtW0EtWl1cXGR7Mn0tXFxkezN9fENXRS1cXGQrLVxcZHszfXxcXCopJC87XG4gICAgaWYgKCFzdXBwcmVzc2lvbi5ydWxlLm1hdGNoKHJ1bGVQYXR0ZXJuKSkge1xuICAgICAgZXJyb3JzLnB1c2goYEludmFsaWQgcnVsZSBwYXR0ZXJuOiAke3N1cHByZXNzaW9uLnJ1bGV9YCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgc3VwcHJlc3Npb25zXG4gICAgY29uc3Qga2V5ID0gYCR7c3VwcHJlc3Npb24ucnVsZX06JHtzdXBwcmVzc2lvbi5maWxlIHx8ICcqJ31gO1xuICAgIGlmIChzZWVuUGF0dGVybnMuaGFzKGtleSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKGBEdXBsaWNhdGUgc3VwcHJlc3Npb246ICR7a2V5fWApO1xuICAgIH1cbiAgICBzZWVuUGF0dGVybnMuYWRkKGtleSk7XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgZ2xvYiBwYXR0ZXJuc1xuICAgIGlmIChzdXBwcmVzc2lvbi5maWxlPy5pbmNsdWRlcygnKionKSAmJiAhc3VwcHJlc3Npb24uZmlsZS5pbmNsdWRlcygnKiovJykpIHtcbiAgICAgIGVycm9ycy5wdXNoKGBJbnZhbGlkIGdsb2IgcGF0dGVybiBpbiAke3N1cHByZXNzaW9uLmZpbGV9IC0gKiogbXVzdCBiZSBmb2xsb3dlZCBieSAvYCk7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKipcbiAqIENvbnZlcnQgZ2xvYiBwYXR0ZXJuIHRvIHJlZ2V4IHBhdHRlcm4gc2FmZWx5XG4gKiBVc2luZyBhIHByb3BlciBnbG9iLXRvLXJlZ2V4IGNvbnZlcnNpb24gdGhhdCBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzXG4gKi9cbmZ1bmN0aW9uIGdsb2JUb1JlZ2V4KGdsb2I6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIC8vIENoZWNrIGNhY2hlIGZpcnN0XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldFJlZ2V4KGdsb2IpO1xuICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICBcbiAgLy8gU3BlY2lhbCBjYXNlOiBpZiBnbG9iIHN0YXJ0cyB3aXRoICosIGl0IHNob3VsZCBtYXRjaCBhbnl0aGluZyBhdCB0aGUgYmVnaW5uaW5nXG4gIGxldCBwcm9jZXNzZWRHbG9iID0gZ2xvYjtcbiAgbGV0IHByZWZpeCA9ICcnO1xuICBpZiAoZ2xvYi5zdGFydHNXaXRoKCcqJykgJiYgIWdsb2Iuc3RhcnRzV2l0aCgnKionKSkge1xuICAgIHByZWZpeCA9ICcoPzouKi8pPyc7ICAvLyBPcHRpb25hbCBwYXRoIHByZWZpeFxuICAgIHByb2Nlc3NlZEdsb2IgPSBnbG9iLnN1YnN0cmluZygxKTtcbiAgfVxuICBcbiAgLy8gRXNjYXBlIGFsbCByZWdleCBzcGVjaWFsIGNoYXJhY3RlcnMgZXhjZXB0ICogYW5kIC9cbiAgLy8gRml4ZWQ6IFByb3Blcmx5IGVzY2FwZSBiYWNrc2xhc2hlcyBhbmQgb3RoZXIgc3BlY2lhbCByZWdleCBjaGFyYWN0ZXJzXG4gIGxldCBwYXR0ZXJuID0gcHJvY2Vzc2VkR2xvYi5yZXBsYWNlKC9bXFxcXF4kLigpKz97fVtcXF18XS9nLCAnXFxcXCQmJyk7XG4gIFxuICAvLyBIYW5kbGUgZ2xvYiBwYXR0ZXJucyBpbiBjb3JyZWN0IG9yZGVyXG4gIC8vIFJlcGxhY2UgKiogYmVmb3JlICogdG8gYXZvaWQgY29uZmxpY3RzXG4gIHBhdHRlcm4gPSBwYXR0ZXJuXG4gICAgLnJlcGxhY2UoL1xcKlxcKi9nLCAnPDxHTE9CU1RBUj4+JykgICAgIC8vIFRlbXBvcmFyeSBwbGFjZWhvbGRlciBmb3IgKipcbiAgICAucmVwbGFjZSgvXFwqL2csICc8PFNUQVI+PicpICAgICAgICAgICAgLy8gVGVtcG9yYXJ5IHBsYWNlaG9sZGVyIGZvciAqXG4gICAgLnJlcGxhY2UoLzw8R0xPQlNUQVI+PlxcLy9nLCAnKD86LiovKT8nKSAvLyAqKi8gbWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGRpcmVjdG9yaWVzIGluY2x1ZGluZyBub25lXG4gICAgLnJlcGxhY2UoLzw8R0xPQlNUQVI+Pi9nLCAnLionKSAgICAgICAvLyAqKiBtYXRjaGVzIGFueXRoaW5nXG4gICAgLnJlcGxhY2UoLzw8U1RBUj4+L2csICdbXi9dKicpICAgICAgICAvLyAqIG1hdGNoZXMgYW55dGhpbmcgZXhjZXB0IGRpcmVjdG9yeSBzZXBhcmF0b3JcbiAgICAucmVwbGFjZSgvXFwvL2csICdcXFxcLycpOyAgICAgICAgICAgICAgICAvLyBFc2NhcGUgZm9yd2FyZCBzbGFzaGVzXG4gIFxuICAvLyBDb21iaW5lIHByZWZpeCBhbmQgcGF0dGVyblxuICBjb25zdCBmdWxsUGF0dGVybiA9IHByZWZpeCArIHBhdHRlcm47XG4gIFxuICAvLyBBZGQgYW5jaG9ycyB0byBlbnN1cmUgZnVsbCBwYXRoIG1hdGNoXG4gIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7ZnVsbFBhdHRlcm59JGApO1xuICBcbiAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIHJlZ2V4XG4gIGNhY2hlLnNldFJlZ2V4KGdsb2IsIHJlZ2V4KTtcbiAgXG4gIHJldHVybiByZWdleDtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgZmlsZSBwYXRoIGZvciBjb25zaXN0ZW50IG1hdGNoaW5nXG4gKiBIYW5kbGVzIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBhdGhzIGFjcm9zcyBkaWZmZXJlbnQgcGxhdGZvcm1zXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIENvbnZlcnQgYmFja3NsYXNoZXMgdG8gZm9yd2FyZCBzbGFzaGVzIGZvciBXaW5kb3dzIHBhdGhzXG4gIGxldCBub3JtYWxpemVkID0gZmlsZVBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICBcbiAgLy8gUmVtb3ZlIGR1cGxpY2F0ZSBzbGFzaGVzXG4gIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnJlcGxhY2UoL1xcLysvZywgJy8nKTtcbiAgXG4gIC8vIFJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZiBwcmVzZW50XG4gIGlmIChub3JtYWxpemVkLmVuZHNXaXRoKCcvJykgJiYgbm9ybWFsaXplZC5sZW5ndGggPiAxKSB7XG4gICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc2xpY2UoMCwgLTEpO1xuICB9XG4gIFxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJlbGF0aXZlIHBhdGggZnJvbSBhYnNvbHV0ZSBwYXRoXG4gKiBIYW5kbGVzIHZhcmlvdXMgQ0kvQ0QgYW5kIGxvY2FsIGRldmVsb3BtZW50IHBhdGggZm9ybWF0c1xuICovXG5mdW5jdGlvbiBnZXRSZWxhdGl2ZVBhdGgoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUGF0aChhYnNvbHV0ZVBhdGgpO1xuICBcbiAgLy8gSWYgYWxyZWFkeSBhIHJlbGF0aXZlIHBhdGgsIHJldHVybiBhcy1pc1xuICBpZiAoIW5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLycpICYmICFub3JtYWxpemVkLm1hdGNoKC9eW0EtWl06L2kpKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIH1cbiAgXG4gIC8vIERlZmluZSBjb21tb24gcHJvamVjdCBzb3VyY2UgZGlyZWN0b3JpZXNcbiAgY29uc3QgcHJvamVjdERpcnMgPSBbJ3NyYy8nLCAnX190ZXN0c19fLycsICdzY3JpcHRzLycsICdkb2NzLycsICd0ZXN0LycsICd0ZXN0cy8nLCAnbGliLyddO1xuICBcbiAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgY29tbW9uIHByb2plY3QgZGlyZWN0b3JpZXMgaW4gdGhlIHBhdGhcbiAgbGV0IGJlc3RNYXRjaCA9IHsgaW5kZXg6IC0xLCBkaXI6ICcnLCByZWxhdGl2ZVBhdGg6ICcnIH07XG4gIFxuICBmb3IgKGNvbnN0IGRpciBvZiBwcm9qZWN0RGlycykge1xuICAgIC8vIExvb2sgZm9yIC9kaXIgcGF0dGVybiAod2l0aCBsZWFkaW5nIHNsYXNoIHRvIGF2b2lkIGZhbHNlIG1hdGNoZXMpXG4gICAgY29uc3Qgc2VhcmNoUGF0dGVybiA9IGAvJHtkaXJ9YDtcbiAgICBjb25zdCBpbmRleCA9IG5vcm1hbGl6ZWQubGFzdEluZGV4T2Yoc2VhcmNoUGF0dGVybik7XG4gICAgXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIC8vIEV4dHJhY3QgZXZlcnl0aGluZyBhZnRlciB0aGUgcGFyZW50IG9mIHRoaXMgZGlyZWN0b3J5XG4gICAgICAvLyBGb3IgZXhhbXBsZTogL2hvbWUvdXNlci9wcm9qZWN0L3NyYy9maWxlLnRzIC0+IHNyYy9maWxlLnRzXG4gICAgICBjb25zdCBkaXJTdGFydEluZGV4ID0gaW5kZXggKyAxOyAvLyBTa2lwIHRoZSBsZWFkaW5nIHNsYXNoXG4gICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBub3JtYWxpemVkLnN1YnN0cmluZyhkaXJTdGFydEluZGV4KTtcbiAgICAgIFxuICAgICAgLy8gVmVyaWZ5IHRoaXMgbG9va3MgbGlrZSBhIHZhbGlkIHByb2plY3QgZmlsZVxuICAgICAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKGRpcikgJiYgcmVsYXRpdmVQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgbWF0Y2ggdGhhdCBhcHBlYXJzIGxhdGVzdCBpbiB0aGUgcGF0aCAobW9zdCBzcGVjaWZpYylcbiAgICAgICAgaWYgKGluZGV4ID4gYmVzdE1hdGNoLmluZGV4KSB7XG4gICAgICAgICAgYmVzdE1hdGNoID0geyBpbmRleCwgZGlyLCByZWxhdGl2ZVBhdGggfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gSWYgd2UgZm91bmQgYSBtYXRjaCwgcmV0dXJuIGl0XG4gIGlmIChiZXN0TWF0Y2guaW5kZXggPj0gMCkge1xuICAgIHJldHVybiBiZXN0TWF0Y2gucmVsYXRpdmVQYXRoO1xuICB9XG4gIFxuICAvLyBGYWxsYmFjazogVHJ5IHRvIGZpbmQgY29tbW9uIGZpbGUgcGF0dGVybnMgdGhhdCBpbmRpY2F0ZSBwcm9qZWN0IGZpbGVzXG4gIGNvbnN0IGZpbGVQYXR0ZXJucyA9IFtcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLltqdF1zeD8kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLmpzb24kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLnlhP21sJC8sXG4gICAgL1xcL3BhY2thZ2VcXC5qc29uJC8sXG4gICAgL1xcL3BhY2thZ2UtbG9ja1xcLmpzb24kLyxcbiAgICAvXFwvdHNjb25maWcuKlxcLmpzb24kLyxcbiAgICAvXFwvXFwuLipyY1xcLmpzb24kLyAgLy8gLmVzbGludHJjLmpzb24sIGV0Yy5cbiAgXTtcbiAgXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBmaWxlUGF0dGVybnMpIHtcbiAgICBjb25zdCBtYXRjaCA9IG5vcm1hbGl6ZWQubWF0Y2gocGF0dGVybik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAvLyBGaW5kIHdoZXJlIHRoZSBtYXRjaCBzdGFydHMgYW5kIGV4dHJhY3QgZnJvbSB0aGVyZVxuICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IG5vcm1hbGl6ZWQuaW5kZXhPZihtYXRjaFswXSk7XG4gICAgICBpZiAobWF0Y2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkLnN1YnN0cmluZyhtYXRjaEluZGV4ICsgMSk7IC8vIFNraXAgbGVhZGluZyAvXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBMYXN0IHJlc29ydDogaWYgcGF0aCBjb250YWlucyBjb21tb24gZXh0ZW5zaW9ucywgdHJ5IHRvIGV4dHJhY3QgYSByZWFzb25hYmxlIHJlbGF0aXZlIHBhdGhcbiAgaWYgKG5vcm1hbGl6ZWQubWF0Y2goL1xcLih0c3xqc3x0c3h8anN4fGpzb258eWFtbHx5bWwpJC8pKSB7XG4gICAgLy8gRmluZCB0aGUgbGFzdCBzZWdtZW50IHRoYXQgbG9va3MgbGlrZSBhIHByb2plY3QgZGlyZWN0b3J5XG4gICAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemVkLnNwbGl0KCcvJyk7XG4gICAgZm9yIChsZXQgaSA9IHNlZ21lbnRzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAocHJvamVjdERpcnMuc29tZShkaXIgPT4gZGlyLnN0YXJ0c1dpdGgoc2VnbWVudHNbaV0pKSkge1xuICAgICAgICByZXR1cm4gc2VnbWVudHMuc2xpY2UoaSkuam9pbignLycpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igcm9vdC1sZXZlbCBmaWxlcyBsaWtlIHBhY2thZ2UtbG9jay5qc29uLCBqdXN0IHJldHVybiB0aGUgZmlsZW5hbWVcbiAgICBjb25zdCBmaWxlbmFtZSA9IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICByZXR1cm4gZmlsZW5hbWU7XG4gICAgfVxuICB9XG4gIFxuICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgcGF0aCBpZiB3ZSBjYW4ndCBleHRyYWN0IHJlbGF0aXZlXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmluZGluZyBzaG91bGQgYmUgc3VwcHJlc3NlZFxuICogT3B0aW1pemVkIHdpdGggY2FjaGluZyBhbmQgZWFybHkgcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkU3VwcHJlc3MocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghZmlsZVBhdGgpIHJldHVybiBmYWxzZTtcbiAgXG4gIC8vIE5vcm1hbGl6ZSBwYXRocyBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGgpO1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGgobm9ybWFsaXplZFBhdGgpO1xuICBcbiAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoKTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBcbiAgLy8gUHJvY2VzcyBzdXBwcmVzc2lvbnMgd2l0aCBlYXJseSByZXR1cm5zXG4gIGZvciAoY29uc3Qgc3VwcHJlc3Npb24gb2Ygc3VwcHJlc3Npb25zKSB7XG4gICAgLy8gU2tpcCBpZiBydWxlIGRvZXNuJ3QgbWF0Y2hcbiAgICBpZiAoc3VwcHJlc3Npb24ucnVsZSAhPT0gJyonICYmIHN1cHByZXNzaW9uLnJ1bGUgIT09IHJ1bGVJZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIFxuICAgIC8vIEhhbmRsZSBnbG9iYWwgc3VwcHJlc3Npb25zIChubyBmaWxlIHNwZWNpZmllZClcbiAgICBpZiAoIXN1cHByZXNzaW9uLmZpbGUpIHtcbiAgICAgIGNhY2hlLnNldChydWxlSWQsIHJlbGF0aXZlUGF0aCwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZXhhY3QgZmlsZSBtYXRjaCAobW9zdCBjb21tb24gY2FzZSlcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZSA9PT0gcmVsYXRpdmVQYXRoIHx8IHN1cHByZXNzaW9uLmZpbGUgPT09IG5vcm1hbGl6ZWRQYXRoKSB7XG4gICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIHBhdHRlcm4gbWF0Y2ggb25seSBpZiBmaWxlIGNvbnRhaW5zIHdpbGRjYXJkc1xuICAgIGlmIChzdXBwcmVzc2lvbi5maWxlLmluY2x1ZGVzKCcqJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gZ2xvYlRvUmVnZXgoc3VwcHJlc3Npb24uZmlsZSk7XG4gICAgICAgIGlmIChyZWdleC50ZXN0KHJlbGF0aXZlUGF0aCkgfHwgcmVnZXgudGVzdChub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEludmFsaWQgc3VwcHJlc3Npb24gcGF0dGVybiBcIiR7c3VwcHJlc3Npb24uZmlsZX1cIjpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBOb3Qgc3VwcHJlc3NlZFxuICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIGZhbHNlKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENsZWFyIHN1cHByZXNzaW9uIGNhY2hlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclN1cHByZXNzaW9uQ2FjaGUoKTogdm9pZCB7XG4gIGNhY2hlLmNsZWFyKCk7XG59XG5cbi8qKlxuICogR2V0IHN1cHByZXNzaW9uIHN0YXRpc3RpY3MgZm9yIHJlcG9ydGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VwcHJlc3Npb25TdGF0cygpOiB7IFxuICB0b3RhbDogbnVtYmVyOyBcbiAgYnlSdWxlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBieUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufSB7XG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBzdXBwcmVzc2lvbnMubGVuZ3RoLFxuICAgIGJ5UnVsZToge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgICBieUNhdGVnb3J5OiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gIH07XG4gIFxuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIENvdW50IGJ5IHJ1bGVcbiAgICBzdGF0cy5ieVJ1bGVbc3VwcHJlc3Npb24ucnVsZV0gPSAoc3RhdHMuYnlSdWxlW3N1cHByZXNzaW9uLnJ1bGVdIHx8IDApICsgMTtcbiAgICBcbiAgICAvLyBDb3VudCBieSBjYXRlZ29yeSAoZXh0cmFjdCBmcm9tIHJ1bGUgcHJlZml4KVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gc3VwcHJlc3Npb24ucnVsZS5zcGxpdCgnLScpWzBdO1xuICAgIHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldID0gKHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldIHx8IDApICsgMTtcbiAgfVxuICBcbiAgcmV0dXJuIHN0YXRzO1xufVxuXG4vLyBWYWxpZGF0ZSBzdXBwcmVzc2lvbnMgb24gbW9kdWxlIGxvYWRcbmNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZVN1cHByZXNzaW9ucygpO1xuaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICBsb2dnZXIud2FybignU3VwcHJlc3Npb24gY29uZmlndXJhdGlvbiB3YXJuaW5nczonLCB2YWxpZGF0aW9uRXJyb3JzKTtcbn0iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"ServerSetup.d.ts","sourceRoot":"","sources":["../../src/server/ServerSetup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAUvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAqB;;IAOtC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IASzD;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,YAAY,IAAI,kBAAkB;IAIlC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAa3B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,kBAAkB;;;CAKnB"}
1
+ {"version":3,"file":"ServerSetup.d.ts","sourceRoot":"","sources":["../../src/server/ServerSetup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAUvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAqB;;IAQtC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAUzD;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,YAAY,IAAI,kBAAkB;IAIlC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAa3B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,kBAAkB;;;CAKnB"}
@@ -10,15 +10,17 @@ import { getCollectionTools } from './tools/CollectionTools.js';
10
10
  // import { getConfigTools } from './tools/ConfigTools.js'; // DEPRECATED - replaced by dollhouse_config
11
11
  import { getConfigToolsV2 } from './tools/ConfigToolsV2.js';
12
12
  import { getAuthTools } from './tools/AuthTools.js';
13
- // import { getPortfolioTools } from './tools/PortfolioTools.js'; // DEPRECATED - replaced by sync_portfolio
13
+ import { getPortfolioTools } from './tools/PortfolioTools.js';
14
14
  import { getBuildInfoTools } from './tools/BuildInfoTools.js';
15
15
  import { UnicodeValidator } from '../security/validators/unicodeValidator.js';
16
16
  import { SecurityMonitor } from '../security/securityMonitor.js';
17
17
  import { logger } from '../utils/logger.js';
18
18
  import { ToolDiscoveryCache } from '../utils/ToolCache.js';
19
+ // ConfigWizardCheck import removed - auto-trigger disabled for v1.8.0
19
20
  export class ServerSetup {
20
21
  toolRegistry;
21
22
  toolCache;
23
+ // wizardCheck removed - auto-trigger disabled for v1.8.0
22
24
  constructor() {
23
25
  this.toolRegistry = new ToolRegistry();
24
26
  this.toolCache = new ToolDiscoveryCache();
@@ -27,6 +29,7 @@ export class ServerSetup {
27
29
  * Initialize the server with all tools and handlers
28
30
  */
29
31
  setupServer(server, instance) {
32
+ // wizardCheck parameter removed - auto-trigger disabled for v1.8.0
30
33
  // Register all tools
31
34
  this.registerTools(instance);
32
35
  // Setup request handlers
@@ -48,9 +51,8 @@ export class ServerSetup {
48
51
  // this.toolRegistry.registerMany(getUserTools(instance));
49
52
  // Register auth tools
50
53
  this.toolRegistry.registerMany(getAuthTools(instance));
51
- // DEPRECATED: Old portfolio tools - replaced by sync_portfolio
52
- // Comment out to remove from tool list, but keep for reference during transition
53
- // this.toolRegistry.registerMany(getPortfolioTools(instance));
54
+ // Portfolio tools (including sync_portfolio with new safety features)
55
+ this.toolRegistry.registerMany(getPortfolioTools(instance));
54
56
  // DEPRECATED: Old config tools - replaced by dollhouse_config
55
57
  // Comment out to remove from tool list, but keep for reference during transition
56
58
  // this.toolRegistry.registerMany(getConfigTools(instance));
@@ -106,7 +108,10 @@ export class ServerSetup {
106
108
  }
107
109
  // Normalize Unicode in all string arguments to prevent security bypasses
108
110
  const normalizedArgs = this.normalizeArgumentsUnicode(args, name);
109
- return await handler(normalizedArgs);
111
+ const response = await handler(normalizedArgs);
112
+ // Wizard auto-trigger removed for v1.8.0
113
+ // Manual wizard still available via config tool with action: 'wizard'
114
+ return response;
110
115
  }
111
116
  catch (error) {
112
117
  if (error instanceof McpError) {
@@ -190,4 +195,4 @@ export class ServerSetup {
190
195
  };
191
196
  }
192
197
  }
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL1NlcnZlclNldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLG9HQUFvRztBQUNwRyx3R0FBd0c7QUFDeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELDRHQUE0RztBQUM1RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNELE1BQU0sT0FBTyxXQUFXO0lBQ2QsWUFBWSxDQUFlO0lBQzNCLFNBQVMsQ0FBcUI7SUFFdEM7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVE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Q0FBK0M7UUFDL0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFFOUQscUNBQXFDO1FBQ3JDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUMvQixJQUFJLEVBQUUsd0JBQXdCO1lBQzlCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLGlDQUFpQztZQUN6QyxPQUFPLEVBQUUsMkNBQTJDO1NBQ3JELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1NBQ3JDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcnZlciBzZXR1cCBhbmQgaW5pdGlhbGl6YXRpb25cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2ZXIgfSBmcm9tIFwiQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IENhbGxUb29sUmVxdWVzdFNjaGVtYSwgRXJyb3JDb2RlLCBMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLCBNY3BFcnJvciB9IGZyb20gXCJAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBUb29sUmVnaXN0cnkgfSBmcm9tICcuL3Rvb2xzL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBnZXRQZXJzb25hRXhwb3J0SW1wb3J0VG9vbHMgfSBmcm9tICcuL3Rvb2xzL1BlcnNvbmFUb29scy5qcyc7XG5pbXBvcnQgeyBnZXRFbGVtZW50VG9vbHMgfSBmcm9tICcuL3Rvb2xzL0VsZW1lbnRUb29scy5qcyc7XG5pbXBvcnQgeyBnZXRDb2xsZWN0aW9uVG9vbHMgfSBmcm9tICcuL3Rvb2xzL0NvbGxlY3Rpb25Ub29scy5qcyc7XG4vLyBpbXBvcnQgeyBnZXRVc2VyVG9vbHMgfSBmcm9tICcuL3Rvb2xzL1VzZXJUb29scy5qcyc7IC8vIERFUFJFQ0FURUQgLSByZXBsYWNlZCBieSBkb2xsaG91c2VfY29uZmlnXG4vLyBpbXBvcnQgeyBnZXRDb25maWdUb29scyB9IGZyb20gJy4vdG9vbHMvQ29uZmlnVG9vbHMuanMnOyAvLyBERVBSRUNBVEVEIC0gcmVwbGFjZWQgYnkgZG9sbGhvdXNlX2NvbmZpZ1xuaW1wb3J0IHsgZ2V0Q29uZmlnVG9vbHNWMiB9IGZyb20gJy4vdG9vbHMvQ29uZmlnVG9vbHNWMi5qcyc7XG5pbXBvcnQgeyBnZXRBdXRoVG9vbHMgfSBmcm9tICcuL3Rvb2xzL0F1dGhUb29scy5qcyc7XG4vLyBpbXBvcnQgeyBnZXRQb3J0Zm9saW9Ub29scyB9IGZyb20gJy4vdG9vbHMvUG9ydGZvbGlvVG9vbHMuanMnOyAvLyBERVBSRUNBVEVEIC0gcmVwbGFjZWQgYnkgc3luY19wb3J0Zm9saW9cbmltcG9ydCB7IGdldEJ1aWxkSW5mb1Rvb2xzIH0gZnJvbSAnLi90b29scy9CdWlsZEluZm9Ub29scy5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBUb29sRGlzY292ZXJ5Q2FjaGUgfSBmcm9tICcuLi91dGlscy9Ub29sQ2FjaGUuanMnO1xuXG5leHBvcnQgY2xhc3MgU2VydmVyU2V0dXAge1xuICBwcml2YXRlIHRvb2xSZWdpc3RyeTogVG9vbFJlZ2lzdHJ5O1xuICBwcml2YXRlIHRvb2xDYWNoZTogVG9vbERpc2NvdmVyeUNhY2hlO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50b29sUmVnaXN0cnkgPSBuZXcgVG9vbFJlZ2lzdHJ5KCk7XG4gICAgdGhpcy50b29sQ2FjaGUgPSBuZXcgVG9vbERpc2NvdmVyeUNhY2hlKCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBzZXJ2ZXIgd2l0aCBhbGwgdG9vbHMgYW5kIGhhbmRsZXJzXG4gICAqL1xuICBzZXR1cFNlcnZlcihzZXJ2ZXI6IFNlcnZlciwgaW5zdGFuY2U6IElUb29sSGFuZGxlcik6IHZvaWQge1xuICAgIC8vIFJlZ2lzdGVyIGFsbCB0b29sc1xuICAgIHRoaXMucmVnaXN0ZXJUb29scyhpbnN0YW5jZSk7XG4gICAgXG4gICAgLy8gU2V0dXAgcmVxdWVzdCBoYW5kbGVyc1xuICAgIHRoaXMuc2V0dXBMaXN0VG9vbHNIYW5kbGVyKHNlcnZlcik7XG4gICAgdGhpcy5zZXR1cENhbGxUb29sSGFuZGxlcihzZXJ2ZXIpO1xuICB9XG4gIFxuICAvKipcbiAgICogUmVnaXN0ZXIgYWxsIHRvb2wgY2F0ZWdvcmllcyBhbmQgaW52YWxpZGF0ZSBjYWNoZVxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlclRvb2xzKGluc3RhbmNlOiBJVG9vbEhhbmRsZXIpOiB2b2lkIHtcbiAgICAvLyBSZWdpc3RlciBlbGVtZW50IHRvb2xzIChuZXcgZ2VuZXJpYyB0b29scyBmb3IgYWxsIGVsZW1lbnQgdHlwZXMpXG4gICAgdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldEVsZW1lbnRUb29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIHBlcnNvbmEgZXhwb3J0L2ltcG9ydCB0b29scyAoY29yZSBmdW5jdGlvbmFsaXR5IG1vdmVkIHRvIGVsZW1lbnQgdG9vbHMpXG4gICAgdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldFBlcnNvbmFFeHBvcnRJbXBvcnRUb29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIGNvbGxlY3Rpb24gdG9vbHNcbiAgICB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0Q29sbGVjdGlvblRvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gREVQUkVDQVRFRDogT2xkIHVzZXIgdG9vbHMgLSByZXBsYWNlZCBieSBkb2xsaG91c2VfY29uZmlnXG4gICAgLy8gQ29tbWVudCBvdXQgdG8gcmVtb3ZlIGZyb20gdG9vbCBsaXN0LCBidXQga2VlcCBmb3IgcmVmZXJlbmNlIGR1cmluZyB0cmFuc2l0aW9uXG4gICAgLy8gdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldFVzZXJUb29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIGF1dGggdG9vbHNcbiAgICB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0QXV0aFRvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gREVQUkVDQVRFRDogT2xkIHBvcnRmb2xpbyB0b29scyAtIHJlcGxhY2VkIGJ5IHN5bmNfcG9ydGZvbGlvXG4gICAgLy8gQ29tbWVudCBvdXQgdG8gcmVtb3ZlIGZyb20gdG9vbCBsaXN0LCBidXQga2VlcCBmb3IgcmVmZXJlbmNlIGR1cmluZyB0cmFuc2l0aW9uXG4gICAgLy8gdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldFBvcnRmb2xpb1Rvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gREVQUkVDQVRFRDogT2xkIGNvbmZpZyB0b29scyAtIHJlcGxhY2VkIGJ5IGRvbGxob3VzZV9jb25maWdcbiAgICAvLyBDb21tZW50IG91dCB0byByZW1vdmUgZnJvbSB0b29sIGxpc3QsIGJ1dCBrZWVwIGZvciByZWZlcmVuY2UgZHVyaW5nIHRyYW5zaXRpb25cbiAgICAvLyB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0Q29uZmlnVG9vbHMoaW5zdGFuY2UpKTtcbiAgICBcbiAgICAvLyBSZWdpc3RlciBuZXcgdW5pZmllZCBjb25maWcgYW5kIHN5bmMgdG9vbHNcbiAgICB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0Q29uZmlnVG9vbHNWMihpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIGJ1aWxkIGluZm8gdG9vbHNcbiAgICB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0QnVpbGRJbmZvVG9vbHMoaW5zdGFuY2UpKTtcbiAgICBcbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlIHNpbmNlIHRvb2xzIGhhdmUgY2hhbmdlZFxuICAgIHRoaXMudG9vbENhY2hlLmludmFsaWRhdGVUb29sTGlzdCgpO1xuICAgIGxvZ2dlci5kZWJ1ZygnVG9vbERpc2NvdmVyeUNhY2hlOiBDYWNoZSBpbnZhbGlkYXRlZCBkdWUgdG8gdG9vbCByZWdpc3RyYXRpb24nKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNldHVwIHRoZSBMaXN0VG9vbHNSZXF1ZXN0IGhhbmRsZXIgd2l0aCBjYWNoaW5nXG4gICAqL1xuICBwcml2YXRlIHNldHVwTGlzdFRvb2xzSGFuZGxlcihzZXJ2ZXI6IFNlcnZlcik6IHZvaWQge1xuICAgIHNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgXG4gICAgICAvLyBUcnkgdG8gZ2V0IGNhY2hlZCB0b29scyBmaXJzdFxuICAgICAgbGV0IHRvb2xzID0gdGhpcy50b29sQ2FjaGUuZ2V0VG9vbExpc3QoKTtcbiAgICAgIFxuICAgICAgaWYgKCF0b29scykge1xuICAgICAgICAvLyBDYWNoZSBtaXNzIC0gZmV0Y2ggdG9vbHMgZnJvbSByZWdpc3RyeVxuICAgICAgICB0b29scyA9IHRoaXMudG9vbFJlZ2lzdHJ5LmdldEFsbFRvb2xzKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0cyBmb3IgZnV0dXJlIHJlcXVlc3RzXG4gICAgICAgIHRoaXMudG9vbENhY2hlLnNldFRvb2xMaXN0KHRvb2xzKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1Rvb2xEaXNjb3ZlcnlDYWNoZTogQ2FjaGUgbWlzcyAtIGZldGNoZWQgYW5kIGNhY2hlZCB0b29scycsIHtcbiAgICAgICAgICB0b29sQ291bnQ6IHRvb2xzLmxlbmd0aCxcbiAgICAgICAgICBkdXJhdGlvbjogYCR7ZHVyYXRpb259bXNgLFxuICAgICAgICAgIHNvdXJjZTogJ3JlZ2lzdHJ5J1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdUb29sRGlzY292ZXJ5Q2FjaGU6IENhY2hlIGhpdCAtIHJldHVybmVkIGNhY2hlZCB0b29scycsIHtcbiAgICAgICAgICB0b29sQ291bnQ6IHRvb2xzLmxlbmd0aCxcbiAgICAgICAgICBkdXJhdGlvbjogYCR7ZHVyYXRpb259bXNgLFxuICAgICAgICAgIHNvdXJjZTogJ2NhY2hlJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHsgdG9vbHMgfTtcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNldHVwIHRoZSBDYWxsVG9vbFJlcXVlc3QgaGFuZGxlclxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cENhbGxUb29sSGFuZGxlcihzZXJ2ZXI6IFNlcnZlcik6IHZvaWQge1xuICAgIHNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihDYWxsVG9vbFJlcXVlc3RTY2hlbWEsIGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIGFyZ3VtZW50czogYXJncyB9ID0gcmVxdWVzdC5wYXJhbXM7XG4gICAgICBcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLnRvb2xSZWdpc3RyeS5nZXRIYW5kbGVyKG5hbWUpO1xuICAgICAgICBcbiAgICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IE1jcEVycm9yKFxuICAgICAgICAgICAgRXJyb3JDb2RlLk1ldGhvZE5vdEZvdW5kLFxuICAgICAgICAgICAgYFVua25vd24gdG9vbDogJHtuYW1lfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBOb3JtYWxpemUgVW5pY29kZSBpbiBhbGwgc3RyaW5nIGFyZ3VtZW50cyB0byBwcmV2ZW50IHNlY3VyaXR5IGJ5cGFzc2VzXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRBcmdzID0gdGhpcy5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKGFyZ3MsIG5hbWUpO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGF3YWl0IGhhbmRsZXIobm9ybWFsaXplZEFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTWNwRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGhyb3cgbmV3IE1jcEVycm9yKFxuICAgICAgICAgIEVycm9yQ29kZS5JbnRlcm5hbEVycm9yLFxuICAgICAgICAgIGBFcnJvciBleGVjdXRpbmcgdG9vbCAke25hbWV9OiAke2Vycm9yfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZSBVbmljb2RlIGluIGFsbCBzdHJpbmcgdmFsdWVzIHdpdGhpbiBhcmd1bWVudHNcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplQXJndW1lbnRzVW5pY29kZShhcmdzOiBhbnksIHRvb2xOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChhcmdzID09PSBudWxsIHx8IGFyZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuICAgIFxuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKGFyZ3MpO1xuICAgICAgaWYgKHJlc3VsdC5kZXRlY3RlZElzc3VlcyAmJiByZXN1bHQuZGV0ZWN0ZWRJc3N1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBsb2dnZXIud2FybihgVW5pY29kZSBzZWN1cml0eSBpc3N1ZXMgZGV0ZWN0ZWQgaW4gdG9vbCAke3Rvb2xOYW1lfTpgLCB7XG4gICAgICAgICAgaXNzdWVzOiByZXN1bHQuZGV0ZWN0ZWRJc3N1ZXMsXG4gICAgICAgICAgc2V2ZXJpdHk6IHJlc3VsdC5zZXZlcml0eVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQubm9ybWFsaXplZENvbnRlbnQ7XG4gICAgfVxuICAgIFxuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgICByZXR1cm4gYXJncy5tYXAoaXRlbSA9PiB0aGlzLm5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoaXRlbSwgdG9vbE5hbWUpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZDogYW55ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhcmdzKSkge1xuICAgICAgICAvLyBOb3JtYWxpemUgYm90aCBrZXlzIGFuZCB2YWx1ZXMgdG8gcHJldmVudCBVbmljb2RlIGF0dGFja3MgaW4gcHJvcGVydHkgbmFtZXNcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnID8gXG4gICAgICAgICAgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoa2V5KS5ub3JtYWxpemVkQ29udGVudCA6IGtleTtcbiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkS2V5XSA9IHRoaXMubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSh2YWx1ZSwgdG9vbE5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgfVxuICAgIFxuICAgIC8vIEZvciBub24tc3RyaW5nIHByaW1pdGl2ZSB0eXBlcywgcmV0dXJuIGFzLWlzXG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRvb2wgcmVnaXN0cnlcbiAgICovXG4gIGdldFRvb2xSZWdpc3RyeSgpOiBUb29sUmVnaXN0cnkge1xuICAgIHJldHVybiB0aGlzLnRvb2xSZWdpc3RyeTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCB0aGUgdG9vbCBkaXNjb3ZlcnkgY2FjaGVcbiAgICovXG4gIGdldFRvb2xDYWNoZSgpOiBUb29sRGlzY292ZXJ5Q2FjaGUge1xuICAgIHJldHVybiB0aGlzLnRvb2xDYWNoZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEludmFsaWRhdGUgdGhlIHRvb2wgZGlzY292ZXJ5IGNhY2hlICh1c2VmdWwgZm9yIGV4dGVybmFsIHRvb2wgY2hhbmdlcylcbiAgICovXG4gIGludmFsaWRhdGVUb29sQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy50b29sQ2FjaGUuaW52YWxpZGF0ZVRvb2xMaXN0KCk7XG4gICAgbG9nZ2VyLmluZm8oJ1Rvb2xEaXNjb3ZlcnlDYWNoZTogQ2FjaGUgbWFudWFsbHkgaW52YWxpZGF0ZWQnKTtcbiAgICBcbiAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnQgZm9yIGF1ZGl0IHRyYWlsXG4gICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgdHlwZTogJ1RPT0xfQ0FDSEVfSU5WQUxJREFURUQnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnU2VydmVyU2V0dXAuaW52YWxpZGF0ZVRvb2xDYWNoZScsXG4gICAgICBkZXRhaWxzOiAnVG9vbCBkaXNjb3ZlcnkgY2FjaGUgbWFudWFsbHkgaW52YWxpZGF0ZWQnXG4gICAgfSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBMb2cgY3VycmVudCBjYWNoZSBwZXJmb3JtYW5jZSBtZXRyaWNzXG4gICAqL1xuICBsb2dDYWNoZVBlcmZvcm1hbmNlKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbENhY2hlLmxvZ1BlcmZvcm1hbmNlKCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgY2FjaGUgc3RhdGlzdGljcyBmb3IgbW9uaXRvcmluZ1xuICAgKi9cbiAgZ2V0Q2FjaGVTdGF0aXN0aWNzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0b29sQ2FjaGU6IHRoaXMudG9vbENhY2hlLmdldFN0YXRzKClcbiAgICB9O1xuICB9XG59Il19
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmVyL1NlcnZlclNldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLG9HQUFvRztBQUNwRyx3R0FBd0c7QUFDeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0Qsc0VBQXNFO0FBRXRFLE1BQU0sT0FBTyxXQUFXO0lBQ2QsWUFBWSxDQUFlO0lBQzNCLFNBQVMsQ0FBcUI7SUFDdEMseURBQXlEO0lBRXpEO1FBQ0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZD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QUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUMxRCxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVELCtDQUErQztRQUMvQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUU5RCxxQ0FBcUM7UUFDckMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO1lBQy9CLElBQUksRUFBRSx3QkFBd0I7WUFDOUIsUUFBUSxFQUFFLEtBQUs7WUFDZixNQUFNLEVBQUUsaUNBQWlDO1lBQ3pDLE9BQU8sRUFBRSwyQ0FBMkM7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7U0FDckMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VydmVyIHNldHVwIGFuZCBpbml0aWFsaXphdGlvblxuICovXG5cbmltcG9ydCB7IFNlcnZlciB9IGZyb20gXCJAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLCBFcnJvckNvZGUsIExpc3RUb29sc1JlcXVlc3RTY2hlbWEsIE1jcEVycm9yIH0gZnJvbSBcIkBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvdHlwZXMuanNcIjtcbmltcG9ydCB7IFRvb2xSZWdpc3RyeSB9IGZyb20gJy4vdG9vbHMvVG9vbFJlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IGdldFBlcnNvbmFFeHBvcnRJbXBvcnRUb29scyB9IGZyb20gJy4vdG9vbHMvUGVyc29uYVRvb2xzLmpzJztcbmltcG9ydCB7IGdldEVsZW1lbnRUb29scyB9IGZyb20gJy4vdG9vbHMvRWxlbWVudFRvb2xzLmpzJztcbmltcG9ydCB7IGdldENvbGxlY3Rpb25Ub29scyB9IGZyb20gJy4vdG9vbHMvQ29sbGVjdGlvblRvb2xzLmpzJztcbi8vIGltcG9ydCB7IGdldFVzZXJUb29scyB9IGZyb20gJy4vdG9vbHMvVXNlclRvb2xzLmpzJzsgLy8gREVQUkVDQVRFRCAtIHJlcGxhY2VkIGJ5IGRvbGxob3VzZV9jb25maWdcbi8vIGltcG9ydCB7IGdldENvbmZpZ1Rvb2xzIH0gZnJvbSAnLi90b29scy9Db25maWdUb29scy5qcyc7IC8vIERFUFJFQ0FURUQgLSByZXBsYWNlZCBieSBkb2xsaG91c2VfY29uZmlnXG5pbXBvcnQgeyBnZXRDb25maWdUb29sc1YyIH0gZnJvbSAnLi90b29scy9Db25maWdUb29sc1YyLmpzJztcbmltcG9ydCB7IGdldEF1dGhUb29scyB9IGZyb20gJy4vdG9vbHMvQXV0aFRvb2xzLmpzJztcbmltcG9ydCB7IGdldFBvcnRmb2xpb1Rvb2xzIH0gZnJvbSAnLi90b29scy9Qb3J0Zm9saW9Ub29scy5qcyc7XG5pbXBvcnQgeyBnZXRCdWlsZEluZm9Ub29scyB9IGZyb20gJy4vdG9vbHMvQnVpbGRJbmZvVG9vbHMuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBVbmljb2RlVmFsaWRhdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvdmFsaWRhdG9ycy91bmljb2RlVmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgVG9vbERpc2NvdmVyeUNhY2hlIH0gZnJvbSAnLi4vdXRpbHMvVG9vbENhY2hlLmpzJztcbi8vIENvbmZpZ1dpemFyZENoZWNrIGltcG9ydCByZW1vdmVkIC0gYXV0by10cmlnZ2VyIGRpc2FibGVkIGZvciB2MS44LjBcblxuZXhwb3J0IGNsYXNzIFNlcnZlclNldHVwIHtcbiAgcHJpdmF0ZSB0b29sUmVnaXN0cnk6IFRvb2xSZWdpc3RyeTtcbiAgcHJpdmF0ZSB0b29sQ2FjaGU6IFRvb2xEaXNjb3ZlcnlDYWNoZTtcbiAgLy8gd2l6YXJkQ2hlY2sgcmVtb3ZlZCAtIGF1dG8tdHJpZ2dlciBkaXNhYmxlZCBmb3IgdjEuOC4wXG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRvb2xSZWdpc3RyeSA9IG5ldyBUb29sUmVnaXN0cnkoKTtcbiAgICB0aGlzLnRvb2xDYWNoZSA9IG5ldyBUb29sRGlzY292ZXJ5Q2FjaGUoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHNlcnZlciB3aXRoIGFsbCB0b29scyBhbmQgaGFuZGxlcnNcbiAgICovXG4gIHNldHVwU2VydmVyKHNlcnZlcjogU2VydmVyLCBpbnN0YW5jZTogSVRvb2xIYW5kbGVyKTogdm9pZCB7XG4gICAgLy8gd2l6YXJkQ2hlY2sgcGFyYW1ldGVyIHJlbW92ZWQgLSBhdXRvLXRyaWdnZXIgZGlzYWJsZWQgZm9yIHYxLjguMFxuICAgIC8vIFJlZ2lzdGVyIGFsbCB0b29sc1xuICAgIHRoaXMucmVnaXN0ZXJUb29scyhpbnN0YW5jZSk7XG4gICAgXG4gICAgLy8gU2V0dXAgcmVxdWVzdCBoYW5kbGVyc1xuICAgIHRoaXMuc2V0dXBMaXN0VG9vbHNIYW5kbGVyKHNlcnZlcik7XG4gICAgdGhpcy5zZXR1cENhbGxUb29sSGFuZGxlcihzZXJ2ZXIpO1xuICB9XG4gIFxuICAvKipcbiAgICogUmVnaXN0ZXIgYWxsIHRvb2wgY2F0ZWdvcmllcyBhbmQgaW52YWxpZGF0ZSBjYWNoZVxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlclRvb2xzKGluc3RhbmNlOiBJVG9vbEhhbmRsZXIpOiB2b2lkIHtcbiAgICAvLyBSZWdpc3RlciBlbGVtZW50IHRvb2xzIChuZXcgZ2VuZXJpYyB0b29scyBmb3IgYWxsIGVsZW1lbnQgdHlwZXMpXG4gICAgdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldEVsZW1lbnRUb29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIHBlcnNvbmEgZXhwb3J0L2ltcG9ydCB0b29scyAoY29yZSBmdW5jdGlvbmFsaXR5IG1vdmVkIHRvIGVsZW1lbnQgdG9vbHMpXG4gICAgdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldFBlcnNvbmFFeHBvcnRJbXBvcnRUb29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIGNvbGxlY3Rpb24gdG9vbHNcbiAgICB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0Q29sbGVjdGlvblRvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gREVQUkVDQVRFRDogT2xkIHVzZXIgdG9vbHMgLSByZXBsYWNlZCBieSBkb2xsaG91c2VfY29uZmlnXG4gICAgLy8gQ29tbWVudCBvdXQgdG8gcmVtb3ZlIGZyb20gdG9vbCBsaXN0LCBidXQga2VlcCBmb3IgcmVmZXJlbmNlIGR1cmluZyB0cmFuc2l0aW9uXG4gICAgLy8gdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldFVzZXJUb29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIFJlZ2lzdGVyIGF1dGggdG9vbHNcbiAgICB0aGlzLnRvb2xSZWdpc3RyeS5yZWdpc3Rlck1hbnkoZ2V0QXV0aFRvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gUG9ydGZvbGlvIHRvb2xzIChpbmNsdWRpbmcgc3luY19wb3J0Zm9saW8gd2l0aCBuZXcgc2FmZXR5IGZlYXR1cmVzKVxuICAgIHRoaXMudG9vbFJlZ2lzdHJ5LnJlZ2lzdGVyTWFueShnZXRQb3J0Zm9saW9Ub29scyhpbnN0YW5jZSkpO1xuICAgIFxuICAgIC8vIERFUFJFQ0FURUQ6IE9sZCBjb25maWcgdG9vbHMgLSByZXBsYWNlZCBieSBkb2xsaG91c2VfY29uZmlnXG4gICAgLy8gQ29tbWVudCBvdXQgdG8gcmVtb3ZlIGZyb20gdG9vbCBsaXN0LCBidXQga2VlcCBmb3IgcmVmZXJlbmNlIGR1cmluZyB0cmFuc2l0aW9uXG4gICAgLy8gdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldENvbmZpZ1Rvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gUmVnaXN0ZXIgbmV3IHVuaWZpZWQgY29uZmlnIGFuZCBzeW5jIHRvb2xzXG4gICAgdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldENvbmZpZ1Rvb2xzVjIoaW5zdGFuY2UpKTtcbiAgICBcbiAgICAvLyBSZWdpc3RlciBidWlsZCBpbmZvIHRvb2xzXG4gICAgdGhpcy50b29sUmVnaXN0cnkucmVnaXN0ZXJNYW55KGdldEJ1aWxkSW5mb1Rvb2xzKGluc3RhbmNlKSk7XG4gICAgXG4gICAgLy8gSW52YWxpZGF0ZSBjYWNoZSBzaW5jZSB0b29scyBoYXZlIGNoYW5nZWRcbiAgICB0aGlzLnRvb2xDYWNoZS5pbnZhbGlkYXRlVG9vbExpc3QoKTtcbiAgICBsb2dnZXIuZGVidWcoJ1Rvb2xEaXNjb3ZlcnlDYWNoZTogQ2FjaGUgaW52YWxpZGF0ZWQgZHVlIHRvIHRvb2wgcmVnaXN0cmF0aW9uJyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXR1cCB0aGUgTGlzdFRvb2xzUmVxdWVzdCBoYW5kbGVyIHdpdGggY2FjaGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cExpc3RUb29sc0hhbmRsZXIoc2VydmVyOiBTZXJ2ZXIpOiB2b2lkIHtcbiAgICBzZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIFxuICAgICAgLy8gVHJ5IHRvIGdldCBjYWNoZWQgdG9vbHMgZmlyc3RcbiAgICAgIGxldCB0b29scyA9IHRoaXMudG9vbENhY2hlLmdldFRvb2xMaXN0KCk7XG4gICAgICBcbiAgICAgIGlmICghdG9vbHMpIHtcbiAgICAgICAgLy8gQ2FjaGUgbWlzcyAtIGZldGNoIHRvb2xzIGZyb20gcmVnaXN0cnlcbiAgICAgICAgdG9vbHMgPSB0aGlzLnRvb2xSZWdpc3RyeS5nZXRBbGxUb29scygpO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdHMgZm9yIGZ1dHVyZSByZXF1ZXN0c1xuICAgICAgICB0aGlzLnRvb2xDYWNoZS5zZXRUb29sTGlzdCh0b29scyk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG4gICAgICAgIGxvZ2dlci5pbmZvKCdUb29sRGlzY292ZXJ5Q2FjaGU6IENhY2hlIG1pc3MgLSBmZXRjaGVkIGFuZCBjYWNoZWQgdG9vbHMnLCB7XG4gICAgICAgICAgdG9vbENvdW50OiB0b29scy5sZW5ndGgsXG4gICAgICAgICAgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCxcbiAgICAgICAgICBzb3VyY2U6ICdyZWdpc3RyeSdcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnVG9vbERpc2NvdmVyeUNhY2hlOiBDYWNoZSBoaXQgLSByZXR1cm5lZCBjYWNoZWQgdG9vbHMnLCB7XG4gICAgICAgICAgdG9vbENvdW50OiB0b29scy5sZW5ndGgsXG4gICAgICAgICAgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCxcbiAgICAgICAgICBzb3VyY2U6ICdjYWNoZSdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHJldHVybiB7IHRvb2xzIH07XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXR1cCB0aGUgQ2FsbFRvb2xSZXF1ZXN0IGhhbmRsZXJcbiAgICovXG4gIHByaXZhdGUgc2V0dXBDYWxsVG9vbEhhbmRsZXIoc2VydmVyOiBTZXJ2ZXIpOiB2b2lkIHtcbiAgICBzZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLCBhc3luYyAocmVxdWVzdCkgPT4ge1xuICAgICAgY29uc3QgeyBuYW1lLCBhcmd1bWVudHM6IGFyZ3MgfSA9IHJlcXVlc3QucGFyYW1zO1xuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy50b29sUmVnaXN0cnkuZ2V0SGFuZGxlcihuYW1lKTtcbiAgICAgICAgXG4gICAgICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICAgIHRocm93IG5ldyBNY3BFcnJvcihcbiAgICAgICAgICAgIEVycm9yQ29kZS5NZXRob2ROb3RGb3VuZCxcbiAgICAgICAgICAgIGBVbmtub3duIHRvb2w6ICR7bmFtZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gTm9ybWFsaXplIFVuaWNvZGUgaW4gYWxsIHN0cmluZyBhcmd1bWVudHMgdG8gcHJldmVudCBzZWN1cml0eSBieXBhc3Nlc1xuICAgICAgICBjb25zdCBub3JtYWxpemVkQXJncyA9IHRoaXMubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZShhcmdzLCBuYW1lKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlcihub3JtYWxpemVkQXJncyk7XG4gICAgICAgIFxuICAgICAgICAvLyBXaXphcmQgYXV0by10cmlnZ2VyIHJlbW92ZWQgZm9yIHYxLjguMFxuICAgICAgICAvLyBNYW51YWwgd2l6YXJkIHN0aWxsIGF2YWlsYWJsZSB2aWEgY29uZmlnIHRvb2wgd2l0aCBhY3Rpb246ICd3aXphcmQnXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBNY3BFcnJvcikge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aHJvdyBuZXcgTWNwRXJyb3IoXG4gICAgICAgICAgRXJyb3JDb2RlLkludGVybmFsRXJyb3IsXG4gICAgICAgICAgYEVycm9yIGV4ZWN1dGluZyB0b29sICR7bmFtZX06ICR7ZXJyb3J9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgbm9ybWFsaXplIFVuaWNvZGUgaW4gYWxsIHN0cmluZyB2YWx1ZXMgd2l0aGluIGFyZ3VtZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKGFyZ3M6IGFueSwgdG9vbE5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKGFyZ3MgPT09IG51bGwgfHwgYXJncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXJncztcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoYXJncyk7XG4gICAgICBpZiAocmVzdWx0LmRldGVjdGVkSXNzdWVzICYmIHJlc3VsdC5kZXRlY3RlZElzc3Vlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBVbmljb2RlIHNlY3VyaXR5IGlzc3VlcyBkZXRlY3RlZCBpbiB0b29sICR7dG9vbE5hbWV9OmAsIHtcbiAgICAgICAgICBpc3N1ZXM6IHJlc3VsdC5kZXRlY3RlZElzc3VlcyxcbiAgICAgICAgICBzZXZlcml0eTogcmVzdWx0LnNldmVyaXR5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdC5ub3JtYWxpemVkQ29udGVudDtcbiAgICB9XG4gICAgXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJncykpIHtcbiAgICAgIHJldHVybiBhcmdzLm1hcChpdGVtID0+IHRoaXMubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZShpdGVtLCB0b29sTmFtZSkpO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkOiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3MpKSB7XG4gICAgICAgIC8vIE5vcm1hbGl6ZSBib3RoIGtleXMgYW5kIHZhbHVlcyB0byBwcmV2ZW50IFVuaWNvZGUgYXR0YWNrcyBpbiBwcm9wZXJ0eSBuYW1lc1xuICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgPyBcbiAgICAgICAgICBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShrZXkpLm5vcm1hbGl6ZWRDb250ZW50IDoga2V5O1xuICAgICAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRLZXldID0gdGhpcy5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKHZhbHVlLCB0b29sTmFtZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICB9XG4gICAgXG4gICAgLy8gRm9yIG5vbi1zdHJpbmcgcHJpbWl0aXZlIHR5cGVzLCByZXR1cm4gYXMtaXNcbiAgICByZXR1cm4gYXJncztcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCB0aGUgdG9vbCByZWdpc3RyeVxuICAgKi9cbiAgZ2V0VG9vbFJlZ2lzdHJ5KCk6IFRvb2xSZWdpc3RyeSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFJlZ2lzdHJ5O1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IHRoZSB0b29sIGRpc2NvdmVyeSBjYWNoZVxuICAgKi9cbiAgZ2V0VG9vbENhY2hlKCk6IFRvb2xEaXNjb3ZlcnlDYWNoZSB7XG4gICAgcmV0dXJuIHRoaXMudG9vbENhY2hlO1xuICB9XG4gIFxuICAvKipcbiAgICogSW52YWxpZGF0ZSB0aGUgdG9vbCBkaXNjb3ZlcnkgY2FjaGUgKHVzZWZ1bCBmb3IgZXh0ZXJuYWwgdG9vbCBjaGFuZ2VzKVxuICAgKi9cbiAgaW52YWxpZGF0ZVRvb2xDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xDYWNoZS5pbnZhbGlkYXRlVG9vbExpc3QoKTtcbiAgICBsb2dnZXIuaW5mbygnVG9vbERpc2NvdmVyeUNhY2hlOiBDYWNoZSBtYW51YWxseSBpbnZhbGlkYXRlZCcpO1xuICAgIFxuICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3IgYXVkaXQgdHJhaWxcbiAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICB0eXBlOiAnVE9PTF9DQUNIRV9JTlZBTElEQVRFRCcsXG4gICAgICBzZXZlcml0eTogJ0xPVycsXG4gICAgICBzb3VyY2U6ICdTZXJ2ZXJTZXR1cC5pbnZhbGlkYXRlVG9vbENhY2hlJyxcbiAgICAgIGRldGFpbHM6ICdUb29sIGRpc2NvdmVyeSBjYWNoZSBtYW51YWxseSBpbnZhbGlkYXRlZCdcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIExvZyBjdXJyZW50IGNhY2hlIHBlcmZvcm1hbmNlIG1ldHJpY3NcbiAgICovXG4gIGxvZ0NhY2hlUGVyZm9ybWFuY2UoKTogdm9pZCB7XG4gICAgdGhpcy50b29sQ2FjaGUubG9nUGVyZm9ybWFuY2UoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBjYWNoZSBzdGF0aXN0aWNzIGZvciBtb25pdG9yaW5nXG4gICAqL1xuICBnZXRDYWNoZVN0YXRpc3RpY3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvb2xDYWNoZTogdGhpcy50b29sQ2FjaGUuZ2V0U3RhdHMoKVxuICAgIH07XG4gIH1cbn0iXX0=
@@ -108,8 +108,8 @@ export function getCollectionTools(server) {
108
108
  },
109
109
  {
110
110
  tool: {
111
- name: "install_content",
112
- description: "Install AI customization elements from the collection to your local portfolio. Use this when users ask to download/install any element type (personas, skills, templates, or agents). Examples: 'install the creative writer persona', 'get the code review skill', 'download the meeting notes template'.",
111
+ name: "install_collection_content",
112
+ description: "Install AI customization elements FROM the DollhouseMCP collection TO your local portfolio. Use this when users ask to download/install any element type (personas, skills, templates, or agents) from the collection. Examples: 'install the creative writer persona from the collection', 'get the code review skill from collection', 'download the meeting notes template from collection'.",
113
113
  inputSchema: {
114
114
  type: "object",
115
115
  properties: {
@@ -125,8 +125,8 @@ export function getCollectionTools(server) {
125
125
  },
126
126
  {
127
127
  tool: {
128
- name: "submit_content",
129
- description: "Upload a single element (persona, skill, template, etc.) to your personal GitHub portfolio. After uploading to your portfolio, you'll have the option to also submit it to the community collection. Use this when users want to upload a specific element to their GitHub portfolio or share with the community. This handles all content types including personas (AI behavioral profiles).",
128
+ name: "submit_collection_content",
129
+ description: "Submit a single element TO the DollhouseMCP community collection (via your GitHub portfolio). This first uploads the element to your personal GitHub portfolio, then creates a submission issue for the community collection. Use this when users want to share their custom elements with the community. This handles all content types including personas (AI behavioral profiles).",
130
130
  inputSchema: {
131
131
  type: "object",
132
132
  properties: {
@@ -155,7 +155,7 @@ export function getCollectionTools(server) {
155
155
  // PERFORMANCE FIX #548: Removed deprecated marketplace aliases
156
156
  // These duplicated existing collection tools and increased MCP overhead
157
157
  // Users should migrate to: browse_collection, search_collection,
158
- // get_collection_content, install_content, submit_content
158
+ // get_collection_content, install_collection_content, submit_collection_content
159
159
  return tools;
160
160
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9Db2xsZWN0aW9uVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBb0I7SUFDckQsTUFBTSxLQUFLLEdBQWtEO1FBQzNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSx3UEFBd1A7Z0JBQ3JRLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3dCQUNELElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsdUhBQXVIO3lCQUNySTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdRQUF3UTtnQkFDclIsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUss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Q0osSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLCtYQUErWDtnQkFDNVksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDM0Q7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsNkJBQTZCO2dCQUNuQyxXQUFXLEVBQUUsa0tBQWtLO2dCQUMvSyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUU7U0FDakQ7S0FDRixDQUFDO0lBRUYsK0RBQStEO0lBQy9ELHdFQUF3RTtJQUN4RSxrRUFBa0U7SUFDbEUsMERBQTBEO0lBRTFELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29sbGVjdGlvbi1yZWxhdGVkIHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKi9cblxuaW1wb3J0IHsgVG9vbERlZmluaXRpb24gfSBmcm9tICcuL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICBjb25zdCB0b29sczogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+ID0gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJicm93c2VfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJCcm93c2UgY29udGVudCBmcm9tIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBieSBzZWN0aW9uIGFuZCBjb250ZW50IHR5cGUuIENvbnRlbnQgdHlwZXMgaW5jbHVkZSBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcyksIHNraWxscywgYWdlbnRzLCBhbmQgdGVtcGxhdGVzLiBXaGVuIHVzZXJzIGFzayBmb3IgJ3BlcnNvbmFzJywgdGhleSdyZSByZWZlcnJpbmcgdG8gY29udGVudCBpbiB0aGUgcGVyc29uYXMgdHlwZS5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHNlY3Rpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29sbGVjdGlvbiBzZWN0aW9uIHRvIGJyb3dzZSAobGlicmFyeSwgc2hvd2Nhc2UsIGNhdGFsb2cpLiBMZWF2ZSBlbXB0eSB0byBzZWUgYWxsIHNlY3Rpb25zLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29udGVudCB0eXBlIHdpdGhpbiB0aGUgbGlicmFyeSBzZWN0aW9uOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIG9yIHRlbXBsYXRlcy4gT25seSB1c2VkIHdoZW4gc2VjdGlvbiBpcyAnbGlicmFyeScuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmJyb3dzZUNvbGxlY3Rpb24oYXJncz8uc2VjdGlvbiwgYXJncz8udHlwZSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggZm9yIGNvbnRlbnQgaW4gdGhlIGNvbGxlY3Rpb24gYnkga2V5d29yZHMuIFRoaXMgc2VhcmNoZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzIHRoYXQgdXNlcnMgYWN0aXZhdGUgdG8gY2hhbmdlIEFJIGJlaGF2aW9yKSwgc2tpbGxzLCBhZ2VudHMsIHByb21wdHMsIGV0Yy4gV2hlbiBhIHVzZXIgYXNrcyB0byAnZmluZCBhIHBlcnNvbmEnLCBzZWFyY2ggaW4gdGhlIGNvbGxlY3Rpb24uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggcXVlcnkgZm9yIGZpbmRpbmcgY29udGVudC4gRXhhbXBsZXM6ICdjcmVhdGl2ZSB3cml0ZXInLCAnZXhwbGFpbiBsaWtlIEknbSBmaXZlJywgJ2NvZGluZyBhc3Npc3RhbnQnLiBVc2VycyB0eXBpY2FsbHkgc2VhcmNoIGZvciBwZXJzb25hcyBieSB0aGVpciBiZWhhdmlvcmFsIHRyYWl0cyBvciBuYW1lcy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicXVlcnlcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNlYXJjaENvbGxlY3Rpb24oYXJncy5xdWVyeSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvbl9lbmhhbmNlZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmhhbmNlZCBzZWFyY2ggZm9yIGNvbGxlY3Rpb24gY29udGVudCB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgYW5kIHNvcnRpbmcuIFVzZSB0aGlzIGZvciBhZHZhbmNlZCBzZWFyY2hlcyB3aGVuIHVzZXJzIG5lZWQgc3BlY2lmaWMgY29udGVudCB0eXBlcyBvciB3YW50IHRvIGJyb3dzZSByZXN1bHRzIGluIHBhZ2VzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2VhcmNoIHF1ZXJ5IGZvciBmaW5kaW5nIGNvbnRlbnQuIEV4YW1wbGVzOiAnY3JlYXRpdmUgd3JpdGVyJywgJ2V4cGxhaW4gbGlrZSBJJ20gZml2ZScsICdjb2RpbmcgYXNzaXN0YW50Jy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbGVtZW50VHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgY29udGVudCB0eXBlOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIHRlbXBsYXRlcywgdG9vbHMsIGVuc2VtYmxlcywgbWVtb3JpZXMsIHByb21wdHNcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicGVyc29uYXNcIiwgXCJza2lsbHNcIiwgXCJhZ2VudHNcIiwgXCJ0ZW1wbGF0ZXNcIiwgXCJ0b29sc1wiLCBcImVuc2VtYmxlc1wiLCBcIm1lbW9yaWVzXCIsIFwicHJvbXB0c1wiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZpbHRlciBieSBjYXRlZ29yeTogY3JlYXRpdmUsIHByb2Zlc3Npb25hbCwgZWR1Y2F0aW9uYWwsIHBlcnNvbmFsLCBnYW1pbmdcIixcbiAgICAgICAgICAgICAgZW51bTogW1wiY3JlYXRpdmVcIiwgXCJwcm9mZXNzaW9uYWxcIiwgXCJlZHVjYXRpb25hbFwiLCBcInBlcnNvbmFsXCIsIFwiZ2FtaW5nXCJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQYWdlIG51bWJlciBmb3IgcGFnaW5hdGVkIHJlc3VsdHMgKGRlZmF1bHQ6IDEpXCIsXG4gICAgICAgICAgICAgIG1pbmltdW06IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlU2l6ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLCBcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIG9mIHJlc3VsdHMgcGVyIHBhZ2UgKGRlZmF1bHQ6IDI1LCBtYXg6IDEwMClcIixcbiAgICAgICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICAgICAgbWF4aW11bTogMTAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29ydEJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNvcnQgcmVzdWx0cyBieSByZWxldmFuY2UsIG5hbWUsIG9yIGRhdGVcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicmVsZXZhbmNlXCIsIFwibmFtZVwiLCBcImRhdGVcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJxdWVyeVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuc2VhcmNoQ29sbGVjdGlvbkVuaGFuY2VkKGFyZ3MucXVlcnksIHtcbiAgICAgICAgZWxlbWVudFR5cGU6IGFyZ3MuZWxlbWVudFR5cGUsXG4gICAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxuICAgICAgICBwYWdlOiBhcmdzLnBhZ2UsXG4gICAgICAgIHBhZ2VTaXplOiBhcmdzLnBhZ2VTaXplLFxuICAgICAgICBzb3J0Qnk6IGFyZ3Muc29ydEJ5XG4gICAgICB9KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGNvbnRlbnQgZnJvbSB0aGUgY29sbGVjdGlvbi4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gJ3NlZSBkZXRhaWxzIGFib3V0IGEgcGVyc29uYScgb3IgJ3Nob3cgbWUgdGhlIGNyZWF0aXZlIHdyaXRlciBwZXJzb25hJy4gUGVyc29uYXMgYXJlIGEgdHlwZSBvZiBjb250ZW50IHRoYXQgZGVmaW5lcyBBSSBiZWhhdmlvcmFsIHByb2ZpbGVzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgY29sbGVjdGlvbiBwYXRoIHRvIHRoZSBBSSBjdXN0b21pemF0aW9uIGVsZW1lbnQuIEZvcm1hdDogJ2xpYnJhcnkvW3R5cGVdL1tlbGVtZW50XS5tZCcgd2hlcmUgdHlwZSBpcyBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cy4gRXhhbXBsZTogJ2xpYnJhcnkvc2tpbGxzL2NvZGUtcmV2aWV3Lm1kJy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGF0aFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZ2V0Q29sbGVjdGlvbkNvbnRlbnQoYXJncy5wYXRoKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImluc3RhbGxfY29udGVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbnN0YWxsIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudHMgZnJvbSB0aGUgY29sbGVjdGlvbiB0byB5b3VyIGxvY2FsIHBvcnRmb2xpby4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gZG93bmxvYWQvaW5zdGFsbCBhbnkgZWxlbWVudCB0eXBlIChwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cykuIEV4YW1wbGVzOiAnaW5zdGFsbCB0aGUgY3JlYXRpdmUgd3JpdGVyIHBlcnNvbmEnLCAnZ2V0IHRoZSBjb2RlIHJldmlldyBza2lsbCcsICdkb3dubG9hZCB0aGUgbWVldGluZyBub3RlcyB0ZW1wbGF0ZScuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xsZWN0aW9uIHBhdGggdG8gdGhlIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudC4gRm9ybWF0OiAnbGlicmFyeS9bdHlwZV0vW2VsZW1lbnRdLm1kJyB3aGVyZSB0eXBlIGlzIHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgb3IgYWdlbnRzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbnN0YWxsQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic3VibWl0X2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVXBsb2FkIGEgc2luZ2xlIGVsZW1lbnQgKHBlcnNvbmEsIHNraWxsLCB0ZW1wbGF0ZSwgZXRjLikgdG8geW91ciBwZXJzb25hbCBHaXRIdWIgcG9ydGZvbGlvLiBBZnRlciB1cGxvYWRpbmcgdG8geW91ciBwb3J0Zm9saW8sIHlvdSdsbCBoYXZlIHRoZSBvcHRpb24gdG8gYWxzbyBzdWJtaXQgaXQgdG8gdGhlIGNvbW11bml0eSBjb2xsZWN0aW9uLiBVc2UgdGhpcyB3aGVuIHVzZXJzIHdhbnQgdG8gdXBsb2FkIGEgc3BlY2lmaWMgZWxlbWVudCB0byB0aGVpciBHaXRIdWIgcG9ydGZvbGlvIG9yIHNoYXJlIHdpdGggdGhlIGNvbW11bml0eS4gVGhpcyBoYW5kbGVzIGFsbCBjb250ZW50IHR5cGVzIGluY2x1ZGluZyBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcykuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb250ZW50IG5hbWUgb3IgZmlsZW5hbWUgdG8gc3VibWl0LiBGb3IgcGVyc29uYXMsIHVzZSB0aGUgcGVyc29uYSdzIG5hbWUgKGUuZy4sICdDcmVhdGl2ZSBXcml0ZXInKSBvciBmaWxlbmFtZS4gVGhlIHN5c3RlbSB3aWxsIHJlY29nbml6ZSBpdCBhcyBhIHBlcnNvbmEgYmFzZWQgb24gaXRzIG1ldGFkYXRhLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJjb250ZW50XCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5zdWJtaXRDb250ZW50KGFyZ3MuY29udGVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGhlYWx0aCBzdGF0dXMgYW5kIHN0YXRpc3RpY3MgZm9yIHRoZSBjb2xsZWN0aW9uIGNhY2hlIHN5c3RlbS4gVGhpcyBoZWxwcyBtb25pdG9yIGNhY2hlIHBlcmZvcm1hbmNlIGFuZCBpZGVudGlmeSBhbnkgaXNzdWVzIHdpdGggb2ZmbGluZSBicm93c2luZyBjYXBhYmlsaXR5LlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uQ2FjaGVIZWFsdGgoKVxuICAgIH1cbiAgXTtcblxuICAvLyBQRVJGT1JNQU5DRSBGSVggIzU0ODogUmVtb3ZlZCBkZXByZWNhdGVkIG1hcmtldHBsYWNlIGFsaWFzZXNcbiAgLy8gVGhlc2UgZHVwbGljYXRlZCBleGlzdGluZyBjb2xsZWN0aW9uIHRvb2xzIGFuZCBpbmNyZWFzZWQgTUNQIG92ZXJoZWFkXG4gIC8vIFVzZXJzIHNob3VsZCBtaWdyYXRlIHRvOiBicm93c2VfY29sbGVjdGlvbiwgc2VhcmNoX2NvbGxlY3Rpb24sIFxuICAvLyBnZXRfY29sbGVjdGlvbl9jb250ZW50LCBpbnN0YWxsX2NvbnRlbnQsIHN1Ym1pdF9jb250ZW50XG4gIFxuICByZXR1cm4gdG9vbHM7XG59Il19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvblRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90b29scy9Db2xsZWN0aW9uVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBb0I7SUFDckQsTUFBTSxLQUFLLEdBQWtEO1FBQzNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFdBQVcsRUFBRSx3UEFBd1A7Z0JBQ3JRLFdBQVcsRUFBRTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxFQUFFOzRCQUNQLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw2RkFBNkY7eUJBQzNHO3dCQUNELElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsdUhBQXVIO3lCQUNySTtxQkFDRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzNFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLHdRQUF3UTtnQkFDclIsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUss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Q0osSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsV0FBVyxFQUFFLHVYQUF1WDtnQkFDcFksV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNMQUFzTDt5QkFDcE07cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDM0Q7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsNkJBQTZCO2dCQUNuQyxXQUFXLEVBQUUsa0tBQWtLO2dCQUMvSyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUU7U0FDakQ7S0FDRixDQUFDO0lBRUYsK0RBQStEO0lBQy9ELHdFQUF3RTtJQUN4RSxrRUFBa0U7SUFDbEUsZ0ZBQWdGO0lBRWhGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29sbGVjdGlvbi1yZWxhdGVkIHRvb2wgZGVmaW5pdGlvbnMgYW5kIGhhbmRsZXJzXG4gKi9cblxuaW1wb3J0IHsgVG9vbERlZmluaXRpb24gfSBmcm9tICcuL1Rvb2xSZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBJVG9vbEhhbmRsZXIgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICBjb25zdCB0b29sczogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogYW55IH0+ID0gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJicm93c2VfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJCcm93c2UgY29udGVudCBmcm9tIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBieSBzZWN0aW9uIGFuZCBjb250ZW50IHR5cGUuIENvbnRlbnQgdHlwZXMgaW5jbHVkZSBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcyksIHNraWxscywgYWdlbnRzLCBhbmQgdGVtcGxhdGVzLiBXaGVuIHVzZXJzIGFzayBmb3IgJ3BlcnNvbmFzJywgdGhleSdyZSByZWZlcnJpbmcgdG8gY29udGVudCBpbiB0aGUgcGVyc29uYXMgdHlwZS5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHNlY3Rpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29sbGVjdGlvbiBzZWN0aW9uIHRvIGJyb3dzZSAobGlicmFyeSwgc2hvd2Nhc2UsIGNhdGFsb2cpLiBMZWF2ZSBlbXB0eSB0byBzZWUgYWxsIHNlY3Rpb25zLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ29udGVudCB0eXBlIHdpdGhpbiB0aGUgbGlicmFyeSBzZWN0aW9uOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIG9yIHRlbXBsYXRlcy4gT25seSB1c2VkIHdoZW4gc2VjdGlvbiBpcyAnbGlicmFyeScuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmJyb3dzZUNvbGxlY3Rpb24oYXJncz8uc2VjdGlvbiwgYXJncz8udHlwZSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggZm9yIGNvbnRlbnQgaW4gdGhlIGNvbGxlY3Rpb24gYnkga2V5d29yZHMuIFRoaXMgc2VhcmNoZXMgYWxsIGNvbnRlbnQgdHlwZXMgaW5jbHVkaW5nIHBlcnNvbmFzIChBSSBiZWhhdmlvcmFsIHByb2ZpbGVzIHRoYXQgdXNlcnMgYWN0aXZhdGUgdG8gY2hhbmdlIEFJIGJlaGF2aW9yKSwgc2tpbGxzLCBhZ2VudHMsIHByb21wdHMsIGV0Yy4gV2hlbiBhIHVzZXIgYXNrcyB0byAnZmluZCBhIHBlcnNvbmEnLCBzZWFyY2ggaW4gdGhlIGNvbGxlY3Rpb24uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZWFyY2ggcXVlcnkgZm9yIGZpbmRpbmcgY29udGVudC4gRXhhbXBsZXM6ICdjcmVhdGl2ZSB3cml0ZXInLCAnZXhwbGFpbiBsaWtlIEknbSBmaXZlJywgJ2NvZGluZyBhc3Npc3RhbnQnLiBVc2VycyB0eXBpY2FsbHkgc2VhcmNoIGZvciBwZXJzb25hcyBieSB0aGVpciBiZWhhdmlvcmFsIHRyYWl0cyBvciBuYW1lcy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicXVlcnlcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLnNlYXJjaENvbGxlY3Rpb24oYXJncy5xdWVyeSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJzZWFyY2hfY29sbGVjdGlvbl9lbmhhbmNlZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmhhbmNlZCBzZWFyY2ggZm9yIGNvbGxlY3Rpb24gY29udGVudCB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgYW5kIHNvcnRpbmcuIFVzZSB0aGlzIGZvciBhZHZhbmNlZCBzZWFyY2hlcyB3aGVuIHVzZXJzIG5lZWQgc3BlY2lmaWMgY29udGVudCB0eXBlcyBvciB3YW50IHRvIGJyb3dzZSByZXN1bHRzIGluIHBhZ2VzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU2VhcmNoIHF1ZXJ5IGZvciBmaW5kaW5nIGNvbnRlbnQuIEV4YW1wbGVzOiAnY3JlYXRpdmUgd3JpdGVyJywgJ2V4cGxhaW4gbGlrZSBJJ20gZml2ZScsICdjb2RpbmcgYXNzaXN0YW50Jy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbGVtZW50VHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaWx0ZXIgYnkgY29udGVudCB0eXBlOiBwZXJzb25hcywgc2tpbGxzLCBhZ2VudHMsIHRlbXBsYXRlcywgdG9vbHMsIGVuc2VtYmxlcywgbWVtb3JpZXMsIHByb21wdHNcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicGVyc29uYXNcIiwgXCJza2lsbHNcIiwgXCJhZ2VudHNcIiwgXCJ0ZW1wbGF0ZXNcIiwgXCJ0b29sc1wiLCBcImVuc2VtYmxlc1wiLCBcIm1lbW9yaWVzXCIsIFwicHJvbXB0c1wiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkZpbHRlciBieSBjYXRlZ29yeTogY3JlYXRpdmUsIHByb2Zlc3Npb25hbCwgZWR1Y2F0aW9uYWwsIHBlcnNvbmFsLCBnYW1pbmdcIixcbiAgICAgICAgICAgICAgZW51bTogW1wiY3JlYXRpdmVcIiwgXCJwcm9mZXNzaW9uYWxcIiwgXCJlZHVjYXRpb25hbFwiLCBcInBlcnNvbmFsXCIsIFwiZ2FtaW5nXCJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQYWdlIG51bWJlciBmb3IgcGFnaW5hdGVkIHJlc3VsdHMgKGRlZmF1bHQ6IDEpXCIsXG4gICAgICAgICAgICAgIG1pbmltdW06IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdlU2l6ZToge1xuICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLCBcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTnVtYmVyIG9mIHJlc3VsdHMgcGVyIHBhZ2UgKGRlZmF1bHQ6IDI1LCBtYXg6IDEwMClcIixcbiAgICAgICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICAgICAgbWF4aW11bTogMTAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29ydEJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlNvcnQgcmVzdWx0cyBieSByZWxldmFuY2UsIG5hbWUsIG9yIGRhdGVcIixcbiAgICAgICAgICAgICAgZW51bTogW1wicmVsZXZhbmNlXCIsIFwibmFtZVwiLCBcImRhdGVcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJxdWVyeVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuc2VhcmNoQ29sbGVjdGlvbkVuaGFuY2VkKGFyZ3MucXVlcnksIHtcbiAgICAgICAgZWxlbWVudFR5cGU6IGFyZ3MuZWxlbWVudFR5cGUsXG4gICAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxuICAgICAgICBwYWdlOiBhcmdzLnBhZ2UsXG4gICAgICAgIHBhZ2VTaXplOiBhcmdzLnBhZ2VTaXplLFxuICAgICAgICBzb3J0Qnk6IGFyZ3Muc29ydEJ5XG4gICAgICB9KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX2NvbnRlbnRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGNvbnRlbnQgZnJvbSB0aGUgY29sbGVjdGlvbi4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gJ3NlZSBkZXRhaWxzIGFib3V0IGEgcGVyc29uYScgb3IgJ3Nob3cgbWUgdGhlIGNyZWF0aXZlIHdyaXRlciBwZXJzb25hJy4gUGVyc29uYXMgYXJlIGEgdHlwZSBvZiBjb250ZW50IHRoYXQgZGVmaW5lcyBBSSBiZWhhdmlvcmFsIHByb2ZpbGVzLlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGF0aDoge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgY29sbGVjdGlvbiBwYXRoIHRvIHRoZSBBSSBjdXN0b21pemF0aW9uIGVsZW1lbnQuIEZvcm1hdDogJ2xpYnJhcnkvW3R5cGVdL1tlbGVtZW50XS5tZCcgd2hlcmUgdHlwZSBpcyBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cy4gRXhhbXBsZTogJ2xpYnJhcnkvc2tpbGxzL2NvZGUtcmV2aWV3Lm1kJy5cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wicGF0aFwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuZ2V0Q29sbGVjdGlvbkNvbnRlbnQoYXJncy5wYXRoKVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImluc3RhbGxfY29sbGVjdGlvbl9jb250ZW50XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkluc3RhbGwgQUkgY3VzdG9taXphdGlvbiBlbGVtZW50cyBGUk9NIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBUTyB5b3VyIGxvY2FsIHBvcnRmb2xpby4gVXNlIHRoaXMgd2hlbiB1c2VycyBhc2sgdG8gZG93bmxvYWQvaW5zdGFsbCBhbnkgZWxlbWVudCB0eXBlIChwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIG9yIGFnZW50cykgZnJvbSB0aGUgY29sbGVjdGlvbi4gRXhhbXBsZXM6ICdpbnN0YWxsIHRoZSBjcmVhdGl2ZSB3cml0ZXIgcGVyc29uYSBmcm9tIHRoZSBjb2xsZWN0aW9uJywgJ2dldCB0aGUgY29kZSByZXZpZXcgc2tpbGwgZnJvbSBjb2xsZWN0aW9uJywgJ2Rvd25sb2FkIHRoZSBtZWV0aW5nIG5vdGVzIHRlbXBsYXRlIGZyb20gY29sbGVjdGlvbicuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb2xsZWN0aW9uIHBhdGggdG8gdGhlIEFJIGN1c3RvbWl6YXRpb24gZWxlbWVudC4gRm9ybWF0OiAnbGlicmFyeS9bdHlwZV0vW2VsZW1lbnRdLm1kJyB3aGVyZSB0eXBlIGlzIHBlcnNvbmFzLCBza2lsbHMsIHRlbXBsYXRlcywgb3IgYWdlbnRzLiBFeGFtcGxlOiAnbGlicmFyeS9za2lsbHMvY29kZS1yZXZpZXcubWQnLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJwYXRoXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5pbnN0YWxsQ29udGVudChhcmdzLnBhdGgpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTdWJtaXQgYSBzaW5nbGUgZWxlbWVudCBUTyB0aGUgRG9sbGhvdXNlTUNQIGNvbW11bml0eSBjb2xsZWN0aW9uICh2aWEgeW91ciBHaXRIdWIgcG9ydGZvbGlvKS4gVGhpcyBmaXJzdCB1cGxvYWRzIHRoZSBlbGVtZW50IHRvIHlvdXIgcGVyc29uYWwgR2l0SHViIHBvcnRmb2xpbywgdGhlbiBjcmVhdGVzIGEgc3VibWlzc2lvbiBpc3N1ZSBmb3IgdGhlIGNvbW11bml0eSBjb2xsZWN0aW9uLiBVc2UgdGhpcyB3aGVuIHVzZXJzIHdhbnQgdG8gc2hhcmUgdGhlaXIgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIGNvbW11bml0eS4gVGhpcyBoYW5kbGVzIGFsbCBjb250ZW50IHR5cGVzIGluY2x1ZGluZyBwZXJzb25hcyAoQUkgYmVoYXZpb3JhbCBwcm9maWxlcykuXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb250ZW50IG5hbWUgb3IgZmlsZW5hbWUgdG8gc3VibWl0LiBGb3IgcGVyc29uYXMsIHVzZSB0aGUgcGVyc29uYSdzIG5hbWUgKGUuZy4sICdDcmVhdGl2ZSBXcml0ZXInKSBvciBmaWxlbmFtZS4gVGhlIHN5c3RlbSB3aWxsIHJlY29nbml6ZSBpdCBhcyBhIHBlcnNvbmEgYmFzZWQgb24gaXRzIG1ldGFkYXRhLlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJjb250ZW50XCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiBhbnkpID0+IHNlcnZlci5zdWJtaXRDb250ZW50KGFyZ3MuY29udGVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGhlYWx0aCBzdGF0dXMgYW5kIHN0YXRpc3RpY3MgZm9yIHRoZSBjb2xsZWN0aW9uIGNhY2hlIHN5c3RlbS4gVGhpcyBoZWxwcyBtb25pdG9yIGNhY2hlIHBlcmZvcm1hbmNlIGFuZCBpZGVudGlmeSBhbnkgaXNzdWVzIHdpdGggb2ZmbGluZSBicm93c2luZyBjYXBhYmlsaXR5LlwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uQ2FjaGVIZWFsdGgoKVxuICAgIH1cbiAgXTtcblxuICAvLyBQRVJGT1JNQU5DRSBGSVggIzU0ODogUmVtb3ZlZCBkZXByZWNhdGVkIG1hcmtldHBsYWNlIGFsaWFzZXNcbiAgLy8gVGhlc2UgZHVwbGljYXRlZCBleGlzdGluZyBjb2xsZWN0aW9uIHRvb2xzIGFuZCBpbmNyZWFzZWQgTUNQIG92ZXJoZWFkXG4gIC8vIFVzZXJzIHNob3VsZCBtaWdyYXRlIHRvOiBicm93c2VfY29sbGVjdGlvbiwgc2VhcmNoX2NvbGxlY3Rpb24sIFxuICAvLyBnZXRfY29sbGVjdGlvbl9jb250ZW50LCBpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudCwgc3VibWl0X2NvbGxlY3Rpb25fY29udGVudFxuICBcbiAgcmV0dXJuIHRvb2xzO1xufSJdfQ==
@@ -61,7 +61,7 @@ export function getConfigTools(server) {
61
61
  {
62
62
  tool: {
63
63
  name: "configure_collection_submission",
64
- description: "Configure automatic collection submission settings. When enabled, the submit_content tool will automatically create a submission issue in the DollhouseMCP collection repository after uploading to your portfolio.",
64
+ description: "Configure automatic collection submission settings. When enabled, the submit_collection_content tool will automatically create a submission issue in the DollhouseMCP collection repository after uploading to your portfolio.",
65
65
  inputSchema: {
66
66
  type: "object",
67
67
  properties: {
@@ -88,4 +88,4 @@ export function getConfigTools(server) {
88
88
  }
89
89
  ];
90
90
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL0NvbmZpZ1Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBS0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFvQjtJQUNqRCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLHNDQUFzQzt5QkFDcEQ7d0JBQ0QsS0FBSyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxrREFBa0Q7eUJBQ2hFO3dCQUNELFlBQVksRUFBRTs0QkFDWixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0dBQW9HO3lCQUNsSDt3QkFDRCxZQUFZLEVBQUU7NEJBQ1osSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLGlDQUFpQzt5QkFDL0M7d0JBQ0QsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSw0QkFBNEI7eUJBQzFDO3dCQUNELGNBQWMsRUFBRTs0QkFDZCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsOEJBQThCO3lCQUM1Qzt3QkFDRCxhQUFhLEVBQUU7NEJBQ2IsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLDZCQUE2Qjt5QkFDM0M7d0JBQ0QsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSwrQkFBK0I7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7U0FDeEQ7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixXQUFXLEVBQUUsNkNBQTZDO2dCQUMxRCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7U0FDM0M7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxXQUFXLEVBQUUscU5BQXFOO2dCQUNsTyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFVBQVUsRUFBRTs0QkFDVixJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsaUpBQWlKO3lCQUMvSjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3pCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzlFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGtDQUFrQztnQkFDeEMsV0FBVyxFQUFFLDBEQUEwRDtnQkFDdkUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDZCQUE2QixFQUFFO1NBQ3REO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24tcmVsYXRlZCB0b29sIGRlZmluaXRpb25zIGFuZCBoYW5kbGVyc1xuICovXG5cbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uIH0gZnJvbSAnLi9Ub29sUmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJjb25maWd1cmVfaW5kaWNhdG9yXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbmZpZ3VyZSBob3cgYWN0aXZlIHBlcnNvbmEgaW5kaWNhdG9ycyBhcmUgZGlzcGxheWVkXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgb3IgZGlzYWJsZSBwZXJzb25hIGluZGljYXRvcnNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJEaXNwbGF5IHN0eWxlOiBmdWxsLCBtaW5pbWFsLCBjb21wYWN0LCBvciBjdXN0b21cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdXN0b21Gb3JtYXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ3VzdG9tIGZvcm1hdCBzdHJpbmcgKGZvciBzdHlsZT1jdXN0b20pLiBVc2UgcGxhY2Vob2xkZXJzOiB7bmFtZX0sIHt2ZXJzaW9ufSwge2F1dGhvcn0sIHtjYXRlZ29yeX1cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmNsdWRlRW1vamk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgZW1vamkgaW4gaW5kaWNhdG9yICjwn46tKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVCcmFja2V0czoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV3JhcCBpbmRpY2F0b3IgaW4gYnJhY2tldHNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmNsdWRlVmVyc2lvbjoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSB2ZXJzaW9uIGluIGluZGljYXRvclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVBdXRob3I6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgYXV0aG9yIGluIGluZGljYXRvclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVDYXRlZ29yeToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSBjYXRlZ29yeSBpbiBpbmRpY2F0b3JcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuY29uZmlndXJlSW5kaWNhdG9yKGFyZ3MpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZ2V0X2luZGljYXRvcl9jb25maWdcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGN1cnJlbnQgcGVyc29uYSBpbmRpY2F0b3IgY29uZmlndXJhdGlvblwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldEluZGljYXRvckNvbmZpZygpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY29uZmlndXJlX2NvbGxlY3Rpb25fc3VibWlzc2lvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDb25maWd1cmUgYXV0b21hdGljIGNvbGxlY3Rpb24gc3VibWlzc2lvbiBzZXR0aW5ncy4gV2hlbiBlbmFibGVkLCB0aGUgc3VibWl0X2NvbnRlbnQgdG9vbCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgc3VibWlzc2lvbiBpc3N1ZSBpbiB0aGUgRG9sbGhvdXNlTUNQIGNvbGxlY3Rpb24gcmVwb3NpdG9yeSBhZnRlciB1cGxvYWRpbmcgdG8geW91ciBwb3J0Zm9saW8uXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBhdXRvU3VibWl0OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgYXV0b21hdGljIHN1Ym1pc3Npb24gdG8gRG9sbGhvdXNlTUNQIGNvbGxlY3Rpb24gYWZ0ZXIgcG9ydGZvbGlvIHVwbG9hZC4gV2hlbiBmYWxzZSwgY29udGVudCBpcyBvbmx5IHVwbG9hZGVkIHRvIHlvdXIgcGVyc29uYWwgcG9ydGZvbGlvLlwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wiYXV0b1N1Ym1pdFwiXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKGFyZ3M6IGFueSkgPT4gc2VydmVyLmNvbmZpZ3VyZUNvbGxlY3Rpb25TdWJtaXNzaW9uKGFyZ3MuYXV0b1N1Ym1pdClcbiAgICB9LFxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJnZXRfY29sbGVjdGlvbl9zdWJtaXNzaW9uX2NvbmZpZ1wiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJHZXQgY3VycmVudCBjb2xsZWN0aW9uIHN1Ym1pc3Npb24gY29uZmlndXJhdGlvbiBzZXR0aW5nc1wiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHNlcnZlci5nZXRDb2xsZWN0aW9uU3VibWlzc2lvbkNvbmZpZygpXG4gICAgfVxuICBdO1xufSJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL0NvbmZpZ1Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBS0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFvQjtJQUNqRCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLHNDQUFzQzt5QkFDcEQ7d0JBQ0QsS0FBSyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxrREFBa0Q7eUJBQ2hFO3dCQUNELFlBQVksRUFBRTs0QkFDWixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0dBQW9HO3lCQUNsSDt3QkFDRCxZQUFZLEVBQUU7NEJBQ1osSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLGlDQUFpQzt5QkFDL0M7d0JBQ0QsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSw0QkFBNEI7eUJBQzFDO3dCQUNELGNBQWMsRUFBRTs0QkFDZCxJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsOEJBQThCO3lCQUM1Qzt3QkFDRCxhQUFhLEVBQUU7NEJBQ2IsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLDZCQUE2Qjt5QkFDM0M7d0JBQ0QsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSwrQkFBK0I7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7U0FDeEQ7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixXQUFXLEVBQUUsNkNBQTZDO2dCQUMxRCxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7YUFDRjtZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7U0FDM0M7UUFDRDtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxXQUFXLEVBQUUsZ09BQWdPO2dCQUM3TyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFVBQVUsRUFBRTs0QkFDVixJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsaUpBQWlKO3lCQUMvSjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3pCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzlFO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGtDQUFrQztnQkFDeEMsV0FBVyxFQUFFLDBEQUEwRDtnQkFDdkUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDZCQUE2QixFQUFFO1NBQ3REO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24tcmVsYXRlZCB0b29sIGRlZmluaXRpb25zIGFuZCBoYW5kbGVyc1xuICovXG5cbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uIH0gZnJvbSAnLi9Ub29sUmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSVRvb2xIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnVG9vbHMoc2VydmVyOiBJVG9vbEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBhbnkgfT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJjb25maWd1cmVfaW5kaWNhdG9yXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbmZpZ3VyZSBob3cgYWN0aXZlIHBlcnNvbmEgaW5kaWNhdG9ycyBhcmUgZGlzcGxheWVkXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbmFibGUgb3IgZGlzYWJsZSBwZXJzb25hIGluZGljYXRvcnNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJEaXNwbGF5IHN0eWxlOiBmdWxsLCBtaW5pbWFsLCBjb21wYWN0LCBvciBjdXN0b21cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdXN0b21Gb3JtYXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ3VzdG9tIGZvcm1hdCBzdHJpbmcgKGZvciBzdHlsZT1jdXN0b20pLiBVc2UgcGxhY2Vob2xkZXJzOiB7bmFtZX0sIHt2ZXJzaW9ufSwge2F1dGhvcn0sIHtjYXRlZ29yeX1cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmNsdWRlRW1vamk6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgZW1vamkgaW4gaW5kaWNhdG9yICjwn46tKVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVCcmFja2V0czoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV3JhcCBpbmRpY2F0b3IgaW4gYnJhY2tldHNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmNsdWRlVmVyc2lvbjoge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSB2ZXJzaW9uIGluIGluZGljYXRvclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVBdXRob3I6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkluY2x1ZGUgYXV0aG9yIGluIGluZGljYXRvclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluY2x1ZGVDYXRlZ29yeToge1xuICAgICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSW5jbHVkZSBjYXRlZ29yeSBpbiBpbmRpY2F0b3JcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuY29uZmlndXJlSW5kaWNhdG9yKGFyZ3MpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiZ2V0X2luZGljYXRvcl9jb25maWdcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiR2V0IGN1cnJlbnQgcGVyc29uYSBpbmRpY2F0b3IgY29uZmlndXJhdGlvblwiLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldEluZGljYXRvckNvbmZpZygpXG4gICAgfSxcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwiY29uZmlndXJlX2NvbGxlY3Rpb25fc3VibWlzc2lvblwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDb25maWd1cmUgYXV0b21hdGljIGNvbGxlY3Rpb24gc3VibWlzc2lvbiBzZXR0aW5ncy4gV2hlbiBlbmFibGVkLCB0aGUgc3VibWl0X2NvbGxlY3Rpb25fY29udGVudCB0b29sIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSBzdWJtaXNzaW9uIGlzc3VlIGluIHRoZSBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiByZXBvc2l0b3J5IGFmdGVyIHVwbG9hZGluZyB0byB5b3VyIHBvcnRmb2xpby5cIixcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGF1dG9TdWJtaXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkVuYWJsZSBhdXRvbWF0aWMgc3VibWlzc2lvbiB0byBEb2xsaG91c2VNQ1AgY29sbGVjdGlvbiBhZnRlciBwb3J0Zm9saW8gdXBsb2FkLiBXaGVuIGZhbHNlLCBjb250ZW50IGlzIG9ubHkgdXBsb2FkZWQgdG8geW91ciBwZXJzb25hbCBwb3J0Zm9saW8uXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXCJhdXRvU3VibWl0XCJdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoYXJnczogYW55KSA9PiBzZXJ2ZXIuY29uZmlndXJlQ29sbGVjdGlvblN1Ym1pc3Npb24oYXJncy5hdXRvU3VibWl0KVxuICAgIH0sXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcImdldF9jb2xsZWN0aW9uX3N1Ym1pc3Npb25fY29uZmlnXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdldCBjdXJyZW50IGNvbGxlY3Rpb24gc3VibWlzc2lvbiBjb25maWd1cmF0aW9uIHNldHRpbmdzXCIsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogKCkgPT4gc2VydmVyLmdldENvbGxlY3Rpb25TdWJtaXNzaW9uQ29uZmlnKClcbiAgICB9XG4gIF07XG59Il19