@workflow/builders 5.0.0-beta.7 → 5.0.0-beta.8

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 (66) hide show
  1. package/dist/apply-swc-transform.js +1 -1
  2. package/dist/base-builder.d.ts.map +1 -1
  3. package/dist/base-builder.js +2 -1
  4. package/dist/build-queue.js +1 -1
  5. package/dist/config-helpers.js +1 -1
  6. package/dist/constants.js +1 -1
  7. package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
  8. package/dist/discover-entries-esbuild-plugin.js +3 -2
  9. package/dist/discover-entries-esbuild-plugin.test.js +1 -1
  10. package/dist/esbuild-tsconfig.js +1 -1
  11. package/dist/esbuild-tsconfig.test.js +1 -1
  12. package/dist/external-package-warning.test.js +1 -1
  13. package/dist/get-input-files.test.js +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/module-specifier.js +1 -1
  16. package/dist/module-specifier.test.js +1 -1
  17. package/dist/node-module-esbuild-plugin.js +1 -1
  18. package/dist/node-module-esbuild-plugin.test.js +1 -1
  19. package/dist/pseudo-package-esbuild-plugin.js +1 -1
  20. package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
  21. package/dist/request-converter.js +1 -1
  22. package/dist/resolve-sourcemap.test.js +1 -1
  23. package/dist/serde-checker.js +1 -1
  24. package/dist/standalone.js +1 -1
  25. package/dist/swc-esbuild-plugin.js +1 -1
  26. package/dist/swc-esbuild-plugin.test.js +1 -1
  27. package/dist/transform-utils.js +1 -1
  28. package/dist/transform-utils.test.js +1 -1
  29. package/dist/types.js +1 -1
  30. package/dist/vercel-build-output-api.d.ts.map +1 -1
  31. package/dist/vercel-build-output-api.js +4 -1
  32. package/dist/workflow-alias.js +1 -1
  33. package/dist/workflow-alias.test.js +1 -1
  34. package/dist/workflows-extractor.js +1 -1
  35. package/package.json +4 -4
  36. package/dist/apply-swc-transform.js.map +0 -1
  37. package/dist/base-builder.js.map +0 -1
  38. package/dist/build-queue.js.map +0 -1
  39. package/dist/config-helpers.js.map +0 -1
  40. package/dist/constants.js.map +0 -1
  41. package/dist/discover-entries-esbuild-plugin.js.map +0 -1
  42. package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
  43. package/dist/esbuild-tsconfig.js.map +0 -1
  44. package/dist/esbuild-tsconfig.test.js.map +0 -1
  45. package/dist/external-package-warning.test.js.map +0 -1
  46. package/dist/get-input-files.test.js.map +0 -1
  47. package/dist/index.js.map +0 -1
  48. package/dist/module-specifier.js.map +0 -1
  49. package/dist/module-specifier.test.js.map +0 -1
  50. package/dist/node-module-esbuild-plugin.js.map +0 -1
  51. package/dist/node-module-esbuild-plugin.test.js.map +0 -1
  52. package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
  53. package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
  54. package/dist/request-converter.js.map +0 -1
  55. package/dist/resolve-sourcemap.test.js.map +0 -1
  56. package/dist/serde-checker.js.map +0 -1
  57. package/dist/standalone.js.map +0 -1
  58. package/dist/swc-esbuild-plugin.js.map +0 -1
  59. package/dist/swc-esbuild-plugin.test.js.map +0 -1
  60. package/dist/transform-utils.js.map +0 -1
  61. package/dist/transform-utils.test.js.map +0 -1
  62. package/dist/types.js.map +0 -1
  63. package/dist/vercel-build-output-api.js.map +0 -1
  64. package/dist/workflow-alias.js.map +0 -1
  65. package/dist/workflow-alias.test.js.map +0 -1
  66. package/dist/workflows-extractor.js.map +0 -1
@@ -90,4 +90,4 @@ projectRoot) {
90
90
  workflowManifest: parsedWorkflows || {},
91
91
  };
92
92
  }
93
- //# sourceMappingURL=apply-swc-transform.js.map
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktc3djLXRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBseS1zd2MtdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUvQyxpRkFBaUY7QUFDakYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFHbEMsQ0FBQztBQUVKLFNBQVMsbUJBQW1CLENBQUMsV0FBb0I7SUFDL0MsTUFBTSxHQUFHLEdBQUcsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QyxJQUFJLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxHQUFHLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUEwQkQsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLElBQTRD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IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSc7XG5pbXBvcnQgeyBkaXJuYW1lLCBpc0Fic29sdXRlLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RGVjb3JhdG9yT3B0aW9uc0ZvckRpcmVjdG9yeSB9IGZyb20gJy4vY29uZmlnLWhlbHBlcnMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZU1vZHVsZVNwZWNpZmllciB9IGZyb20gJy4vbW9kdWxlLXNwZWNpZmllci5qcyc7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbi8vIENhY2hlIGRlY29yYXRvciBvcHRpb25zIHBlciBkaXJlY3RvcnkgLSB0c2NvbmZpZyBkb2Vzbid0IGNoYW5nZSBkdXJpbmcgYSBidWlsZFxuY29uc3QgZGVjb3JhdG9yT3B0aW9uc0NhY2hlID0gbmV3IE1hcDxcbiAgc3RyaW5nLFxuICBSZXR1cm5UeXBlPHR5cGVvZiBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5PlxuPigpO1xuXG5mdW5jdGlvbiBnZXREZWNvcmF0b3JPcHRpb25zKHByb2plY3RSb290Pzogc3RyaW5nKSB7XG4gIGNvbnN0IGN3ZCA9IHByb2plY3RSb290ID8/IHByb2Nlc3MuY3dkKCk7XG4gIGxldCBjYWNoZWQgPSBkZWNvcmF0b3JPcHRpb25zQ2FjaGUuZ2V0KGN3ZCk7XG4gIGlmICghY2FjaGVkKSB7XG4gICAgY2FjaGVkID0gZ2V0RGVjb3JhdG9yT3B0aW9uc0ZvckRpcmVjdG9yeShjd2QpO1xuICAgIGRlY29yYXRvck9wdGlvbnNDYWNoZS5zZXQoY3dkLCBjYWNoZWQpO1xuICB9XG4gIHJldHVybiBjYWNoZWQ7XG59XG5cbmV4cG9ydCB0eXBlIFdvcmtmbG93TWFuaWZlc3QgPSB7XG4gIHN0ZXBzPzoge1xuICAgIFtyZWxhdGl2ZUZpbGVOYW1lOiBzdHJpbmddOiB7XG4gICAgICBbZnVuY3Rpb25OYW1lOiBzdHJpbmddOiB7XG4gICAgICAgIHN0ZXBJZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICB3b3JrZmxvd3M/OiB7XG4gICAgW3JlbGF0aXZlRmlsZU5hbWU6IHN0cmluZ106IHtcbiAgICAgIFtmdW5jdGlvbk5hbWU6IHN0cmluZ106IHtcbiAgICAgICAgd29ya2Zsb3dJZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBjbGFzc2VzPzoge1xuICAgIFtyZWxhdGl2ZUZpbGVOYW1lOiBzdHJpbmddOiB7XG4gICAgICBbY2xhc3NOYW1lOiBzdHJpbmddOiB7XG4gICAgICAgIGNsYXNzSWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVN3Y1RyYW5zZm9ybShcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc291cmNlOiBzdHJpbmcsXG4gIG1vZGU6ICd3b3JrZmxvdycgfCAnc3RlcCcgfCAnZGV0ZWN0JyB8IGZhbHNlLFxuICAvKipcbiAgICogT3B0aW9uYWwgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSBiZWluZyB0cmFuc2Zvcm1lZC5cbiAgICogVXNlZCBmb3IgbW9kdWxlIHNwZWNpZmllciByZXNvbHV0aW9uIHdoZW4gZmlsZW5hbWUgaXMgcmVsYXRpdmUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgZmlsZW5hbWUgaXMgam9pbmVkIHdpdGggcHJvY2Vzcy5jd2QoKS5cbiAgICovXG4gIGFic29sdXRlUGF0aD86IHN0cmluZyxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHByb2plY3Qgcm9vdCB1c2VkIGZvciBtb2R1bGUgc3BlY2lmaWVyIHJlc29sdXRpb24uXG4gICAqIERlZmF1bHRzIHRvIHByb2Nlc3MuY3dkKCkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcHJvamVjdFJvb3Q/OiBzdHJpbmdcbik6IFByb21pc2U8e1xuICBjb2RlOiBzdHJpbmc7XG4gIHdvcmtmbG93TWFuaWZlc3Q6IFdvcmtmbG93TWFuaWZlc3Q7XG59PiB7XG4gIGNvbnN0IHJlc29sdmVkUHJvamVjdFJvb3QgPSBwcm9qZWN0Um9vdCA/PyBwcm9jZXNzLmN3ZCgpO1xuICBjb25zdCBkZWNvcmF0b3JPcHRpb25zID0gYXdhaXQgZ2V0RGVjb3JhdG9yT3B0aW9ucyhyZXNvbHZlZFByb2plY3RSb290KTtcblxuICBjb25zdCBzd2NQbHVnaW5QYXRoID0gcmVxdWlyZS5yZXNvbHZlKCdAd29ya2Zsb3cvc3djLXBsdWdpbicsIHtcbiAgICBwYXRoczogW2Rpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKV0sXG4gIH0pO1xuXG4gIC8vIERldGVybWluZSBpZiB0aGlzIGlzIGEgVHlwZVNjcmlwdCBmaWxlXG4gIGNvbnN0IGlzVHlwZVNjcmlwdCA9XG4gICAgZmlsZW5hbWUuZW5kc1dpdGgoJy50cycpIHx8XG4gICAgZmlsZW5hbWUuZW5kc1dpdGgoJy50c3gnKSB8fFxuICAgIGZpbGVuYW1lLmVuZHNXaXRoKCcubXRzJykgfHxcbiAgICBmaWxlbmFtZS5lbmRzV2l0aCgnLmN0cycpO1xuXG4gIC8vIFJlc29sdmUgbW9kdWxlIHNwZWNpZmllciBmb3IgcGFja2FnZXMgKG5vZGVfbW9kdWxlcyBvciB3b3Jrc3BhY2UgcGFja2FnZXMpXG4gIGNvbnN0IGFic29sdXRlRmlsZW5hbWUgPSBhYnNvbHV0ZVBhdGhcbiAgICA/IGFic29sdXRlUGF0aFxuICAgIDogaXNBYnNvbHV0ZShmaWxlbmFtZSlcbiAgICAgID8gZmlsZW5hbWVcbiAgICAgIDogam9pbihyZXNvbHZlZFByb2plY3RSb290LCBmaWxlbmFtZSk7XG4gIGNvbnN0IHsgbW9kdWxlU3BlY2lmaWVyIH0gPSByZXNvbHZlTW9kdWxlU3BlY2lmaWVyKFxuICAgIGFic29sdXRlRmlsZW5hbWUsXG4gICAgcmVzb2x2ZWRQcm9qZWN0Um9vdFxuICApO1xuXG4gIC8vIFRyYW5zZm9ybSB3aXRoIFNXQyB0byBzdXBwb3J0IHN5bnRheCBlc2J1aWxkIGRvZXNuJ3RcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhbnNmb3JtKHNvdXJjZSwge1xuICAgIGZpbGVuYW1lLFxuICAgIHN3Y3JjOiBmYWxzZSxcbiAgICBqc2M6IHtcbiAgICAgIHBhcnNlcjoge1xuICAgICAgICAuLi4oaXNUeXBlU2NyaXB0XG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHN5bnRheDogJ3R5cGVzY3JpcHQnLFxuICAgICAgICAgICAgICB0c3g6IGZpbGVuYW1lLmVuZHNXaXRoKCcudHN4JyksXG4gICAgICAgICAgICAgIGRlY29yYXRvcnM6IGRlY29yYXRvck9wdGlvbnMuZGVjb3JhdG9ycyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgc3ludGF4OiAnZWNtYXNjcmlwdCcsXG4gICAgICAgICAgICAgIGpzeDogZmlsZW5hbWUuZW5kc1dpdGgoJy5qc3gnKSxcbiAgICAgICAgICAgICAgZGVjb3JhdG9yczogZGVjb3JhdG9yT3B0aW9ucy5kZWNvcmF0b3JzLFxuICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgdGFyZ2V0OiAnZXMyMDIyJyxcbiAgICAgIGV4cGVyaW1lbnRhbDogbW9kZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHBsdWdpbnM6IFtbc3djUGx1Z2luUGF0aCwgeyBtb2RlLCBtb2R1bGVTcGVjaWZpZXIgfV1dLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICBydW50aW1lOiAncHJlc2VydmUnLFxuICAgICAgICB9LFxuICAgICAgICBsZWdhY3lEZWNvcmF0b3I6IGRlY29yYXRvck9wdGlvbnMubGVnYWN5RGVjb3JhdG9yLFxuICAgICAgICBkZWNvcmF0b3JNZXRhZGF0YTogZGVjb3JhdG9yT3B0aW9ucy5kZWNvcmF0b3JNZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBwcm9wZXIgc291cmNlIG1hcCBzdXBwb3J0IGFzIHRoZXlcbiAgICAvLyB3b24ndCBldmVuIGJlIHVzZWQgaW4gTm9kZS5qcyBieSBkZWZhdWx0IHVubGVzcyB3ZVxuICAgIC8vIGludGVyY2VwdCBlcnJvcnMgYW5kIGFwcGx5IHRoZW0gb3Vyc2VsdmVzXG4gICAgc291cmNlTWFwczogZmFsc2UsXG4gICAgbWluaWZ5OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3Qgd29ya2Zsb3dDb21tZW50TWF0Y2ggPSByZXN1bHQuY29kZS5tYXRjaChcbiAgICAvXFwvXFwqXFwqX19pbnRlcm5hbF93b3JrZmxvd3Moey4qP30pXFwqXFwvL3NcbiAgKTtcblxuICBjb25zdCBwYXJzZWRXb3JrZmxvd3MgPSBKU09OLnBhcnNlKFxuICAgIHdvcmtmbG93Q29tbWVudE1hdGNoPy5bMV0gfHwgJ3t9J1xuICApIGFzIFdvcmtmbG93TWFuaWZlc3Q7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiByZXN1bHQuY29kZSxcbiAgICB3b3JrZmxvd01hbmlmZXN0OiBwYXJzZWRXb3JrZmxvd3MgfHwge30sXG4gIH07XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"base-builder.d.ts","sourceRoot":"","sources":["../src/base-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-builder.d.ts","sourceRoot":"","sources":["../src/base-builder.ts"],"names":[],"mappings":"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"}
@@ -163,6 +163,7 @@ export class BaseBuilder {
163
163
  '**/node_modules/**',
164
164
  '**/.git/**',
165
165
  '**/.next/**',
166
+ '**/.nitro/**',
166
167
  '**/.nuxt/**',
167
168
  '**/.output/**',
168
169
  '**/.vercel/**',
@@ -1434,4 +1435,4 @@ export const OPTIONS = handler;`;
1434
1435
  return result;
1435
1436
  }
1436
1437
  }
1437
- //# sourceMappingURL=base-builder.js.map
1438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jhc2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyx1QkFBdUIsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDM0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFL0M7Ozs7O0dBS0c7QUFDSCxNQUFNLDZCQUE2QixHQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxLQUFLLEdBQUcsQ0FBQztBQUU3RCxNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3RDLFFBQVE7SUFDUixRQUFRO0lBQ1IsVUFBVTtJQUNWLE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBeUI7SUFFekIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDMUQsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUNkLEtBQUssR0FBRyxDQUFDO1FBQ1QsS0FBSyxPQUFPO1lBQ1YsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLEdBQUcsQ0FBQztRQUNULEtBQUssTUFBTTtZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2Q7WUFDRSxJQUFJLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLEtBQXNCLENBQUM7WUFDaEMsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsNENBQTRDLEtBQUssSUFBSTtnQkFDbkQscUVBQXFFLENBQ3hFLENBQUM7WUFDRixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxhQUFhLENBQUMsT0FBaUI7SUFDNUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLElBQUksR0FBRyxDQUNMLENBQ0UsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDLElBQUksRUFBRSxDQUNULENBQ0YsQ0FBQztBQUNKLENBQUM7QUFRRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBZ0IsV0FBVztJQUNyQixNQUFNLENBQWlCO0lBRWpDOzs7T0FHRztJQUNLLHNCQUFzQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFbkQsWUFBWSxNQUFzQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYyxvQkFBb0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBYyx3QkFBd0I7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVMsa0JBQWtCLENBQUMsR0FBRyxJQUFlO1FBQzdDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRU8sNEJBQTRCLENBQUMsR0FBRyxJQUFlO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxHQUFHLElBQWU7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsK0JBQStCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEdBQUcsSUFBZTtRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssd0JBQXdCLENBQUMsTUFBYztRQUk3QyxJQUFJLE1BQU0sS0FBSyxLQUFLO1lBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hELE9BQU87WUFDTCxNQUFNLEVBQ0osMEhBQTBIO2dCQUMxSCxrR0FBa0c7Z0JBQ2xHLCtFQUErRTtZQUNqRixNQUFNLEVBQUU7Z0JBQ04saUJBQWlCLEVBQUUsbUJBQW1CO2dCQUN0QyxxQkFBcUIsRUFBRSx1QkFBdUI7YUFDL0M7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssbUJBQW1CLENBQUMsTUFBYztRQUN4QyxJQUFJLE1BQU0sS0FBSyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEMsT0FBTyxvSEFBb0gsQ0FBQztJQUM5SCxDQUFDO0lBUUQ7OztPQUdHO0lBQ08sS0FBSyxDQUFDLGdCQUFnQjtRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ08sS0FBSyxDQUFDLGFBQWE7UUFDM0IsTUFBTSxNQUFNLEdBQUc7WUFDYixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLGFBQWE7WUFDYixjQUFjO1lBQ2QsYUFBYTtZQUNiLGVBQWU7WUFDZixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLHdCQUF3QjtZQUN4Qiw0QkFBNEI7WUFDNUIsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxjQUFjO1lBQ2QsYUFBYTtZQUNiLG1CQUFtQjtTQUNwQixDQUFDO1FBRUYscUVBQXFFO1FBQ3JFLG1FQUFtRTtRQUNuRSxzRUFBc0U7UUFDdEUsZ0VBQWdFO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDLENBQUMsc0NBQXNDLENBQUMsRUFBRTtnQkFDcEQsR0FBRztnQkFDSCxNQUFNO2dCQUNOLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEdBQUcsRUFBRSxJQUFJO2FBQ1YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGlCQUFpQixHQUN2QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWhCOztPQUVHO0lBQ0ssTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNoRCxhQUFhO1FBQ2IsYUFBYTtLQUNkLENBQUMsQ0FBQztJQUVIOzs7OztPQUtHO0lBQ0ssS0FBSyxDQUFDLGlDQUFpQztRQUM3QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU07WUFBRSxPQUFPO1FBRXRDLEtBQUssTUFBTSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFTO1lBQ25ELElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsU0FBUztZQUVuRCxJQUNFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNuQixHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDbkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNqQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixDQUFDO2dCQUNELFNBQVM7WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILGtFQUFrRTtnQkFDbEUsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQztvQkFDSCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxlQUFlLEVBQUU7d0JBQ3pELEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO3FCQUNoQyxDQUFDLENBQUM7b0JBQ0gsTUFBTSxhQUFhLEdBQUcsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FHdkMsQ0FBQztvQkFDRixNQUFNLFlBQVksR0FDaEIsT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFFBQVE7d0JBQ3hDLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSTt3QkFDN0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7d0JBQ2xDLENBQUMsQ0FBRSxPQUFPLENBQUMsWUFBd0M7d0JBQ25ELENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ1QsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLEtBQUssUUFBUTt3QkFDNUMsT0FBTyxDQUFDLGdCQUFnQixLQUFLLElBQUk7d0JBQ2pDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3RDLENBQUMsQ0FBRSxPQUFPLENBQUMsZ0JBQTRDO3dCQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNULG1CQUFtQjt3QkFDakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7NEJBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AseURBQXlEO2dCQUMzRCxDQUFDO2dCQUVELHlDQUF5QztnQkFDekMsc0VBQXNFO2dCQUN0RSxzRUFBc0U7Z0JBQ3RFLG1FQUFtRTtnQkFDbkUsb0VBQW9FO2dCQUNwRSxpRUFBaUU7Z0JBQ2pFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztnQkFDbkMsSUFBSSxDQUFDO29CQUNILE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO3dCQUNyQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztxQkFDaEMsQ0FBQyxDQUFDO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2hELFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO29CQUNqQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztvQkFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNkLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO29CQUMvQixDQUFDO2dCQUNILENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLCtEQUErRDtnQkFDakUsQ0FBQztnQkFFRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsUUFBUTtvQkFBRSxTQUFTO2dCQUUxRCxpREFBaUQ7Z0JBQ2pELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxjQUFjO29CQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxVQUFVO29CQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxRQUFRO29CQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnQkFFbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFckMsT0FBTyxDQUFDLElBQUksQ0FDVixLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyw0Q0FBNEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtvQkFDaE4sc0JBQXNCLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLDZFQUE2RTtvQkFDcEgsY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyw2QkFBNkIsQ0FDcEosQ0FBQztZQUNKLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1Asa0VBQWtFO1lBQ3BFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxlQUFlLENBQzdCLE1BQWdCLEVBQ2hCLE1BQWMsRUFDZCxZQUFxQjtRQUVyQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFzQjtZQUMvQixlQUFlLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDMUIsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDOUIsb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUU7U0FDaEMsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVqQyxpRUFBaUU7UUFDakUsa0VBQWtFO1FBQ2xFLGtFQUFrRTtRQUNsRSx5REFBeUQ7UUFDekQsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsd0RBQXdEO1FBQ3hELE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxlQUFlLENBQ25ELE1BQU0sRUFDTixrQkFBa0IsQ0FDbkIsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsTUFBTSxXQUFXLEdBQUcsdUJBQXVCO1lBQ3pDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLHVCQUF1QixDQUFDO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFWCxNQUFNLHFCQUFxQixHQUN6QixZQUFZLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEQsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLHlCQUF5QixDQUM1RCxxQkFBcUIsQ0FDdEIsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDbEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFdBQVc7Z0JBQ1gsT0FBTyxFQUFFO29CQUNQLDJCQUEyQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7aUJBQzlEO2dCQUNELFFBQVEsRUFBRSxNQUFNO2dCQUNoQixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNO2dCQUNOLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUNyQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsR0FBRyxzQkFBc0I7Z0JBQ3pCLGdFQUFnRTtnQkFDaEUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksRUFBRTthQUM3QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7UUFFZCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLGlDQUFpQyxFQUNqQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxhQUFhLElBQUksQ0FDbEMsQ0FBQztRQUVGLDBEQUEwRDtRQUMxRCxNQUFNLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsY0FBYyxDQUMxQixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsS0FBZTtRQUVmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLFVBQVUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbEYsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQztZQUNILElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDO29CQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDbkQsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCx3REFBd0Q7b0JBQ3hELCtFQUErRTtvQkFDL0UsSUFBSyxDQUEyQixDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDL0QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQy9CO2dCQUNFLEdBQUcsUUFBUTtnQkFDWCxHQUFHLFNBQVM7YUFDYixFQUNELElBQUksRUFDSixDQUFDLENBQ0YsQ0FBQztZQUVGLHFEQUFxRDtZQUNyRCxxRkFBcUY7WUFDckYsaUZBQWlGO1lBQ2pGLE1BQU0sUUFBUSxHQUFHLEdBQUcsVUFBVSxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUM7WUFDckQsTUFBTSxTQUFTLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssa0JBQWtCLENBQ3hCLE1BQTRDLEVBQzVDLEtBQWEsRUFDYixZQUFZLEdBQUcsSUFBSSxFQUNuQixPQUVDO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDL0MsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO1lBQ25DLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbkIsTUFBTSxRQUFRLEdBQUcsVUFBVSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNqRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxrQkFBa0IsQ0FDMUIsdUJBQXVCLEtBQUssTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQzVEO29CQUNFLElBQUksRUFBRSx3REFBd0QsS0FBSywrREFBK0Q7aUJBQ25JLENBQ0YsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFDRSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0I7WUFDMUIsTUFBTSxDQUFDLFFBQVE7WUFDZixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzFCLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNyQixPQUFPLENBQUMsSUFBSSxDQUNWLFVBQVUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FDdEYsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQyxZQUFvQjtRQUM5QyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEUsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixFQUFFLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FDdkUsS0FBSyxFQUNMLEdBQUcsQ0FDSixDQUFDO1FBQ0Ysd0RBQXdEO1FBQ3hELElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLFlBQVksR0FBRyxZQUFZO2lCQUN4QixLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUNWLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztpQkFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQ2hDLFVBQVUsRUFDVixNQUFNLEdBQUcsS0FBSyxFQUNkLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIscUNBQXFDLEVBQ3JDLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLG9CQUFvQixHQUFHLEtBQUssR0FpQjdCO1FBSUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsTUFBTSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLDRCQUE0QixDQUFDO1FBRWxELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxlQUFlLENBQ2hELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDaEIsNEJBQTRCLENBQzdCLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZCxNQUFNLElBQUksa0JBQWtCLENBQzFCLDJEQUEyRCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFDeEU7Z0JBQ0UsSUFBSSxFQUFFLG9EQUFvRDtnQkFDMUQsS0FBSyxFQUFFLEdBQUc7YUFDWCxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsc0VBQXNFO1FBQ3RFLDBFQUEwRTtRQUMxRSxNQUFNLFVBQVUsR0FDZCxpQkFBaUI7WUFDakIsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvRCwyRkFBMkY7UUFDM0YsK0VBQStFO1FBQy9FLHNGQUFzRjtRQUN0RixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RSxtQ0FBbUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUNqQyxTQUFTO1lBQ1QsYUFBYTtZQUNiLGNBQWM7U0FDZixDQUFDLENBQUM7UUFFSCxtREFBbUQ7UUFDbkQsd0VBQXdFO1FBQ3hFLDRFQUE0RTtRQUM1RSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2lCQUNuRCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztpQkFDbkIsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QixNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELCtEQUErRDtZQUMvRCxxRUFBcUU7WUFDckUsbUVBQW1FO1lBQ25FLG1FQUFtRTtZQUNuRSxzREFBc0Q7WUFDdEQsTUFBTSxrQ0FBa0MsR0FDdEMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDOUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDekMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ25ELENBQUMsQ0FDQyx1QkFBdUIsS0FBSyx1QkFBdUI7b0JBQ25ELHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxHQUFHLHVCQUF1QixHQUFHLENBQUMsQ0FDbEUsQ0FBQztZQUNKLE1BQU0seUJBQXlCLEdBQUcsa0NBQWtDLENBQUM7WUFFckUsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO2dCQUM5QixJQUFJLFlBQVksR0FBRyxRQUFRLENBQ3pCLHVCQUF1QixFQUN2Qix1QkFBdUIsQ0FDeEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEUsWUFBWSxHQUFHLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQ0QsT0FBTyxXQUFXLFlBQVksSUFBSSxDQUFDO1lBQ3JDLENBQUM7WUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLGFBQWEsQ0FDN0MsSUFBSSxFQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUN2QixDQUFDO1lBRUYsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxtRUFBbUU7Z0JBQ25FLE9BQU8sV0FBVyxVQUFVLElBQUksQ0FBQztZQUNuQyxDQUFDO1lBRUQscUNBQXFDO1lBQ3JDLG9FQUFvRTtZQUNwRSxzR0FBc0c7WUFDdEcsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELDZEQUE2RDtZQUM3RCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUN2RSxLQUFLLEVBQ0wsR0FBRyxDQUNKLENBQUM7WUFDRiwwRUFBMEU7WUFDMUUsc0VBQXNFO1lBQ3RFLDBCQUEwQjtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsWUFBWSxHQUFHLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDckMsQ0FBQztZQUNELE9BQU8sV0FBVyxZQUFZLElBQUksQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFRixzRUFBc0U7UUFDdEUsbURBQW1EO1FBQ25ELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNELCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRSxNQUFNLFlBQVksR0FBRzs7Y0FFWCxZQUFZOztNQUVwQixXQUFXOztNQUVYLFlBQVk7Ozs0Q0FHMEIsQ0FBQztRQUV6QyxnREFBZ0Q7UUFDaEQsTUFBTSxlQUFlLEdBQUcsbUJBQW1CO1lBQ3pDLENBQUMsQ0FBQztnQkFDRSxHQUFHLFNBQVM7Z0JBQ1osR0FBRyxVQUFVO2dCQUNiLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDeEQ7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsTUFBTSx5QkFBeUIsR0FBRyxlQUFlO1lBQy9DLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxlQUFlLENBQUM7WUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxhQUFhLENBQUM7WUFDdEQsR0FBRyxTQUFTO1lBQ1osR0FBRyxjQUFjO1lBQ2pCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxzQkFBc0IsR0FDMUIsTUFBTSx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUMxRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0I7WUFDM0MsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN2QyxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLG1FQUFtRSxnQkFBZ0IsR0FBRyxnQkFBZ0IsRUFBRTthQUM3RztZQUNELEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDbEMsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsTUFBTSxFQUFFLElBQUk7YUFDYjtZQUNELE9BQU87WUFDUCxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ3JDLE1BQU0sRUFBRSxJQUFJO1lBQ1osTUFBTTtZQUNOLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNwQixNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsVUFBVTtZQUNmLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLDBDQUEwQztZQUMxQyxnRkFBZ0Y7WUFDaEYsR0FBRyxzQkFBc0I7WUFDekIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixpQkFBaUIsRUFBRTtnQkFDakIsS0FBSztnQkFDTCxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixLQUFLO2dCQUNMLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixNQUFNO2FBQ1A7WUFDRCxnRUFBZ0U7WUFDaEUsdUVBQXVFO1lBQ3ZFLDhFQUE4RTtZQUM5RSwrREFBK0Q7WUFDL0QsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDMUMsT0FBTyxFQUFFO2dCQUNQLDJFQUEyRTtnQkFDM0UsNEVBQTRFO2dCQUM1RSx5QkFBeUIsRUFBRTtnQkFDM0IsZUFBZSxDQUFDO29CQUNkLElBQUksRUFBRSxNQUFNO29CQUNaLGVBQWUsRUFBRSx5QkFBeUI7b0JBQzFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDOUMsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7b0JBQ3RDLGdCQUFnQjtvQkFDaEIscUNBQXFDO29CQUNyQyxtQkFBbUI7b0JBQ25CLGlCQUFpQixFQUFFLDJCQUEyQjtpQkFDL0MsQ0FBQzthQUNIO1lBQ0QscUVBQXFFO1lBQ3JFLDREQUE0RDtZQUM1RCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BFLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLHNCQUFzQixFQUN0QixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsSUFBSSxDQUNyQyxDQUFDO1FBRUYsNkVBQTZFO1FBQzdFLDhFQUE4RTtRQUM5RSxpRUFBaUU7UUFDakUsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUM1QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUM5QixDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLGlCQUFpQixDQUNoRSxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUMxQixDQUFDO2dCQUNGLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUMzQixnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDeEMsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDaEMsWUFBWSxDQUFDLFNBQVMsQ0FDdkIsQ0FBQztnQkFDSixDQUFDO2dCQUNELElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN6QixnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDdEMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFDOUIsWUFBWSxDQUFDLE9BQU8sQ0FDckIsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsNEVBQTRFO2dCQUM1RSxPQUFPLENBQUMsSUFBSSxDQUNWLHFEQUFxRCxZQUFZLEdBQUcsRUFDcEUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUN2RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixzQ0FBc0M7UUFDdEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDN0QsQ0FBQztRQUNELE1BQU0sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxFQUNwQyxVQUFVLEVBQ1YsTUFBTSxHQUFHLEtBQUssRUFDZCxPQUFPLEVBQ1AsaUJBQWlCLEdBQUcsSUFBSSxFQUN4Qix3QkFBd0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDNUMsWUFBWSxFQUNaLGlCQUFpQixHQVNsQjtRQU9DLE1BQU0sVUFBVSxHQUNkLGlCQUFpQjtZQUNqQixDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvRCwrRkFBK0Y7UUFDL0YsbUZBQW1GO1FBQ25GLDRFQUE0RTtRQUM1RSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUUsdUNBQXVDO1FBQ3ZDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUV0RSxtREFBbUQ7UUFDbkQsc0VBQXNFO1FBQ3RFLHFEQUFxRDtRQUNyRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsYUFBYSxDQUM3QyxJQUFJLEVBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3ZCLENBQUM7WUFFRixJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLG1FQUFtRTtnQkFDbkUscUNBQXFDO2dCQUNyQyxPQUFPLFdBQVcsVUFBVSxJQUFJLENBQUM7WUFDbkMsQ0FBQztZQUVELHFDQUFxQztZQUNyQyxvRUFBb0U7WUFDcEUsc0dBQXNHO1lBQ3RHLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRCw2REFBNkQ7WUFDN0QsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixFQUFFLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FDdkUsS0FBSyxFQUNMLEdBQUcsQ0FDSixDQUFDO1lBQ0YsMEVBQTBFO1lBQzFFLHNFQUFzRTtZQUN0RSwwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLFlBQVksR0FBRyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3JDLENBQUM7WUFDRCxPQUFPLFdBQVcsWUFBWSxJQUFJLENBQUM7UUFDckMsQ0FBQyxDQUFDO1FBRUYseURBQXlEO1FBQ3pELDZGQUE2RjtRQUM3RixzRkFBc0Y7UUFDdEYsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkUsK0RBQStEO1FBQy9ELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpFLE1BQU0sT0FBTyxHQUFHLFlBQVk7WUFDMUIsQ0FBQyxDQUFDLEdBQUcsZUFBZSwwREFBMEQsWUFBWSxFQUFFO1lBQzVGLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFFcEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUM5QyxNQUFNLHNCQUFzQixHQUMxQixNQUFNLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sbUNBQW1DLEdBQUcsTUFBTSxhQUFhLENBQUM7WUFDOUQsR0FBRyxhQUFhO1lBQ2hCLEdBQUcsY0FBYztTQUNsQixDQUFDLENBQUM7UUFFSCxrRUFBa0U7UUFDbEUsOENBQThDO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQzdDLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsT0FBTztnQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDbEMsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsTUFBTSxFQUFFLElBQUk7YUFDYjtZQUNELE1BQU0sRUFBRSxJQUFJO1lBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUNyQyxNQUFNLEVBQUUsS0FBSyxFQUFFLHVDQUF1QztZQUN0RCxRQUFRLEVBQUUsU0FBUyxFQUFFLDJDQUEyQztZQUNoRSxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsK0JBQStCO1lBQy9ELFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHlEQUF5RDtZQUNuRixNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsS0FBSztZQUNaLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixpRUFBaUU7WUFDakUsNEVBQTRFO1lBQzVFLHFFQUFxRTtZQUNyRSxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLDZDQUE2QzthQUNsRDtZQUNELHVFQUF1RTtZQUN2RSw4RUFBOEU7WUFDOUUsMEZBQTBGO1lBQzFGLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQzFDLDBDQUEwQztZQUMxQyxnRkFBZ0Y7WUFDaEYsR0FBRyxzQkFBc0I7WUFDekIsaUJBQWlCLEVBQUU7Z0JBQ2pCLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixNQUFNO2dCQUNOLE1BQU07Z0JBQ04sS0FBSztnQkFDTCxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sTUFBTTthQUNQO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLDJFQUEyRTtnQkFDM0UsNEVBQTRFO2dCQUM1RSx5QkFBeUIsRUFBRTtnQkFDM0IsZUFBZSxDQUFDO29CQUNkLElBQUksRUFBRSxVQUFVO29CQUNoQixXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdEMsZ0JBQWdCO29CQUNoQixpQkFBaUIsRUFBRSxtQ0FBbUM7aUJBQ3ZELENBQUM7Z0JBQ0YsNEVBQTRFO2dCQUM1RSxvRkFBb0Y7Z0JBQ3BGLDJCQUEyQixFQUFFO2FBQzlCO1lBQ0QsbUZBQW1GO1lBQ25GLDJGQUEyRjtZQUMzRix1RkFBdUY7WUFDdkYscUZBQXFGO1lBQ3JGLDJDQUEyQztZQUMzQyw2Q0FBNkM7WUFDN0MscUZBQXFGO1lBQ3JGLGlGQUFpRjtTQUNsRixDQUFDLENBQUM7UUFDSCxJQUFJLDZCQUE2QixHQUFHLENBQUMsd0JBQXdCLENBQUM7UUFDOUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxhQUFhLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUV2RCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLGFBQWEsRUFDYiw4QkFBOEIsRUFDOUIsSUFBSSxFQUNKO2dCQUNFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMscUNBQXFDO2FBQ3BFLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyw0QkFBNEIsQ0FDL0Isc0NBQXNDLEVBQ3RDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGVBQWUsSUFBSSxDQUNwQyxDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FDMUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQ2pDLENBQUM7Z0JBQ0YsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUVoQixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxHQUFHLG1CQUFtQixDQUFDO2dCQUMvQixDQUFDO3FCQUFNLElBQ0wsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQzVCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLENBQUM7b0JBQ0QsTUFBTSxHQUFHLGlCQUFpQixDQUFDO2dCQUM3QixDQUFDO2dCQUVELE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLFNBQVMsQ0FDYixZQUFZLEVBQ1osTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNuRCxDQUFDO1lBQ0osQ0FBQztZQUVELHNDQUFzQztZQUN0QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRWhDLElBQ0UsQ0FBQyxhQUFhLENBQUMsV0FBVztnQkFDMUIsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUN0QyxDQUFDO2dCQUNELE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyx3Q0FBd0MsRUFBRTtvQkFDckUsSUFBSSxFQUFFLHlLQUF5SztpQkFDaEwsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELDBFQUEwRTtZQUMxRSxpRkFBaUY7WUFDakYsSUFDRSxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2hELENBQUM7Z0JBQ0QsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDdEUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JELE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDO29CQUN6QyxVQUFVLEVBQUUsRUFBRTtvQkFDZCxZQUFZLEVBQUUsVUFBVTtvQkFDeEIsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0IsQ0FBQyxDQUFDO2dCQUNILDBEQUEwRDtnQkFDMUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7Z0JBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNuQixLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDL0IsSUFBSSxlQUFlLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dDQUNyQixlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztnQ0FDcEMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7NEJBQzlDLENBQUM7NEJBQ0QsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3JDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUNELEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLFVBQVUsR0FDZCxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUM7d0JBQ3JCLENBQUMsQ0FBQyxVQUFVLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRzt3QkFDNUIsQ0FBQyxDQUFDLFdBQVcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNwRSxPQUFPLENBQUMsSUFBSSxDQUNWLEtBQUssQ0FBQyxNQUFNLENBQUMsdUJBQXVCLFVBQVUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUM1RCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLGFBQXFCLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUM7Z0JBRXpDLE1BQU0sb0JBQW9CLEdBQUc7Ozs7eUJBSVosa0JBQWtCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7O3NEQUVoQixDQUFDO2dCQUUvQyxzRUFBc0U7Z0JBQ3RFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO29CQUNwRSxDQUFDO29CQUNELHFDQUFxQztvQkFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNuQyxNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFFNUMsMERBQTBEO29CQUMxRCx1REFBdUQ7b0JBQ3ZELE1BQU0sUUFBUSxHQUFHLEdBQUcsT0FBTyxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUM7b0JBQ2xELE1BQU0sU0FBUyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO29CQUNoRCxNQUFNLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRW5DLGtFQUFrRTtnQkFDbEUsK0RBQStEO2dCQUMvRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0QsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQzlDLE1BQU0sRUFBRTt3QkFDTixFQUFFLEVBQUUsbUVBQW1FLHFCQUFxQixFQUFFO3FCQUMvRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLG9CQUFvQjt3QkFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTt3QkFDbEMsVUFBVSxFQUFFLGtCQUFrQjt3QkFDOUIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7b0JBQ0QsT0FBTztvQkFDUCxtRkFBbUY7b0JBQ25GLDhFQUE4RTtvQkFDOUUsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDL0QsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtvQkFDckMsTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTTtvQkFDTixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLEtBQUssRUFBRSxJQUFJO29CQUNYLFNBQVMsRUFBRSxJQUFJO29CQUNmLE1BQU0sRUFBRSxLQUFLO29CQUNiLFFBQVEsRUFBRSxDQUFDLDJDQUEyQyxDQUFDO2lCQUN4RCxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLElBQUksRUFDSjtvQkFDRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLHFDQUFxQztpQkFDcEUsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyw0QkFBNEIsQ0FDL0IsK0JBQStCLEVBQy9CLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGVBQWUsSUFBSSxDQUNwQyxDQUFDO1lBQ0osQ0FBQyxDQUFDO1lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUM1RCxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRXJDLElBQUksd0JBQXdCLEVBQUUsQ0FBQztnQkFDN0IsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxPQUFPO29CQUNMLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGdCQUFnQjtvQkFDaEIsV0FBVztvQkFDWCxpQkFBaUI7aUJBQ2xCLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1FBQzNELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsNkJBQTZCLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSw2QkFBNkIsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUM7b0JBQ0gsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsQ0FBQztnQkFBQyxPQUFPLFlBQVksRUFBRSxDQUFDO29CQUN0QixPQUFPLENBQUMsSUFBSSxDQUNWLG9EQUFvRCxFQUNwRCxZQUFZLENBQ2IsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFDbkMsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxHQUFHLEtBQUssRUFDZCxpQkFBaUIsR0FBRyxJQUFJLEVBQ3hCLFlBQVksRUFDWixtQkFBbUIsRUFDbkIscUNBQXFDLEVBQ3JDLGlCQUFpQixHQWFsQjtRQU1DLGdFQUFnRTtRQUNoRSx1RUFBdUU7UUFDdkUsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUN0RCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQixVQUFVO1lBQ1YsT0FBTyxFQUFFLFlBQVk7WUFDckIsK0RBQStEO1lBQy9ELGdFQUFnRTtZQUNoRSxrRUFBa0U7WUFDbEUsMkRBQTJEO1lBQzNELGdFQUFnRTtZQUNoRSwrREFBK0Q7WUFDL0QsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDMUMsbUJBQW1CO1lBQ25CLHFDQUFxQztZQUNyQyxZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLHNFQUFzRTtZQUN0RSxpRUFBaUU7WUFDakUsNERBQTREO1lBQzVELG9CQUFvQixFQUFFLGlCQUFpQjtTQUN4QyxDQUFDLENBQUM7UUFFTCw0QkFBNEI7UUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLFdBQVcsY0FBYyxDQUFDO1FBQ3pELE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3ZELFVBQVU7WUFDVixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLE1BQU07WUFDTixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLFlBQVk7WUFDWixpQkFBaUI7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNwRCxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx3QkFBd0I7UUFDMUIsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RSxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVoRSxNQUFNLG9CQUFvQixHQUFHOztzQ0FFSyxpQkFBaUI7Ozs7Ozt5QkFNOUIsYUFBYTs7c0RBRWdCLENBQUM7UUFFbkQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsdUNBQXVDO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQUcsV0FBVyxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUM7WUFDdEQsTUFBTSxTQUFTLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDaEQsTUFBTSxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sOENBQThDO1lBQzlDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUMxRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEMsc0VBQXNFO1lBQ3RFLHlFQUF5RTtZQUN6RSx5REFBeUQ7WUFDekQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxNQUFNLEVBQUU7b0JBQ04sRUFBRSxFQUFFLG1FQUFtRSxnQkFBZ0IsR0FBRyxxQkFBcUIsRUFBRTtpQkFDbEg7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDO29CQUNoQyxVQUFVLEVBQUUsa0JBQWtCO29CQUM5QixNQUFNLEVBQUUsSUFBSTtpQkFDYjtnQkFDRCxPQUFPLEVBQUUsV0FBVztnQkFDcEIsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDckMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osTUFBTTtnQkFDTixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFNBQVMsRUFBRSxJQUFJO2dCQUNmLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE1BQU0sRUFBRSxnQkFBZ0I7Z0JBQ3hCLFFBQVEsRUFBRSxDQUFDLDJDQUEyQyxDQUFDO2FBQ3hELENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUNyQix5QkFBeUIsRUFDekIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsZUFBZSxJQUFJLENBQ3BDLENBQUM7UUFDSixDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxHQUFHLGFBQWE7WUFDaEIsU0FBUyxFQUFFO2dCQUNULEdBQUcsYUFBYSxDQUFDLFNBQVM7Z0JBQzFCLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2FBQ3RDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ3BDO1NBQ0YsQ0FBQztRQUVGLDBFQUEwRTtRQUMxRSxNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFBRSxpQkFBeUIsRUFBRSxFQUFFO1lBQzlELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0QsTUFBTSxJQUFJLEdBQUc7O3NDQUVtQixpQkFBaUI7Ozs7O3lCQUs5QixPQUFPOztzREFFc0IsQ0FBQztZQUVqRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxXQUFXLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQztZQUN0RCxNQUFNLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEMsTUFBTSxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixPQUFPO2dCQUNMLFFBQVE7Z0JBQ1IsWUFBWTtnQkFDWixnQkFBZ0IsRUFBRSxlQUFlLENBQUMsZ0JBQWdCO2dCQUNsRCxXQUFXLEVBQUUsbUJBQW1CO2FBQ2pDLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xDLHFEQUFxRDtZQUNyRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsZ0NBQWdDLEVBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsa0JBQWtCLENBQ3JCLGtJQUFrSSxDQUNuSSxDQUFDO1FBRUYscURBQXFEO1FBQ3JELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFOUMsbUdBQW1HO1FBQ25HLCtFQUErRTtRQUMvRSwrRkFBK0Y7UUFDL0YsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUN6RCxVQUFVLEVBQ1YsU0FBUyxDQUNWLENBQUM7UUFFRixvRUFBb0U7UUFDcEUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FDbEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNwQyxDQUFDO1FBRUYsaUVBQWlFO1FBQ2pFLHdFQUF3RTtRQUN4RSxrRUFBa0U7UUFDbEUsTUFBTSxTQUFTLEdBQUcsVUFBVTthQUN6QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RSxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUM3RCxLQUFLLEVBQ0wsR0FBRyxDQUNKLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsWUFBWSxHQUFHLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDckMsQ0FBQztZQUNELE9BQU8sa0JBQWtCLFlBQVksSUFBSSxDQUFDO1FBQzVDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLGlGQUFpRjtRQUNqRixNQUFNLFlBQVksR0FBRyxjQUFjO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hFLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQzdELEtBQUssRUFDTCxHQUFHLENBQ0osQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN0RSxZQUFZLEdBQUcsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsT0FBTyxXQUFXLFlBQVksSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLHNFQUFzRTtRQUN0RSxNQUFNLFlBQVksR0FBRyxZQUFZO1lBQy9CLENBQUMsQ0FBQyx3REFBd0QsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUN0RixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsZ0RBQWdEO1FBQ2hELE1BQU0saUNBQWlDLEdBQUcsTUFBTSxhQUFhLENBQUM7WUFDNUQsR0FBRyxVQUFVO1lBQ2IsR0FBRyxjQUFjO1NBQ2xCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN2QyxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLGtFQUFrRTthQUN2RTtZQUNELEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDbEMsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsTUFBTSxFQUFFLElBQUk7YUFDYjtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtZQUNyQyxNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLE1BQU07WUFDaEIsR0FBRyxFQUFFLFVBQVU7WUFDZixNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFFBQVEsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQzVCLGlCQUFpQixFQUFFO2dCQUNqQixLQUFLO2dCQUNMLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixNQUFNO2dCQUNOLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixNQUFNO2dCQUNOLE1BQU07YUFDUDtZQUNELE9BQU8sRUFBRTtnQkFDUCxlQUFlLENBQUM7b0JBQ2QsSUFBSSxFQUFFLE1BQU07b0JBQ1osV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7b0JBQ3RDLGlCQUFpQixFQUFFLGlDQUFpQztpQkFDckQsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBRS9ELHNDQUFzQztRQUN0QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQ2xDLE9BQU8sRUFDUCxNQUFNLEdBQUcsS0FBSyxHQUlmO1FBQ0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDMUQsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbkQsaURBQWlEO1FBQ2pELGdFQUFnRTtRQUNoRSxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLHFFQUFxRTtRQUNyRSxNQUFNLFlBQVksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBNEJ4QyxDQUFDO1FBRTdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLDZDQUE2QztZQUM3QyxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDdkMsT0FBTztRQUNULENBQUM7UUFFRCwrREFBK0Q7UUFFL0QsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sRUFBRTtnQkFDTixFQUFFLEVBQUUsbUVBQW1FLHVCQUF1QixFQUFFO2FBQ2pHO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUNsQyxVQUFVLEVBQUUsa0JBQWtCO2dCQUM5QixNQUFNLEVBQUUsSUFBSTthQUNiO1lBQ0QsT0FBTztZQUNQLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDckMsTUFBTSxFQUFFLElBQUk7WUFDWixHQUFHLEVBQUUsVUFBVTtZQUNmLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLE1BQU07WUFDaEIsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDO1lBQ25ELE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixNQUFNLEVBQUUsS0FBSztZQUNiLGlCQUFpQixFQUFFO2dCQUNqQixLQUFLO2dCQUNMLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixNQUFNO2dCQUNOLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixNQUFNO2dCQUNOLE1BQU07YUFDUDtZQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUM7WUFDL0QsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUM5Qiw2RUFBNkU7WUFDN0UsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLDBCQUEwQixDQUM3Qix3QkFBd0IsRUFDeEIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsa0JBQWtCLElBQUksQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNPLEtBQUssQ0FBQyxpQkFBaUIsQ0FDL0IsR0FBVyxFQUNYLElBQTJCO1FBRTNCLE1BQU0sV0FBVyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0IsTUFBTSxTQUFTLENBQ2IsSUFBSSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsRUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ08sS0FBSyxDQUFDLGNBQWMsQ0FDNUIsR0FBVyxFQUNYLE1BZ0JDO1FBRUQsTUFBTSxRQUFRLEdBQUc7WUFDZixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxZQUFZO1lBQ3ZDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLFdBQVc7WUFDdEMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksUUFBUTtZQUM3QyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxPQUFPO1lBQzVDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ2pELEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSTtnQkFDdEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2FBQ2hDLENBQUM7WUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLHlCQUF5QixLQUFLLFNBQVMsSUFBSTtnQkFDcEQseUJBQXlCLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjthQUM1RCxDQUFDO1lBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSTtnQkFDakMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjthQUNsRCxDQUFDO1NBQ0gsQ0FBQztRQUVGLE1BQU0sU0FBUyxDQUNiLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsRUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ08sV0FBVyxDQUFDLElBQVk7UUFDaEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ08sS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUM5QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sS0FBSyxDQUFDLGtCQUFrQjtRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsQ0FDYixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUNsRCxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx3RkFBd0Y7UUFDMUYsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFjLDBCQUEwQjtRQUN0QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEtBQUssR0FBRyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDTywwQkFBMEI7UUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sT0FBTyxDQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFDMUIseUJBQXlCLENBQzFCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyx5QkFBeUIsRUFBRSxDQUFDO1lBQzFELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDckIsb0RBQW9ELENBQ3JELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sZ0JBQWdCLENBQUMsV0FBMEI7UUFDbkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN0RSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEUsSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sT0FBTyxDQUFDO1FBQzFDLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBYyxpQkFBaUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFDN0Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxRQUFRLEdBS1Q7UUFDQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxjQUFjLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXZFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUM3QyxRQUFRLENBQUMsU0FBUyxFQUNsQixjQUFjLENBQ2YsQ0FBQztZQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFOUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDL0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXJELE1BQU0sS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFbEUsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsRSxJQUFJLHVCQUF1QixFQUFFLENBQUM7Z0JBQzVCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQzNDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUN2QyxDQUFDLENBQ0YsQ0FBQztZQUNGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUNuRCxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDdkMsQ0FBQyxDQUNGLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQ3ZDLENBQUMsQ0FDRixDQUFDO1lBRUYsSUFBSSxDQUFDLHFCQUFxQixDQUN4Qix5QkFBeUIsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLLGFBQWEsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsU0FBUyxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFDcE4sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxJQUFJLENBQy9CLENBQUM7WUFFRixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQ1YsNEJBQTRCLEVBQzVCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDdkQsQ0FBQztZQUNGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQzFCLEtBQWdDO1FBRWhDLE1BQU0sTUFBTSxHQUF1RCxFQUFFLENBQUM7UUFDdEUsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUUxQixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyx3QkFBd0IsQ0FDOUIsU0FBd0MsRUFDeEMsTUFHQztRQVFELE1BQU0sTUFBTSxHQU1SLEVBQUUsQ0FBQztRQUNQLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFFOUIsc0VBQXNFO1FBQ3RFLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsMkRBQTJEO1FBQzNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBRzdCLENBQUM7UUFDSixLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9ELE1BQU0sVUFBVSxHQUFHLFNBQVM7aUJBQ3pCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2lCQUNwQixPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0Qiw4Q0FBOEM7WUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRO2lCQUNoQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztpQkFDcEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU1QixNQUFNLFlBQVksR0FDaEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRS9ELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2lCQUMvRCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sc0JBQXNCLENBQzVCLE9BQW9DO1FBRXBDLE1BQU0sTUFBTSxHQUF3RCxFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUU1QixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCByZWFscGF0aCwgcmVuYW1lLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSc7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IFdvcmtmbG93QnVpbGRFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgZW5oYW5jZWRSZXNvbHZlT3JpZ2luYWwgZnJvbSAnZW5oYW5jZWQtcmVzb2x2ZSc7XG5pbXBvcnQgKiBhcyBlc2J1aWxkIGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnZmluZC11cCc7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSAndGlueWdsb2JieSc7XG5pbXBvcnQge1xuICBhcHBseVN3Y1RyYW5zZm9ybSxcbiAgdHlwZSBXb3JrZmxvd01hbmlmZXN0LFxufSBmcm9tICcuL2FwcGx5LXN3Yy10cmFuc2Zvcm0uanMnO1xuaW1wb3J0IHsgY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luIH0gZnJvbSAnLi9kaXNjb3Zlci1lbnRyaWVzLWVzYnVpbGQtcGx1Z2luLmpzJztcbmltcG9ydCB7IGdldEVzYnVpbGRUc2NvbmZpZ09wdGlvbnMgfSBmcm9tICcuL2VzYnVpbGQtdHNjb25maWcuanMnO1xuaW1wb3J0IHsgZ2V0SW1wb3J0UGF0aCB9IGZyb20gJy4vbW9kdWxlLXNwZWNpZmllci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4gfSBmcm9tICcuL25vZGUtbW9kdWxlLWVzYnVpbGQtcGx1Z2luLmpzJztcbmltcG9ydCB7IGNyZWF0ZVBzZXVkb1BhY2thZ2VQbHVnaW4gfSBmcm9tICcuL3BzZXVkby1wYWNrYWdlLWVzYnVpbGQtcGx1Z2luLmpzJztcbmltcG9ydCB7IGNyZWF0ZVN3Y1BsdWdpbiB9IGZyb20gJy4vc3djLWVzYnVpbGQtcGx1Z2luLmpzJztcbmltcG9ydCB7IGRldGVjdFdvcmtmbG93UGF0dGVybnMgfSBmcm9tICcuL3RyYW5zZm9ybS11dGlscy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNvdXJjZW1hcE1vZGUsIFdvcmtmbG93Q29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBleHRyYWN0V29ya2Zsb3dHcmFwaHMgfSBmcm9tICcuL3dvcmtmbG93cy1leHRyYWN0b3IuanMnO1xuXG5jb25zdCBlbmhhbmNlZFJlc29sdmUgPSBwcm9taXNpZnkoZW5oYW5jZWRSZXNvbHZlT3JpZ2luYWwpO1xuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxuLyoqXG4gKiBMZWdhY3kgb3B0LWluIGZvciBzb3VyY2UgbWFwcyBvbiB0aGUgZmluYWwgd29ya2Zsb3cgd3JhcHBlciArIHdlYmhvb2tcbiAqIGJ1bmRsZXMgKHdoaWNoIGRlZmF1bHQgdG8gb2ZmLCB1bmxpa2UgdGhlIHN0ZXAvaW50ZXJpbSB3b3JrZmxvdyBidW5kbGVzXG4gKiB0aGF0IGRlZmF1bHQgdG8gaW5saW5lKS4gU3VwZXJzZWRlZCBieSB0aGUgYHNvdXJjZW1hcGAgY29uZmlnIG9wdGlvbiBhbmRcbiAqIHRoZSBgV09SS0ZMT1dfU09VUkNFTUFQYCBlbnZpcm9ubWVudCB2YXJpYWJsZTsga2VwdCBmb3IgYmFjay1jb21wYXQuXG4gKi9cbmNvbnN0IEVNSVRfU09VUkNFTUFQU19GT1JfREVCVUdHSU5HID1cbiAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfRU1JVF9TT1VSQ0VNQVBTX0ZPUl9ERUJVR0dJTkcgPT09ICcxJztcblxuY29uc3QgVkFMSURfU09VUkNFTUFQX1NUUklOR1MgPSBuZXcgU2V0KFtcbiAgJ2lubGluZScsXG4gICdsaW5rZWQnLFxuICAnZXh0ZXJuYWwnLFxuICAnYm90aCcsXG5dKTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgdmFsdWUgb2YgdGhlIGBXT1JLRkxPV19TT1VSQ0VNQVBgIGVudmlyb25tZW50IHZhcmlhYmxlIGludG8gYVxuICogYFNvdXJjZW1hcE1vZGVgLiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBlbnYgdmFyIGlzIHVuc2V0LCBlbXB0eSwgb3JcbiAqIHVucmVjb2duaXplZCAoYSB3YXJuaW5nIGlzIGVtaXR0ZWQgZm9yIHVucmVjb2duaXplZCB2YWx1ZXMpLlxuICovXG5mdW5jdGlvbiBwYXJzZVNvdXJjZW1hcEVudihcbiAgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogU291cmNlbWFwTW9kZSB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgc3dpdGNoICh2YWx1ZSkge1xuICAgIGNhc2UgJzAnOlxuICAgIGNhc2UgJ2ZhbHNlJzpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlICcxJzpcbiAgICBjYXNlICd0cnVlJzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoVkFMSURfU09VUkNFTUFQX1NUUklOR1MuaGFzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgU291cmNlbWFwTW9kZTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYElnbm9yaW5nIHVucmVjb2duaXplZCBXT1JLRkxPV19TT1VSQ0VNQVA9JHt2YWx1ZX0uIGAgK1xuICAgICAgICAgIGBFeHBlY3RlZCBvbmUgb2Y6IHRydWUsIGZhbHNlLCAwLCAxLCBpbmxpbmUsIGxpbmtlZCwgZXh0ZXJuYWwsIGJvdGguYFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYW4gYXJyYXkgb2YgZmlsZSBwYXRocyBieSBhcHBlbmRpbmcgdGhlIGByZWFscGF0aCgpYCBvZiBlYWNoIGVudHJ5XG4gKiAodG8gaGFuZGxlIHN5bWxpbmtzLCBlLmcuIHBucG0vd29ya3NwYWNlIGxheW91dHMpIGFuZCBkZWR1cGxpY2F0aW5nLlxuICovXG5hc3luYyBmdW5jdGlvbiB3aXRoUmVhbHBhdGhzKGVudHJpZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICBuZXcgU2V0KFxuICAgICAgKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBlbnRyaWVzLm1hcChhc3luYyAoZW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgcmVhbHBhdGgoZW50cnkpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQgPyBbZW50cnksIHJlc29sdmVkXSA6IFtlbnRyeV07XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKS5mbGF0KClcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzY292ZXJlZEVudHJpZXMge1xuICBkaXNjb3ZlcmVkU3RlcHM6IFNldDxzdHJpbmc+O1xuICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBTZXQ8c3RyaW5nPjtcbiAgZGlzY292ZXJlZFNlcmRlRmlsZXM6IFNldDxzdHJpbmc+O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIHdvcmtmbG93IGJ1aWxkZXJzLiBQcm92aWRlcyBjb21tb24gYnVpbGQgbG9naWMgZm9yIHRyYW5zZm9ybWluZ1xuICogd29ya2Zsb3cgc291cmNlIGZpbGVzIGludG8gZGVwbG95YWJsZSBidW5kbGVzIHVzaW5nIGVzYnVpbGQgYW5kIFNXQy5cbiAqXG4gKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoZSBidWlsZCgpIG1ldGhvZCB0byBkZWZpbmUgYnVpbGRlci1zcGVjaWZpYyBsb2dpYy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGNvbmZpZzogV29ya2Zsb3dDb25maWc7XG5cbiAgLyoqXG4gICAqIFRyYWNrcyB3aGljaCBleHRlcm5hbCBwYWNrYWdlcyBoYXZlIGFscmVhZHkgYmVlbiB3YXJuZWQgYWJvdXRcbiAgICogdG8gYXZvaWQgZHVwbGljYXRlIHdhcm5pbmdzIGFjcm9zcyBtdWx0aXBsZSBkaXNjb3ZlckVudHJpZXMoKSBjYWxscy5cbiAgICovXG4gIHByaXZhdGUgd2FybmVkRXh0ZXJuYWxQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogV29ya2Zsb3dDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNmb3JtUHJvamVjdFJvb3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucHJvamVjdFJvb3QgfHwgdGhpcy5jb25maWcud29ya2luZ0RpcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGluZm9ybWF0aW9uYWwgQmFzZUJ1aWxkZXIgbG9ncyBzaG91bGQgYmUgcHJpbnRlZC5cbiAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyB0byBzaWxlbmNlIHByb2dyZXNzIGxvZ3Mgd2hpbGUga2VlcGluZyB3YXJuaW5ncy9lcnJvcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3VsZExvZ0Jhc2VCdWlsZGVySW5mbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2dCYXNlQnVpbGRlckluZm8oLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkTG9nQmFzZUJ1aWxkZXJJbmZvKSB7XG4gICAgICBjb25zb2xlLmxvZyguLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvZ0NyZWF0ZVdvcmtmbG93c0J1bmRsZUluZm8oLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zdXBwcmVzc0NyZWF0ZVdvcmtmbG93c0J1bmRsZUxvZ3MpIHtcbiAgICAgIHRoaXMubG9nQmFzZUJ1aWxkZXJJbmZvKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9nQ3JlYXRlV2ViaG9va0J1bmRsZUluZm8oLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zdXBwcmVzc0NyZWF0ZVdlYmhvb2tCdW5kbGVMb2dzKSB7XG4gICAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyguLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvZ0NyZWF0ZU1hbmlmZXN0SW5mbyguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLnN1cHByZXNzQ3JlYXRlTWFuaWZlc3RMb2dzKSB7XG4gICAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyguLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBvdXRwdXR0aW5nIENKUywgZXNidWlsZCByZXBsYWNlcyBgaW1wb3J0Lm1ldGFgIHdpdGggYW4gZW1wdHkgb2JqZWN0LFxuICAgKiBtYWtpbmcgYGltcG9ydC5tZXRhLnVybGAgKGFuZCBgaW1wb3J0Lm1ldGEucmVzb2x2ZWApIHVuZGVmaW5lZC4gVGhpcyBtZXRob2RcbiAgICogcmV0dXJucyBiYW5uZXIgY29kZSBhbmQgYGRlZmluZWAgZW50cmllcyB0aGF0IHBvbHlmaWxsIHRoZW0gdXNpbmcgQ0pTXG4gICAqIGVxdWl2YWxlbnRzIChgX19maWxlbmFtZWAsIGByZXF1aXJlLnJlc29sdmVgKSBzbyB1c2VyIGNvZGUgKGUuZy4gUHJpc21hKVxuICAgKiB0aGF0IHJlbGllcyBvbiBgaW1wb3J0Lm1ldGEudXJsYCB3b3JrcyBjb3JyZWN0bHkgaW4gYnVuZGxlZCBDSlMgb3V0cHV0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDanNJbXBvcnRNZXRhUG9seWZpbGwoZm9ybWF0OiBzdHJpbmcpOiB7XG4gICAgYmFubmVyOiBzdHJpbmc7XG4gICAgZGVmaW5lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICB9IHtcbiAgICBpZiAoZm9ybWF0ICE9PSAnY2pzJykgcmV0dXJuIHsgYmFubmVyOiAnJywgZGVmaW5lOiB7fSB9O1xuICAgIHJldHVybiB7XG4gICAgICBiYW5uZXI6XG4gICAgICAgICd2YXIgX19pbXBvcnRfbWV0YV91cmwgPSB0eXBlb2YgX19maWxlbmFtZSAhPT0gXCJ1bmRlZmluZWRcIiA/IHJlcXVpcmUoXCJ1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKS5ocmVmIDogdW5kZWZpbmVkO1xcbicgK1xuICAgICAgICAndmFyIF9faW1wb3J0X21ldGFfcmVzb2x2ZSA9IHR5cGVvZiByZXF1aXJlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBfX2ZpbGVuYW1lICE9PSBcInVuZGVmaW5lZFwiICcgK1xuICAgICAgICAnPyAocykgPT4gcmVxdWlyZShcInVybFwiKS5wYXRoVG9GaWxlVVJMKHJlcXVpcmUucmVzb2x2ZShzKSkuaHJlZiA6IHVuZGVmaW5lZDtcXG4nLFxuICAgICAgZGVmaW5lOiB7XG4gICAgICAgICdpbXBvcnQubWV0YS51cmwnOiAnX19pbXBvcnRfbWV0YV91cmwnLFxuICAgICAgICAnaW1wb3J0Lm1ldGEucmVzb2x2ZSc6ICdfX2ltcG9ydF9tZXRhX3Jlc29sdmUnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gb3V0cHV0dGluZyBmdWxseS1idW5kbGVkIEVTTSwgQ0pTIGRlcGVuZGVuY2llcyB0aGF0IGNhbGwgcmVxdWlyZSgpXG4gICAqIGZvciBOb2RlLmpzIGJ1aWx0aW5zIChlLmcuIGRlYnVnIOKGkiByZXF1aXJlKCd0dHknKSkgYnJlYWsgYmVjYXVzZSBlc2J1aWxkJ3NcbiAgICogQ0pTLXRvLUVTTSBfX3JlcXVpcmUgc2hpbSBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIGEgcmVhbCByZXF1aXJlIGZ1bmN0aW9uLlxuICAgKiBUaGlzIGJhbm5lciBwcm92aWRlcyBvbmUgdmlhIGNyZWF0ZVJlcXVpcmUgc28gYnVuZGxlZCBDSlMgY29kZSB3b3JrcyBpbiBFU00uXG4gICAqL1xuICBwcml2YXRlIGdldEVzbVJlcXVpcmVCYW5uZXIoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChmb3JtYXQgIT09ICdlc20nKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuICdpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIGFzIF9fY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xcbnZhciByZXF1aXJlID0gX19jcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XFxuJztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyB0aGUgY29tcGxldGUgYnVpbGQgcHJvY2VzcyBmb3Igd29ya2Zsb3dzLlxuICAgKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoaXMgdG8gZGVmaW5lIHRoZWlyIHNwZWNpZmljIGJ1aWxkIHN0ZXBzLlxuICAgKi9cbiAgYWJzdHJhY3QgYnVpbGQoKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogRmluZHMgdHNjb25maWcuanNvbi9qc2NvbmZpZy5qc29uIGZvciB0aGUgcHJvamVjdC5cbiAgICogVXNlZCBieSBlc2J1aWxkIHRvIHByb3Blcmx5IHJlc29sdmUgbW9kdWxlIGltcG9ydHMgZHVyaW5nIGJ1bmRsaW5nLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGZpbmRUc0NvbmZpZ1BhdGgoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjd2QgPSB0aGlzLmNvbmZpZy53b3JraW5nRGlyIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgcmV0dXJuIGZpbmRVcChbJ3RzY29uZmlnLmpzb24nLCAnanNjb25maWcuanNvbiddLCB7IGN3ZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNjb3ZlcnMgYWxsIHNvdXJjZSBmaWxlcyBpbiB0aGUgY29uZmlndXJlZCBkaXJlY3Rvcmllcy5cbiAgICogU2VhcmNoZXMgZm9yIFR5cGVTY3JpcHQgYW5kIEphdmFTY3JpcHQgZmlsZXMgd2hpbGUgZXhjbHVkaW5nIGNvbW1vbiBidWlsZFxuICAgKiBhbmQgZGVwZW5kZW5jeSBkaXJlY3Rvcmllcy5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBnZXRJbnB1dEZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBpZ25vcmUgPSBbXG4gICAgICAnKiovbm9kZV9tb2R1bGVzLyoqJyxcbiAgICAgICcqKi8uZ2l0LyoqJyxcbiAgICAgICcqKi8ubmV4dC8qKicsXG4gICAgICAnKiovLm5pdHJvLyoqJyxcbiAgICAgICcqKi8ubnV4dC8qKicsXG4gICAgICAnKiovLm91dHB1dC8qKicsXG4gICAgICAnKiovLnZlcmNlbC8qKicsXG4gICAgICAnKiovLndvcmtmbG93LWRhdGEvKionLFxuICAgICAgJyoqLy53b3JrZmxvdy12aXRlc3QvKionLFxuICAgICAgJyoqLy53ZWxsLWtub3duL3dvcmtmbG93LyoqJyxcbiAgICAgICcqKi8uc3ZlbHRlLWtpdC8qKicsXG4gICAgICAnKiovLnR1cmJvLyoqJyxcbiAgICAgICcqKi8uY2FjaGUvKionLFxuICAgICAgJyoqLy55YXJuLyoqJyxcbiAgICAgICcqKi8ucG5wbS1zdG9yZS8qKicsXG4gICAgXTtcblxuICAgIC8vIFVzZSByZWxhdGl2ZSBwYXR0ZXJucyB3aXRoIGBjd2RgIHBlciBkaXJlY3Rvcnkgc28gdGhhdCBgZG90OiB0cnVlYFxuICAgIC8vIGFwcGxpZXMgY29uc2lzdGVudGx5IHRvIGJvdGggdGhlIHNlYXJjaCBwYXR0ZXJuICphbmQqIHRoZSBpZ25vcmVcbiAgICAvLyBwYXR0ZXJucy4gV2hlbiBhYnNvbHV0ZSBwYXR0ZXJucyBhcmUgdXNlZCB3aXRoIHRpbnlnbG9iYnksIHRoZSBgKipgXG4gICAgLy8gaW4gaWdub3JlIHBhdHRlcm5zIGRvZXMgbm90IG1hdGNoIGRvdC1wcmVmaXhlZCBwYXRoIHNlZ21lbnRzLlxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuY29uZmlnLmRpcnMubWFwKChkaXIpID0+IHtcbiAgICAgICAgY29uc3QgY3dkID0gcmVzb2x2ZSh0aGlzLmNvbmZpZy53b3JraW5nRGlyLCBkaXIpO1xuICAgICAgICByZXR1cm4gZ2xvYihbJyoqLyoue3RzLHRzeCxtdHMsY3RzLGpzLGpzeCxtanMsY2pzfSddLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGlnbm9yZSxcbiAgICAgICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdHMuZmxhdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhY2hlcyBkaXNjb3ZlcmVkIHdvcmtmbG93IGVudHJpZXMgYnkgaW5wdXQgYXJyYXkgcmVmZXJlbmNlLlxuICAgKiBVc2VzIFdlYWtNYXAgdG8gYWxsb3cgZ2FyYmFnZSBjb2xsZWN0aW9uIHdoZW4gaW5wdXQgYXJyYXlzIGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZC5cbiAgICogVGhpcyBjYWNoZSBpcyBpbnZhbGlkYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGlucHV0cyBhcnJheSByZWZlcmVuY2UgY2hhbmdlc1xuICAgKiAoZS5nLiwgd2hlbiBmaWxlcyBhcmUgYWRkZWQvcmVtb3ZlZCBkdXJpbmcgd2F0Y2ggbW9kZSkuXG4gICAqL1xuICBwcml2YXRlIGRpc2NvdmVyZWRFbnRyaWVzOiBXZWFrTWFwPHN0cmluZ1tdLCBEaXNjb3ZlcmVkRW50cmllcz4gPVxuICAgIG5ldyBXZWFrTWFwKCk7XG5cbiAgLyoqXG4gICAqIFBzZXVkby1wYWNrYWdlcyB0aGF0IHNob3VsZCBub3QgYmUgY2hlY2tlZCBmb3Igd29ya2Zsb3cgcGF0dGVybnMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBQU0VVRE9fUEFDS0FHRVMgPSBuZXcgU2V0KFtcbiAgICAnc2VydmVyLW9ubHknLFxuICAgICdjbGllbnQtb25seScsXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgZWFjaCBwYWNrYWdlIGluIGV4dGVybmFsUGFja2FnZXMgZm9yIHdvcmtmbG93IHBhdHRlcm5zIGFuZCBlbWl0c1xuICAgKiB3YXJuaW5ncyBpZiBhbnkgY29udGFpbiBcInVzZSBzdGVwXCIsIFwidXNlIHdvcmtmbG93XCIgZGlyZWN0aXZlcywgb3JcbiAgICogc2VyaWFsaXphdGlvbiBjbGFzc2VzLiBUaGVzZSBwYXR0ZXJucyB3aWxsIG5vdCBiZSB0cmFuc2Zvcm1lZCBieSB0aGVcbiAgICogd29ya2Zsb3cgY29tcGlsZXIgd2hlbiB0aGUgcGFja2FnZSBpcyBleHRlcm5hbGl6ZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHdhcm5BYm91dEV4dGVybmFsV29ya2Zsb3dQYWNrYWdlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBleHRlcm5hbFBhY2thZ2VzID0gdGhpcy5jb25maWcuZXh0ZXJuYWxQYWNrYWdlcztcbiAgICBpZiAoIWV4dGVybmFsUGFja2FnZXM/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBwa2cgb2YgZXh0ZXJuYWxQYWNrYWdlcykge1xuICAgICAgaWYgKEJhc2VCdWlsZGVyLlBTRVVET19QQUNLQUdFUy5oYXMocGtnKSkgY29udGludWU7XG4gICAgICBpZiAodGhpcy53YXJuZWRFeHRlcm5hbFBhY2thZ2VzLmhhcyhwa2cpKSBjb250aW51ZTtcblxuICAgICAgaWYgKFxuICAgICAgICBwa2cuc3RhcnRzV2l0aCgnLicpIHx8XG4gICAgICAgIHBrZy5zdGFydHNXaXRoKCcvJykgfHxcbiAgICAgICAgcGtnLnN0YXJ0c1dpdGgoJyQnKSB8fFxuICAgICAgICBwa2cuaW5jbHVkZXMoJyonKSB8fFxuICAgICAgICBwa2cuaW5jbHVkZXMoJzonKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBDaGVjayBwYWNrYWdlLmpzb24gZGVwZW5kZW5jaWVzIGZvciBAd29ya2Zsb3cvc2VyZGUgKGZhc3QgcGF0aClcbiAgICAgICAgbGV0IGhhc1dvcmtmbG93U2VyZGVEZXAgPSBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwa2dKc29uUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShgJHtwa2d9L3BhY2thZ2UuanNvbmAsIHtcbiAgICAgICAgICAgIHBhdGhzOiBbdGhpcy5jb25maWcud29ya2luZ0Rpcl0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgcGtnSnNvblNvdXJjZSA9IGF3YWl0IHJlYWRGaWxlKHBrZ0pzb25QYXRoLCAndXRmLTgnKTtcbiAgICAgICAgICBjb25zdCBwa2dKc29uID0gSlNPTi5wYXJzZShwa2dKc29uU291cmNlKSBhcyB7XG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM/OiB1bmtub3duO1xuICAgICAgICAgICAgcGVlckRlcGVuZGVuY2llcz86IHVua25vd247XG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICAgdHlwZW9mIHBrZ0pzb24uZGVwZW5kZW5jaWVzID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgcGtnSnNvbi5kZXBlbmRlbmNpZXMgIT09IG51bGwgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBrZ0pzb24uZGVwZW5kZW5jaWVzKVxuICAgICAgICAgICAgICA/IChwa2dKc29uLmRlcGVuZGVuY2llcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICBjb25zdCBwZWVyRGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgIHR5cGVvZiBwa2dKc29uLnBlZXJEZXBlbmRlbmNpZXMgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICBwa2dKc29uLnBlZXJEZXBlbmRlbmNpZXMgIT09IG51bGwgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBrZ0pzb24ucGVlckRlcGVuZGVuY2llcylcbiAgICAgICAgICAgICAgPyAocGtnSnNvbi5wZWVyRGVwZW5kZW5jaWVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgIGhhc1dvcmtmbG93U2VyZGVEZXAgPVxuICAgICAgICAgICAgT2JqZWN0Lmhhc093bihkZXBlbmRlbmNpZXMsICdAd29ya2Zsb3cvc2VyZGUnKSB8fFxuICAgICAgICAgICAgT2JqZWN0Lmhhc093bihwZWVyRGVwZW5kZW5jaWVzLCAnQHdvcmtmbG93L3NlcmRlJyk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIHBhY2thZ2UuanNvbiBub3QgcmVzb2x2YWJsZSAtIGNvbnRpbnVlIHRvIHNvdXJjZSBjaGVja1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgc291cmNlIHBhdHRlcm5zICh0aG9yb3VnaCBwYXRoKS5cbiAgICAgICAgLy8gTm90ZTogcmVxdWlyZS5yZXNvbHZlIG9ubHkgaW5zcGVjdHMgdGhlIHBhY2thZ2UncyBtYWluIGVudHJ5IHBvaW50LlxuICAgICAgICAvLyBJZiB3b3JrZmxvdyBjb25zdHJ1Y3RzIGxpdmUgaW4gc3ViLXBhdGhzIChlLmcuIGBteS1wa2cvd29ya2Zsb3dzYCksXG4gICAgICAgIC8vIHRoZXkgd29uJ3QgYmUgZGV0ZWN0ZWQgaGVyZS4gVGhlIEB3b3JrZmxvdy9zZXJkZSBkZXAgY2hlY2sgYWJvdmVcbiAgICAgICAgLy8gcGFydGlhbGx5IGNvdmVycyBzZXJkZSBjYXNlcy4gVGhpcyBpcyBhY2NlcHRhYmxlIGFzIGEgYmVzdC1lZmZvcnRcbiAgICAgICAgLy8gaGV1cmlzdGljIOKAlCB0aGUgcHJpbWFyeSBmaXggaXMgYXV0by1yZW1vdmFsIGluIHdpdGhXb3JrZmxvdygpLlxuICAgICAgICBsZXQgaGFzVXNlU3RlcCA9IGZhbHNlO1xuICAgICAgICBsZXQgaGFzVXNlV29ya2Zsb3cgPSBmYWxzZTtcbiAgICAgICAgbGV0IGhhc1NlcmRlID0gaGFzV29ya2Zsb3dTZXJkZURlcDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBlbnRyeVBhdGggPSByZXF1aXJlLnJlc29sdmUocGtnLCB7XG4gICAgICAgICAgICBwYXRoczogW3RoaXMuY29uZmlnLndvcmtpbmdEaXJdLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHJlYWRGaWxlKGVudHJ5UGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgY29uc3QgcGF0dGVybnMgPSBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKHNvdXJjZSk7XG4gICAgICAgICAgaGFzVXNlU3RlcCA9IHBhdHRlcm5zLmhhc1VzZVN0ZXA7XG4gICAgICAgICAgaGFzVXNlV29ya2Zsb3cgPSBwYXR0ZXJucy5oYXNVc2VXb3JrZmxvdztcbiAgICAgICAgICBpZiAoIWhhc1NlcmRlKSB7XG4gICAgICAgICAgICBoYXNTZXJkZSA9IHBhdHRlcm5zLmhhc1NlcmRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gRW50cnkgZmlsZSBub3QgcmVzb2x2YWJsZSBvciBub3QgcmVhZGFibGUgLSB1c2Ugd2hhdCB3ZSBoYXZlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhc1VzZVN0ZXAgJiYgIWhhc1VzZVdvcmtmbG93ICYmICFoYXNTZXJkZSkgY29udGludWU7XG5cbiAgICAgICAgLy8gQnVpbGQgYSBzcGVjaWZpYyBkZXNjcmlwdGlvbiBvZiB3aGF0IHdhcyBmb3VuZFxuICAgICAgICBjb25zdCBpc3N1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChoYXNVc2VXb3JrZmxvdykgaXNzdWVzLnB1c2goJ1widXNlIHdvcmtmbG93XCIgZnVuY3Rpb25zJyk7XG4gICAgICAgIGlmIChoYXNVc2VTdGVwKSBpc3N1ZXMucHVzaCgnXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucycpO1xuICAgICAgICBpZiAoaGFzU2VyZGUpIGlzc3Vlcy5wdXNoKCdzZXJpYWxpemF0aW9uIGNsYXNzZXMnKTtcblxuICAgICAgICB0aGlzLndhcm5lZEV4dGVybmFsUGFja2FnZXMuYWRkKHBrZyk7XG5cbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcXG4ke2NoYWxrLnllbGxvdygn4pqgJyl9IFdhcm5pbmc6ICR7Y2hhbGsuYm9sZChgXCIke3BrZ31cImApfSBpcyBsaXN0ZWQgaW4gJHtjaGFsay5ib2xkKCdleHRlcm5hbFBhY2thZ2VzJyl9ICgke2NoYWxrLmJvbGQoJ3NlcnZlckV4dGVybmFsUGFja2FnZXMnKX0gaW4gTmV4dC5qcykgYnV0IGNvbnRhaW5zIHdvcmtmbG93IGNvZGUgKCR7aXNzdWVzLmpvaW4oJywgJyl9KS5gICtcbiAgICAgICAgICAgIGBcXG4gIFRoaXMgY29kZSB3aWxsICR7Y2hhbGsuYm9sZCgnbm90Jyl9IGJlIHRyYW5zZm9ybWVkIGJ5IHRoZSB3b3JrZmxvdyBjb21waWxlciwgd2hpY2ggY2FuIGNhdXNlIHJ1bnRpbWUgZmFpbHVyZXMuYCArXG4gICAgICAgICAgICBgXFxuICBSZW1vdmUgJHtjaGFsay5ib2xkKGBcIiR7cGtnfVwiYCl9IGZyb20gJHtjaGFsay5ib2xkKCdleHRlcm5hbFBhY2thZ2VzJyl9ICgke2NoYWxrLmJvbGQoJ3NlcnZlckV4dGVybmFsUGFja2FnZXMnKX0gaW4gTmV4dC5qcykgdG8gZml4IHRoaXMuXFxuYFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIEJlc3QtZWZmb3J0OiBpZiBhbnl0aGluZyBnb2VzIHdyb25nLCBza2lwIHRoaXMgcGFja2FnZSBzaWxlbnRseVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkaXNjb3ZlckVudHJpZXMoXG4gICAgaW5wdXRzOiBzdHJpbmdbXSxcbiAgICBvdXRkaXI6IHN0cmluZyxcbiAgICB0c2NvbmZpZ1BhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEaXNjb3ZlcmVkRW50cmllcz4ge1xuICAgIGNvbnN0IHByZXZpb3VzUmVzdWx0ID0gdGhpcy5kaXNjb3ZlcmVkRW50cmllcy5nZXQoaW5wdXRzKTtcblxuICAgIGlmIChwcmV2aW91c1Jlc3VsdCkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBzdGF0ZTogRGlzY292ZXJlZEVudHJpZXMgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQoKSxcbiAgICAgIGRpc2NvdmVyZWRXb3JrZmxvd3M6IG5ldyBTZXQoKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0KCksXG4gICAgfTtcblxuICAgIGNvbnN0IGRpc2NvdmVyU3RhcnQgPSBEYXRlLm5vdygpO1xuXG4gICAgLy8gUmVzb2x2ZSB0aGUgU0RLIHJ1bnRpbWUgZW50cnkgcG9pbnQgc28gdGhhdCB0aGUgZGlzY292ZXJ5IHBhc3NcbiAgICAvLyB0cmFjZXMgdGhyb3VnaCBpdCBhbmQgZGlzY292ZXJzIHNlcmRlIGNsYXNzZXMgKGxpa2UgYFJ1bmApIHRoYXRcbiAgICAvLyBsaXZlIGluc2lkZSBTREsgcGFja2FnZXMuIFdpdGhvdXQgdGhpcywgZmlsZXMgbGlrZSBgcnVuLmpzYCBhcmVcbiAgICAvLyBvbmx5IGRpc2NvdmVyZWQgd2hlbiB1c2VyIGNvZGUgaGFwcGVucyB0byBpbXBvcnQgdGhlbS5cbiAgICAvLyBUaGlzIGlzIHJlc29sdmVkIGhlcmUgKHJhdGhlciB0aGFuIGluIGNhbGxlcnMpIHNvIHRoYXQgdGhlIG9yaWdpbmFsXG4gICAgLy8gYGlucHV0c2AgYXJyYXkgcmVmZXJlbmNlIGlzIHByZXNlcnZlZCBmb3IgV2Vha01hcCBjYWNoaW5nIOKAlCBjYWxsZXJzXG4gICAgLy8gbGlrZSBjcmVhdGVXb3JrZmxvd3NCdW5kbGUgYW5kIGNyZWF0ZVN0ZXBzQnVuZGxlIGNhbiBzaGFyZSB0aGUgc2FtZVxuICAgIC8vIGNhY2hlIGVudHJ5IHdoZW4gdGhleSBwYXNzIHRoZSBzYW1lIGlucHV0RmlsZXMgYXJyYXkuXG4gICAgY29uc3QgcmVzb2x2ZWRXb3JrZmxvd1J1bnRpbWUgPSBhd2FpdCBlbmhhbmNlZFJlc29sdmUoXG4gICAgICBvdXRkaXIsXG4gICAgICAnd29ya2Zsb3cvcnVudGltZSdcbiAgICApLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZW50cnlQb2ludHMgPSByZXNvbHZlZFdvcmtmbG93UnVudGltZVxuICAgICAgPyBbLi4uaW5wdXRzLCByZXNvbHZlZFdvcmtmbG93UnVudGltZV1cbiAgICAgIDogaW5wdXRzO1xuXG4gICAgY29uc3QgZWZmZWN0aXZlVHNjb25maWdQYXRoID1cbiAgICAgIHRzY29uZmlnUGF0aCA/PyAoYXdhaXQgdGhpcy5maW5kVHNDb25maWdQYXRoKCkpO1xuICAgIGNvbnN0IGVzYnVpbGRUc2NvbmZpZ09wdGlvbnMgPSBhd2FpdCBnZXRFc2J1aWxkVHNjb25maWdPcHRpb25zKFxuICAgICAgZWZmZWN0aXZlVHNjb25maWdQYXRoXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgICBlbnRyeVBvaW50cyxcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIGNyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbihzdGF0ZSwgdGhpcy50cmFuc2Zvcm1Qcm9qZWN0Um9vdCksXG4gICAgICAgIF0sXG4gICAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgb3V0ZGlyLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIHNvdXJjZW1hcDogZmFsc2UsXG4gICAgICAgIGFic1dvcmtpbmdEaXI6IHRoaXMuY29uZmlnLndvcmtpbmdEaXIsXG4gICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgICAgLi4uZXNidWlsZFRzY29uZmlnT3B0aW9ucyxcbiAgICAgICAgLy8gRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBzaG91bGQgbm90IGJlIGJ1bmRsZWQgZHVyaW5nIGRpc2NvdmVyeVxuICAgICAgICBleHRlcm5hbDogdGhpcy5jb25maWcuZXh0ZXJuYWxQYWNrYWdlcyB8fCBbXSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKF8pIHt9XG5cbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgIGBEaXNjb3ZlcmluZyB3b3JrZmxvdyBkaXJlY3RpdmVzYCxcbiAgICAgIGAke0RhdGUubm93KCkgLSBkaXNjb3ZlclN0YXJ0fW1zYFxuICAgICk7XG5cbiAgICAvLyBXYXJuIGFib3V0IGV4dGVybmFsIHBhY2thZ2VzIHRoYXQgY29udGFpbiB3b3JrZmxvdyBjb2RlXG4gICAgYXdhaXQgdGhpcy53YXJuQWJvdXRFeHRlcm5hbFdvcmtmbG93UGFja2FnZXMoKTtcblxuICAgIHRoaXMuZGlzY292ZXJlZEVudHJpZXMuc2V0KGlucHV0cywgc3RhdGUpO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgZGVidWcgaW5mb3JtYXRpb24gdG8gYSBKU09OIGZpbGUgZm9yIHRyb3VibGVzaG9vdGluZyBidWlsZCBpc3N1ZXMuXG4gICAqIFVzZXMgYXRvbWljIHdyaXRlICh0ZW1wIGZpbGUgKyByZW5hbWUpIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW5cbiAgICogbXVsdGlwbGUgYnVpbGRzIHJ1biBjb25jdXJyZW50bHkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHdyaXRlRGVidWdGaWxlKFxuICAgIG91dGZpbGU6IHN0cmluZyxcbiAgICBkZWJ1Z0RhdGE6IG9iamVjdCxcbiAgICBtZXJnZT86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5jb25maWcuZGVidWdGaWxlUHJlZml4IHx8ICcnO1xuICAgIGNvbnN0IHRhcmdldFBhdGggPSBgJHtkaXJuYW1lKG91dGZpbGUpfS8ke3ByZWZpeH0ke2Jhc2VuYW1lKG91dGZpbGUpfS5kZWJ1Zy5qc29uYDtcbiAgICBsZXQgZXhpc3RpbmcgPSB7fTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAobWVyZ2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUodGFyZ2V0UGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBleGlzdGluZyA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBGaWxlIGRvZXNuJ3QgZXhpc3QgeWV0IG9yIGlzIGNvcnJ1cHRlZCAtIHN0YXJ0IGZyZXNoLlxuICAgICAgICAgIC8vIERvbid0IGxvZyBlcnJvciBmb3IgRU5PRU5UIChmaWxlIG5vdCBmb3VuZCkgYXMgdGhhdCdzIGV4cGVjdGVkIG9uIGZpcnN0IHJ1bi5cbiAgICAgICAgICBpZiAoKGUgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRU5PRU5UJykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciByZWFkaW5nIGRlYnVnIGZpbGUsIHN0YXJ0aW5nIGZyZXNoOicsIGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXJnZWREYXRhID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5leGlzdGluZyxcbiAgICAgICAgICAuLi5kZWJ1Z0RhdGEsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIDJcbiAgICAgICk7XG5cbiAgICAgIC8vIFdyaXRlIGF0b21pY2FsbHk6IHdyaXRlIHRvIHRlbXAgZmlsZSwgdGhlbiByZW5hbWUuXG4gICAgICAvLyByZW5hbWUoKSBpcyBhdG9taWMgb24gUE9TSVggc3lzdGVtcyBhbmQgcHJvdmlkZXMgYmVzdC1lZmZvcnQgYXRvbWljaXR5IG9uIFdpbmRvd3MuXG4gICAgICAvLyBQcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgd2hlcmUgY29uY3VycmVudCBidWlsZHMgcmVhZCBwYXJ0aWFsbHktd3JpdHRlbiBmaWxlcy5cbiAgICAgIGNvbnN0IHRlbXBQYXRoID0gYCR7dGFyZ2V0UGF0aH0uJHtyYW5kb21VVUlEKCl9LnRtcGA7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUodGVtcFBhdGgsIG1lcmdlZERhdGEpO1xuICAgICAgYXdhaXQgcmVuYW1lKHRlbXBQYXRoLCB0YXJnZXRQYXRoKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gd3JpdGUgZGVidWcgZmlsZTonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYW5kIG9wdGlvbmFsbHkgdGhyb3dzIG9uIGVzYnVpbGQgZXJyb3JzIGFuZCB3YXJuaW5ncy5cbiAgICogQHBhcmFtIHRocm93T25FcnJvciAtIElmIHRydWUsIHRocm93cyBhbiBlcnJvciB3aGVuIGVzYnVpbGQgZXJyb3JzIGFyZSBwcmVzZW50XG4gICAqL1xuICBwcml2YXRlIGxvZ0VzYnVpbGRNZXNzYWdlcyhcbiAgICByZXN1bHQ6IHsgZXJyb3JzPzogYW55W107IHdhcm5pbmdzPzogYW55W10gfSxcbiAgICBwaGFzZTogc3RyaW5nLFxuICAgIHRocm93T25FcnJvciA9IHRydWUsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHN1cHByZXNzV2FybmluZ3M/OiBib29sZWFuO1xuICAgIH1cbiAgKTogdm9pZCB7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMgJiYgcmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGDinYwgZXNidWlsZCBlcnJvcnMgaW4gJHtwaGFzZX06YCk7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBlcnJvciBvZiByZXN1bHQuZXJyb3JzKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYCAgJHtlcnJvci50ZXh0fWApO1xuICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goZXJyb3IudGV4dCk7XG4gICAgICAgIGlmIChlcnJvci5sb2NhdGlvbikge1xuICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gYCAgICBhdCAke2Vycm9yLmxvY2F0aW9uLmZpbGV9OiR7ZXJyb3IubG9jYXRpb24ubGluZX06JHtlcnJvci5sb2NhdGlvbi5jb2x1bW59YDtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGxvY2F0aW9uKTtcbiAgICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2gobG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aHJvd09uRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IFdvcmtmbG93QnVpbGRFcnJvcihcbiAgICAgICAgICBgQnVpbGQgZmFpbGVkIGR1cmluZyAke3BoYXNlfTpcXG4ke2Vycm9yTWVzc2FnZXMuam9pbignXFxuJyl9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoaW50OiBgUmV2aWV3IHRoZSBlc2J1aWxkIGVycm9ycyBhYm92ZSDigJQgdGhleSBjb21lIGZyb20gdGhlICR7cGhhc2V9IGJ1bmRsZS4gRml4IHRoZSBvZmZlbmRpbmcgc291cmNlIGZpbGVzIGFuZCByZS1ydW4gdGhlIGJ1aWxkLmAsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFvcHRpb25zPy5zdXBwcmVzc1dhcm5pbmdzICYmXG4gICAgICByZXN1bHQud2FybmluZ3MgJiZcbiAgICAgIHJlc3VsdC53YXJuaW5ncy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCEgIGVzYnVpbGQgd2FybmluZ3MgaW4gJHtwaGFzZX06YCk7XG4gICAgICBmb3IgKGNvbnN0IHdhcm5pbmcgb2YgcmVzdWx0Lndhcm5pbmdzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgICAke3dhcm5pbmcudGV4dH1gKTtcbiAgICAgICAgaWYgKHdhcm5pbmcubG9jYXRpb24pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgICAgIGF0ICR7d2FybmluZy5sb2NhdGlvbi5maWxlfToke3dhcm5pbmcubG9jYXRpb24ubGluZX06JHt3YXJuaW5nLmxvY2F0aW9uLmNvbHVtbn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhYnNvbHV0ZSBmaWxlIHBhdGggdG8gYSBub3JtYWxpemVkIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHByaXZhdGUgZ2V0UmVsYXRpdmVGaWxlcGF0aChhYnNvbHV0ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEZpbGUgPSBhYnNvbHV0ZVBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRXb3JraW5nRGlyID0gdGhpcy5jb25maWcud29ya2luZ0Rpci5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gICAgbGV0IHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlKG5vcm1hbGl6ZWRXb3JraW5nRGlyLCBub3JtYWxpemVkRmlsZSkucmVwbGFjZShcbiAgICAgIC9cXFxcL2csXG4gICAgICAnLydcbiAgICApO1xuICAgIC8vIEhhbmRsZSBmaWxlcyBkaXNjb3ZlcmVkIG91dHNpZGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKCcuLi8nKSkge1xuICAgICAgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoKHBhcnQpID0+IHBhcnQgIT09ICcuLicpXG4gICAgICAgIC5qb2luKCcvJyk7XG4gICAgfVxuICAgIHJldHVybiByZWxhdGl2ZVBhdGg7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGJ1bmRsZSBmb3Igd29ya2Zsb3cgc3RlcCBmdW5jdGlvbnMuXG4gICAqIFN0ZXBzIGhhdmUgZnVsbCBOb2RlLmpzIHJ1bnRpbWUgYWNjZXNzIGFuZCBoYW5kbGUgc2lkZSBlZmZlY3RzLCBBUEkgY2FsbHMsIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIGV4dGVybmFsaXplTm9uU3RlcHMgLSBJZiB0cnVlLCBvbmx5IGJ1bmRsZXMgc3RlcCBlbnRyeSBwb2ludHMgYW5kIGV4dGVybmFsaXplcyBvdGhlciBjb2RlXG4gICAqIEBwYXJhbSBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzIC0gSWYgdHJ1ZSwgYWxzbyBidW5kbGVzIHByb2plY3QtbG9jYWwgZmlsZXMgaW1wb3J0ZWQgYnkgc3RlcCBlbnRyaWVzIGZvciBkaXJlY3QgcnVudGltZSBsb2FkaW5nXG4gICAqIEByZXR1cm5zIEJ1aWxkIGNvbnRleHQgKGZvciB3YXRjaCBtb2RlKSBhbmQgdGhlIGNvbGxlY3RlZCB3b3JrZmxvdyBtYW5pZmVzdFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZVN0ZXBzQnVuZGxlKHtcbiAgICBpbnB1dEZpbGVzLFxuICAgIGZvcm1hdCA9ICdlc20nLFxuICAgIG91dGZpbGUsXG4gICAgZXh0ZXJuYWxpemVOb25TdGVwcyxcbiAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzLFxuICAgIHJld3JpdGVUc0V4dGVuc2lvbnMsXG4gICAgdHNjb25maWdQYXRoLFxuICAgIGRpc2NvdmVyZWRFbnRyaWVzLFxuICAgIHNraXBFc21SZXF1aXJlQmFubmVyID0gZmFsc2UsXG4gIH06IHtcbiAgICB0c2NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gICAgaW5wdXRGaWxlczogc3RyaW5nW107XG4gICAgb3V0ZmlsZTogc3RyaW5nO1xuICAgIGZvcm1hdD86ICdjanMnIHwgJ2VzbSc7XG4gICAgZXh0ZXJuYWxpemVOb25TdGVwcz86IGJvb2xlYW47XG4gICAgYnVuZGxlVHJhbnNpdGl2ZUxvY2FsU3RlcERlcGVuZGVuY2llcz86IGJvb2xlYW47XG4gICAgcmV3cml0ZVRzRXh0ZW5zaW9ucz86IGJvb2xlYW47XG4gICAgZGlzY292ZXJlZEVudHJpZXM/OiBEaXNjb3ZlcmVkRW50cmllcztcbiAgICAvKipcbiAgICAgKiBXaGVuIHRydWUsIHNraXAgdGhlIGBjcmVhdGVSZXF1aXJlYCBiYW5uZXIgb24gdGhlIHN0ZXBzIGJ1bmRsZS5cbiAgICAgKiBVc2VkIGJ5IGBjcmVhdGVDb21iaW5lZEJ1bmRsZWAgd2l0aCBgYnVuZGxlRmluYWxPdXRwdXQ6IHRydWVgIHdoZXJlXG4gICAgICogdGhlIG91dGVyIGVzYnVpbGQgcGFzcyBwcm92aWRlcyBpdHMgb3duIGJhbm5lciwgcHJldmVudGluZyB0aGVcbiAgICAgKiBgX19jcmVhdGVSZXF1aXJlYCBpZGVudGlmaWVyIGZyb20gYmVpbmcgZGVjbGFyZWQgdHdpY2UgYWZ0ZXIgaW5saW5pbmcuXG4gICAgICovXG4gICAgc2tpcEVzbVJlcXVpcmVCYW5uZXI/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgY29udGV4dDogZXNidWlsZC5CdWlsZENvbnRleHQgfCB1bmRlZmluZWQ7XG4gICAgbWFuaWZlc3Q6IFdvcmtmbG93TWFuaWZlc3Q7XG4gIH0+IHtcbiAgICBjb25zdCBzdGVwc0J1bmRsZVN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB3b3JrZmxvd01hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0ID0ge307XG4gICAgY29uc3QgYnVpbHRJblN0ZXBzID0gJ3dvcmtmbG93L2ludGVybmFsL2J1aWx0aW5zJztcblxuICAgIGNvbnN0IHJlc29sdmVkQnVpbHRJblN0ZXBzID0gYXdhaXQgZW5oYW5jZWRSZXNvbHZlKFxuICAgICAgZGlybmFtZShvdXRmaWxlKSxcbiAgICAgICd3b3JrZmxvdy9pbnRlcm5hbC9idWlsdGlucydcbiAgICApLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIHRocm93IG5ldyBXb3JrZmxvd0J1aWxkRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gcmVzb2x2ZSBidWlsdC1pbiBzdGVwcyBzb3VyY2VzLlxcblxcbkNhdXNlZCBieTogJHtTdHJpbmcoZXJyKX1gLFxuICAgICAgICB7XG4gICAgICAgICAgaGludDogJ3J1biBgcG5wbSBpbnN0YWxsIHdvcmtmbG93YCB0byByZXNvbHZlIHRoaXMgaXNzdWUuJyxcbiAgICAgICAgICBjYXVzZTogZXJyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gRGlzY292ZXJ5IG9mIHdvcmtmbG93L3N0ZXAvc2VyZGUgZW50cmllcy4gVGhlIFNESyBydW50aW1lIGVudHJ5IHBvaW50XG4gICAgLy8gKHdvcmtmbG93L3J1bnRpbWUpIGlzIHJlc29sdmVkIGluc2lkZSBkaXNjb3ZlckVudHJpZXMoKSBpdHNlbGYgc28gdGhhdFxuICAgIC8vIGNhbGxlcnMgY2FuIHBhc3MgdGhlIG9yaWdpbmFsIGlucHV0RmlsZXMgcmVmZXJlbmNlIGFuZCBiZW5lZml0IGZyb21cbiAgICAvLyBXZWFrTWFwIGNhY2hpbmcgYWNyb3NzIGNyZWF0ZVdvcmtmbG93c0J1bmRsZSAvIGNyZWF0ZVN0ZXBzQnVuZGxlIGNhbGxzLlxuICAgIGNvbnN0IGRpc2NvdmVyZWQgPVxuICAgICAgZGlzY292ZXJlZEVudHJpZXMgPz9cbiAgICAgIChhd2FpdCB0aGlzLmRpc2NvdmVyRW50cmllcyhpbnB1dEZpbGVzLCBkaXJuYW1lKG91dGZpbGUpLCB0c2NvbmZpZ1BhdGgpKTtcbiAgICBjb25zdCBzdGVwRmlsZXMgPSBbLi4uZGlzY292ZXJlZC5kaXNjb3ZlcmVkU3RlcHNdLnNvcnQoKTtcbiAgICBjb25zdCB3b3JrZmxvd0ZpbGVzID0gWy4uLmRpc2NvdmVyZWQuZGlzY292ZXJlZFdvcmtmbG93c10uc29ydCgpO1xuICAgIGNvbnN0IHNlcmRlRmlsZXMgPSBbLi4uZGlzY292ZXJlZC5kaXNjb3ZlcmVkU2VyZGVGaWxlc10uc29ydCgpO1xuXG4gICAgLy8gSW5jbHVkZSBzZXJkZSBmaWxlcyB0aGF0IGFyZW4ndCBhbHJlYWR5IHN0ZXAgZmlsZXMgZm9yIGNyb3NzLWNvbnRleHQgY2xhc3MgcmVnaXN0cmF0aW9uLlxuICAgIC8vIENsYXNzZXMgbmVlZCB0byBiZSByZWdpc3RlcmVkIGluIHRoZSBzdGVwIGJ1bmRsZSBzbyB0aGV5IGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAgICAvLyB3aGVuIHJlY2VpdmluZyBkYXRhIGZyb20gd29ya2Zsb3dzIGFuZCBzZXJpYWxpemVkIHdoZW4gcmV0dXJuaW5nIGRhdGEgdG8gd29ya2Zsb3dzLlxuICAgIGNvbnN0IHN0ZXBGaWxlc1NldCA9IG5ldyBTZXQoc3RlcEZpbGVzKTtcbiAgICBjb25zdCBzZXJkZU9ubHlGaWxlcyA9IHNlcmRlRmlsZXMuZmlsdGVyKChmKSA9PiAhc3RlcEZpbGVzU2V0LmhhcyhmKSk7XG5cbiAgICAvLyBsb2cgdGhlIHN0ZXAgZmlsZXMgZm9yIGRlYnVnZ2luZ1xuICAgIGF3YWl0IHRoaXMud3JpdGVEZWJ1Z0ZpbGUob3V0ZmlsZSwge1xuICAgICAgc3RlcEZpbGVzLFxuICAgICAgd29ya2Zsb3dGaWxlcyxcbiAgICAgIHNlcmRlT25seUZpbGVzLFxuICAgIH0pO1xuXG4gICAgLy8gSGVscGVyIHRvIGNyZWF0ZSBpbXBvcnQgc3RhdGVtZW50IGZyb20gZmlsZSBwYXRoXG4gICAgLy8gRm9yIHdvcmtzcGFjZS9ub2RlX21vZHVsZXMgcGFja2FnZXMsIHVzZXMgdGhlIHBhY2thZ2UgbmFtZSBzbyBlc2J1aWxkXG4gICAgLy8gd2lsbCByZXNvbHZlIHRocm91Z2ggcGFja2FnZS5qc29uIGV4cG9ydHMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29uZGl0aW9uc1xuICAgIGNvbnN0IGNyZWF0ZUltcG9ydCA9IChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRXb3Jrc3BhY2VSb290ID0gdGhpcy5jb25maWcud29ya2luZ0RpclxuICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFdvcmtzcGFjZUZpbGUgPSBmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgIC8vIE9ubHkgdXNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBmb3Igd29ya3NwYWNlIHN5bWxpbmtzIChmaWxlc1xuICAgICAgLy8gb3V0c2lkZSBub2RlX21vZHVsZXMgaW4gYSBwYWNrYWdlcy8qL3NyYy8gZGlyZWN0b3J5KS4gRm9yIHRhcmJhbGwtXG4gICAgICAvLyBpbnN0YWxsZWQgcGFja2FnZXMgKGZpbGVzIGluc2lkZSBub2RlX21vZHVsZXMvKSwgZmFsbCB0aHJvdWdoIHRvXG4gICAgICAvLyBnZXRJbXBvcnRQYXRoIHdoaWNoIHJldHVybnMgcGFja2FnZSBzcGVjaWZpZXJzIOKAlCB0aGlzIGFsbG93cyB0aGVcbiAgICAgIC8vIFNXQyBwbHVnaW4ncyBleHRlcm5hbGl6ZU5vblN0ZXBzIHRvIHdvcmsgY29ycmVjdGx5LlxuICAgICAgY29uc3QgaXNXb3Jrc3BhY2VTb3VyY2VCYWNrZWRQYWNrYWdlRmlsZSA9XG4gICAgICAgIG5vcm1hbGl6ZWRXb3Jrc3BhY2VGaWxlLmluY2x1ZGVzKCcvcGFja2FnZXMvJykgJiZcbiAgICAgICAgbm9ybWFsaXplZFdvcmtzcGFjZUZpbGUuaW5jbHVkZXMoJy9zcmMvJykgJiZcbiAgICAgICAgIW5vcm1hbGl6ZWRXb3Jrc3BhY2VGaWxlLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpICYmXG4gICAgICAgICEoXG4gICAgICAgICAgbm9ybWFsaXplZFdvcmtzcGFjZUZpbGUgPT09IG5vcm1hbGl6ZWRXb3Jrc3BhY2VSb290IHx8XG4gICAgICAgICAgbm9ybWFsaXplZFdvcmtzcGFjZUZpbGUuc3RhcnRzV2l0aChgJHtub3JtYWxpemVkV29ya3NwYWNlUm9vdH0vYClcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IGlzU291cmNlQmFja2VkUGFja2FnZUZpbGUgPSBpc1dvcmtzcGFjZVNvdXJjZUJhY2tlZFBhY2thZ2VGaWxlO1xuXG4gICAgICBpZiAoaXNTb3VyY2VCYWNrZWRQYWNrYWdlRmlsZSkge1xuICAgICAgICBsZXQgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUoXG4gICAgICAgICAgbm9ybWFsaXplZFdvcmtzcGFjZVJvb3QsXG4gICAgICAgICAgbm9ybWFsaXplZFdvcmtzcGFjZUZpbGVcbiAgICAgICAgKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gICAgICAgIGlmICghcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4vJykgJiYgIXJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKCcuLi8nKSkge1xuICAgICAgICAgIHJlbGF0aXZlUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgJyR7cmVsYXRpdmVQYXRofSc7YDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBpbXBvcnRQYXRoLCBpc1BhY2thZ2UgfSA9IGdldEltcG9ydFBhdGgoXG4gICAgICAgIGZpbGUsXG4gICAgICAgIHRoaXMuY29uZmlnLndvcmtpbmdEaXJcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc1BhY2thZ2UpIHtcbiAgICAgICAgLy8gVXNlIHBhY2thZ2UgbmFtZSAtIGVzYnVpbGQgd2lsbCByZXNvbHZlIHZpYSBwYWNrYWdlLmpzb24gZXhwb3J0c1xuICAgICAgICByZXR1cm4gYGltcG9ydCAnJHtpbXBvcnRQYXRofSc7YDtcbiAgICAgIH1cblxuICAgICAgLy8gTG9jYWwgYXBwIGZpbGUgLSB1c2UgcmVsYXRpdmUgcGF0aFxuICAgICAgLy8gTm9ybWFsaXplIGJvdGggcGF0aHMgdG8gZm9yd2FyZCBzbGFzaGVzIGJlZm9yZSBjYWxsaW5nIHJlbGF0aXZlKClcbiAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWwgb24gV2luZG93cyB3aGVyZSByZWxhdGl2ZSgpIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cyB3aXRoIG1peGVkIHBhdGggZm9ybWF0c1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFdvcmtpbmdEaXIgPSB0aGlzLmNvbmZpZy53b3JraW5nRGlyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGaWxlID0gZmlsZS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gICAgICAvLyBDYWxjdWxhdGUgcmVsYXRpdmUgcGF0aCBmcm9tIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBmaWxlXG4gICAgICBsZXQgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUobm9ybWFsaXplZFdvcmtpbmdEaXIsIG5vcm1hbGl6ZWRGaWxlKS5yZXBsYWNlKFxuICAgICAgICAvXFxcXC9nLFxuICAgICAgICAnLydcbiAgICAgICk7XG4gICAgICAvLyBFbnN1cmUgcmVsYXRpdmUgcGF0aHMgc3RhcnQgd2l0aCAuLyBzbyBlc2J1aWxkIHJlc29sdmVzIHRoZW0gY29ycmVjdGx5LlxuICAgICAgLy8gUGF0aHMgbGlrZSBcIi5vdXRwdXQvLi4uXCIgYXJlIG5vdCB2YWxpZCByZWxhdGl2ZSBzcGVjaWZpZXJzIGFuZCBtdXN0XG4gICAgICAvLyBiZWNvbWUgXCIuLy5vdXRwdXQvLi4uXCIuXG4gICAgICBpZiAoIXJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKCcuLycpICYmICFyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgnLi4vJykpIHtcbiAgICAgICAgcmVsYXRpdmVQYXRoID0gYC4vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgaW1wb3J0ICcke3JlbGF0aXZlUGF0aH0nO2A7XG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIHZpcnR1YWwgZW50cnkgdGhhdCBpbXBvcnRzIGFsbCBmaWxlcy4gQWxsIHN0ZXAgZGVmaW5pdGlvbnNcbiAgICAvLyB3aWxsIGdldCByZWdpc3RlcmVkIHRoYW5rcyB0byB0aGUgc3djIHRyYW5zZm9ybS5cbiAgICBjb25zdCBzdGVwSW1wb3J0cyA9IHN0ZXBGaWxlcy5tYXAoY3JlYXRlSW1wb3J0KS5qb2luKCdcXG4nKTtcblxuICAgIC8vIEluY2x1ZGUgc2VyZGUtb25seSBmaWxlcyBmb3IgY2xhc3MgcmVnaXN0cmF0aW9uIHNpZGUgZWZmZWN0c1xuICAgIGNvbnN0IHNlcmRlSW1wb3J0cyA9IHNlcmRlT25seUZpbGVzLm1hcChjcmVhdGVJbXBvcnQpLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgZW50cnlDb250ZW50ID0gYFxuICAgIC8vIEJ1aWx0IGluIHN0ZXBzXG4gICAgaW1wb3J0ICcke2J1aWx0SW5TdGVwc30nO1xuICAgIC8vIFVzZXIgc3RlcHNcbiAgICAke3N0ZXBJbXBvcnRzfVxuICAgIC8vIFNlcmRlIGZpbGVzIGZvciBjcm9zcy1jb250ZXh0IGNsYXNzIHJlZ2lzdHJhdGlvblxuICAgICR7c2VyZGVJbXBvcnRzfVxuICAgIC8vIFNlbnRpbmVsIGV4cG9ydCBzbyBidW5kbGVycyAocm9sbHVwKSBkb24ndCB0cmVlLXNoYWtlIHRoaXMgbW9kdWxlXG4gICAgLy8gd2hlbiBpdCdzIGltcG9ydGVkIGFzIGEgc2lkZS1lZmZlY3Qtb25seSBkZXBlbmRlbmN5LlxuICAgIGV4cG9ydCBjb25zdCBfX3N0ZXBzX3JlZ2lzdGVyZWQgPSB0cnVlO2A7XG5cbiAgICAvLyBCdW5kbGUgd2l0aCBlc2J1aWxkIGFuZCBvdXIgY3VzdG9tIFNXQyBwbHVnaW5cbiAgICBjb25zdCBlbnRyaWVzVG9CdW5kbGUgPSBleHRlcm5hbGl6ZU5vblN0ZXBzXG4gICAgICA/IFtcbiAgICAgICAgICAuLi5zdGVwRmlsZXMsXG4gICAgICAgICAgLi4uc2VyZGVGaWxlcyxcbiAgICAgICAgICAuLi4ocmVzb2x2ZWRCdWlsdEluU3RlcHMgPyBbcmVzb2x2ZWRCdWlsdEluU3RlcHNdIDogW10pLFxuICAgICAgICBdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBub3JtYWxpemVkRW50cmllc1RvQnVuZGxlID0gZW50cmllc1RvQnVuZGxlXG4gICAgICA/IGF3YWl0IHdpdGhSZWFscGF0aHMoZW50cmllc1RvQnVuZGxlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNpZGVFZmZlY3RFbnRyaWVzID0gYXdhaXQgd2l0aFJlYWxwYXRocyhbXG4gICAgICAuLi5zdGVwRmlsZXMsXG4gICAgICAuLi5zZXJkZU9ubHlGaWxlcyxcbiAgICAgIC4uLihyZXNvbHZlZEJ1aWx0SW5TdGVwcyA/IFtyZXNvbHZlZEJ1aWx0SW5TdGVwc10gOiBbXSksXG4gICAgXSk7XG4gICAgY29uc3QgZXNidWlsZFRzY29uZmlnT3B0aW9ucyA9XG4gICAgICBhd2FpdCBnZXRFc2J1aWxkVHNjb25maWdPcHRpb25zKHRzY29uZmlnUGF0aCk7XG4gICAgY29uc3QgeyBiYW5uZXI6IGltcG9ydE1ldGFCYW5uZXIsIGRlZmluZTogaW1wb3J0TWV0YURlZmluZSB9ID1cbiAgICAgIHRoaXMuZ2V0Q2pzSW1wb3J0TWV0YVBvbHlmaWxsKGZvcm1hdCk7XG4gICAgY29uc3QgZXNtUmVxdWlyZUJhbm5lciA9IHNraXBFc21SZXF1aXJlQmFubmVyXG4gICAgICA/ICcnXG4gICAgICA6IHRoaXMuZ2V0RXNtUmVxdWlyZUJhbm5lcihmb3JtYXQpO1xuXG4gICAgY29uc3QgZXNidWlsZEN0eCA9IGF3YWl0IGVzYnVpbGQuY29udGV4dCh7XG4gICAgICBiYW5uZXI6IHtcbiAgICAgICAganM6IGAvLyBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZCBmaWxlXFxuLyogZXNsaW50LWRpc2FibGUgKi9cXG4ke2ltcG9ydE1ldGFCYW5uZXJ9JHtlc21SZXF1aXJlQmFubmVyfWAsXG4gICAgICB9LFxuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGVudHJ5Q29udGVudCxcbiAgICAgICAgcmVzb2x2ZURpcjogdGhpcy5jb25maWcud29ya2luZ0RpcixcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgb3V0ZmlsZSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRoaXMuY29uZmlnLndvcmtpbmdEaXIsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgY29uZGl0aW9uczogWydub2RlJ10sXG4gICAgICB0YXJnZXQ6ICdlczIwMjInLFxuICAgICAgd3JpdGU6IHRydWUsXG4gICAgICB0cmVlU2hha2luZzogdHJ1ZSxcbiAgICAgIGtlZXBOYW1lczogdHJ1ZSxcbiAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICBqc3g6ICdwcmVzZXJ2ZScsXG4gICAgICBsb2dMZXZlbDogJ2Vycm9yJyxcbiAgICAgIC8vIFVzZSB0c2NvbmZpZyBmb3IgcGF0aCBhbGlhcyByZXNvbHV0aW9uLlxuICAgICAgLy8gRm9yIHN5bWxpbmtlZCBjb25maWdzIHRoaXMgdXNlcyB0c2NvbmZpZ1JhdyB0byBwcmVzZXJ2ZSBjd2QtcmVsYXRpdmUgYWxpYXNlcy5cbiAgICAgIC4uLmVzYnVpbGRUc2NvbmZpZ09wdGlvbnMsXG4gICAgICBkZWZpbmU6IGltcG9ydE1ldGFEZWZpbmUsXG4gICAgICByZXNvbHZlRXh0ZW5zaW9uczogW1xuICAgICAgICAnLnRzJyxcbiAgICAgICAgJy50c3gnLFxuICAgICAgICAnLm10cycsXG4gICAgICAgICcuY3RzJyxcbiAgICAgICAgJy5qcycsXG4gICAgICAgICcuanN4JyxcbiAgICAgICAgJy5tanMnLFxuICAgICAgICAnLmNqcycsXG4gICAgICBdLFxuICAgICAgLy8gSW5saW5lIHNvdXJjZSBtYXBzIGZvciBiZXR0ZXIgc3RhY2sgdHJhY2VzIGluIHN0ZXAgZXhlY3V0aW9uLlxuICAgICAgLy8gU3RlcHMgZXhlY3V0ZSBpbiBOb2RlLmpzIGNvbnRleHQgYW5kIGlubGluZSBzb3VyY2VtYXBzIGVuc3VyZSB3ZSBnZXRcbiAgICAgIC8vIG1lYW5pbmdmdWwgc3RhY2sgdHJhY2VzIHdpdGggcHJvcGVyIGZpbGUgbmFtZXMgYW5kIGxpbmUgbnVtYmVycyB3aGVuIGVycm9yc1xuICAgICAgLy8gb2NjdXIgaW4gZGVlcGx5IG5lc3RlZCBmdW5jdGlvbiBjYWxscyBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMuXG4gICAgICBzb3VyY2VtYXA6IHRoaXMucmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJyksXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIC8vIEhhbmRsZSBwc2V1ZG8tcGFja2FnZXMgbGlrZSAnc2VydmVyLW9ubHknIGFuZCAnY2xpZW50LW9ubHknIGJ5IHByb3ZpZGluZ1xuICAgICAgICAvLyBlbXB0eSBtb2R1bGVzLiBNdXN0IHJ1biBmaXJzdCB0byBpbnRlcmNlcHQgdGhlc2UgYmVmb3JlIG90aGVyIHJlc29sdXRpb24uXG4gICAgICAgIGNyZWF0ZVBzZXVkb1BhY2thZ2VQbHVnaW4oKSxcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBub3JtYWxpemVkRW50cmllc1RvQnVuZGxlLFxuICAgICAgICAgIG91dGRpcjogb3V0ZmlsZSA/IGRpcm5hbWUob3V0ZmlsZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvamVjdFJvb3Q6IHRoaXMudHJhbnNmb3JtUHJvamVjdFJvb3QsXG4gICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdCxcbiAgICAgICAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzLFxuICAgICAgICAgIHJld3JpdGVUc0V4dGVuc2lvbnMsXG4gICAgICAgICAgc2lkZUVmZmVjdEVudHJpZXM6IG5vcm1hbGl6ZWRTaWRlRWZmZWN0RW50cmllcyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgLy8gUGx1Z2luIHNob3VsZCBjYXRjaCBtb3N0IHRoaW5ncywgYnV0IHRoaXMgbGV0cyB1c2VycyBoYXJkIG92ZXJyaWRlXG4gICAgICAvLyBpZiB0aGUgcGx1Z2luIG1pc3NlcyBhbnl0aGluZyB0aGF0IHNob3VsZCBiZSBleHRlcm5hbGl6ZWRcbiAgICAgIGV4dGVybmFsOiBbJ2J1bicsICdidW46KicsIC4uLih0aGlzLmNvbmZpZy5leHRlcm5hbFBhY2thZ2VzIHx8IFtdKV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGVwc1Jlc3VsdCA9IGF3YWl0IGVzYnVpbGRDdHgucmVidWlsZCgpO1xuXG4gICAgdGhpcy5sb2dFc2J1aWxkTWVzc2FnZXMoc3RlcHNSZXN1bHQsICdzdGVwcyBidW5kbGUgY3JlYXRpb24nKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDcmVhdGVkIHN0ZXBzIGJ1bmRsZScsXG4gICAgICBgJHtEYXRlLm5vdygpIC0gc3RlcHNCdW5kbGVTdGFydH1tc2BcbiAgICApO1xuXG4gICAgLy8gSGFuZGxlIHdvcmtmbG93LW9ubHkgZmlsZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIHRyZWUtc2hha2VuIGZyb20gdGhlIGJ1bmRsZS5cbiAgICAvLyBUaGVzZSBmaWxlcyBoYXZlIG5vIHN0ZXBzLCBzbyBlc2J1aWxkIHJlbW92ZXMgdGhlbSwgYnV0IHdlIHN0aWxsIG5lZWQgdGhlaXJcbiAgICAvLyB3b3JrZmxvdyBtZXRhZGF0YSBmb3IgdGhlIG1hbmlmZXN0LiBUcmFuc2Zvcm0gdGhlbSBzZXBhcmF0ZWx5LlxuICAgIGNvbnN0IHdvcmtmbG93T25seUZpbGVzID0gd29ya2Zsb3dGaWxlcy5maWx0ZXIoXG4gICAgICAoZikgPT4gIXN0ZXBGaWxlcy5pbmNsdWRlcyhmKVxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB3b3JrZmxvd09ubHlGaWxlcy5tYXAoYXN5bmMgKHdvcmtmbG93RmlsZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHJlYWRGaWxlKHdvcmtmbG93RmlsZSwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb25zdCByZWxhdGl2ZUZpbGVwYXRoID0gdGhpcy5nZXRSZWxhdGl2ZUZpbGVwYXRoKHdvcmtmbG93RmlsZSk7XG4gICAgICAgICAgY29uc3QgeyB3b3JrZmxvd01hbmlmZXN0OiBmaWxlTWFuaWZlc3QgfSA9IGF3YWl0IGFwcGx5U3djVHJhbnNmb3JtKFxuICAgICAgICAgICAgcmVsYXRpdmVGaWxlcGF0aCxcbiAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICd3b3JrZmxvdycsXG4gICAgICAgICAgICB3b3JrZmxvd0ZpbGUsXG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybVByb2plY3RSb290XG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmlsZU1hbmlmZXN0LndvcmtmbG93cykge1xuICAgICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdC53b3JrZmxvd3MgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0LndvcmtmbG93cyB8fCB7fSxcbiAgICAgICAgICAgICAgZmlsZU1hbmlmZXN0LndvcmtmbG93c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpbGVNYW5pZmVzdC5jbGFzc2VzKSB7XG4gICAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0LmNsYXNzZXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0LmNsYXNzZXMgfHwge30sXG4gICAgICAgICAgICAgIGZpbGVNYW5pZmVzdC5jbGFzc2VzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBMb2cgd2FybmluZyBidXQgY29udGludWUgLSBkb24ndCBmYWlsIGJ1aWxkIGZvciB3b3JrZmxvdy1vbmx5IGZpbGUgaXNzdWVzXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFdhcm5pbmc6IEZhaWxlZCB0byBleHRyYWN0IHdvcmtmbG93IG1ldGFkYXRhIGZyb20gJHt3b3JrZmxvd0ZpbGV9OmAsXG4gICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgLmdpdGlnbm9yZSBpbiAuc3djIGRpcmVjdG9yeVxuICAgIGF3YWl0IHRoaXMuY3JlYXRlU3djR2l0aWdub3JlKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcud2F0Y2gpIHtcbiAgICAgIHJldHVybiB7IGNvbnRleHQ6IGVzYnVpbGRDdHgsIG1hbmlmZXN0OiB3b3JrZmxvd01hbmlmZXN0IH07XG4gICAgfVxuICAgIGF3YWl0IGVzYnVpbGRDdHguZGlzcG9zZSgpO1xuICAgIHJldHVybiB7IGNvbnRleHQ6IHVuZGVmaW5lZCwgbWFuaWZlc3Q6IHdvcmtmbG93TWFuaWZlc3QgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYnVuZGxlIGZvciB3b3JrZmxvdyBvcmNoZXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiAgICogV29ya2Zsb3dzIHJ1biBpbiBhIHNhbmRib3hlZCBWTSBhbmQgY29vcmRpbmF0ZSBzdGVwIGV4ZWN1dGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGJ1bmRsZUZpbmFsT3V0cHV0IC0gSWYgZmFsc2UsIHNraXBzIHRoZSBmaW5hbCBidW5kbGluZyBzdGVwICh1c2VkIGJ5IE5leHQuanMpXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlV29ya2Zsb3dzQnVuZGxlKHtcbiAgICBpbnB1dEZpbGVzLFxuICAgIGZvcm1hdCA9ICdlc20nLFxuICAgIG91dGZpbGUsXG4gICAgYnVuZGxlRmluYWxPdXRwdXQgPSB0cnVlLFxuICAgIGtlZXBJbnRlcmltQnVuZGxlQ29udGV4dCA9IHRoaXMuY29uZmlnLndhdGNoLFxuICAgIHRzY29uZmlnUGF0aCxcbiAgICBkaXNjb3ZlcmVkRW50cmllcyxcbiAgfToge1xuICAgIHRzY29uZmlnUGF0aD86IHN0cmluZztcbiAgICBpbnB1dEZpbGVzOiBzdHJpbmdbXTtcbiAgICBvdXRmaWxlOiBzdHJpbmc7XG4gICAgZm9ybWF0PzogJ2NqcycgfCAnZXNtJztcbiAgICBidW5kbGVGaW5hbE91dHB1dD86IGJvb2xlYW47XG4gICAga2VlcEludGVyaW1CdW5kbGVDb250ZXh0PzogYm9vbGVhbjtcbiAgICBkaXNjb3ZlcmVkRW50cmllcz86IERpc2NvdmVyZWRFbnRyaWVzO1xuICB9KTogUHJvbWlzZTx7XG4gICAgbWFuaWZlc3Q6IFdvcmtmbG93TWFuaWZlc3Q7XG4gICAgaW50ZXJpbUJ1bmRsZUN0eD86IGVzYnVpbGQuQnVpbGRDb250ZXh0O1xuICAgIGJ1bmRsZUZpbmFsPzogKGludGVyaW1CdW5kbGVSZXN1bHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogVGhlIHJhdyB3b3JrZmxvdyBWTSBjb2RlIChiZWZvcmUgd3JhcHBpbmcgd2l0aCBlbnRyeXBvaW50KSAqL1xuICAgIGludGVyaW1CdW5kbGVUZXh0Pzogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgZGlzY292ZXJlZCA9XG4gICAgICBkaXNjb3ZlcmVkRW50cmllcyA/P1xuICAgICAgKGF3YWl0IHRoaXMuZGlzY292ZXJFbnRyaWVzKGlucHV0RmlsZXMsIGRpcm5hbWUob3V0ZmlsZSksIHRzY29uZmlnUGF0aCkpO1xuICAgIGNvbnN0IHdvcmtmbG93RmlsZXMgPSBbLi4uZGlzY292ZXJlZC5kaXNjb3ZlcmVkV29ya2Zsb3dzXS5zb3J0KCk7XG4gICAgY29uc3Qgc2VyZGVGaWxlcyA9IFsuLi5kaXNjb3ZlcmVkLmRpc2NvdmVyZWRTZXJkZUZpbGVzXS5zb3J0KCk7XG5cbiAgICAvLyBJbmNsdWRlIHNlcmRlIGZpbGVzIHRoYXQgYXJlbid0IGFscmVhZHkgd29ya2Zsb3cgZmlsZXMgZm9yIGNyb3NzLWNvbnRleHQgY2xhc3MgcmVnaXN0cmF0aW9uLlxuICAgIC8vIENsYXNzZXMgbmVlZCB0byBiZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZmxvdyBidW5kbGUgc28gdGhleSBjYW4gYmUgZGVzZXJpYWxpemVkXG4gICAgLy8gd2hlbiByZWNlaXZpbmcgZGF0YSBmcm9tIHN0ZXBzIG9yIHdoZW4gc2VyaWFsaXppbmcgZGF0YSB0byBzZW5kIHRvIHN0ZXBzLlxuICAgIGNvbnN0IHdvcmtmbG93RmlsZXNTZXQgPSBuZXcgU2V0KHdvcmtmbG93RmlsZXMpO1xuICAgIGNvbnN0IHNlcmRlT25seUZpbGVzID0gc2VyZGVGaWxlcy5maWx0ZXIoKGYpID0+ICF3b3JrZmxvd0ZpbGVzU2V0LmhhcyhmKSk7XG5cbiAgICAvLyBsb2cgdGhlIHdvcmtmbG93IGZpbGVzIGZvciBkZWJ1Z2dpbmdcbiAgICBhd2FpdCB0aGlzLndyaXRlRGVidWdGaWxlKG91dGZpbGUsIHsgd29ya2Zsb3dGaWxlcywgc2VyZGVPbmx5RmlsZXMgfSk7XG5cbiAgICAvLyBIZWxwZXIgdG8gY3JlYXRlIGltcG9ydCBzdGF0ZW1lbnQgZnJvbSBmaWxlIHBhdGhcbiAgICAvLyBGb3IgcGFja2FnZXMsIHVzZXMgdGhlIHBhY2thZ2UgbmFtZSBzbyBlc2J1aWxkIHdpbGwgcmVzb2x2ZSB0aHJvdWdoXG4gICAgLy8gcGFja2FnZS5qc29uIGV4cG9ydHMgd2l0aCBjb25kaXRpb25zOiBbJ3dvcmtmbG93J11cbiAgICBjb25zdCBjcmVhdGVJbXBvcnQgPSAoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IGltcG9ydFBhdGgsIGlzUGFja2FnZSB9ID0gZ2V0SW1wb3J0UGF0aChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdGhpcy5jb25maWcud29ya2luZ0RpclxuICAgICAgKTtcblxuICAgICAgaWYgKGlzUGFja2FnZSkge1xuICAgICAgICAvLyBVc2UgcGFja2FnZSBuYW1lIC0gZXNidWlsZCB3aWxsIHJlc29sdmUgdmlhIHBhY2thZ2UuanNvbiBleHBvcnRzXG4gICAgICAgIC8vIGFuZCBhcHBseSB0aGUgJ3dvcmtmbG93JyBjb25kaXRpb25cbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgJyR7aW1wb3J0UGF0aH0nO2A7XG4gICAgICB9XG5cbiAgICAgIC8vIExvY2FsIGFwcCBmaWxlIC0gdXNlIHJlbGF0aXZlIHBhdGhcbiAgICAgIC8vIE5vcm1hbGl6ZSBib3RoIHBhdGhzIHRvIGZvcndhcmQgc2xhc2hlcyBiZWZvcmUgY2FsbGluZyByZWxhdGl2ZSgpXG4gICAgICAvLyBUaGlzIGlzIGNyaXRpY2FsIG9uIFdpbmRvd3Mgd2hlcmUgcmVsYXRpdmUoKSBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMgd2l0aCBtaXhlZCBwYXRoIGZvcm1hdHNcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRXb3JraW5nRGlyID0gdGhpcy5jb25maWcud29ya2luZ0Rpci5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gICAgICBjb25zdCBub3JtYWxpemVkRmlsZSA9IGZpbGUucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZnJvbSB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZmlsZVxuICAgICAgbGV0IHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlKG5vcm1hbGl6ZWRXb3JraW5nRGlyLCBub3JtYWxpemVkRmlsZSkucmVwbGFjZShcbiAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgJy8nXG4gICAgICApO1xuICAgICAgLy8gRW5zdXJlIHJlbGF0aXZlIHBhdGhzIHN0YXJ0IHdpdGggLi8gc28gZXNidWlsZCByZXNvbHZlcyB0aGVtIGNvcnJlY3RseS5cbiAgICAgIC8vIFBhdGhzIGxpa2UgXCIub3V0cHV0Ly4uLlwiIGFyZSBub3QgdmFsaWQgcmVsYXRpdmUgc3BlY2lmaWVycyBhbmQgbXVzdFxuICAgICAgLy8gYmVjb21lIFwiLi8ub3V0cHV0Ly4uLlwiLlxuICAgICAgaWYgKCFyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgnLi8nKSAmJiAhcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgICAgIHJlbGF0aXZlUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYGltcG9ydCAnJHtyZWxhdGl2ZVBhdGh9JztgO1xuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSB2aXJ0dWFsIGVudHJ5IHRoYXQgaW1wb3J0cyBhbGwgd29ya2Zsb3cgZmlsZXNcbiAgICAvLyBUaGUgU1dDIHBsdWdpbiBpbiB3b3JrZmxvdyBtb2RlIGVtaXRzIGBnbG9iYWxUaGlzLl9fcHJpdmF0ZV93b3JrZmxvd3Muc2V0KHdvcmtmbG93SWQsIGZuKWBcbiAgICAvLyBjYWxscyBkaXJlY3RseSwgc28gd2UganVzdCBuZWVkIHRvIGltcG9ydCB0aGUgZmlsZXMgKE1hcCBpcyBpbml0aWFsaXplZCB2aWEgYmFubmVyKVxuICAgIGNvbnN0IHdvcmtmbG93SW1wb3J0cyA9IHdvcmtmbG93RmlsZXMubWFwKGNyZWF0ZUltcG9ydCkuam9pbignXFxuJyk7XG5cbiAgICAvLyBJbmNsdWRlIHNlcmRlLW9ubHkgZmlsZXMgZm9yIGNsYXNzIHJlZ2lzdHJhdGlvbiBzaWRlIGVmZmVjdHNcbiAgICBjb25zdCBzZXJkZUltcG9ydHMgPSBzZXJkZU9ubHlGaWxlcy5tYXAoY3JlYXRlSW1wb3J0KS5qb2luKCdcXG4nKTtcblxuICAgIGNvbnN0IGltcG9ydHMgPSBzZXJkZUltcG9ydHNcbiAgICAgID8gYCR7d29ya2Zsb3dJbXBvcnRzfVxcbi8vIFNlcmRlIGZpbGVzIGZvciBjcm9zcy1jb250ZXh0IGNsYXNzIHJlZ2lzdHJhdGlvblxcbiR7c2VyZGVJbXBvcnRzfWBcbiAgICAgIDogd29ya2Zsb3dJbXBvcnRzO1xuXG4gICAgY29uc3QgYnVuZGxlU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB3b3JrZmxvd01hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0ID0ge307XG4gICAgY29uc3QgZXNidWlsZFRzY29uZmlnT3B0aW9ucyA9XG4gICAgICBhd2FpdCBnZXRFc2J1aWxkVHNjb25maWdPcHRpb25zKHRzY29uZmlnUGF0aCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFdvcmtmbG93U2lkZUVmZmVjdEVudHJpZXMgPSBhd2FpdCB3aXRoUmVhbHBhdGhzKFtcbiAgICAgIC4uLndvcmtmbG93RmlsZXMsXG4gICAgICAuLi5zZXJkZU9ubHlGaWxlcyxcbiAgICBdKTtcblxuICAgIC8vIEJ1bmRsZSB3aXRoIGVzYnVpbGQgYW5kIG91ciBjdXN0b20gU1dDIHBsdWdpbiBpbiB3b3JrZmxvdyBtb2RlLlxuICAgIC8vIHRoaXMgYnVuZGxlIHdpbGwgYmUgcnVuIGluc2lkZSBhIHZtIGlzb2xhdGVcbiAgICBjb25zdCBpbnRlcmltQnVuZGxlQ3R4ID0gYXdhaXQgZXNidWlsZC5jb250ZXh0KHtcbiAgICAgIHN0ZGluOiB7XG4gICAgICAgIGNvbnRlbnRzOiBpbXBvcnRzLFxuICAgICAgICByZXNvbHZlRGlyOiB0aGlzLmNvbmZpZy53b3JraW5nRGlyLFxuICAgICAgICBzb3VyY2VmaWxlOiAndmlydHVhbC1lbnRyeS5qcycsXG4gICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgIH0sXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBhYnNXb3JraW5nRGlyOiB0aGlzLmNvbmZpZy53b3JraW5nRGlyLFxuICAgICAgZm9ybWF0OiAnY2pzJywgLy8gUnVucyBpbnNpZGUgdGhlIFZNIHdoaWNoIGV4cGVjdHMgY2pzXG4gICAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLCAvLyBUaGUgcGxhdGZvcm0gaXMgbmVpdGhlciBub2RlIG5vciBicm93c2VyXG4gICAgICBtYWluRmllbGRzOiBbJ21vZHVsZScsICdtYWluJ10sIC8vIFRvIHN1cHBvcnQgbnBtIHN0eWxlIGltcG9ydHNcbiAgICAgIGNvbmRpdGlvbnM6IFsnd29ya2Zsb3cnXSwgLy8gQWxsb3cgcGFja2FnZXMgdG8gZXhwb3J0ICd3b3JrZmxvdycgY29tcGxpYW50IHZlcnNpb25zXG4gICAgICB0YXJnZXQ6ICdlczIwMjInLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgICBtaW5pZnk6IGZhbHNlLFxuICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgd29ya2Zsb3cgcmVnaXN0cnkgYXQgdGhlIHZlcnkgdG9wIG9mIHRoZSBidW5kbGVcbiAgICAgIC8vIFRoaXMgbXVzdCBiZSBpbiBiYW5uZXIgKG5vdCB0aGUgdmlydHVhbCBlbnRyeSkgYmVjYXVzZSBlc2J1aWxkJ3MgYnVuZGxpbmdcbiAgICAgIC8vIGNhbiByZW9yZGVyIGNvZGUsIGFuZCB0aGUgLnNldCgpIGNhbGxzIG5lZWQgdGhlIE1hcCB0byBleGlzdCBmaXJzdFxuICAgICAgYmFubmVyOiB7XG4gICAgICAgIGpzOiAnZ2xvYmFsVGhpcy5fX3ByaXZhdGVfd29ya2Zsb3dzID0gbmV3IE1hcCgpOycsXG4gICAgICB9LFxuICAgICAgLy8gSW5saW5lIHNvdXJjZSBtYXBzIGZvciBiZXR0ZXIgc3RhY2sgdHJhY2VzIGluIHdvcmtmbG93IFZNIGV4ZWN1dGlvbi5cbiAgICAgIC8vIFRoaXMgaW50ZXJtZWRpYXRlIGJ1bmRsZSBpcyBleGVjdXRlZCB2aWEgcnVuSW5Db250ZXh0KCkgaW4gYSBWTSwgc28gd2UgbmVlZFxuICAgICAgLy8gaW5saW5lIHNvdXJjZSBtYXBzIHRvIGdldCBtZWFuaW5nZnVsIHN0YWNrIHRyYWNlcyBpbnN0ZWFkIG9mIFwiZXZhbG1hY2hpbmUuPGFub255bW91cz5cIi5cbiAgICAgIHNvdXJjZW1hcDogdGhpcy5yZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSxcbiAgICAgIC8vIFVzZSB0c2NvbmZpZyBmb3IgcGF0aCBhbGlhcyByZXNvbHV0aW9uLlxuICAgICAgLy8gRm9yIHN5bWxpbmtlZCBjb25maWdzIHRoaXMgdXNlcyB0c2NvbmZpZ1JhdyB0byBwcmVzZXJ2ZSBjd2QtcmVsYXRpdmUgYWxpYXNlcy5cbiAgICAgIC4uLmVzYnVpbGRUc2NvbmZpZ09wdGlvbnMsXG4gICAgICByZXNvbHZlRXh0ZW5zaW9uczogW1xuICAgICAgICAnLnRzJyxcbiAgICAgICAgJy50c3gnLFxuICAgICAgICAnLm10cycsXG4gICAgICAgICcuY3RzJyxcbiAgICAgICAgJy5qcycsXG4gICAgICAgICcuanN4JyxcbiAgICAgICAgJy5tanMnLFxuICAgICAgICAnLmNqcycsXG4gICAgICBdLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICAvLyBIYW5kbGUgcHNldWRvLXBhY2thZ2VzIGxpa2UgJ3NlcnZlci1vbmx5JyBhbmQgJ2NsaWVudC1vbmx5JyBieSBwcm92aWRpbmdcbiAgICAgICAgLy8gZW1wdHkgbW9kdWxlcy4gTXVzdCBydW4gZmlyc3QgdG8gaW50ZXJjZXB0IHRoZXNlIGJlZm9yZSBvdGhlciByZXNvbHV0aW9uLlxuICAgICAgICBjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luKCksXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgICBwcm9qZWN0Um9vdDogdGhpcy50cmFuc2Zvcm1Qcm9qZWN0Um9vdCxcbiAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0LFxuICAgICAgICAgIHNpZGVFZmZlY3RFbnRyaWVzOiBub3JtYWxpemVkV29ya2Zsb3dTaWRlRWZmZWN0RW50cmllcyxcbiAgICAgICAgfSksXG4gICAgICAgIC8vIFRoaXMgcGx1Z2luIG11c3QgcnVuIGFmdGVyIHRoZSBzd2MgcGx1Z2luIHRvIGVuc3VyZSBkZWFkIGNvZGUgZWxpbWluYXRpb25cbiAgICAgICAgLy8gaGFwcGVucyBmaXJzdCwgcHJldmVudGluZyBmYWxzZSBwb3NpdGl2ZXMgb24gTm9kZS5qcyBpbXBvcnRzIGluIHVudXNlZCBjb2RlIHBhdGhzXG4gICAgICAgIGNyZWF0ZU5vZGVNb2R1bGVFcnJvclBsdWdpbigpLFxuICAgICAgXSxcbiAgICAgIC8vIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG8gTk9UIHVzZSB0aGUgZXh0ZXJuYWwgb3B0aW9uIGhlcmUgZm9yIHdvcmtmbG93IGJ1bmRsZXMuXG4gICAgICAvLyBXaGVuIHBhY2thZ2VzIGFyZSBtYXJrZWQgZXh0ZXJuYWwgd2l0aCBmb3JtYXQ6ICdjanMnLCBlc2J1aWxkIGdlbmVyYXRlcyByZXF1aXJlKCkgY2FsbHMuXG4gICAgICAvLyBIb3dldmVyLCB0aGUgd29ya2Zsb3cgVk0gKHZtLnJ1bkluQ29udGV4dCkgZG9lcyBub3QgaGF2ZSByZXF1aXJlKCkgZGVmaW5lZCAtIGl0IG9ubHlcbiAgICAgIC8vIHByb3ZpZGVzIG1vZHVsZS5leHBvcnRzIGFuZCBleHBvcnRzLiBFeHRlcm5hbCBwYWNrYWdlcyB3b3VsZCBmYWlsIGF0IHJ1bnRpbWUgd2l0aDpcbiAgICAgIC8vICAgUmVmZXJlbmNlRXJyb3I6IHJlcXVpcmUgaXMgbm90IGRlZmluZWRcbiAgICAgIC8vIEluc3RlYWQsIHdlIGJ1bmRsZSBldmVyeXRoaW5nIGFuZCByZWx5IG9uOlxuICAgICAgLy8gLSBjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luKCkgdG8gaGFuZGxlIHNlcnZlci1vbmx5L2NsaWVudC1vbmx5IHdpdGggZW1wdHkgbW9kdWxlc1xuICAgICAgLy8gLSBjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4oKSB0byBjYXRjaCBOb2RlLmpzIGJ1aWx0aW4gaW1wb3J0cyBhdCBidWlsZCB0aW1lXG4gICAgfSk7XG4gICAgbGV0IHNob3VsZERpc3Bvc2VJbnRlcmltQnVuZGxlQ3R4ID0gIWtlZXBJbnRlcmltQnVuZGxlQ29udGV4dDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW50ZXJpbUJ1bmRsZSA9IGF3YWl0IGludGVyaW1CdW5kbGVDdHgucmVidWlsZCgpO1xuXG4gICAgICB0aGlzLmxvZ0VzYnVpbGRNZXNzYWdlcyhcbiAgICAgICAgaW50ZXJpbUJ1bmRsZSxcbiAgICAgICAgJ2ludGVybWVkaWF0ZSB3b3JrZmxvdyBidW5kbGUnLFxuICAgICAgICB0cnVlLFxuICAgICAgICB7XG4gICAgICAgICAgc3VwcHJlc3NXYXJuaW5nczogdGhpcy5jb25maWcuc3VwcHJlc3NDcmVhdGVXb3JrZmxvd3NCdW5kbGVXYXJuaW5ncyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMubG9nQ3JlYXRlV29ya2Zsb3dzQnVuZGxlSW5mbyhcbiAgICAgICAgJ0NyZWF0ZWQgaW50ZXJtZWRpYXRlIHdvcmtmbG93IGJ1bmRsZScsXG4gICAgICAgIGAke0RhdGUubm93KCkgLSBidW5kbGVTdGFydFRpbWV9bXNgXG4gICAgICApO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcud29ya2Zsb3dNYW5pZmVzdFBhdGgpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZShcbiAgICAgICAgICBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgIHRoaXMuY29uZmlnLndvcmtmbG93TWFuaWZlc3RQYXRoXG4gICAgICAgICk7XG4gICAgICAgIGxldCBwcmVmaXggPSAnJztcblxuICAgICAgICBpZiAocmVzb2x2ZWRQYXRoLmVuZHNXaXRoKCcuY2pzJykpIHtcbiAgICAgICAgICBwcmVmaXggPSAnbW9kdWxlLmV4cG9ydHMgPSAnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHJlc29sdmVkUGF0aC5lbmRzV2l0aCgnLmpzJykgfHxcbiAgICAgICAgICByZXNvbHZlZFBhdGguZW5kc1dpdGgoJy5tanMnKVxuICAgICAgICApIHtcbiAgICAgICAgICBwcmVmaXggPSAnZXhwb3J0IGRlZmF1bHQgJztcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUocmVzb2x2ZWRQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShcbiAgICAgICAgICByZXNvbHZlZFBhdGgsXG4gICAgICAgICAgcHJlZml4ICsgSlNPTi5zdHJpbmdpZnkod29ya2Zsb3dNYW5pZmVzdCwgbnVsbCwgMilcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIC5naXRpZ25vcmUgaW4gLnN3YyBkaXJlY3RvcnlcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlU3djR2l0aWdub3JlKCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIWludGVyaW1CdW5kbGUub3V0cHV0RmlsZXMgfHxcbiAgICAgICAgaW50ZXJpbUJ1bmRsZS5vdXRwdXRGaWxlcy5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dCdWlsZEVycm9yKCdObyBvdXRwdXQgZmlsZXMgZ2VuZXJhdGVkIGZyb20gZXNidWlsZCcsIHtcbiAgICAgICAgICBoaW50OiAnVGhpcyB1c3VhbGx5IGluZGljYXRlcyBhIG1pc2NvbmZpZ3VyZWQgZW50cnkgcG9pbnQgb3IgYW4gZW1wdHkgd29ya2Zsb3cgZGlyZWN0b3J5LiBDaGVjayB0aGF0IHlvdXIgd29ya2Zsb3cgZmlsZXMgY29udGFpbiBhIGBcInVzZSB3b3JrZmxvd1wiYCBvciBgXCJ1c2Ugc3RlcFwiYCBkaXJlY3RpdmUuJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcmRlIGNvbXBsaWFuY2Ugd2FybmluZ3M6IGNoZWNrIGlmIHdvcmtmbG93IGJ1bmRsZSBoYXMgTm9kZS5qcyBpbXBvcnRzXG4gICAgICAvLyBhbG9uZ3NpZGUgc2VyZGUtcmVnaXN0ZXJlZCBjbGFzc2VzICh0aGVzZSB3aWxsIGZhaWwgYXQgcnVudGltZSBpbiB0aGUgc2FuZGJveClcbiAgICAgIGlmIChcbiAgICAgICAgd29ya2Zsb3dNYW5pZmVzdC5jbGFzc2VzICYmXG4gICAgICAgIE9iamVjdC5rZXlzKHdvcmtmbG93TWFuaWZlc3QuY2xhc3NlcykubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgYW5hbHl6ZVNlcmRlQ29tcGxpYW5jZSB9ID0gYXdhaXQgaW1wb3J0KCcuL3NlcmRlLWNoZWNrZXIuanMnKTtcbiAgICAgICAgY29uc3QgYnVuZGxlVGV4dCA9IGludGVyaW1CdW5kbGUub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAgICAgY29uc3Qgc2VyZGVSZXN1bHQgPSBhbmFseXplU2VyZGVDb21wbGlhbmNlKHtcbiAgICAgICAgICBzb3VyY2VDb2RlOiAnJyxcbiAgICAgICAgICB3b3JrZmxvd0NvZGU6IGJ1bmRsZVRleHQsXG4gICAgICAgICAgbWFuaWZlc3Q6IHdvcmtmbG93TWFuaWZlc3QsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBEZS1kdXBlIHdhcm5pbmdzOiBncm91cCBpZGVudGljYWwgaXNzdWVzIGFjcm9zcyBjbGFzc2VzXG4gICAgICAgIGNvbnN0IGlzc3Vlc1RvQ2xhc3NlcyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcbiAgICAgICAgZm9yIChjb25zdCBjbHMgb2Ygc2VyZGVSZXN1bHQuY2xhc3Nlcykge1xuICAgICAgICAgIGlmICghY2xzLmNvbXBsaWFudCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBjbHMuaXNzdWVzKSB7XG4gICAgICAgICAgICAgIGxldCBhZmZlY3RlZENsYXNzZXMgPSBpc3N1ZXNUb0NsYXNzZXMuZ2V0KGlzc3VlKTtcbiAgICAgICAgICAgICAgaWYgKCFhZmZlY3RlZENsYXNzZXMpIHtcbiAgICAgICAgICAgICAgICBhZmZlY3RlZENsYXNzZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgICBpc3N1ZXNUb0NsYXNzZXMuc2V0KGlzc3VlLCBhZmZlY3RlZENsYXNzZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFmZmVjdGVkQ2xhc3Nlcy5hZGQoY2xzLmNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2lzc3VlLCBhZmZlY3RlZENsYXNzZXNdIG9mIGlzc3Vlc1RvQ2xhc3Nlcykge1xuICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbLi4uYWZmZWN0ZWRDbGFzc2VzXTtcbiAgICAgICAgICBjb25zdCBjbGFzc0xhYmVsID1cbiAgICAgICAgICAgIGNsYXNzTmFtZXMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgID8gYGNsYXNzIFwiJHtjbGFzc05hbWVzWzBdfVwiYFxuICAgICAgICAgICAgICA6IGBjbGFzc2VzICR7Y2xhc3NOYW1lcy5tYXAoKG5hbWUpID0+IGBcIiR7bmFtZX1cImApLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBjaGFsay55ZWxsb3coYOKaoCBTZXJkZSB3YXJuaW5nIGZvciAke2NsYXNzTGFiZWx9OiBgKSArIGlzc3VlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBidW5kbGVGaW5hbCA9IGFzeW5jIChpbnRlcmltQnVuZGxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya2Zsb3dCdW5kbGVDb2RlID0gaW50ZXJpbUJ1bmRsZTtcblxuICAgICAgICBjb25zdCB3b3JrZmxvd0Z1bmN0aW9uQ29kZSA9IGAvLyBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZCBmaWxlXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgd29ya2Zsb3dFbnRyeXBvaW50IH0gZnJvbSAnd29ya2Zsb3cvcnVudGltZSc7XG5cbmNvbnN0IHdvcmtmbG93Q29kZSA9IFxcYCR7d29ya2Zsb3dCdW5kbGVDb2RlLnJlcGxhY2UoL1tcXFxcYCRdL2csICdcXFxcJCYnKX1cXGA7XG5cbmV4cG9ydCBjb25zdCBQT1NUID0gd29ya2Zsb3dFbnRyeXBvaW50KHdvcmtmbG93Q29kZSk7YDtcblxuICAgICAgICAvLyB3ZSBza2lwIHRoZSBmaW5hbCBidW5kbGluZyBzdGVwIGZvciBOZXh0LmpzIHNvIGl0IGNhbiBidW5kbGUgaXRzZWxmXG4gICAgICAgIGlmICghYnVuZGxlRmluYWxPdXRwdXQpIHtcbiAgICAgICAgICBpZiAoIW91dGZpbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YXJpYW50OiBtaXNzaW5nIG91dGZpbGUgZm9yIHdvcmtmbG93IGJ1bmRsZWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIG91dHB1dCBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgICAgY29uc3Qgb3V0cHV0RGlyID0gZGlybmFtZShvdXRmaWxlKTtcbiAgICAgICAgICBhd2FpdCBta2RpcihvdXRwdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgICAgICAgLy8gQXRvbWljIHdyaXRlOiB3cml0ZSB0byB0ZW1wIGZpbGUgdGhlbiByZW5hbWUgdG8gcHJldmVudFxuICAgICAgICAgIC8vIGZpbGUgd2F0Y2hlcnMgZnJvbSByZWFkaW5nIHBhcnRpYWwgZmlsZSBkdXJpbmcgd3JpdGVcbiAgICAgICAgICBjb25zdCB0ZW1wUGF0aCA9IGAke291dGZpbGV9LiR7cmFuZG9tVVVJRCgpfS50bXBgO1xuICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZSh0ZW1wUGF0aCwgd29ya2Zsb3dGdW5jdGlvbkNvZGUpO1xuICAgICAgICAgIGF3YWl0IHJlbmFtZSh0ZW1wUGF0aCwgb3V0ZmlsZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVuZGxlU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvLyBOb3cgYnVuZGxlIHRoaXMgc28gd2UgY2FuIHJlc29sdmUgdGhlIEB3b3JrZmxvdy9jb3JlIGRlcGVuZGVuY3lcbiAgICAgICAgLy8gd2UgY291bGQgcmVtb3ZlIHRoaXMgaWYgd2UgZG8gbmZ0IHRyYWNpbmcgb3Igc2ltaWxhciBpbnN0ZWFkXG4gICAgICAgIGNvbnN0IGZpbmFsRXNtUmVxdWlyZUJhbm5lciA9IHRoaXMuZ2V0RXNtUmVxdWlyZUJhbm5lcihmb3JtYXQpO1xuICAgICAgICBjb25zdCBmaW5hbFdvcmtmbG93UmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgICAgYmFubmVyOiB7XG4gICAgICAgICAgICBqczogYC8vIGJpb21lLWlnbm9yZS1hbGwgbGludDogZ2VuZXJhdGVkIGZpbGVcXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xcbiR7ZmluYWxFc21SZXF1aXJlQmFubmVyfWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGRpbjoge1xuICAgICAgICAgICAgY29udGVudHM6IHdvcmtmbG93RnVuY3Rpb25Db2RlLFxuICAgICAgICAgICAgcmVzb2x2ZURpcjogdGhpcy5jb25maWcud29ya2luZ0RpcixcbiAgICAgICAgICAgIHNvdXJjZWZpbGU6ICd2aXJ0dWFsLWVudHJ5LmpzJyxcbiAgICAgICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dGZpbGUsXG4gICAgICAgICAgLy8gU291cmNlIG1hcHMgZm9yIHRoZSBmaW5hbCB3b3JrZmxvdyBidW5kbGUgd3JhcHBlciAobm90IGltcG9ydGFudCBzaW5jZSB0aGlzIGNvZGVcbiAgICAgICAgICAvLyBkb2Vzbid0IHJ1biBpbiB0aGUgVk0gLSBvbmx5IHRoZSBpbnRlcm1lZGlhdGUgYnVuZGxlIHNvdXJjZW1hcCBpcyByZWxldmFudClcbiAgICAgICAgICBzb3VyY2VtYXA6IHRoaXMucmVzb2x2ZVNvdXJjZW1hcChFTUlUX1NPVVJDRU1BUFNfRk9SX0RFQlVHR0lORyksXG4gICAgICAgICAgYWJzV29ya2luZ0RpcjogdGhpcy5jb25maWcud29ya2luZ0RpcixcbiAgICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICAgICAgdGFyZ2V0OiAnZXMyMDIyJyxcbiAgICAgICAgICB3cml0ZTogdHJ1ZSxcbiAgICAgICAgICBrZWVwTmFtZXM6IHRydWUsXG4gICAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgICBleHRlcm5hbDogWydAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLXdlYi1pZGVudGl0eSddLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvZ0VzYnVpbGRNZXNzYWdlcyhcbiAgICAgICAgICBmaW5hbFdvcmtmbG93UmVzdWx0LFxuICAgICAgICAgICdmaW5hbCB3b3JrZmxvdyBidW5kbGUnLFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3VwcHJlc3NXYXJuaW5nczogdGhpcy5jb25maWcuc3VwcHJlc3NDcmVhdGVXb3JrZmxvd3NCdW5kbGVXYXJuaW5ncyxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nQ3JlYXRlV29ya2Zsb3dzQnVuZGxlSW5mbyhcbiAgICAgICAgICAnQ3JlYXRlZCBmaW5hbCB3b3JrZmxvdyBidW5kbGUnLFxuICAgICAgICAgIGAke0RhdGUubm93KCkgLSBidW5kbGVTdGFydFRpbWV9bXNgXG4gICAgICAgICk7XG4gICAgICB9O1xuICAgICAgY29uc3QgaW50ZXJpbUJ1bmRsZVRleHQgPSBpbnRlcmltQnVuZGxlLm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgICBhd2FpdCBidW5kbGVGaW5hbChpbnRlcmltQnVuZGxlVGV4dCk7XG5cbiAgICAgIGlmIChrZWVwSW50ZXJpbUJ1bmRsZUNvbnRleHQpIHtcbiAgICAgICAgc2hvdWxkRGlzcG9zZUludGVyaW1CdW5kbGVDdHggPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYW5pZmVzdDogd29ya2Zsb3dNYW5pZmVzdCxcbiAgICAgICAgICBpbnRlcmltQnVuZGxlQ3R4LFxuICAgICAgICAgIGJ1bmRsZUZpbmFsLFxuICAgICAgICAgIGludGVyaW1CdW5kbGVUZXh0LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbWFuaWZlc3Q6IHdvcmtmbG93TWFuaWZlc3QsIGludGVyaW1CdW5kbGVUZXh0IH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHNob3VsZERpc3Bvc2VJbnRlcmltQnVuZGxlQ3R4ID0gdHJ1ZTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoc2hvdWxkRGlzcG9zZUludGVyaW1CdW5kbGVDdHgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBpbnRlcmltQnVuZGxlQ3R4LmRpc3Bvc2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZGlzcG9zZUVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgJ1dhcm5pbmc6IEZhaWxlZCB0byBkaXNwb3NlIHdvcmtmbG93IGJ1bmRsZSBjb250ZXh0JyxcbiAgICAgICAgICAgIGRpc3Bvc2VFcnJvclxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVjI6IENyZWF0ZXMgYSBjb21iaW5lZCBidW5kbGUgdGhhdCBpbmNsdWRlcyBib3RoIHN0ZXAgcmVnaXN0cmF0aW9ucyBhbmRcbiAgICogd29ya2Zsb3cgb3JjaGVzdHJhdGlvbiBpbiBhIHNpbmdsZSByb3V0ZS4gVGhlIGNvbWJpbmVkIGVudHJ5cG9pbnQgZXhlY3V0ZXNcbiAgICogc3RlcHMgaW5saW5lIHdoZW4gcG9zc2libGUsIHJlZHVjaW5nIGZ1bmN0aW9uIGludm9jYXRpb25zIGFuZCBxdWV1ZSBvdmVyaGVhZC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcmV1c2VzIGNyZWF0ZVN0ZXBzQnVuZGxlIChmb3Igc3RlcCByZWdpc3RyYXRpb25zKSBhbmRcbiAgICogY3JlYXRlV29ya2Zsb3dzQnVuZGxlIChmb3Igd29ya2Zsb3cgVk0gY29kZSksIHRoZW4gY29tYmluZXMgdGhlbSBpbnRvXG4gICAqIGEgc2luZ2xlIHJvdXRlIGZpbGUgdXNpbmcgd29ya2Zsb3dFbnRyeXBvaW50KCkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlQ29tYmluZWRCdW5kbGUoe1xuICAgIGlucHV0RmlsZXMsXG4gICAgc3RlcHNPdXRmaWxlLFxuICAgIGZsb3dPdXRmaWxlLFxuICAgIGZvcm1hdCA9ICdlc20nLFxuICAgIGJ1bmRsZUZpbmFsT3V0cHV0ID0gdHJ1ZSxcbiAgICB0c2NvbmZpZ1BhdGgsXG4gICAgZXh0ZXJuYWxpemVOb25TdGVwcyxcbiAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzLFxuICAgIGRpc2NvdmVyZWRFbnRyaWVzLFxuICB9OiB7XG4gICAgaW5wdXRGaWxlczogc3RyaW5nW107XG4gICAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgc3RlcCByZWdpc3RyYXRpb25zIGJ1bmRsZSAoc2lkZSBlZmZlY3RzIG9ubHkpICovXG4gICAgc3RlcHNPdXRmaWxlOiBzdHJpbmc7XG4gICAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgY29tYmluZWQgcm91dGUgZmlsZSAqL1xuICAgIGZsb3dPdXRmaWxlOiBzdHJpbmc7XG4gICAgZm9ybWF0PzogJ2NqcycgfCAnZXNtJztcbiAgICBidW5kbGVGaW5hbE91dHB1dD86IGJvb2xlYW47XG4gICAgdHNjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIGV4dGVybmFsaXplTm9uU3RlcHM/OiBib29sZWFuO1xuICAgIGJ1bmRsZVRyYW5zaXRpdmVMb2NhbFN0ZXBEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuICAgIGRpc2NvdmVyZWRFbnRyaWVzPzogRGlzY292ZXJlZEVudHJpZXM7XG4gIH0pOiBQcm9taXNlPHtcbiAgICBtYW5pZmVzdDogV29ya2Zsb3dNYW5pZmVzdDtcbiAgICBzdGVwc0NvbnRleHQ/OiBlc2J1aWxkLkJ1aWxkQ29udGV4dDtcbiAgICBpbnRlcmltQnVuZGxlQ3R4PzogZXNidWlsZC5CdWlsZENvbnRleHQ7XG4gICAgYnVuZGxlRmluYWw/OiAoaW50ZXJpbUJ1bmRsZVJlc3VsdDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB9PiB7XG4gICAgLy8gMS4gQnVpbGQgc3RlcCByZWdpc3RyYXRpb25zIGJ1bmRsZSAodXNlZCBhcyBzZXBhcmF0ZSBmaWxlIGZvclxuICAgIC8vIGJ1bmRsZUZpbmFsT3V0cHV0OiBmYWxzZSwgb3IgcmVhZCBiYWNrIGZvciBpbmxpbmUgY29udGVudCB3aGVuIHRydWUpXG4gICAgY29uc3QgeyBjb250ZXh0OiBzdGVwc0NvbnRleHQsIG1hbmlmZXN0OiBzdGVwc01hbmlmZXN0IH0gPVxuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVTdGVwc0J1bmRsZSh7XG4gICAgICAgIGlucHV0RmlsZXMsXG4gICAgICAgIG91dGZpbGU6IHN0ZXBzT3V0ZmlsZSxcbiAgICAgICAgLy8gV2hlbiBidW5kbGVGaW5hbE91dHB1dCBpcyB0cnVlLCB1c2UgRVNNIGZvciB0aGUgc3RlcHMgYnVuZGxlXG4gICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlIGZpbmFsIG91dHB1dCBmb3JtYXQuIFRoZSBmaW5hbCBlc2J1aWxkIHBhc3NcbiAgICAgICAgLy8gY29udmVydHMgZXZlcnl0aGluZyB0byB0aGUgdGFyZ2V0IGZvcm1hdC4gVXNpbmcgQ0pTIGhlcmUgY2F1c2VzXG4gICAgICAgIC8vIGEgbW9kdWxlLmV4cG9ydHMgY29sbGlzaW9uOiB0aGUgc3RlcHMgYnVuZGxlJ3MgdG9wLWxldmVsXG4gICAgICAgIC8vIG1vZHVsZS5leHBvcnRzIG92ZXJ3cml0ZXMgdGhlIGNvbWJpbmVkIHJvdXRlJ3MgbW9kdWxlLmV4cG9ydHNcbiAgICAgICAgLy8gd2hlbiBlc2J1aWxkIGlubGluZXMgdGhlIHN0ZXBzIHdpdGhvdXQgYSBfX2NvbW1vbkpTIHdyYXBwZXIuXG4gICAgICAgIGZvcm1hdDogYnVuZGxlRmluYWxPdXRwdXQgPyAnZXNtJyA6IGZvcm1hdCxcbiAgICAgICAgZXh0ZXJuYWxpemVOb25TdGVwcyxcbiAgICAgICAgYnVuZGxlVHJhbnNpdGl2ZUxvY2FsU3RlcERlcGVuZGVuY2llcyxcbiAgICAgICAgdHNjb25maWdQYXRoLFxuICAgICAgICBkaXNjb3ZlcmVkRW50cmllcyxcbiAgICAgICAgLy8gU2tpcCB0aGUgY3JlYXRlUmVxdWlyZSBiYW5uZXIgaGVyZSDigJQgd2hlbiBidW5kbGVGaW5hbE91dHB1dCBpcyB0cnVlXG4gICAgICAgIC8vIHRoZSBvdXRlciBlc2J1aWxkIHBhc3Mgd2lsbCBpbmxpbmUgdGhpcyBidW5kbGUgYW5kIGFkZCBpdHMgb3duXG4gICAgICAgIC8vIGJhbm5lci4gRW1pdHRpbmcgaXQgdHdpY2UgZGVjbGFyZXMgX19jcmVhdGVSZXF1aXJlIHR3aWNlLlxuICAgICAgICBza2lwRXNtUmVxdWlyZUJhbm5lcjogYnVuZGxlRmluYWxPdXRwdXQsXG4gICAgICB9KTtcblxuICAgIC8vIDIuIEJ1aWxkIHdvcmtmbG93IFZNIGNvZGVcbiAgICBjb25zdCB0ZW1wV29ya2Zsb3dPdXRmaWxlID0gYCR7Zmxvd091dGZpbGV9Ll9fd2ZfdG1wLmpzYDtcbiAgICBjb25zdCB3b3JrZmxvd3NSZXN1bHQgPSBhd2FpdCB0aGlzLmNyZWF0ZVdvcmtmbG93c0J1bmRsZSh7XG4gICAgICBpbnB1dEZpbGVzLFxuICAgICAgb3V0ZmlsZTogdGVtcFdvcmtmbG93T3V0ZmlsZSxcbiAgICAgIGZvcm1hdCxcbiAgICAgIGJ1bmRsZUZpbmFsT3V0cHV0OiBmYWxzZSxcbiAgICAgIHRzY29uZmlnUGF0aCxcbiAgICAgIGRpc2NvdmVyZWRFbnRyaWVzLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgd29ya2Zsb3dWTUNvZGUgPSB3b3JrZmxvd3NSZXN1bHQuaW50ZXJpbUJ1bmRsZVRleHQ7XG4gICAgaWYgKCF3b3JrZmxvd1ZNQ29kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmVhdGVXb3JrZmxvd3NCdW5kbGUgZGlkIG5vdCByZXR1cm4gaW50ZXJpbUJ1bmRsZVRleHQnKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhbiB1cCB0aGUgd3JhcHBlciBmaWxlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgdW5saW5rIH0gPSBhd2FpdCBpbXBvcnQoJ25vZGU6ZnMvcHJvbWlzZXMnKTtcbiAgICAgIGF3YWl0IHVubGluayh0ZW1wV29ya2Zsb3dPdXRmaWxlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElnbm9yZSBjbGVhbnVwIGVycm9yc1xuICAgIH1cblxuICAgIC8vIDMuIEdlbmVyYXRlIGNvbWJpbmVkIHJvdXRlIGZpbGVcbiAgICBjb25zdCBzdGVwc1JlbGF0aXZlUGF0aCA9ICcuLycgKyBiYXNlbmFtZShzdGVwc091dGZpbGUpLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICBjb25zdCBlc2NhcGVkVk1Db2RlID0gd29ya2Zsb3dWTUNvZGUucmVwbGFjZSgvW1xcXFxgJF0vZywgJ1xcXFwkJicpO1xuXG4gICAgY29uc3QgY29tYmluZWRGdW5jdGlvbkNvZGUgPSBgLy8gYmlvbWUtaWdub3JlLWFsbCBsaW50OiBnZW5lcmF0ZWQgZmlsZVxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IF9fc3RlcHNfcmVnaXN0ZXJlZCB9IGZyb20gJyR7c3RlcHNSZWxhdGl2ZVBhdGh9JztcbmltcG9ydCB7IHdvcmtmbG93RW50cnlwb2ludCB9IGZyb20gJ3dvcmtmbG93L3J1bnRpbWUnO1xuXG4vLyBQcmV2ZW50IHJvbGx1cCBmcm9tIHRyZWUtc2hha2luZyB0aGUgc3RlcHMgc2lkZS1lZmZlY3QgaW1wb3J0XG52b2lkIF9fc3RlcHNfcmVnaXN0ZXJlZDtcblxuY29uc3Qgd29ya2Zsb3dDb2RlID0gXFxgJHtlc2NhcGVkVk1Db2RlfVxcYDtcblxuZXhwb3J0IGNvbnN0IFBPU1QgPSB3b3JrZmxvd0VudHJ5cG9pbnQod29ya2Zsb3dDb2RlKTtgO1xuXG4gICAgaWYgKCFidW5kbGVGaW5hbE91dHB1dCkge1xuICAgICAgLy8gV3JpdGUgZGlyZWN0bHkgKE5leHQuanMgd2lsbCBidW5kbGUpXG4gICAgICBjb25zdCB0ZW1wUGF0aCA9IGAke2Zsb3dPdXRmaWxlfS4ke3JhbmRvbVVVSUQoKX0udG1wYDtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZSh0ZW1wUGF0aCwgY29tYmluZWRGdW5jdGlvbkNvZGUpO1xuICAgICAgYXdhaXQgcmVuYW1lKHRlbXBQYXRoLCBmbG93T3V0ZmlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJ1bmRsZSB0aGUgY29tYmluZWQgY29kZSBmb3Igc3RhbmRhbG9uZSB1c2VcbiAgICAgIGNvbnN0IGJ1bmRsZVN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB7IGJhbm5lcjogaW1wb3J0TWV0YUJhbm5lciwgZGVmaW5lOiBpbXBvcnRNZXRhRGVmaW5lIH0gPVxuICAgICAgICB0aGlzLmdldENqc0ltcG9ydE1ldGFQb2x5ZmlsbChmb3JtYXQpO1xuICAgICAgLy8gRVNNIGJhbm5lciBwcm92aWRlcyBgcmVxdWlyZWAgdmlhIGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKSBzb1xuICAgICAgLy8gQ0pTIGRlcGVuZGVuY2llcyB0aGF0IGNhbGwgcmVxdWlyZSgpIGZvciBOb2RlLmpzIGJ1aWx0aW5zIGtlZXAgd29ya2luZ1xuICAgICAgLy8gaW4gdGhlIEVTTSBvdXRwdXQgcHJvZHVjZWQgYnkgYnVuZGxlRmluYWxPdXRwdXQ6IHRydWUuXG4gICAgICBjb25zdCBmaW5hbEVzbVJlcXVpcmVCYW5uZXIgPSB0aGlzLmdldEVzbVJlcXVpcmVCYW5uZXIoZm9ybWF0KTtcbiAgICAgIGNvbnN0IGZpbmFsUmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGJhbm5lcjoge1xuICAgICAgICAgIGpzOiBgLy8gYmlvbWUtaWdub3JlLWFsbCBsaW50OiBnZW5lcmF0ZWQgZmlsZVxcbi8qIGVzbGludC1kaXNhYmxlICovXFxuJHtpbXBvcnRNZXRhQmFubmVyfSR7ZmluYWxFc21SZXF1aXJlQmFubmVyfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZGluOiB7XG4gICAgICAgICAgY29udGVudHM6IGNvbWJpbmVkRnVuY3Rpb25Db2RlLFxuICAgICAgICAgIHJlc29sdmVEaXI6IGRpcm5hbWUoZmxvd091dGZpbGUpLFxuICAgICAgICAgIHNvdXJjZWZpbGU6ICd2aXJ0dWFsLWVudHJ5LmpzJyxcbiAgICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICAgIH0sXG4gICAgICAgIG91dGZpbGU6IGZsb3dPdXRmaWxlLFxuICAgICAgICBhYnNXb3JraW5nRGlyOiB0aGlzLmNvbmZpZy53b3JraW5nRGlyLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIGZvcm1hdCxcbiAgICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgICAgdGFyZ2V0OiAnZXMyMDIyJyxcbiAgICAgICAgd3JpdGU6IHRydWUsXG4gICAgICAgIGtlZXBOYW1lczogdHJ1ZSxcbiAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgZGVmaW5lOiBpbXBvcnRNZXRhRGVmaW5lLFxuICAgICAgICBleHRlcm5hbDogWydAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLXdlYi1pZGVudGl0eSddLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmxvZ0VzYnVpbGRNZXNzYWdlcyhmaW5hbFJlc3VsdCwgJ2NvbWJpbmVkIGJ1bmRsZScsIHRydWUpO1xuICAgICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oXG4gICAgICAgICdDcmVhdGVkIGNvbWJpbmVkIGJ1bmRsZScsXG4gICAgICAgIGAke0RhdGUubm93KCkgLSBidW5kbGVTdGFydFRpbWV9bXNgXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIE1lcmdlIG1hbmlmZXN0c1xuICAgIGNvbnN0IG1hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0ID0ge1xuICAgICAgLi4uc3RlcHNNYW5pZmVzdCxcbiAgICAgIHdvcmtmbG93czoge1xuICAgICAgICAuLi5zdGVwc01hbmlmZXN0LndvcmtmbG93cyxcbiAgICAgICAgLi4ud29ya2Zsb3dzUmVzdWx0Lm1hbmlmZXN0LndvcmtmbG93cyxcbiAgICAgIH0sXG4gICAgICBjbGFzc2VzOiB7XG4gICAgICAgIC4uLnN0ZXBzTWFuaWZlc3QuY2xhc3NlcyxcbiAgICAgICAgLi4ud29ya2Zsb3dzUmVzdWx0Lm1hbmlmZXN0LmNsYXNzZXMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSBjdXN0b20gYnVuZGxlRmluYWwgZm9yIHdhdGNoIG1vZGUgdGhhdCB1c2VzIHdvcmtmbG93RW50cnlwb2ludFxuICAgIGNvbnN0IGNvbWJpbmVkQnVuZGxlRmluYWwgPSBhc3luYyAoaW50ZXJpbUJ1bmRsZVRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgZXNjYXBlZCA9IGludGVyaW1CdW5kbGVUZXh0LnJlcGxhY2UoL1tcXFxcYCRdL2csICdcXFxcJCYnKTtcbiAgICAgIGNvbnN0IGNvZGUgPSBgLy8gYmlvbWUtaWdub3JlLWFsbCBsaW50OiBnZW5lcmF0ZWQgZmlsZVxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IF9fc3RlcHNfcmVnaXN0ZXJlZCB9IGZyb20gJyR7c3RlcHNSZWxhdGl2ZVBhdGh9JztcbmltcG9ydCB7IHdvcmtmbG93RW50cnlwb2ludCB9IGZyb20gJ3dvcmtmbG93L3J1bnRpbWUnO1xuXG52b2lkIF9fc3RlcHNfcmVnaXN0ZXJlZDtcblxuY29uc3Qgd29ya2Zsb3dDb2RlID0gXFxgJHtlc2NhcGVkfVxcYDtcblxuZXhwb3J0IGNvbnN0IFBPU1QgPSB3b3JrZmxvd0VudHJ5cG9pbnQod29ya2Zsb3dDb2RlKTtgO1xuXG4gICAgICBjb25zdCBvdXRwdXREaXIgPSBkaXJuYW1lKGZsb3dPdXRmaWxlKTtcbiAgICAgIGF3YWl0IG1rZGlyKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBjb25zdCB0ZW1wUGF0aCA9IGAke2Zsb3dPdXRmaWxlfS4ke3JhbmRvbVVVSUQoKX0udG1wYDtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZSh0ZW1wUGF0aCwgY29kZSk7XG4gICAgICBhd2FpdCByZW5hbWUodGVtcFBhdGgsIGZsb3dPdXRmaWxlKTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLndhdGNoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgc3RlcHNDb250ZXh0LFxuICAgICAgICBpbnRlcmltQnVuZGxlQ3R4OiB3b3JrZmxvd3NSZXN1bHQuaW50ZXJpbUJ1bmRsZUN0eCxcbiAgICAgICAgYnVuZGxlRmluYWw6IGNvbWJpbmVkQnVuZGxlRmluYWwsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IG1hbmlmZXN0IH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNsaWVudCBsaWJyYXJ5IGJ1bmRsZSBmb3Igd29ya2Zsb3cgZXhlY3V0aW9uLlxuICAgKiBUaGUgY2xpZW50IGxpYnJhcnkgYWxsb3dzIGltcG9ydGluZyBhbmQgY2FsbGluZyB3b3JrZmxvd3MgZnJvbSBhcHBsaWNhdGlvbiBjb2RlLlxuICAgKiBPbmx5IGdlbmVyYXRlZCBpZiBjbGllbnRCdW5kbGVQYXRoIGlzIHNwZWNpZmllZCBpbiBjb25maWcuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlQ2xpZW50TGlicmFyeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNsaWVudEJ1bmRsZVBhdGgpIHtcbiAgICAgIC8vIFNpbGVudGx5IGV4aXQgc2luY2Ugbm8gY2xpZW50IGJ1bmRsZSB3YXMgcmVxdWVzdGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oXG4gICAgICAnR2VuZXJhdGluZyBhIGNsaWVudCBsaWJyYXJ5IGF0JyxcbiAgICAgIHRoaXMuY29uZmlnLmNsaWVudEJ1bmRsZVBhdGhcbiAgICApO1xuICAgIHRoaXMubG9nQmFzZUJ1aWxkZXJJbmZvKFxuICAgICAgJ05PVEU6IFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gdXNlIHdvcmtmbG93IHdpdGggYSBmcmFtZXdvcmsgbGlrZSBOZXh0SlMgaXMgdXNpbmcgdGhlIGxvYWRlci9wbHVnaW4gd2l0aCB3ZWJwYWNrL3R1cmJvYnBhY2svcm9sbHVwJ1xuICAgICk7XG5cbiAgICAvLyBFbnN1cmUgd2UgaGF2ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGUgY2xpZW50IGJ1bmRsZVxuICAgIGNvbnN0IG91dHB1dERpciA9IGRpcm5hbWUodGhpcy5jb25maWcuY2xpZW50QnVuZGxlUGF0aCk7XG4gICAgYXdhaXQgbWtkaXIob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBhd2FpdCB0aGlzLmdldElucHV0RmlsZXMoKTtcblxuICAgIC8vIERpc2NvdmVyIHNlcmRlIGZpbGVzIGZyb20gdGhlIGlucHV0IGZpbGVzJyBkZXBlbmRlbmN5IHRyZWUgZm9yIGNyb3NzLWNvbnRleHQgY2xhc3MgcmVnaXN0cmF0aW9uLlxuICAgIC8vIENsYXNzZXMgbmVlZCB0byBiZSByZWdpc3RlcmVkIGluIHRoZSBjbGllbnQgYnVuZGxlIHNvIHRoZXkgY2FuIGJlIHNlcmlhbGl6ZWRcbiAgICAvLyB3aGVuIHBhc3NpbmcgZGF0YSB0byB3b3JrZmxvd3MgdmlhIHN0YXJ0KCkgYW5kIGRlc2VyaWFsaXplZCB3aGVuIHJlY2VpdmluZyB3b3JrZmxvdyByZXN1bHRzLlxuICAgIGNvbnN0IHsgZGlzY292ZXJlZFNlcmRlRmlsZXMgfSA9IGF3YWl0IHRoaXMuZGlzY292ZXJFbnRyaWVzKFxuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIG91dHB1dERpclxuICAgICk7XG5cbiAgICAvLyBJZGVudGlmeSBzZXJkZSBmaWxlcyB0aGF0IGFyZW4ndCBpbiB0aGUgaW5wdXRGaWxlcyAoZGVkdXBsaWNhdGVkKVxuICAgIGNvbnN0IGlucHV0RmlsZXNOb3JtYWxpemVkID0gbmV3IFNldChcbiAgICAgIGlucHV0RmlsZXMubWFwKChmKSA9PiBmLnJlcGxhY2UoL1xcXFwvZywgJy8nKSlcbiAgICApO1xuICAgIGNvbnN0IHNlcmRlT25seUZpbGVzID0gWy4uLmRpc2NvdmVyZWRTZXJkZUZpbGVzXS5maWx0ZXIoXG4gICAgICAoZikgPT4gIWlucHV0RmlsZXNOb3JtYWxpemVkLmhhcyhmKVxuICAgICk7XG5cbiAgICAvLyBSZS1leHBvcnRzIGZvciBpbnB1dCBmaWxlcyAodXNlcidzIHdvcmtmbG93L3N0ZXAgZGVmaW5pdGlvbnMpLlxuICAgIC8vIFRoZXNlIG11c3QgdXNlIHZhbGlkIHJlbGF0aXZlIHNwZWNpZmllcnMgYmVjYXVzZSBzb21lIGZyYW1ld29ya3MgcGFzc1xuICAgIC8vIGdlbmVyYXRlZCBmaWxlcyBsaWtlIFwiLm91dHB1dC9zZXJ2ZXIvaW5kZXgubWpzXCIgYXMgaW5wdXQgZmlsZXMuXG4gICAgY29uc3QgcmVleHBvcnRzID0gaW5wdXRGaWxlc1xuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkV29ya2luZ0RpciA9IHRoaXMuY29uZmlnLndvcmtpbmdEaXIucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgICAgICBsZXQgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUobm9ybWFsaXplZFdvcmtpbmdEaXIsIGZpbGUpLnJlcGxhY2UoXG4gICAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgICAnLydcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgnLi8nKSAmJiAhcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgICAgICAgcmVsYXRpdmVQYXRoID0gYC4vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYGV4cG9ydCAqIGZyb20gJyR7cmVsYXRpdmVQYXRofSc7YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdCBpbXBvcnRzIGZvciBzZXJkZSBmaWxlcyBub3QgaW4gaW5wdXRGaWxlcyAoZm9yIGNsYXNzIHJlZ2lzdHJhdGlvbilcbiAgICBjb25zdCBzZXJkZUltcG9ydHMgPSBzZXJkZU9ubHlGaWxlc1xuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkV29ya2luZ0RpciA9IHRoaXMuY29uZmlnLndvcmtpbmdEaXIucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgICAgICBsZXQgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUobm9ybWFsaXplZFdvcmtpbmdEaXIsIGZpbGUpLnJlcGxhY2UoXG4gICAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgICAnLydcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgnLi8nKSAmJiAhcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgICAgICAgcmVsYXRpdmVQYXRoID0gYC4vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYGltcG9ydCAnJHtyZWxhdGl2ZVBhdGh9JztgO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIC8vIENvbWJpbmU6IHNlcmRlIGltcG9ydHMgKGZvciByZWdpc3RyYXRpb24gc2lkZSBlZmZlY3RzKSArIHJlLWV4cG9ydHNcbiAgICBjb25zdCBlbnRyeUNvbnRlbnQgPSBzZXJkZUltcG9ydHNcbiAgICAgID8gYC8vIFNlcmRlIGZpbGVzIGZvciBjcm9zcy1jb250ZXh0IGNsYXNzIHJlZ2lzdHJhdGlvblxcbiR7c2VyZGVJbXBvcnRzfVxcbiR7cmVleHBvcnRzfWBcbiAgICAgIDogcmVleHBvcnRzO1xuXG4gICAgLy8gQnVuZGxlIHdpdGggZXNidWlsZCBhbmQgb3VyIGN1c3RvbSBTV0MgcGx1Z2luXG4gICAgY29uc3Qgbm9ybWFsaXplZENsaWVudFNpZGVFZmZlY3RFbnRyaWVzID0gYXdhaXQgd2l0aFJlYWxwYXRocyhbXG4gICAgICAuLi5pbnB1dEZpbGVzLFxuICAgICAgLi4uc2VyZGVPbmx5RmlsZXMsXG4gICAgXSk7XG4gICAgY29uc3QgY2xpZW50UmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBiYW5uZXI6IHtcbiAgICAgICAganM6ICcvLyBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZCBmaWxlXFxuLyogZXNsaW50LWRpc2FibGUgKi9cXG4nLFxuICAgICAgfSxcbiAgICAgIHN0ZGluOiB7XG4gICAgICAgIGNvbnRlbnRzOiBlbnRyeUNvbnRlbnQsXG4gICAgICAgIHJlc29sdmVEaXI6IHRoaXMuY29uZmlnLndvcmtpbmdEaXIsXG4gICAgICAgIHNvdXJjZWZpbGU6ICd2aXJ0dWFsLWVudHJ5LmpzJyxcbiAgICAgICAgbG9hZGVyOiAnanMnLFxuICAgICAgfSxcbiAgICAgIG91dGZpbGU6IHRoaXMuY29uZmlnLmNsaWVudEJ1bmRsZVBhdGgsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIGpzeDogJ3ByZXNlcnZlJyxcbiAgICAgIHRhcmdldDogJ2VzMjAyMicsXG4gICAgICB3cml0ZTogdHJ1ZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgZXh0ZXJuYWw6IFsnQHdvcmtmbG93L2NvcmUnXSxcbiAgICAgIHJlc29sdmVFeHRlbnNpb25zOiBbXG4gICAgICAgICcudHMnLFxuICAgICAgICAnLnRzeCcsXG4gICAgICAgICcubXRzJyxcbiAgICAgICAgJy5jdHMnLFxuICAgICAgICAnLmpzJyxcbiAgICAgICAgJy5qc3gnLFxuICAgICAgICAnLm1qcycsXG4gICAgICAgICcuY2pzJyxcbiAgICAgIF0sXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIHByb2plY3RSb290OiB0aGlzLnRyYW5zZm9ybVByb2plY3RSb290LFxuICAgICAgICAgIHNpZGVFZmZlY3RFbnRyaWVzOiBub3JtYWxpemVkQ2xpZW50U2lkZUVmZmVjdEVudHJpZXMsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMubG9nRXNidWlsZE1lc3NhZ2VzKGNsaWVudFJlc3VsdCwgJ2NsaWVudCBsaWJyYXJ5IGJ1bmRsZScpO1xuXG4gICAgLy8gQ3JlYXRlIC5naXRpZ25vcmUgaW4gLnN3YyBkaXJlY3RvcnlcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVN3Y0dpdGlnbm9yZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB3ZWJob29rIGhhbmRsZXIgYnVuZGxlIGZvciByZXN1bWluZyB3b3JrZmxvd3MgdmlhIEhUVFAgY2FsbGJhY2tzLlxuICAgKlxuICAgKiBAcGFyYW0gYnVuZGxlIC0gSWYgdHJ1ZSwgYnVuZGxlcyBkZXBlbmRlbmNpZXMgKG5lZWRlZCBmb3IgQnVpbGQgT3V0cHV0IEFQSSlcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVXZWJob29rQnVuZGxlKHtcbiAgICBvdXRmaWxlLFxuICAgIGJ1bmRsZSA9IGZhbHNlLFxuICB9OiB7XG4gICAgb3V0ZmlsZTogc3RyaW5nO1xuICAgIGJ1bmRsZT86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvZ0NyZWF0ZVdlYmhvb2tCdW5kbGVJbmZvKCdDcmVhdGluZyB3ZWJob29rIHJvdXRlJyk7XG4gICAgYXdhaXQgbWtkaXIoZGlybmFtZShvdXRmaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAvLyBDcmVhdGUgYSBzdGF0aWMgcm91dGUgdGhhdCBjYWxscyByZXN1bWVXZWJob29rXG4gICAgLy8gVGhpcyByb3V0ZSB3b3JrcyBmb3IgYm90aCBOZXh0LmpzIGFuZCBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSVxuICAgIC8vIEJ1bmRsZWQgQnVpbGQgT3V0cHV0IEFQSSB3ZWJob29rIGZ1bmN0aW9ucyBuZWVkIHdvcmxkLnRzIHN0YXRpY2FsbHlcbiAgICAvLyBwcmVzZW50IHNvIGdldFdvcmxkTGF6eSgpIGNhbiB1c2UgdGhlIGdsb2JhbCBnZXRXb3JsZCByZWdpc3RyYXRpb25cbiAgICAvLyBpbnN0ZWFkIG9mIGZhbGxpbmcgYmFjayB0byBhIG1pc3Npbmcgc2libGluZyBpbXBvcnQoXCIuL3dvcmxkLmpzXCIpLlxuICAgIGNvbnN0IHJvdXRlQ29udGVudCA9IGAke2J1bmRsZSA/IFwiaW1wb3J0ICd3b3JrZmxvdy9ydW50aW1lJztcXG5cIiA6ICcnfWltcG9ydCB7IHJlc3VtZVdlYmhvb2sgfSBmcm9tICd3b3JrZmxvdy9hcGknO1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVyKHJlcXVlc3QpIHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gIC8vIEV4dHJhY3QgdG9rZW4gZnJvbSBwYXRobmFtZTogLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2sve3Rva2VufVxuICBjb25zdCBwYXRoUGFydHMgPSB1cmwucGF0aG5hbWUuc3BsaXQoJy8nKTtcbiAgY29uc3QgdG9rZW4gPSBkZWNvZGVVUklDb21wb25lbnQocGF0aFBhcnRzW3BhdGhQYXJ0cy5sZW5ndGggLSAxXSk7XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoJ01pc3NpbmcgdG9rZW4nLCB7IHN0YXR1czogNDAwIH0pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlc3VtZVdlYmhvb2sodG9rZW4sIHJlcXVlc3QpO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBUT0RPOiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gaW52YWxpZCB0b2tlbiBhbmQgb3RoZXIgZXJyb3JzXG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIHJlc3VtZVdlYmhvb2snLCBlcnJvcik7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogNDA0IH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBHRVQgPSBoYW5kbGVyO1xuZXhwb3J0IGNvbnN0IFBPU1QgPSBoYW5kbGVyO1xuZXhwb3J0IGNvbnN0IFBVVCA9IGhhbmRsZXI7XG5leHBvcnQgY29uc3QgUEFUQ0ggPSBoYW5kbGVyO1xuZXhwb3J0IGNvbnN0IERFTEVURSA9IGhhbmRsZXI7XG5leHBvcnQgY29uc3QgSEVBRCA9IGhhbmRsZXI7XG5leHBvcnQgY29uc3QgT1BUSU9OUyA9IGhhbmRsZXI7YDtcblxuICAgIGlmICghYnVuZGxlKSB7XG4gICAgICAvLyBGb3IgTmV4dC5qcywganVzdCB3cml0ZSB0aGUgdW5idW5kbGVkIGZpbGVcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShvdXRmaWxlLCByb3V0ZUNvbnRlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZvciBCdWlsZCBPdXRwdXQgQVBJLCBidW5kbGUgd2l0aCBlc2J1aWxkIHRvIHJlc29sdmUgaW1wb3J0c1xuXG4gICAgY29uc3Qgd2ViaG9va0VzbVJlcXVpcmVCYW5uZXIgPSB0aGlzLmdldEVzbVJlcXVpcmVCYW5uZXIoJ2VzbScpO1xuICAgIGNvbnN0IHdlYmhvb2tCdW5kbGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBiYW5uZXI6IHtcbiAgICAgICAganM6IGAvLyBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZCBmaWxlXFxuLyogZXNsaW50LWRpc2FibGUgKi9cXG4ke3dlYmhvb2tFc21SZXF1aXJlQmFubmVyfWAsXG4gICAgICB9LFxuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IHJvdXRlQ29udGVudCxcbiAgICAgICAgcmVzb2x2ZURpcjogdGhpcy5jb25maWcud29ya2luZ0RpcixcbiAgICAgICAgc291cmNlZmlsZTogJ3dlYmhvb2stcm91dGUuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgb3V0ZmlsZSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRoaXMuY29uZmlnLndvcmtpbmdEaXIsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBqc3g6ICdwcmVzZXJ2ZScsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIGNvbmRpdGlvbnM6IFsnaW1wb3J0JywgJ21vZHVsZScsICdub2RlJywgJ2RlZmF1bHQnXSxcbiAgICAgIHRhcmdldDogJ2VzMjAyMicsXG4gICAgICB3cml0ZTogdHJ1ZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAga2VlcE5hbWVzOiB0cnVlLFxuICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgIHJlc29sdmVFeHRlbnNpb25zOiBbXG4gICAgICAgICcudHMnLFxuICAgICAgICAnLnRzeCcsXG4gICAgICAgICcubXRzJyxcbiAgICAgICAgJy5jdHMnLFxuICAgICAgICAnLmpzJyxcbiAgICAgICAgJy5qc3gnLFxuICAgICAgICAnLm1qcycsXG4gICAgICAgICcuY2pzJyxcbiAgICAgIF0sXG4gICAgICBzb3VyY2VtYXA6IHRoaXMucmVzb2x2ZVNvdXJjZW1hcChFTUlUX1NPVVJDRU1BUFNfRk9SX0RFQlVHR0lORyksXG4gICAgICBtYWluRmllbGRzOiBbJ21vZHVsZScsICdtYWluJ10sXG4gICAgICAvLyBEb24ndCBleHRlcm5hbGl6ZSBhbnl0aGluZyAtIGJ1bmRsZSBldmVyeXRoaW5nIGluY2x1ZGluZyB3b3JrZmxvdyBwYWNrYWdlc1xuICAgICAgZXh0ZXJuYWw6IFtdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dFc2J1aWxkTWVzc2FnZXMocmVzdWx0LCAnd2ViaG9vayBidW5kbGUgY3JlYXRpb24nKTtcbiAgICB0aGlzLmxvZ0NyZWF0ZVdlYmhvb2tCdW5kbGVJbmZvKFxuICAgICAgJ0NyZWF0ZWQgd2ViaG9vayBidW5kbGUnLFxuICAgICAgYCR7RGF0ZS5ub3coKSAtIHdlYmhvb2tCdW5kbGVTdGFydH1tc2BcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYWNrYWdlLmpzb24gZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbW9kdWxlIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlUGFja2FnZUpzb24oXG4gICAgZGlyOiBzdHJpbmcsXG4gICAgdHlwZTogJ2NvbW1vbmpzJyB8ICdtb2R1bGUnXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0geyB0eXBlIH07XG4gICAgYXdhaXQgd3JpdGVGaWxlKFxuICAgICAgam9pbihkaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHBhY2thZ2VKc29uLCBudWxsLCAyKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIC52Yy1jb25maWcuanNvbiBmaWxlIGZvciBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSSBmdW5jdGlvbnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlVmNDb25maWcoXG4gICAgZGlyOiBzdHJpbmcsXG4gICAgY29uZmlnOiB7XG4gICAgICBydW50aW1lPzogc3RyaW5nO1xuICAgICAgaGFuZGxlcj86IHN0cmluZztcbiAgICAgIGxhdW5jaGVyVHlwZT86IHN0cmluZztcbiAgICAgIGFyY2hpdGVjdHVyZT86IHN0cmluZztcbiAgICAgIHNob3VsZEFkZEhlbHBlcnM/OiBib29sZWFuO1xuICAgICAgc2hvdWxkQWRkU291cmNlbWFwU3VwcG9ydD86IGJvb2xlYW47XG4gICAgICBtYXhEdXJhdGlvbj86IG51bWJlciB8ICdtYXgnO1xuICAgICAgZXhwZXJpbWVudGFsVHJpZ2dlcnM/OiBBcnJheTx7XG4gICAgICAgIHR5cGU6ICdxdWV1ZS92MmJldGEnO1xuICAgICAgICB0b3BpYzogc3RyaW5nO1xuICAgICAgICBjb25zdW1lcjogc3RyaW5nO1xuICAgICAgICBtYXhEZWxpdmVyaWVzPzogbnVtYmVyO1xuICAgICAgICByZXRyeUFmdGVyU2Vjb25kcz86IG51bWJlcjtcbiAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kcz86IG51bWJlcjtcbiAgICAgIH0+O1xuICAgIH1cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmNDb25maWcgPSB7XG4gICAgICBydW50aW1lOiBjb25maWcucnVudGltZSA/PyAnbm9kZWpzMjIueCcsXG4gICAgICBoYW5kbGVyOiBjb25maWcuaGFuZGxlciA/PyAnaW5kZXgubWpzJyxcbiAgICAgIGxhdW5jaGVyVHlwZTogY29uZmlnLmxhdW5jaGVyVHlwZSA/PyAnTm9kZWpzJyxcbiAgICAgIGFyY2hpdGVjdHVyZTogY29uZmlnLmFyY2hpdGVjdHVyZSA/PyAnYXJtNjQnLFxuICAgICAgc2hvdWxkQWRkSGVscGVyczogY29uZmlnLnNob3VsZEFkZEhlbHBlcnMgPz8gdHJ1ZSxcbiAgICAgIC4uLihjb25maWcubWF4RHVyYXRpb24gIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIG1heER1cmF0aW9uOiBjb25maWcubWF4RHVyYXRpb24sXG4gICAgICB9KSxcbiAgICAgIC4uLihjb25maWcuc2hvdWxkQWRkU291cmNlbWFwU3VwcG9ydCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgc2hvdWxkQWRkU291cmNlbWFwU3VwcG9ydDogY29uZmlnLnNob3VsZEFkZFNvdXJjZW1hcFN1cHBvcnQsXG4gICAgICB9KSxcbiAgICAgIC4uLihjb25maWcuZXhwZXJpbWVudGFsVHJpZ2dlcnMgJiYge1xuICAgICAgICBleHBlcmltZW50YWxUcmlnZ2VyczogY29uZmlnLmV4cGVyaW1lbnRhbFRyaWdnZXJzLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIGF3YWl0IHdyaXRlRmlsZShcbiAgICAgIGpvaW4oZGlyLCAnLnZjLWNvbmZpZy5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh2Y0NvbmZpZywgbnVsbCwgMilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmNvbmZpZy53b3JraW5nRGlyLCBwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBkaXJlY3RvcnkgZm9yIGEgZmlsZSBwYXRoIGV4aXN0cywgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGVuc3VyZURpcmVjdG9yeShmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbWtkaXIoZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVTd2NHaXRpZ25vcmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShcbiAgICAgICAgam9pbih0aGlzLmNvbmZpZy53b3JraW5nRGlyLCAnLnN3YycsICcuZ2l0aWdub3JlJyksXG4gICAgICAgICcqXFxuJ1xuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFdlJ3JlIGludGVudGlvbmFsbHkgc2lsZW50bHkgaWdub3JpbmcgdGhpcyBlcnJvciAtIGNyZWF0aW5nIC5naXRpZ25vcmUgaXNuJ3QgY3JpdGljYWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbWFuaWZlc3Qgc2hvdWxkIGJlIGV4cG9zZWQgYXMgYSBwdWJsaWMgSFRUUCByb3V0ZS5cbiAgICogQ29udHJvbGxlZCBieSB0aGUgYFdPUktGTE9XX1BVQkxJQ19NQU5JRkVTVGAgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3VsZEV4cG9zZVB1YmxpY01hbmlmZXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwcm9jZXNzLmVudi5XT1JLRkxPV19QVUJMSUNfTUFOSUZFU1QgPT09ICcxJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgd29ya2Zsb3cgbWFuaWZlc3QgZGlhZ25vc3RpY3MgcGF0aCwgd2hlbiB0aGlzIGJ1aWxkZXIgc2hvdWxkXG4gICAqIGVtaXQgb25lLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldERpYWdub3N0aWNzTWFuaWZlc3RQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRpYWdub3N0aWNzRGlyKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZShcbiAgICAgICAgdGhpcy5jb25maWcud29ya2luZ0RpcixcbiAgICAgICAgdGhpcy5jb25maWcuZGlhZ25vc3RpY3NEaXIsXG4gICAgICAgICd3b3JrZmxvd3MtbWFuaWZlc3QuanNvbidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmJ1aWxkVGFyZ2V0ID09PSAndmVyY2VsLWJ1aWxkLW91dHB1dC1hcGknKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlUGF0aChcbiAgICAgICAgJy52ZXJjZWwvb3V0cHV0L2RpYWdub3N0aWNzL3dvcmtmbG93cy1tYW5pZmVzdC5qc29uJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgZWZmZWN0aXZlIHNvdXJjZSBtYXAgbW9kZSBmb3IgYSBnaXZlbiBjYWxsIHNpdGUuIFByZWNlZGVuY2U6XG4gICAqIGV4cGxpY2l0IGBzb3VyY2VtYXBgIGNvbmZpZyA+IGBXT1JLRkxPV19TT1VSQ0VNQVBgIGVudiB2YXIgPiB0aGUgY2FsbFxuICAgKiBzaXRlJ3MgZGVmYXVsdC4gUmV0dXJuZWQgdmFsdWUgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIGVzYnVpbGQnc1xuICAgKiBgc291cmNlbWFwYCBvcHRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZVNvdXJjZW1hcChkZWZhdWx0TW9kZTogU291cmNlbWFwTW9kZSk6IFNvdXJjZW1hcE1vZGUge1xuICAgIGlmICh0aGlzLmNvbmZpZy5zb3VyY2VtYXAgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMuY29uZmlnLnNvdXJjZW1hcDtcbiAgICBjb25zdCBlbnZNb2RlID0gcGFyc2VTb3VyY2VtYXBFbnYocHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQKTtcbiAgICBpZiAoZW52TW9kZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZW52TW9kZTtcbiAgICByZXR1cm4gZGVmYXVsdE1vZGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVzb2x2ZWQgc291cmNlIG1hcCBtb2RlIGVtaXRzIGFueSBzb3VyY2UgbWFwcyBhdCBhbGwuXG4gICAqIFVzZWQgYnkgY29uc3VtZXJzIGxpa2UgdGhlIFZlcmNlbCBidWlsZGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGluY2x1ZGVcbiAgICogdGhlIHNvdXJjZS1tYXAtc3VwcG9ydCBydW50aW1lIHNoaW0gaW4gZ2VuZXJhdGVkIGZ1bmN0aW9ucy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc291cmNlbWFwc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNvdXJjZW1hcCh0cnVlKSAhPT0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1hbmlmZXN0IEpTT04gZmlsZSBjb250YWluaW5nIHN0ZXAvd29ya2Zsb3cvY2xhc3MgbWV0YWRhdGFcbiAgICogYW5kIGdyYXBoIGRhdGEgZm9yIHZpc3VhbGl6YXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBKU09OIHN0cmluZywgb3IgdW5kZWZpbmVkIGlmIG1hbmlmZXN0IGNyZWF0aW9uIGZhaWxlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVNYW5pZmVzdCh7XG4gICAgd29ya2Zsb3dCdW5kbGVQYXRoLFxuICAgIG1hbmlmZXN0RGlyLFxuICAgIG1hbmlmZXN0LFxuICB9OiB7XG4gICAgd29ya2Zsb3dCdW5kbGVQYXRoOiBzdHJpbmc7XG4gICAgbWFuaWZlc3REaXI6IHN0cmluZztcbiAgICBtYW5pZmVzdDogV29ya2Zsb3dNYW5pZmVzdDtcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgYnVpbGRTdGFydCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5sb2dDcmVhdGVNYW5pZmVzdEluZm8oJ0NyZWF0aW5nIG1hbmlmZXN0Li4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgd29ya2Zsb3dHcmFwaHMgPSBhd2FpdCBleHRyYWN0V29ya2Zsb3dHcmFwaHMod29ya2Zsb3dCdW5kbGVQYXRoKTtcblxuICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLmNvbnZlcnRTdGVwc01hbmlmZXN0KG1hbmlmZXN0LnN0ZXBzKTtcbiAgICAgIGNvbnN0IHdvcmtmbG93cyA9IHRoaXMuY29udmVydFdvcmtmbG93c01hbmlmZXN0KFxuICAgICAgICBtYW5pZmVzdC53b3JrZmxvd3MsXG4gICAgICAgIHdvcmtmbG93R3JhcGhzXG4gICAgICApO1xuICAgICAgY29uc3QgY2xhc3NlcyA9IHRoaXMuY29udmVydENsYXNzZXNNYW5pZmVzdChtYW5pZmVzdC5jbGFzc2VzKTtcblxuICAgICAgY29uc3Qgb3V0cHV0ID0geyB2ZXJzaW9uOiAnMS4wLjAnLCBzdGVwcywgd29ya2Zsb3dzLCBjbGFzc2VzIH07XG4gICAgICBjb25zdCBtYW5pZmVzdEpzb24gPSBKU09OLnN0cmluZ2lmeShvdXRwdXQsIG51bGwsIDIpO1xuXG4gICAgICBhd2FpdCBta2RpcihtYW5pZmVzdERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihtYW5pZmVzdERpciwgJ21hbmlmZXN0Lmpzb24nKSwgbWFuaWZlc3RKc29uKTtcblxuICAgICAgY29uc3QgZGlhZ25vc3RpY3NNYW5pZmVzdFBhdGggPSB0aGlzLmdldERpYWdub3N0aWNzTWFuaWZlc3RQYXRoKCk7XG4gICAgICBpZiAoZGlhZ25vc3RpY3NNYW5pZmVzdFBhdGgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVEaXJlY3RvcnkoZGlhZ25vc3RpY3NNYW5pZmVzdFBhdGgpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZGlhZ25vc3RpY3NNYW5pZmVzdFBhdGgsIG1hbmlmZXN0SnNvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0ZXBDb3VudCA9IE9iamVjdC52YWx1ZXMoc3RlcHMpLnJlZHVjZShcbiAgICAgICAgKGFjYywgcykgPT4gYWNjICsgT2JqZWN0LmtleXMocykubGVuZ3RoLFxuICAgICAgICAwXG4gICAgICApO1xuICAgICAgY29uc3Qgd29ya2Zsb3dDb3VudCA9IE9iamVjdC52YWx1ZXMod29ya2Zsb3dzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHcpID0+IGFjYyArIE9iamVjdC5rZXlzKHcpLmxlbmd0aCxcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNsYXNzQ291bnQgPSBPYmplY3QudmFsdWVzKGNsYXNzZXMpLnJlZHVjZShcbiAgICAgICAgKGFjYywgYykgPT4gYWNjICsgT2JqZWN0LmtleXMoYykubGVuZ3RoLFxuICAgICAgICAwXG4gICAgICApO1xuXG4gICAgICB0aGlzLmxvZ0NyZWF0ZU1hbmlmZXN0SW5mbyhcbiAgICAgICAgYENyZWF0ZWQgbWFuaWZlc3Qgd2l0aCAke3N0ZXBDb3VudH0gJHtwbHVyYWxpemUoJ3N0ZXAnLCAnc3RlcHMnLCBzdGVwQ291bnQpfSwgJHt3b3JrZmxvd0NvdW50fSAke3BsdXJhbGl6ZSgnd29ya2Zsb3cnLCAnd29ya2Zsb3dzJywgd29ya2Zsb3dDb3VudCl9LCBhbmQgJHtjbGFzc0NvdW50fSAke3BsdXJhbGl6ZSgnY2xhc3MnLCAnY2xhc3NlcycsIGNsYXNzQ291bnQpfWAsXG4gICAgICAgIGAke0RhdGUubm93KCkgLSBidWlsZFN0YXJ0fW1zYFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG1hbmlmZXN0SnNvbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnRmFpbGVkIHRvIGNyZWF0ZSBtYW5pZmVzdDonLFxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFN0ZXBzTWFuaWZlc3QoXG4gICAgc3RlcHM6IFdvcmtmbG93TWFuaWZlc3RbJ3N0ZXBzJ11cbiAgKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgeyBzdGVwSWQ6IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgeyBzdGVwSWQ6IHN0cmluZyB9Pj4gPSB7fTtcbiAgICBpZiAoIXN0ZXBzKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgZm9yIChjb25zdCBbZmlsZVBhdGgsIGVudHJpZXNdIG9mIE9iamVjdC5lbnRyaWVzKHN0ZXBzKSkge1xuICAgICAgcmVzdWx0W2ZpbGVQYXRoXSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoZW50cmllcykpIHtcbiAgICAgICAgcmVzdWx0W2ZpbGVQYXRoXVtuYW1lXSA9IHsgc3RlcElkOiBkYXRhLnN0ZXBJZCB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0V29ya2Zsb3dzTWFuaWZlc3QoXG4gICAgd29ya2Zsb3dzOiBXb3JrZmxvd01hbmlmZXN0Wyd3b3JrZmxvd3MnXSxcbiAgICBncmFwaHM6IFJlY29yZDxcbiAgICAgIHN0cmluZyxcbiAgICAgIFJlY29yZDxzdHJpbmcsIHsgZ3JhcGg6IHsgbm9kZXM6IGFueVtdOyBlZGdlczogYW55W10gfSB9PlxuICAgID5cbiAgKTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICB7IHdvcmtmbG93SWQ6IHN0cmluZzsgZ3JhcGg6IHsgbm9kZXM6IGFueVtdOyBlZGdlczogYW55W10gfSB9XG4gICAgPlxuICA+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxcbiAgICAgIHN0cmluZyxcbiAgICAgIFJlY29yZDxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB7IHdvcmtmbG93SWQ6IHN0cmluZzsgZ3JhcGg6IHsgbm9kZXM6IGFueVtdOyBlZGdlczogYW55W10gfSB9XG4gICAgICA+XG4gICAgPiA9IHt9O1xuICAgIGlmICghd29ya2Zsb3dzKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gQnVpbGQgYSBub3JtYWxpemVkIGxvb2t1cCBmb3IgZ3JhcGhzIHNpbmNlIHRoZSBncmFwaCBleHRyYWN0b3IgdXNlc1xuICAgIC8vIHBhdGhzIGZyb20gd29ya2Zsb3dJZCAoZS5nLiBcIi4vd29ya2Zsb3dzL2hlbGxvLWFnZW50XCIpIHdoaWxlIHRoZVxuICAgIC8vIG1hbmlmZXN0IHVzZXMgc291cmNlIGZpbGUgcGF0aHMgKGUuZy4gXCJ3b3JrZmxvd3MvaGVsbG8tYWdlbnQudHNcIikuXG4gICAgLy8gTm9ybWFsaXplIGJ5IHN0cmlwcGluZyBsZWFkaW5nIFwiLi9cIiBhbmQgZmlsZSBleHRlbnNpb25zLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWRHcmFwaHMgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgUmVjb3JkPHN0cmluZywgeyBncmFwaDogeyBub2RlczogYW55W107IGVkZ2VzOiBhbnlbXSB9IH0+XG4gICAgPigpO1xuICAgIGZvciAoY29uc3QgW2dyYXBoUGF0aCwgZ3JhcGhFbnRyaWVzXSBvZiBPYmplY3QuZW50cmllcyhncmFwaHMpKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gZ3JhcGhQYXRoXG4gICAgICAgIC5yZXBsYWNlKC9eXFwuXFwvLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpO1xuICAgICAgbm9ybWFsaXplZEdyYXBocy5zZXQobm9ybWFsaXplZCwgZ3JhcGhFbnRyaWVzKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtmaWxlUGF0aCwgZW50cmllc10gb2YgT2JqZWN0LmVudHJpZXMod29ya2Zsb3dzKSkge1xuICAgICAgcmVzdWx0W2ZpbGVQYXRoXSA9IHt9O1xuICAgICAgLy8gTm9ybWFsaXplIHRoZSBtYW5pZmVzdCBmaWxlIHBhdGggZm9yIGxvb2t1cFxuICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbGVQYXRoID0gZmlsZVBhdGhcbiAgICAgICAgLnJlcGxhY2UoL15cXC5cXC8vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoL1xcLlteLy5dKyQvLCAnJyk7XG5cbiAgICAgIGNvbnN0IGdyYXBoRW50cmllcyA9XG4gICAgICAgIGdyYXBoc1tmaWxlUGF0aF0gfHwgbm9ybWFsaXplZEdyYXBocy5nZXQobm9ybWFsaXplZEZpbGVQYXRoKTtcblxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoZW50cmllcykpIHtcbiAgICAgICAgcmVzdWx0W2ZpbGVQYXRoXVtuYW1lXSA9IHtcbiAgICAgICAgICB3b3JrZmxvd0lkOiBkYXRhLndvcmtmbG93SWQsXG4gICAgICAgICAgZ3JhcGg6IGdyYXBoRW50cmllcz8uW25hbWVdPy5ncmFwaCB8fCB7IG5vZGVzOiBbXSwgZWRnZXM6IFtdIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRDbGFzc2VzTWFuaWZlc3QoXG4gICAgY2xhc3NlczogV29ya2Zsb3dNYW5pZmVzdFsnY2xhc3NlcyddXG4gICk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHsgY2xhc3NJZDogc3RyaW5nIH0+PiB7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGNsYXNzSWQ6IHN0cmluZyB9Pj4gPSB7fTtcbiAgICBpZiAoIWNsYXNzZXMpIHJldHVybiByZXN1bHQ7XG5cbiAgICBmb3IgKGNvbnN0IFtmaWxlUGF0aCwgZW50cmllc10gb2YgT2JqZWN0LmVudHJpZXMoY2xhc3NlcykpIHtcbiAgICAgIHJlc3VsdFtmaWxlUGF0aF0gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIGRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKGVudHJpZXMpKSB7XG4gICAgICAgIHJlc3VsdFtmaWxlUGF0aF1bbmFtZV0gPSB7IGNsYXNzSWQ6IGRhdGEuY2xhc3NJZCB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
@@ -23,4 +23,4 @@ export function createBuildQueue() {
23
23
  return queue;
24
24
  };
25
25
  }
26
- //# sourceMappingURL=build-queue.js.map
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFOUIsT0FBTyxDQUFDLElBQXlCLEVBQWlCLEVBQUU7UUFDbEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGJ1aWxkIHF1ZXVlIHRoYXQgc2VyaWFsaXplcyBhc3luYyB0YXNrcyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy5cbiAqXG4gKiBXaGVuIHJhcGlkIGZpbGUgY2hhbmdlcyB0cmlnZ2VyIG11bHRpcGxlIGJ1aWxkcywgdGhpcyBlbnN1cmVzIHRoZXkgcnVuXG4gKiBzZXF1ZW50aWFsbHkgcmF0aGVyIHRoYW4gY29uY3VycmVudGx5LCBhdm9pZGluZyBpc3N1ZXMgbGlrZTpcbiAqIC0gUGFydGlhbCBmaWxlIHJlYWRzIGR1cmluZyB3cml0ZXNcbiAqIC0gQ29ycnVwdGVkIG1lcmdlIG9wZXJhdGlvbnNcbiAqIC0gRHVwbGljYXRlL2NvbmZsaWN0aW5nIGJ1aWxkc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnF1ZXVlID0gY3JlYXRlQnVpbGRRdWV1ZSgpO1xuICpcbiAqIC8vIFRoZXNlIHdpbGwgcnVuIHNlcXVlbnRpYWxseSwgbm90IGNvbmN1cnJlbnRseVxuICogZW5xdWV1ZSgoKSA9PiBidWlsZGVyLmJ1aWxkKCkpO1xuICogZW5xdWV1ZSgoKSA9PiBidWlsZGVyLmJ1aWxkKCkpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQnVpbGRRdWV1ZSgpIHtcbiAgbGV0IHF1ZXVlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgcmV0dXJuICh0YXNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcXVldWUgPSBxdWV1ZS50aGVuKHRhc2spLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcXVldWU7XG4gIH07XG59XG4iXX0=
@@ -75,4 +75,4 @@ export function createBaseBuilderConfig(options) {
75
75
  sourcemap: options.sourcemap,
76
76
  };
77
77
  }
78
- //# sourceMappingURL=config-helpers.js.map
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBYzFCOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsK0JBQStCLENBQ25ELFlBQWdDO0lBRWhDLE1BQU0sY0FBYyxHQUFxQjtRQUN2QyxVQUFVLEVBQUUsS0FBSztRQUNqQixlQUFlLEVBQUUsS0FBSztRQUN0QixpQkFBaUIsRUFBRSxLQUFLO0tBQ3pCLENBQUM7SUFFRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FDWixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1FBRXZELHFGQUFxRjtRQUNyRixNQUFNLHNCQUFzQixHQUMxQixlQUFlLENBQUMsc0JBQXNCLEtBQUssSUFBSSxDQUFDO1FBQ2xELE1BQU0scUJBQXFCLEdBQ3pCLGVBQWUsQ0FBQyxxQkFBcUIsS0FBSyxJQUFJLENBQUM7UUFFakQsT0FBTztZQUNMLFVBQVUsRUFBRSxzQkFBc0I7WUFDbEMsZUFBZSxFQUFFLHNCQUFzQjtZQUN2QyxpQkFBaUIsRUFBRSxzQkFBc0IsSUFBSSxxQkFBcUI7U0FDbkUsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwwREFBMEQ7UUFDMUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLCtCQUErQixDQUNuRCxHQUFXO0lBRVgsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0UsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsNkNBQTZDLENBQ2pFLEdBQVc7SUFFWCxNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsRUFBRTtRQUNsRSxHQUFHO0tBQ0osQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSwrQkFBK0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FRdkM7SUFDQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbkMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ2hDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtRQUM5QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsZUFBZSxFQUFFLEVBQUUsRUFBRSxtQ0FBbUM7UUFDeEQsbUJBQW1CLEVBQUUsRUFBRSxFQUFFLG1DQUFtQztRQUM1RCxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsbUNBQW1DO1FBQzFELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDMUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztLQUM3QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBmaW5kVXAgfSBmcm9tICdmaW5kLXVwJztcbmltcG9ydCBKU09ONSBmcm9tICdqc29uNSc7XG5pbXBvcnQgdHlwZSB7IFNvdXJjZW1hcE1vZGUsIFdvcmtmbG93Q29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdG9yT3B0aW9ucyB7XG4gIGRlY29yYXRvcnM6IGJvb2xlYW47XG4gIGxlZ2FjeURlY29yYXRvcjogYm9vbGVhbjtcbiAgZGVjb3JhdG9yTWV0YWRhdGE6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoIHtcbiAgb3B0aW9uczogRGVjb3JhdG9yT3B0aW9ucztcbiAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlYWRzIHRzY29uZmlnLmpzb24gYW5kIGV4dHJhY3RzIGRlY29yYXRvci1yZWxhdGVkIGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBSZXR1cm5zIGRlY29yYXRvciBvcHRpb25zIGJhc2VkIG9uIGV4cGVyaW1lbnRhbERlY29yYXRvcnMgYW5kIGVtaXREZWNvcmF0b3JNZXRhZGF0YSBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gdHNjb25maWdQYXRoIC0gUGF0aCB0byB0c2NvbmZpZy5qc29uIG9yIGpzY29uZmlnLmpzb25cbiAqIEByZXR1cm5zIERlY29yYXRvck9wdGlvbnMgd2l0aCBzZXR0aW5ncyBiYXNlZCBvbiB0c2NvbmZpZyBjb21waWxlck9wdGlvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERlY29yYXRvck9wdGlvbnNGcm9tVHNDb25maWcoXG4gIHRzY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPERlY29yYXRvck9wdGlvbnM+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IERlY29yYXRvck9wdGlvbnMgPSB7XG4gICAgZGVjb3JhdG9yczogZmFsc2UsXG4gICAgbGVnYWN5RGVjb3JhdG9yOiBmYWxzZSxcbiAgICBkZWNvcmF0b3JNZXRhZGF0YTogZmFsc2UsXG4gIH07XG5cbiAgaWYgKCF0c2NvbmZpZ1BhdGgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE9wdGlvbnM7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZSh0c2NvbmZpZ1BhdGgsICd1dGYtOCcpO1xuICAgIGNvbnN0IHRzY29uZmlnOiB7IGNvbXBpbGVyT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0gPVxuICAgICAgSlNPTjUucGFyc2UoY29udGVudCk7XG4gICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gdHNjb25maWcuY29tcGlsZXJPcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gTWF0Y2ggTmV4dC5qcyBiZWhhdmlvcjogZW5hYmxlIGRlY29yYXRvcnMgb25seSB3aGVuIGV4cGVyaW1lbnRhbERlY29yYXRvcnMgaXMgdHJ1ZVxuICAgIGNvbnN0IGV4cGVyaW1lbnRhbERlY29yYXRvcnMgPVxuICAgICAgY29tcGlsZXJPcHRpb25zLmV4cGVyaW1lbnRhbERlY29yYXRvcnMgPT09IHRydWU7XG4gICAgY29uc3QgZW1pdERlY29yYXRvck1ldGFkYXRhID1cbiAgICAgIGNvbXBpbGVyT3B0aW9ucy5lbWl0RGVjb3JhdG9yTWV0YWRhdGEgPT09IHRydWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVjb3JhdG9yczogZXhwZXJpbWVudGFsRGVjb3JhdG9ycyxcbiAgICAgIGxlZ2FjeURlY29yYXRvcjogZXhwZXJpbWVudGFsRGVjb3JhdG9ycyxcbiAgICAgIGRlY29yYXRvck1ldGFkYXRhOiBleHBlcmltZW50YWxEZWNvcmF0b3JzICYmIGVtaXREZWNvcmF0b3JNZXRhZGF0YSxcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICAvLyBJZiB3ZSBjYW4ndCByZWFkIG9yIHBhcnNlIHRoZSB0c2NvbmZpZywgcmV0dXJuIGRlZmF1bHRzXG4gICAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xuICB9XG59XG5cbi8qKlxuICogRmluZHMgdHNjb25maWcuanNvbiBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IChvciBhbmNlc3RvcnMpIGFuZCBleHRyYWN0cyBkZWNvcmF0b3Igb3B0aW9ucy5cbiAqIENvbWJpbmVzIHRzY29uZmlnIGRpc2NvdmVyeSB3aXRoIGRlY29yYXRvciBvcHRpb24gZXh0cmFjdGlvbiBmb3IgY29udmVuaWVuY2UuXG4gKlxuICogQHBhcmFtIGN3ZCAtIERpcmVjdG9yeSB0byBzdGFydCBzZWFyY2hpbmcgZm9yIHRzY29uZmlnLmpzb25cbiAqIEByZXR1cm5zIERlY29yYXRvck9wdGlvbnMgd2l0aCBzZXR0aW5ncyBiYXNlZCBvbiB0c2NvbmZpZyBjb21waWxlck9wdGlvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERlY29yYXRvck9wdGlvbnNGb3JEaXJlY3RvcnkoXG4gIGN3ZDogc3RyaW5nXG4pOiBQcm9taXNlPERlY29yYXRvck9wdGlvbnM+IHtcbiAgY29uc3QgeyBvcHRpb25zIH0gPSBhd2FpdCBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGgoY3dkKTtcbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbi8qKlxuICogRmluZHMgdHNjb25maWcuanNvbi9qc2NvbmZpZy5qc29uIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgdHJlZSBhbmQgcmV0dXJuc1xuICogYm90aCBkZWNvcmF0b3Igb3B0aW9ucyBhbmQgdGhlIGNvbmZpZyBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoZW0uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGgoXG4gIGN3ZDogc3RyaW5nXG4pOiBQcm9taXNlPERlY29yYXRvck9wdGlvbnNXaXRoQ29uZmlnUGF0aD4ge1xuICBjb25zdCBjb25maWdQYXRoID0gYXdhaXQgZmluZFVwKFsndHNjb25maWcuanNvbicsICdqc2NvbmZpZy5qc29uJ10sIHtcbiAgICBjd2QsXG4gIH0pO1xuICBjb25zdCBvcHRpb25zID0gYXdhaXQgZ2V0RGVjb3JhdG9yT3B0aW9uc0Zyb21Uc0NvbmZpZyhjb25maWdQYXRoKTtcbiAgcmV0dXJuIHsgb3B0aW9ucywgY29uZmlnUGF0aCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24gZm9yIGJ1aWxkZXJzIHRoYXQgZG9uJ3QgdXNlIGJ1bmRsZSBwYXRocyBkaXJlY3RseS5cbiAqIFVzZWQgYnkgZnJhbWV3b3JrIGludGVncmF0aW9ucyBsaWtlIE5pdHJvIHdoZXJlIHRoZSBidWlsZGVyIGNvbXB1dGVzIHBhdGhzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNlQnVpbGRlckNvbmZpZyhvcHRpb25zOiB7XG4gIHdvcmtpbmdEaXI6IHN0cmluZztcbiAgcHJvamVjdFJvb3Q/OiBzdHJpbmc7XG4gIGRpcnM/OiBzdHJpbmdbXTtcbiAgd2F0Y2g/OiBib29sZWFuO1xuICBleHRlcm5hbFBhY2thZ2VzPzogc3RyaW5nW107XG4gIHJ1bnRpbWU/OiBzdHJpbmc7XG4gIHNvdXJjZW1hcD86IFNvdXJjZW1hcE1vZGU7XG59KTogT21pdDxXb3JrZmxvd0NvbmZpZywgJ2J1aWxkVGFyZ2V0Jz4ge1xuICByZXR1cm4ge1xuICAgIGRpcnM6IG9wdGlvbnMuZGlycyA/PyBbJ3dvcmtmbG93cyddLFxuICAgIHByb2plY3RSb290OiBvcHRpb25zLnByb2plY3RSb290LFxuICAgIHdvcmtpbmdEaXI6IG9wdGlvbnMud29ya2luZ0RpcixcbiAgICB3YXRjaDogb3B0aW9ucy53YXRjaCxcbiAgICBzdGVwc0J1bmRsZVBhdGg6ICcnLCAvLyBOb3QgdXNlZCBieSBiYXNlIGJ1aWxkZXIgbWV0aG9kc1xuICAgIHdvcmtmbG93c0J1bmRsZVBhdGg6ICcnLCAvLyBOb3QgdXNlZCBieSBiYXNlIGJ1aWxkZXIgbWV0aG9kc1xuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiAnJywgLy8gTm90IHVzZWQgYnkgYmFzZSBidWlsZGVyIG1ldGhvZHNcbiAgICBleHRlcm5hbFBhY2thZ2VzOiBvcHRpb25zLmV4dGVybmFsUGFja2FnZXMsXG4gICAgcnVudGltZTogb3B0aW9ucy5ydW50aW1lLFxuICAgIHNvdXJjZW1hcDogb3B0aW9ucy5zb3VyY2VtYXAsXG4gIH07XG59XG4iXX0=
package/dist/constants.js CHANGED
@@ -10,4 +10,4 @@ export const WORKFLOW_QUEUE_TRIGGER = {
10
10
  retryAfterSeconds: 5, // Delay between retries (default: 60)
11
11
  initialDelaySeconds: 0, // Initial delay before first delivery (default: 0)
12
12
  };
13
- //# sourceMappingURL=constants.js.map
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsSUFBSSxFQUFFLGNBQXVCO0lBQzdCLEtBQUssRUFBRSxrQkFBa0I7SUFDekIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLHNDQUFzQztJQUM1RCxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsbURBQW1EO0NBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1ZXVlIHRyaWdnZXIgY29uZmlndXJhdGlvbiBmb3IgdGhlIHdvcmtmbG93IGhhbmRsZXIuXG4gKiBIYW5kbGVzIGJvdGggd29ya2Zsb3cgb3JjaGVzdHJhdGlvbiBhbmQgc3RlcCBleGVjdXRpb24gb24gdGhlIHNhbWUgcm91dGUuXG4gKiBCYWNrZ3JvdW5kIHN0ZXBzIGFyZSBxdWV1ZWQgYmFjayB0byBfX3drZl93b3JrZmxvd18qIHdpdGggYSBzdGVwSWQuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLRkxPV19RVUVVRV9UUklHR0VSID0ge1xuICB0eXBlOiAncXVldWUvdjJiZXRhJyBhcyBjb25zdCxcbiAgdG9waWM6ICdfX3drZl93b3JrZmxvd18qJyxcbiAgY29uc3VtZXI6ICdkZWZhdWx0JyxcbiAgcmV0cnlBZnRlclNlY29uZHM6IDUsIC8vIERlbGF5IGJldHdlZW4gcmV0cmllcyAoZGVmYXVsdDogNjApXG4gIGluaXRpYWxEZWxheVNlY29uZHM6IDAsIC8vIEluaXRpYWwgZGVsYXkgYmVmb3JlIGZpcnN0IGRlbGl2ZXJ5IChkZWZhdWx0OiAwKVxufTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"discover-entries-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/discover-entries-esbuild-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA2BtC,eAAO,MAAM,SAAS,QAAuC,CAAC;AAwB9D,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAK5D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CA0B3E;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IACL,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAiIR"}
1
+ {"version":3,"file":"discover-entries-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/discover-entries-esbuild-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA2BtC,eAAO,MAAM,SAAS,QAAuC,CAAC;AAyB9D,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAK5D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CA0B3E;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE;IACL,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAiIR"}
@@ -28,7 +28,8 @@ function hasManifestEntries(section) {
28
28
  }
29
29
  function isGeneratedBuildArtifactPath(filePath) {
30
30
  const normalizedPath = filePath.replace(/\\/g, '/');
31
- return (normalizedPath.includes('/.output/') ||
31
+ return (normalizedPath.includes('/.nitro/') ||
32
+ normalizedPath.includes('/.output/') ||
32
33
  normalizedPath.includes('/.next/') ||
33
34
  normalizedPath.includes('/.nuxt/') ||
34
35
  normalizedPath.includes('/.svelte-kit/') ||
@@ -168,4 +169,4 @@ export function createDiscoverEntriesPlugin(state, projectRoot) {
168
169
  },
169
170
  };
170
171
  }
171
- //# sourceMappingURL=discover-entries-esbuild-plugin.js.map
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY292ZXItZW50cmllcy1lc2J1aWxkLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXNjb3Zlci1lbnRyaWVzLWVzYnVpbGQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sdUJBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFHdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qix1QkFBdUIsR0FDeEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQy9CLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztJQUM3QixVQUFVLEVBQUU7UUFDVixLQUFLO1FBQ0wsTUFBTTtRQUNOLE1BQU07UUFDTixNQUFNO1FBQ04sS0FBSztRQUNMLE1BQU07UUFDTixNQUFNO1FBQ04sTUFBTTtRQUNOLE9BQU87UUFDUCxPQUFPO0tBQ1I7SUFDRCxjQUFjLEVBQUUsS0FBSztJQUNyQixjQUFjLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztDQUM5QyxDQUFDLENBQ0gsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxvQ0FBb0MsQ0FBQztBQUU5RCxpRUFBaUU7QUFDakUsU0FBUyxrQkFBa0IsQ0FDekIsT0FBaUQ7SUFFakQsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNoQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxD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QkFFdkIsSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDOzRCQUNuRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUNoRCxDQUFDO3dCQUNELElBQUksa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzs0QkFDL0MsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzVDLENBQUM7d0JBRUQsSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDOzRCQUNqRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUNqRCxDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxpQkFBaUIsQ0FDdEMsY0FBYyxFQUNkLE1BQU0sRUFDTixLQUFLLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO3dCQUNGLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQ3pCLENBQUM7b0JBRUQsT0FBTzt3QkFDTCxRQUFRLEVBQUUsZUFBZTt3QkFDekIsTUFBTTtxQkFDUCxDQUFDO2dCQUNKLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCw0Q0FBNEM7b0JBQzVDLE9BQU87d0JBQ0wsUUFBUSxFQUFFLEVBQUU7d0JBQ1osTUFBTSxFQUFFLElBQUk7cUJBQ2IsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCBlbmhhbmNlZFJlc29sdmVPcmlnaW5hbCBmcm9tICdlbmhhbmNlZC1yZXNvbHZlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93TWFuaWZlc3QgfSBmcm9tICcuL2FwcGx5LXN3Yy10cmFuc2Zvcm0uanMnO1xuaW1wb3J0IHsgYXBwbHlTd2NUcmFuc2Zvcm0gfSBmcm9tICcuL2FwcGx5LXN3Yy10cmFuc2Zvcm0uanMnO1xuaW1wb3J0IHtcbiAgZGV0ZWN0V29ya2Zsb3dQYXR0ZXJucyxcbiAgaXNHZW5lcmF0ZWRXb3JrZmxvd0ZpbGUsXG59IGZyb20gJy4vdHJhbnNmb3JtLXV0aWxzLmpzJztcblxuY29uc3QgZW5oYW5jZWRSZXNvbHZlID0gcHJvbWlzaWZ5KFxuICBlbmhhbmNlZFJlc29sdmVPcmlnaW5hbC5jcmVhdGUoe1xuICAgIGV4dGVuc2lvbnM6IFtcbiAgICAgICcudHMnLFxuICAgICAgJy50c3gnLFxuICAgICAgJy5tdHMnLFxuICAgICAgJy5jdHMnLFxuICAgICAgJy5qcycsXG4gICAgICAnLmpzeCcsXG4gICAgICAnLm1qcycsXG4gICAgICAnLmNqcycsXG4gICAgICAnLmpzb24nLFxuICAgICAgJy5ub2RlJyxcbiAgICBdLFxuICAgIGZ1bGx5U3BlY2lmaWVkOiBmYWxzZSxcbiAgICBjb25kaXRpb25OYW1lczogWydub2RlJywgJ2ltcG9ydCcsICdyZXF1aXJlJ10sXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QganNUc1JlZ2V4ID0gL1xcLih0c3x0c3h8anN8anN4fG1qc3xjanN8bXRzfGN0cykkLztcblxuLyoqIFJldHVybnMgdHJ1ZSBpZiBhIG1hbmlmZXN0IHNlY3Rpb24gaGFzIGF0IGxlYXN0IG9uZSBlbnRyeS4gKi9cbmZ1bmN0aW9uIGhhc01hbmlmZXN0RW50cmllcyhcbiAgc2VjdGlvbjogV29ya2Zsb3dNYW5pZmVzdFtrZXlvZiBXb3JrZmxvd01hbmlmZXN0XVxuKTogYm9vbGVhbiB7XG4gIGlmICghc2VjdGlvbikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzZWN0aW9uKS5zb21lKFxuICAgIChlbnRyaWVzKSA9PiBPYmplY3Qua2V5cyhlbnRyaWVzKS5sZW5ndGggPiAwXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdGVkQnVpbGRBcnRpZmFjdFBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgcmV0dXJuIChcbiAgICBub3JtYWxpemVkUGF0aC5pbmNsdWRlcygnLy5uaXRyby8nKSB8fFxuICAgIG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKCcvLm91dHB1dC8nKSB8fFxuICAgIG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKCcvLm5leHQvJykgfHxcbiAgICBub3JtYWxpemVkUGF0aC5pbmNsdWRlcygnLy5udXh0LycpIHx8XG4gICAgbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoJy8uc3ZlbHRlLWtpdC8nKSB8fFxuICAgIG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKCcvLnZlcmNlbC8nKVxuICApO1xufVxuXG4vLyBwYXJlbnQgLT4gY2hpbGRyZW4gcmVsYXRpb25zaGlwIChhIGZpbGUgY2FuIGltcG9ydCBtdWx0aXBsZSBmaWxlcylcbmV4cG9ydCBjb25zdCBpbXBvcnRQYXJlbnRzID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpO1xuXG4vLyBjaGVjayBpZiBhIHBhcmVudCBoYXMgYSBjaGlsZCBpbiBpdHMgaW1wb3J0IGNoYWluXG4vLyBlLmcuIGlmIGEgZGVwZW5kZW5jeSBuZWVkcyB0byBiZSBidW5kbGVkIGJlY2F1c2UgaXQgaGFzXG4vLyBhICd1c2Ugd29ya2Zsb3cvJ3VzZSBzdGVwJyBkaXJlY3RpdmUgaW4gaXRcbmV4cG9ydCBmdW5jdGlvbiBwYXJlbnRIYXNDaGlsZChwYXJlbnQ6IHN0cmluZywgY2hpbGRUb0ZpbmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHF1ZXVlOiBzdHJpbmdbXSA9IFtwYXJlbnRdO1xuXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHF1ZXVlLnNoaWZ0KCkhO1xuXG4gICAgaWYgKHZpc2l0ZWQuaGFzKGN1cnJlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmlzaXRlZC5hZGQoY3VycmVudCk7XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IGltcG9ydFBhcmVudHMuZ2V0KGN1cnJlbnQpO1xuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmIChjaGlsZCA9PT0gY2hpbGRUb0ZpbmQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBxdWV1ZS5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXNjb3ZlckVudHJpZXNQbHVnaW4oXG4gIHN0YXRlOiB7XG4gICAgZGlzY292ZXJlZFN0ZXBzOiBTZXQ8c3RyaW5nPjtcbiAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBTZXQ8c3RyaW5nPjtcbiAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogU2V0PHN0cmluZz47XG4gIH0sXG4gIHByb2plY3RSb290Pzogc3RyaW5nXG4pOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdkaXNjb3Zlci1lbnRyaWVzLWVzYnVpbGQtcGx1Z2luJyxcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgLy8gVHJhY2sgcGFyZW504oaSY2hpbGQgaW1wb3J0IHJlbGF0aW9uc2hpcHMgZm9yIEFMTCBpbXBvcnRzIChub3QganVzdFxuICAgICAgLy8gdGhvc2Ugd2l0aCBmaWxlIGV4dGVuc2lvbnMpIHNvIHRoYXQgYHBhcmVudEhhc0NoaWxkKClgIGNhbiBjb3JyZWN0bHlcbiAgICAgIC8vIGlkZW50aWZ5IHRyYW5zaXRpdmUgcGFyZW50cyBvZiBzZXJkZS9zdGVwIGZpbGVzIGV2ZW4gd2hlbiB0aGVcbiAgICAgIC8vIGRlcGVuZGVuY3kgY2hhaW4gcGFzc2VzIHRocm91Z2ggYmFyZSBzcGVjaWZpZXIgaW1wb3J0cyBsaWtlXG4gICAgICAvLyBgQHdvcmtmbG93L2NvcmUvcnVudGltZWAgb3IgYHdvcmtmbG93L3J1bnRpbWVgLlxuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovIH0sIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBlbmhhbmNlZFJlc29sdmUoYXJncy5yZXNvbHZlRGlyLCBhcmdzLnBhdGgpO1xuXG4gICAgICAgICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICAgICAgICAvLyBOb3JtYWxpemUgcGF0aCBzZXBhcmF0b3JzIGZvciBjcm9zcy1wbGF0Zm9ybSBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkSW1wb3J0ZXIgPSBhcmdzLmltcG9ydGVyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXNvbHZlZCA9IHJlc29sdmVkLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgICAgIC8vIEEgZmlsZSBjYW4gaW1wb3J0IG11bHRpcGxlIGZpbGVzLCBzbyB3ZSBzdG9yZSBhIFNldCBvZiBjaGlsZHJlblxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gaW1wb3J0UGFyZW50cy5nZXQobm9ybWFsaXplZEltcG9ydGVyKTtcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgaW1wb3J0UGFyZW50cy5zZXQobm9ybWFsaXplZEltcG9ydGVyLCBjaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZHJlbi5hZGQobm9ybWFsaXplZFJlc29sdmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKF8pIHt9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEhhbmRsZSBUeXBlU2NyaXB0IGFuZCBKYXZhU2NyaXB0IGZpbGVzXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IGpzVHNSZWdleCB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChpc0dlbmVyYXRlZEJ1aWxkQXJ0aWZhY3RQYXRoKGFyZ3MucGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGNvbnRlbnRzOiAnJyxcbiAgICAgICAgICAgICAgbG9hZGVyOiAnanMnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTa2lwIGdlbmVyYXRlZCB3b3JrZmxvdyByb3V0ZSBmaWxlcyB0byBhdm9pZCByZS1wcm9jZXNzaW5nIHRoZW1cbiAgICAgICAgICBpZiAoaXNHZW5lcmF0ZWRXb3JrZmxvd0ZpbGUoYXJncy5wYXRoKSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCAndXRmOCcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29udGVudHM6IHNvdXJjZSxcbiAgICAgICAgICAgICAgbG9hZGVyOiBhcmdzLnBhdGguZW5kc1dpdGgoJy5qc3gnKSA/ICdqc3gnIDogJ2pzJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBsb2FkZXIgYmFzZWQgb24gdGhlIG91dHB1dFxuICAgICAgICAgIGxldCBsb2FkZXI6ICdqcycgfCAnanN4JyA9ICdqcyc7XG4gICAgICAgICAgY29uc3QgaXNUeXBlU2NyaXB0ID1cbiAgICAgICAgICAgIGFyZ3MucGF0aC5lbmRzV2l0aCgnLnRzJykgfHxcbiAgICAgICAgICAgIGFyZ3MucGF0aC5lbmRzV2l0aCgnLnRzeCcpIHx8XG4gICAgICAgICAgICBhcmdzLnBhdGguZW5kc1dpdGgoJy5tdHMnKSB8fFxuICAgICAgICAgICAgYXJncy5wYXRoLmVuZHNXaXRoKCcuY3RzJyk7XG4gICAgICAgICAgaWYgKCFpc1R5cGVTY3JpcHQgJiYgYXJncy5wYXRoLmVuZHNXaXRoKCcuanN4JykpIHtcbiAgICAgICAgICAgIGxvYWRlciA9ICdqc3gnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCByZWFkRmlsZShhcmdzLnBhdGgsICd1dGY4Jyk7XG5cbiAgICAgICAgICAvLyBOb3JtYWxpemUgcGF0aCBzZXBhcmF0b3JzIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgY3Jvc3MtcGxhdGZvcm0gY29tcGF0aWJpbGl0eVxuICAgICAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWwgZm9yIFdpbmRvd3Mgd2hlcmUgcGF0aHMgY29udGFpbiBiYWNrc2xhc2hlc1xuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gYXJncy5wYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcblxuICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvamVjdFJvb3QgPVxuICAgICAgICAgICAgcHJvamVjdFJvb3QgfHwgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYWJzV29ya2luZ0RpciB8fCBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgICAgICAgLy8gVHdvLXBoYXNlIGRpc2NvdmVyeTpcbiAgICAgICAgICAvLyAgMS4gRmFzdCByZWdleHAgcHJlLXNjYW4gZmlsdGVycyBvdXQgdGhlIHZhc3QgbWFqb3JpdHkgb2YgZmlsZXMuXG4gICAgICAgICAgLy8gIDIuIEZvciB0aGUgc21hbGwgbnVtYmVyIHRoYXQgbWF0Y2gsIHJ1biB0aGUgU1dDIHBsdWdpbiBpbiAnZGV0ZWN0J1xuICAgICAgICAgIC8vICAgICBtb2RlIHRvIGdldCBhbiBBU1QtbGV2ZWwgbWFuaWZlc3QuIERldGVjdCBtb2RlIHdhbGtzIHRoZSBBU1QgdG9cbiAgICAgICAgICAvLyAgICAgZmluZCBkaXJlY3RpdmVzIGFuZCBzZXJkZSBwYXR0ZXJucyBidXQgZG9lcyBOT1QgdHJhbnNmb3JtIGFueVxuICAgICAgICAgIC8vICAgICBjb2RlLCBlbGltaW5hdGluZyBmYWxzZSBwb3NpdGl2ZXMgd2hlcmUgZGlyZWN0aXZlLWxpa2Ugc3RyaW5nc1xuICAgICAgICAgIC8vICAgICBhcHBlYXIgaW5zaWRlIHRlbXBsYXRlIGxpdGVyYWxzLCByZWd1bGFyIHN0cmluZ3MsIG9yIGNvbW1lbnRzLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gQWxsIGZpbGVzIGFyZSB0cmFuc2Zvcm1lZCBieSBTV0MgKFRT4oaSSlMsIGRlY29yYXRvcnMsIGV0Yy4pIHNpbmNlXG4gICAgICAgICAgLy8gZXNidWlsZCBkb2VzIG5vdCBzdXBwb3J0IGFsbCBUeXBlU2NyaXB0IHN5bnRheCAoZS5nLiBsZWdhY3lcbiAgICAgICAgICAvLyBkZWNvcmF0b3JzLCBlbWl0RGVjb3JhdG9yTWV0YWRhdGEpLiBGb3IgcmVnZXhwLW1hdGNoZWQgZmlsZXMgdGhlXG4gICAgICAgICAgLy8gJ2RldGVjdCcgY2FsbCBoYW5kbGVzIGJvdGggdGhlIHN5bnRheCB0cmFuc2Zvcm0gYW5kIHRoZSBtYW5pZmVzdFxuICAgICAgICAgIC8vIGluIGEgc2luZ2xlIHBhc3M7IGZvciBhbGwgb3RoZXIgZmlsZXMgYSBtb2RlOmZhbHNlIGNhbGwgaXMgdXNlZC5cbiAgICAgICAgICBjb25zdCBwYXR0ZXJucyA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcblxuICAgICAgICAgIGxldCB0cmFuc2Zvcm1lZENvZGU6IHN0cmluZztcblxuICAgICAgICAgIGlmIChwYXR0ZXJucy5oYXNEaXJlY3RpdmUgfHwgcGF0dGVybnMuaGFzU2VyZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSwgd29ya2Zsb3dNYW5pZmVzdCB9ID0gYXdhaXQgYXBwbHlTd2NUcmFuc2Zvcm0oXG4gICAgICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICdkZXRlY3QnLFxuICAgICAgICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgICAgICAgcmVzb2x2ZWRQcm9qZWN0Um9vdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkQ29kZSA9IGNvZGU7XG5cbiAgICAgICAgICAgIGlmIChoYXNNYW5pZmVzdEVudHJpZXMod29ya2Zsb3dNYW5pZmVzdC53b3JrZmxvd3MpKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmRpc2NvdmVyZWRXb3JrZmxvd3MuYWRkKG5vcm1hbGl6ZWRQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNNYW5pZmVzdEVudHJpZXMod29ya2Zsb3dNYW5pZmVzdC5zdGVwcykpIHtcbiAgICAgICAgICAgICAgc3RhdGUuZGlzY292ZXJlZFN0ZXBzLmFkZChub3JtYWxpemVkUGF0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNNYW5pZmVzdEVudHJpZXMod29ya2Zsb3dNYW5pZmVzdC5jbGFzc2VzKSkge1xuICAgICAgICAgICAgICBzdGF0ZS5kaXNjb3ZlcmVkU2VyZGVGaWxlcy5hZGQobm9ybWFsaXplZFBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IGF3YWl0IGFwcGx5U3djVHJhbnNmb3JtKFxuICAgICAgICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgbm9ybWFsaXplZFBhdGgsXG4gICAgICAgICAgICAgIHJlc29sdmVkUHJvamVjdFJvb3RcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZENvZGUgPSBjb2RlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50czogdHJhbnNmb3JtZWRDb2RlLFxuICAgICAgICAgICAgbG9hZGVyLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAvLyBpZ25vcmUgdHJhY2UgZXJyb3JzIGR1cmluZyBkaXNjb3ZlciBwaGFzZVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50czogJycsXG4gICAgICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -147,4 +147,4 @@ describe('createDiscoverEntriesPlugin projectRoot', () => {
147
147
  expect(parentHasChild(normalizedEntry, normalizedSerde)).toBe(true);
148
148
  });
149
149
  });
150
- //# sourceMappingURL=discover-entries-esbuild-plugin.test.js.map
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY292ZXItZW50cmllcy1lc2J1aWxkLXBsdWdpbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Rpc2NvdmVyLWVudHJpZXMtZXNidWlsZC1wbHVnaW4udGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV6RSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEQscUJBQXFCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUMvQixDQUFDLENBQUMsQ0FBQztBQUVKLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6QyxpQkFBaUIsRUFBRSxxQkFBcUI7Q0FDekMsQ0FBQyxDQUFDLENBQUM7QUFFSixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxQyxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNs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QUMsZUFBZSxDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxhQUFjLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUQsMkRBQTJEO1FBQzNELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLFdBQVksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsaUVBQWlFO1FBQ2pFLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFscGF0aFN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0ICogYXMgZXNidWlsZCBmcm9tICdlc2J1aWxkJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQsIHZpIH0gZnJvbSAndml0ZXN0JztcblxuY29uc3QgeyBhcHBseVN3Y1RyYW5zZm9ybU1vY2sgfSA9IHZpLmhvaXN0ZWQoKCkgPT4gKHtcbiAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrOiB2aS5mbigpLFxufSkpO1xuXG52aS5tb2NrKCcuL2FwcGx5LXN3Yy10cmFuc2Zvcm0uanMnLCAoKSA9PiAoe1xuICBhcHBseVN3Y1RyYW5zZm9ybTogYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLFxufSkpO1xuXG5pbXBvcnQge1xuICBjcmVhdGVEaXNjb3ZlckVudHJpZXNQbHVnaW4sXG4gIGltcG9ydFBhcmVudHMsXG4gIHBhcmVudEhhc0NoaWxkLFxufSBmcm9tICcuL2Rpc2NvdmVyLWVudHJpZXMtZXNidWlsZC1wbHVnaW4uanMnO1xuXG5jb25zdCByZWFsVG1wZGlyID0gcmVhbHBhdGhTeW5jKHRtcGRpcigpKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplU2xhc2hlcyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoOiBzdHJpbmcsIGNvbnRlbnRzID0gJycpOiB2b2lkIHtcbiAgbWtkaXJTeW5jKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKHBhdGgsIGNvbnRlbnRzLCAndXRmLTgnKTtcbn1cblxuZGVzY3JpYmUoJ2NyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbiBwcm9qZWN0Um9vdCcsICgpID0+IHtcbiAgbGV0IHRlc3RSb290OiBzdHJpbmc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGVzdFJvb3QgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICd3b3JrZmxvdy1kaXNjb3Zlci1wbHVnaW4tJykpO1xuICAgIGltcG9ydFBhcmVudHMuY2xlYXIoKTtcbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja1Jlc2V0KCk7XG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tJbXBsZW1lbnRhdGlvbihcbiAgICAgIGFzeW5jIChmaWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBTaW11bGF0ZSB0aGUgU1dDIHBsdWdpbiBwcm9kdWNpbmcgYSBtYW5pZmVzdCBpbiAnZGV0ZWN0JyBtb2RlXG4gICAgICAgIGNvbnN0IGhhc1dvcmtmbG93ID0gL1snXCJddXNlIHdvcmtmbG93WydcIl0vLnRlc3Qoc291cmNlKTtcbiAgICAgICAgY29uc3QgaGFzU3RlcCA9IC9bJ1wiXXVzZSBzdGVwWydcIl0vLnRlc3Qoc291cmNlKTtcbiAgICAgICAgY29uc3Qgd29ya2Zsb3dNYW5pZmVzdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgaWYgKGhhc1dvcmtmbG93KSB7XG4gICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdC53b3JrZmxvd3MgPSB7XG4gICAgICAgICAgICBbZmlsZW5hbWVdOiB7IGhhbmRsZU1lc3NhZ2VXb3JrZmxvdzogeyB3b3JrZmxvd0lkOiAndGVzdCcgfSB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc1N0ZXApIHtcbiAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0LnN0ZXBzID0ge1xuICAgICAgICAgICAgW2ZpbGVuYW1lXTogeyBteVN0ZXA6IHsgc3RlcElkOiAndGVzdCcgfSB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY29kZTogc291cmNlLCB3b3JrZmxvd01hbmlmZXN0IH07XG4gICAgICB9XG4gICAgKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpbXBvcnRQYXJlbnRzLmNsZWFyKCk7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHNldHVwRml4dHVyZSgpIHtcbiAgICBjb25zdCBhcHBSb290ID0gam9pbih0ZXN0Um9vdCwgJ2FwcHMnLCAnY2hhdCcpO1xuICAgIGNvbnN0IHBhY2thZ2VSb290ID0gam9pbih0ZXN0Um9vdCwgJ3BhY2thZ2VzJywgJ3ZhZGUnKTtcbiAgICBjb25zdCB3b3JrZmxvd0ZpbGUgPSBqb2luKFxuICAgICAgcGFja2FnZVJvb3QsXG4gICAgICAnc3JjJyxcbiAgICAgICdpbnRlcm5hbCcsXG4gICAgICAnbWVzc2FnZScsXG4gICAgICAnd29ya2Zsb3cnLFxuICAgICAgJ2hhbmRsZS1tZXNzYWdlLnRzJ1xuICAgICk7XG5cbiAgICB3cml0ZUZpbGUoXG4gICAgICB3b3JrZmxvd0ZpbGUsXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2VXb3JrZmxvdyhtZXNzYWdlKSB7XG4gIFwidXNlIHdvcmtmbG93XCI7XG5cbiAgcmV0dXJuIG1lc3NhZ2U7XG59XG5gXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhcHBSb290LFxuICAgICAgcGFja2FnZVJvb3QsXG4gICAgICB3b3JrZmxvd0ZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIGl0KCd1c2VzIHRoZSBleHBsaWNpdCBwcm9qZWN0Um9vdCBkdXJpbmcgZGlzY292ZXJ5IHRyYW5zZm9ybXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZml4dHVyZSA9IHNldHVwRml4dHVyZSgpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRXb3JrZmxvd0ZpbGUgPSBub3JtYWxpemVTbGFzaGVzKGZpeHR1cmUud29ya2Zsb3dGaWxlKTtcbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW2ZpeHR1cmUud29ya2Zsb3dGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IGZpeHR1cmUucGFja2FnZVJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHBsdWdpbnM6IFtjcmVhdGVEaXNjb3ZlckVudHJpZXNQbHVnaW4oc3RhdGUsIGZpeHR1cmUuYXBwUm9vdCldLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBleHBlY3Qoc3RhdGUuZGlzY292ZXJlZFdvcmtmbG93cykudG9FcXVhbChcbiAgICAgIG5ldyBTZXQoW25vcm1hbGl6ZWRXb3JrZmxvd0ZpbGVdKVxuICAgICk7XG4gICAgLy8gU2luZ2xlICdkZXRlY3QnIG1vZGUgY2FsbCBmb3IgQVNULWxldmVsIG1hbmlmZXN0IHZhbGlkYXRpb25cbiAgICBleHBlY3QoYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgIG5vcm1hbGl6ZWRXb3JrZmxvd0ZpbGUsXG4gICAgICBleHBlY3Quc3RyaW5nQ29udGFpbmluZygnXCJ1c2Ugd29ya2Zsb3dcIicpLFxuICAgICAgJ2RldGVjdCcsXG4gICAgICBub3JtYWxpemVkV29ya2Zsb3dGaWxlLFxuICAgICAgZml4dHVyZS5hcHBSb290XG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2RlZmF1bHRzIGRpc2NvdmVyeSB0cmFuc2Zvcm1zIHRvIGFic1dvcmtpbmdEaXIgd2hlbiBwcm9qZWN0Um9vdCBpcyBvbWl0dGVkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBzZXR1cEZpeHR1cmUoKTtcbiAgICBjb25zdCBub3JtYWxpemVkV29ya2Zsb3dGaWxlID0gbm9ybWFsaXplU2xhc2hlcyhmaXh0dXJlLndvcmtmbG93RmlsZSk7XG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgZGlzY292ZXJlZFdvcmtmbG93czogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtmaXh0dXJlLndvcmtmbG93RmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiBmaXh0dXJlLnBhY2thZ2VSb290LFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luKHN0YXRlKV0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5kaXNjb3ZlcmVkV29ya2Zsb3dzKS50b0VxdWFsKFxuICAgICAgbmV3IFNldChbbm9ybWFsaXplZFdvcmtmbG93RmlsZV0pXG4gICAgKTtcbiAgICAvLyBTaW5nbGUgJ2RldGVjdCcgbW9kZSBjYWxsIGZvciBBU1QtbGV2ZWwgbWFuaWZlc3QgdmFsaWRhdGlvblxuICAgIGV4cGVjdChhcHBseVN3Y1RyYW5zZm9ybU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgbm9ybWFsaXplZFdvcmtmbG93RmlsZSxcbiAgICAgIGV4cGVjdC5zdHJpbmdDb250YWluaW5nKCdcInVzZSB3b3JrZmxvd1wiJyksXG4gICAgICAnZGV0ZWN0JyxcbiAgICAgIG5vcm1hbGl6ZWRXb3JrZmxvd0ZpbGUsXG4gICAgICBmaXh0dXJlLnBhY2thZ2VSb290XG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3RyYWNrcyBpbXBvcnRQYXJlbnRzIHRocm91Z2ggYmFyZSBzcGVjaWZpZXIgaW1wb3J0cycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBTaW11bGF0ZTogZW50cnkudHMgLT4gYmFyZS1wa2cgLT4gLi9zZXJkZS1maWxlLnRzXG4gICAgLy8gVGhlIGJhcmUgc3BlY2lmaWVyIFwiYmFyZS1wa2dcIiBzaG91bGQgbm90IGJyZWFrIHRoZSBwYXJlbnQtY2hpbGQgY2hhaW4uXG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ2VudHJ5LnRzJyk7XG4gICAgY29uc3QgcGtnRGlyID0gam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICdiYXJlLXBrZycpO1xuICAgIGNvbnN0IHBrZ0luZGV4ID0gam9pbihwa2dEaXIsICdpbmRleC5qcycpO1xuICAgIGNvbnN0IHNlcmRlRmlsZSA9IGpvaW4ocGtnRGlyLCAnc2VyZGUuanMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdiYXJlLXBrZycsIG1haW46ICdpbmRleC5qcycgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShwa2dJbmRleCwgYGV4cG9ydCB7IEZvbyB9IGZyb20gJy4vc2VyZGUuanMnO2ApO1xuICAgIHdyaXRlRmlsZShzZXJkZUZpbGUsIGBleHBvcnQgY2xhc3MgRm9vIHt9XFxuYCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgZW50cnlGaWxlLFxuICAgICAgYGltcG9ydCB7IEZvbyB9IGZyb20gJ2JhcmUtcGtnJztcXG5jb25zb2xlLmxvZyhGb28pO1xcbmBcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgZGlzY292ZXJlZFdvcmtmbG93czogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHBsdWdpbnM6IFtjcmVhdGVEaXNjb3ZlckVudHJpZXNQbHVnaW4oc3RhdGUpXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50cnkgPSBub3JtYWxpemVTbGFzaGVzKGVudHJ5RmlsZSk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBrZ0luZGV4ID0gbm9ybWFsaXplU2xhc2hlcyhwa2dJbmRleCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNlcmRlID0gbm9ybWFsaXplU2xhc2hlcyhzZXJkZUZpbGUpO1xuXG4gICAgLy8gZW50cnkudHMgLT4gYmFyZS1wa2cvaW5kZXguanMgc2hvdWxkIGJlIHRyYWNrZWRcbiAgICBjb25zdCBlbnRyeUNoaWxkcmVuID0gaW1wb3J0UGFyZW50cy5nZXQobm9ybWFsaXplZEVudHJ5KTtcbiAgICBleHBlY3QoZW50cnlDaGlsZHJlbikudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoZW50cnlDaGlsZHJlbiEuaGFzKG5vcm1hbGl6ZWRQa2dJbmRleCkpLnRvQmUodHJ1ZSk7XG5cbiAgICAvLyBiYXJlLXBrZy9pbmRleC5qcyAtPiBiYXJlLXBrZy9zZXJkZS5qcyBzaG91bGQgYmUgdHJhY2tlZFxuICAgIGNvbnN0IHBrZ0NoaWxkcmVuID0gaW1wb3J0UGFyZW50cy5nZXQobm9ybWFsaXplZFBrZ0luZGV4KTtcbiAgICBleHBlY3QocGtnQ2hpbGRyZW4pLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KHBrZ0NoaWxkcmVuIS5oYXMobm9ybWFsaXplZFNlcmRlKSkudG9CZSh0cnVlKTtcblxuICAgIC8vIHBhcmVudEhhc0NoaWxkIHNob3VsZCB0cmFuc2l0aXZlbHkgZmluZCBzZXJkZS5qcyBmcm9tIGVudHJ5LnRzXG4gICAgZXhwZWN0KHBhcmVudEhhc0NoaWxkKG5vcm1hbGl6ZWRFbnRyeSwgbm9ybWFsaXplZFNlcmRlKSkudG9CZSh0cnVlKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -22,4 +22,4 @@ export async function getEsbuildTsconfigOptions(tsconfigPath) {
22
22
  return { tsconfig: tsconfigPath };
23
23
  }
24
24
  }
25
- //# sourceMappingURL=esbuild-tsconfig.js.map
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNidWlsZC10c2NvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lc2J1aWxkLXRzY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPbkQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsWUFBZ0M7SUFFaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbHN0YXQsIHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmV4cG9ydCB0eXBlIEVzYnVpbGRUc2NvbmZpZ09wdGlvbnMgPSB7XG4gIHRzY29uZmlnPzogc3RyaW5nO1xuICB0c2NvbmZpZ1Jhdz86IHN0cmluZztcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgdHNjb25maWcgb3B0aW9ucyBmb3IgZXNidWlsZC5cbiAqXG4gKiBGb3Igc3ltbGlua2VkIHRzY29uZmlnIGZpbGVzIHdlIHBhc3MgYHRzY29uZmlnUmF3YCBpbnN0ZWFkIG9mIGB0c2NvbmZpZ2Agc29cbiAqIHBhdGggYWxpYXNlcyAoZm9yIGV4YW1wbGUgYEAvKmApIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGUgY3VycmVudFxuICogd29ya2luZyBkaXJlY3RvcnkgaW5zdGVhZCBvZiB0aGUgc3ltbGluayB0YXJnZXQgZGlyZWN0b3J5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RXNidWlsZFRzY29uZmlnT3B0aW9ucyhcbiAgdHNjb25maWdQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IFByb21pc2U8RXNidWlsZFRzY29uZmlnT3B0aW9ucz4ge1xuICBpZiAoIXRzY29uZmlnUGF0aCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBsc3RhdCh0c2NvbmZpZ1BhdGgpO1xuICAgIGlmICghc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgcmV0dXJuIHsgdHNjb25maWc6IHRzY29uZmlnUGF0aCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHRzY29uZmlnUmF3ID0gYXdhaXQgcmVhZEZpbGUodHNjb25maWdQYXRoLCAndXRmOCcpO1xuICAgIHJldHVybiB7IHRzY29uZmlnUmF3IH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHRzY29uZmlnOiB0c2NvbmZpZ1BhdGggfTtcbiAgfVxufVxuIl19