@nlabs/lex 1.54.2 → 1.54.3

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 (46) hide show
  1. package/.github/copilot-instructions.md +4 -4
  2. package/README.md +25 -25
  3. package/__mocks__/LexConfig.js +9 -9
  4. package/__mocks__/boxen.js +1 -1
  5. package/__mocks__/build.js +6 -6
  6. package/__mocks__/compare-versions.js +1 -1
  7. package/__mocks__/compile.js +2 -2
  8. package/__mocks__/execa.js +2 -2
  9. package/__mocks__/latest-version.js +1 -1
  10. package/__mocks__/ora.js +13 -13
  11. package/__mocks__/versions.js +4 -4
  12. package/config.json +2 -2
  13. package/examples/lex.config.js +4 -4
  14. package/lex.config.js +4 -4
  15. package/lib/LexConfig.d.ts +2 -9
  16. package/lib/LexConfig.js +2 -2
  17. package/lib/commands/ai/ai.js +2 -2
  18. package/lib/commands/config/config.js +14 -8
  19. package/lib/commands/migrate/migrate.js +2 -2
  20. package/lib/commands/test/test.d.ts +2 -0
  21. package/lib/commands/test/test.js +130 -117
  22. package/lib/commands/versions/versions.d.ts +1 -1
  23. package/lib/commands/versions/versions.js +3 -3
  24. package/lib/lex.js +2 -2
  25. package/lib/test-react/index.d.ts +1 -1
  26. package/lib/test-react/index.js +2 -2
  27. package/lib/types.d.ts +1 -1
  28. package/lib/types.js +1 -1
  29. package/lib/utils/app.js +2 -2
  30. package/lib/vitest.d.js +3 -0
  31. package/package.json +42 -42
  32. package/resolver.cjs +11 -9
  33. package/tsconfig/reactNative.json +3 -2
  34. package/tsconfig.build.json +3 -3
  35. package/tsconfig.json +4 -3
  36. package/tsconfig.lint.json +3 -2
  37. package/tsconfig.template.json +3 -2
  38. package/tsconfig.test.json +4 -3
  39. package/vitest.config.d.mts +2 -0
  40. package/vitest.config.mjs +61 -0
  41. package/vitest.config.template.cjs +66 -0
  42. package/vitest.setup.template.js +19 -0
  43. package/jest.config.d.mts +0 -50
  44. package/jest.config.mjs +0 -72
  45. package/jest.config.template.cjs +0 -71
  46. package/jest.setup.template.js +0 -18
package/lib/lex.js CHANGED
@@ -78,7 +78,7 @@ program.command('publish').addOption(new Option('--bump <type>', 'Increments the
78
78
  ]).default('npm')).option('--private', 'Publishes the module as restricted.').option('--quiet', 'No Lex notifications printed in the console.').option('--tag <tag>', 'Registers the published package with the given tag.').action((cmd)=>publish(cmd, process.exit).then(()=>{}));
79
79
  program.command('serverless').option('--config <path>', 'Custom configuration file path (default: lex.config.mjs).').option('--host <host>', 'Host to bind the server to (default: localhost).').option('--httpPort <port>', 'HTTP server port (default: 3000).').option('--httpsPort <port>', 'HTTPS server port (default: 3001).').option('--wsPort <port>', 'WebSocket server port (default: 3002).').option('--quiet', 'No Lex notifications printed in the console.').option('--remove', 'Removes all files from the output directory before starting.').option('--usePublicIp', 'Force refresh the cached public IP address.').option('--variables <json>', 'Environment variables to set in process.env.').option('--debug', 'Enable GraphQL debug logging to see queries, variables, and operations.').option('--printOutput', 'Print GraphQL response output including status, headers, and body.').action((cmd)=>serverless(cmd, process.exit).then(()=>{}));
80
80
  program.command('storybook').option('--config <path>', 'Custom Storybook configuration directory path (ie. .storybook).').option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--open', 'Automatically open Storybook in a new browser window.').option('--port <number>', 'Port number for the Storybook server.').option('--quiet', 'No Lex notifications printed in the console.').option('--static', 'Build a static Storybook site instead of starting dev server.').option('--variables <n>', 'Environment variables to set in "process.env". (ie. "{STORYBOOK_THEME: \'dark\'}").').option('--verbose', 'Show detailed webpack progress output.').action((cmd)=>storybook(cmd, process.exit).then(()=>{}));
81
- program.command('test [files...]').option('--analyze', 'Use AI to analyze test coverage and suggest improvements.', false).option('--debugTests', 'Use AI to debug test failures and suggest fixes.', false).option('--generate', 'Use AI to generate test cases for untested code.', false).option('--bail', 'Exit the test suite immediately upon the first failing test suite.').option('--changedFilesWithAncestor', 'Runs tests related to the current changes and the changes made in the last commit.').option('--changedSince', 'Runs tests related the changes since the provided branch.').option('--ci', 'When this option is provided, Jest will assume it is running in a CI environment.').option('--clearCache', 'Clear Jest cache.').option('--collectCoverageFrom <glob>', 'A glob pattern relative to matching the files that coverage info needs to be collected from.').option('--colors', 'Forces test results output highlighting even if stdout is not a TTY.').option('--config <path>', 'Custom Jest configuration file path (ie. jest.config.js).').option('--debug', 'Print debugging info about your Jest config.').option('--detectOpenHandles', 'Attempt to collect and print open handles preventing Jest from exiting cleanly').option('--environment <n>', 'Target environment. "node" or "web". Default: "node".').option('--env', 'The test environment used for all tests. This can point to any file or node module. Examples: jsdom, node or path/to/my-environment.js.').option('--errorOnDeprecated', 'Make calling deprecated APIs throw helpful error messages.').option('--expand', 'Use this flag to show full diffs and errors instead of a patch.').option('--forceExit', 'Force Jest to exit after all tests have completed running.').option('--json', 'Prints the test results in JSON.').option('--lastCommit', 'Run all tests affected by file changes in the last commit made.').option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--listTests', 'Lists all tests as JSON that Jest will run given the arguments, and exits.').option('--logHeapUsage', 'Logs the heap usage after every test.').option('--maxWorkers <num>', 'Specifies the maximum number of workers the worker-pool will spawn for running tests. ').option('--noStackTrace', 'Disables stack trace in test results output.').option('--notify', 'Activates notifications for test results.').option('--onlyChanged', 'un based on which files have changed in the current repository. ').option('--outputFile <filename>', 'Write test results to a file when the --json option is also specified.').option('--passWithNoTests', 'Allows the test suite to pass when no files are found.').option('--quiet', 'No Lex notifications printed in the console.').option('--runInBand', 'Run all tests serially in the current process, rather than creating a worker pool of child processes that run tests.').option('--setup <path>', 'Jest setup file path.').option('--showConfig', 'Print your Jest config and then exits.').option('--silent', 'Prevent tests from printing messages through the console.').option('--testLocationInResults', 'Adds a location field to test results.').option('--testNamePattern <regex>', 'Run only tests with a name that matches the regex. ').option('--testPathPattern <regex>', 'A regexp pattern string that is matched against all tests paths before executing the test.').option('--typescript', 'Transpile as Typescript.').option('--update', 'Update snapshots. Runs "jest --updateSnapshots"').option('--useStderr', 'Divert all output to stderr.').option('--verbose', 'Display individual test results with the test suite hierarchy.').option('--watch <path>', 'Watch files for changes and rerun tests related to changed files.').option('--watchAll', 'Watch files for changes and rerun all tests when something changes.').action((files, options, cmd)=>test(options, cmd.args, files, process.exit).then(()=>{}));
81
+ program.command('test [files...]').option('--analyze', 'Use AI to analyze test coverage and suggest improvements.', false).option('--debugTests', 'Use AI to debug test failures and suggest fixes.', false).option('--generate', 'Use AI to generate test cases for untested code.', false).option('--bail', 'Exit the test suite immediately upon the first failing test suite.').option('--changedFilesWithAncestor', 'Runs tests related to the current changes and the changes made in the last commit.').option('--changedSince', 'Runs tests related the changes since the provided branch.').option('--ci', 'When this option is provided, Vitest will assume it is running in a CI environment.').option('--clearCache', 'Clear Vitest cache.').option('--collectCoverageFrom <glob>', 'A glob pattern relative to matching the files that coverage info needs to be collected from.').option('--colors', 'Forces test results output highlighting even if stdout is not a TTY.').option('--config <path>', 'Custom Vitest configuration file path (ie. vitest.config.mjs).').option('--debug', 'Print debugging info about your Vitest config.').option('--detectOpenHandles', 'Attempt to collect and print open handles preventing Vitest from exiting cleanly').option('--environment <n>', 'Target environment. "node" or "web". Default: "node".').option('--env', 'The test environment used for all tests. This can point to any file or node module. Examples: happy-dom, jsdom, node or path/to/my-environment.js.').option('--errorOnDeprecated', 'Make calling deprecated APIs throw helpful error messages.').option('--expand', 'Use this flag to show full diffs and errors instead of a patch.').option('--forceExit', 'Force Vitest to exit after all tests have completed running.').option('--json', 'Prints the test results in JSON.').option('--lastCommit', 'Run all tests affected by file changes in the last commit made.').option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--listTests', 'Lists all tests as JSON that Vitest will run given the arguments, and exits.').option('--logHeapUsage', 'Logs the heap usage after every test.').option('--maxWorkers <num>', 'Specifies the maximum number of workers the worker-pool will spawn for running tests. ').option('--noStackTrace', 'Disables stack trace in test results output.').option('--notify', 'Activates notifications for test results.').option('--onlyChanged', 'un based on which files have changed in the current repository. ').option('--outputFile <filename>', 'Write test results to a file when the --json option is also specified.').option('--passWithNoTests', 'Allows the test suite to pass when no files are found.').option('--quiet', 'No Lex notifications printed in the console.').option('--runInBand', 'Run all tests serially in the current process, rather than creating a worker pool of child processes that run tests.').option('--setup <path>', 'Vitest setup file path.').option('--showConfig', 'Print your Vitest config and then exits.').option('--silent', 'Prevent tests from printing messages through the console.').option('--testLocationInResults', 'Adds a location field to test results.').option('--testNamePattern <regex>', 'Run only tests with a name that matches the regex. ').option('--testPathPattern <regex>', 'A regexp pattern string that is matched against all tests paths before executing the test.').option('--typescript', 'Transpile as Typescript.').option('--update', 'Update snapshots. Runs "vitest --update"').option('--useStderr', 'Divert all output to stderr.').option('--verbose', 'Display individual test results with the test suite hierarchy.').option('--watch <path>', 'Watch files for changes and rerun tests related to changed files.').option('--watchAll', 'Watch files for changes and rerun all tests when something changes.').action((files, options, cmd)=>test(options, cmd.args, files, process.exit).then(()=>{}));
82
82
  program.command('update').option('--interactive', 'Choose which packages to update.').addOption(new Option('--package-manager <manager>', 'Which package manager to use. Default: npm').choices([
83
83
  'npm',
84
84
  'yarn'
@@ -97,4 +97,4 @@ program.command('ai').option('--context', 'Include project context in the AI pro
97
97
  program.command('versions').option('--json', 'Print the version as a JSON object.').action((cmd)=>versions(cmd, process.exit).then(()=>{}));
98
98
  program.version(packageJson.version).parse(process.argv);
99
99
 
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7T3B0aW9uLCBwcm9ncmFtfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7Y3JlYXRlUmVxdWlyZX0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCB7ZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi9jb21tYW5kcy9haS9haS5qcyc7XG5pbXBvcnQge2J1aWxkfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkL2J1aWxkLmpzJztcbmltcG9ydCB7Y2xlYW59IGZyb20gJy4vY29tbWFuZHMvY2xlYW4vY2xlYW4uanMnO1xuaW1wb3J0IHtjb21waWxlfSBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9jb21tYW5kcy9jb25maWcvY29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUuanMnO1xuaW1wb3J0IHtkZXZ9IGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5pbXBvcnQge2luaXR9IGZyb20gJy4vY29tbWFuZHMvaW5pdC9pbml0LmpzJztcbmltcG9ydCB7bGlua2VkfSBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5pbXBvcnQge2xpbnR9IGZyb20gJy4vY29tbWFuZHMvbGludC9saW50LmpzJztcbmltcG9ydCB7bWlncmF0ZX0gZnJvbSAnLi9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUuanMnO1xuaW1wb3J0IHtwdWJsaXNofSBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5pbXBvcnQge3NlcnZlcmxlc3N9IGZyb20gJy4vY29tbWFuZHMvc2VydmVybGVzcy9zZXJ2ZXJsZXNzLmpzJztcbmltcG9ydCB7c3Rvcnlib29rfSBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuaW1wb3J0IHt0ZXN0fSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QvdGVzdC5qcyc7XG5pbXBvcnQge3VwZGF0ZX0gZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmltcG9ydCB7dXBncmFkZX0gZnJvbSAnLi9jb21tYW5kcy91cGdyYWRlL3VwZ3JhZGUuanMnO1xuaW1wb3J0IHt2ZXJzaW9uc30gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbnByb2Nlc3MuZW52LkxFWF9ST09UID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBsZXhOb2RlTW9kdWxlcyA9IHJlc29sdmUoZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAnLi4vbm9kZV9tb2R1bGVzJyk7XG5pZighcHJvY2Vzcy5lbnYuTk9ERV9QQVRIKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfUEFUSCA9IGxleE5vZGVNb2R1bGVzO1xufSBlbHNlIGlmKCFwcm9jZXNzLmVudi5OT0RFX1BBVEguc3BsaXQoJzonKS5pbmNsdWRlcyhsZXhOb2RlTW9kdWxlcykpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9QQVRIICs9IGA6JHtsZXhOb2RlTW9kdWxlc31gO1xufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5yZXF1aXJlKCdtb2R1bGUnKS5Nb2R1bGUuX2luaXRQYXRocygpO1xuXG5jb25zdCBwYWNrYWdlUGF0aCA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxucHJvZ3JhbS5jb21tYW5kKCdidWlsZCcpXG4gIC5vcHRpb24oJy0tYXNzaXN0JywgJ0VuYWJsZSBBSSBhc3Npc3RhbmNlIGZvciBmaXhpbmcgYnVpbGQgZXJyb3JzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWFuYWx5emUnLCAnRW5hYmxlIEFJIGFuYWx5c2lzIGZvciBidWlsZCBvcHRpbWl6YXRpb24gc3VnZ2VzdGlvbnMgb3IgaW52b2tlIHdlYnBhY2stYnVuZGxlLWFuYWx5emVyIHBsdWdpbi4nLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bmRsZXIgPG4+JywgJ0J1bmRsZXIgdG8gdXNlIChcIndlYnBhY2tcIiBvciBcInN3Y1wiKS4gRGVmYXVsdDogXCJzd2NcIi4nKS5jaG9pY2VzKFsnd2VicGFjaycsICdzd2MnXSkuZGVmYXVsdCgnc3djJykpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gV2VicGFjayBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHdlYnBhY2suY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLWNvbmZpZ05hbWUgPHZhbHVlLi4uPicsICdOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZS4nKVxuICAub3B0aW9uKCctLWRlZmluZVByb2Nlc3NFbnZOb2RlRW52IDx2YWx1ZT4nLCAnU2V0cyBwcm9jZXNzLmVudi5OT0RFX0VOViB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLiAoQ3VycmVudGx5IGFuIGFsaWFzIGZvciBgLS1ub2RlLWVudmApJylcbiAgLm9wdGlvbignLS1kZXZ0b29sIDx2YWx1ZT4nLCAnQSBkZXZlbG9wZXIgdG9vbCB0byBlbmhhbmNlIGRlYnVnZ2luZyAoZmFsc2UgfCBldmFsIHwgW2lubGluZS18aGlkZGVuLXxldmFsLV1bbm9zb3VyY2VzLV1bY2hlYXAtW21vZHVsZS1dXXNvdXJjZS1tYXApLicpXG4gIC5vcHRpb24oJy0tZGlzYWJsZUludGVycHJldCcsICdEaXNhYmxlIGludGVycHJldCBmb3IgbG9hZGluZyB0aGUgY29uZmlnIGZpbGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW50cnkgPHZhbHVlLi4uPicsICdBIG1vZHVsZSB0aGF0IGlzIGxvYWRlZCB1cG9uIHN0YXJ0dXAuIE9ubHkgdGhlIGxhc3Qgb25lIGlzIGV4cG9ydGVkLicpXG4gIC5vcHRpb24oJy0tZW52IDx2YWx1ZT4nLCAnRW52aXJvbm1lbnQgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIHdoZW4gaXQgaXMgYSBmdW5jdGlvbi4nKVxuICAub3B0aW9uKCctLWZhaWxPbldhcm5pbmdzJywgJ1N0b3Agd2VicGFjay1jbGkgcHJvY2VzcyB3aXRoIG5vbi16ZXJvIGV4aXQgY29kZSBvbiB3YXJuaW5ncyBmcm9tIHdlYnBhY2snLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWpzb24gPHZhbHVlPicsICdQcmludHMgcmVzdWx0IGFzIEpTT04gb3Igc3RvcmUgaXQgaW4gYSBmaWxlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tbWVyZ2UnLCAnTWVyZ2UgdHdvIG9yIG1vcmUgY29uZmlndXJhdGlvbnMgdXNpbmcgXCJ3ZWJwYWNrLW1lcmdlXCIuJywgZmFsc2UpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1tb2RlIDx0eXBlPicsICdXZWJwYWNrIG1vZGUgKFwicHJvZHVjdGlvblwiIG9yIFwiZGV2ZWxvcG1lbnRcIikuIERlZmF1bHQ6IFwiZGV2ZWxvcG1lbnRcIi4nKS5jaG9pY2VzKFsnZGV2ZWxvcG1lbnQnLCAncHJvZHVjdGlvbiddKS5kZWZhdWx0KCdkZXZlbG9wbWVudCcpKVxuICAub3B0aW9uKCctLW5hbWUgPHZhbHVlPicsICdOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLiBVc2VkIHdoZW4gbG9hZGluZyBtdWx0aXBsZSBjb25maWd1cmF0aW9ucy4nKVxuICAub3B0aW9uKCctLW5vRGV2dG9vbCcsICdOZWdhdGl2ZSBcImRldnRvb2xcIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9TdGF0cycsICdOZWdhdGl2ZSBcInN0YXRzXCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vVGFyZ2V0JywgJ05lZ2F0aXZlIFwidGFyZ2V0XCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vV2F0Y2gnLCAnTmVnYXRpdmUgXCJ3YXRjaFwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1dhdGNoT3B0aW9uc1N0ZGluJywgJ05lZ2F0aXZlIFwid2F0Y2gtb3B0aW9ucy1zdGRpblwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub2RlRW52IDx2YWx1ZT4nLCAnU2V0cyBwcm9jZXNzLmVudi5OT0RFX0VOViB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLicpXG4gIC5vcHRpb24oJy0tb3V0cHV0UGF0aCA8dmFsdWU+JywgJ1RoZSBvdXRwdXQgZGlyZWN0b3J5IGFzICoqYWJzb2x1dGUgcGF0aCoqIChyZXF1aXJlZCkuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXN0YXRzIDx2YWx1ZT4nLCAnU3RhdHMgb3B0aW9ucyBvYmplY3Qgb3IgcHJlc2V0IG5hbWUuJylcbiAgLm9wdGlvbignLS1zdGF0aWMnLCAnQ3JlYXRlcyBzdGF0aWMgSFRNTCBmaWxlcyB3aGVuIGJ1aWxkaW5nIGFwcC4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10YXJnZXQgPHZhbHVlPicsICdFbnZpcm9ubWVudCB0byBidWlsZCBmb3IuIEVudmlyb25tZW50IHRvIGJ1aWxkIGZvci4gQW4gYXJyYXkgb2YgZW52aXJvbm1lbnRzIHRvIGJ1aWxkIGZvciBhbGwgb2YgdGhlbSB3aGVuIHBvc3NpYmxlLicpXG4gIC5vcHRpb24oJy0tdHJhbnNsYXRpb25zJywgJ1Byb2Nlc3MgdHJhbnNsYXRpb24gZmlsZXMgYW5kIG91dHB1dCBmbGF0dGVuZWQgSlNPTi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicsIGZhbHNlKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7Tk9ERV9FTlY6IFxcJ3Byb2R1Y3Rpb25cXCd9XCIpLicpXG4gIC5vcHRpb24oJy0td2F0Y2gnLCAnV2F0Y2ggZm9yIGNoYW5nZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0td2F0Y2hPcHRpb25zU3RkaW4nLCAnU3RvcCB3YXRjaGluZyB3aGVuIHN0ZGluIHN0cmVhbSBoYXMgZW5kZWQuJywgZmFsc2UpXG4gIC5hY3Rpb24oKGNtZCkgPT4gYnVpbGQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjbGVhbicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXNuYXBzaG90cycsICdSZW1vdmUgYWxsIFwiX19zbmFwc2hvdHNfX1wiIGRpcmVjdG9yaWVzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gY2xlYW4oY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjb25maWcgPHR5cGU+JylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tanNvbiA8cGF0aD4nLCAnU2F2ZSBvdXRwdXQgdG8ganNvbiBmaWxlLicpXG4gIC5hY3Rpb24oKHR5cGUsIGNtZCkgPT4gY29uZmlnKHR5cGUsIGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY29tcGlsZScpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdUcmFuc3BpbGVyIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gdHNjb25maWcuanNvbikuJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8bj4nLCAnVGFyZ2V0IGVudmlyb25tZW50LiBcIm5vZGVcIiBvciBcIndlYlwiLiBEZWZhdWx0OiBcIm5vZGVcIi4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDx2YWx1ZT4nLCAnVGhpcyBzZXRzIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgZ2VuZXJhdGVkIEphdmFTY3JpcHQgZmlsZXMuIERlZmF1bHQ6IFwiZXNtXCIuJykuY2hvaWNlcyhbJ2NqcycsICdlc20nXSkuZGVmYXVsdCgnZXNtJykpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1vdXRwdXRQYXRoIDxwYXRoPicsICdPdXRwdXQgcGF0aCcpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIGNvbXBpbGluZy4nKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoZXMgZm9yIGNoYW5nZXMgYW5kIGNvbXBpbGVzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gY29tcGlsZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2NyZWF0ZSA8dHlwZT4nKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPHBhdGg+JywgJ091dHB1dCBmaWxlbmFtZS4nKVxuICAub3B0aW9uKCctLW91dHB1dE5hbWUgPG4+JywgJ091dHB1dCBuYW1lLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnQ3JlYXRlIFR5cGVzY3JpcHQgdmVyc2lvbi4nKVxuICAuYWN0aW9uKCh0eXBlLCBjbWQpID0+IGNyZWF0ZSh0eXBlLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2RldicpXG4gIC5vcHRpb24oJy0tYnVuZGxlQW5hbHl6ZXInLCAnUnVuIGJ1bmRsZSBhbmFseXplci4nKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFdlYnBhY2sgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiB3ZWJwYWNrLmNvbmZpZy5qcykuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gZGV2IHNlcnZlciBpbiBhIG5ldyBicm93c2VyIHdpbmRvdy4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHBhdGg+JywgJ091dHB1dCBwYXRoJylcbiAgLm9wdGlvbignLS1wb3J0IDxudW1iZXI+JywgJ1BvcnQgbnVtYmVyIGZvciB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIChkZWZhdWx0OiAzMDAwKS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXRyYW5zbGF0aW9ucycsICdQcm9jZXNzIHRyYW5zbGF0aW9uIGZpbGVzIGFuZCBvdXRwdXQgZmxhdHRlbmVkIEpTT04uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nKVxuICAub3B0aW9uKCctLXVzZVB1YmxpY0lwJywgJ0ZvcmNlIHJlZnJlc2ggdGhlIGNhY2hlZCBwdWJsaWMgSVAgYWRkcmVzcy4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7Tk9ERV9FTlY6IFxcJ2RldmVsb3BtZW50XFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoIGZvciBjaGFuZ2VzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gZGV2KGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnaW5pdCA8YXBwTmFtZT4gW3BhY2thZ2VOYW1lXScpXG4gIC5vcHRpb24oJy0taW5zdGFsbCcsICdJbnN0YWxsIGRlcGVuZGVuY2llcy4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVXNlIGEgVHlwZXNjcmlwdCBiYXNlZCBhcHAuJylcbiAgLmFjdGlvbigoYXBwTmFtZSwgcGFja2FnZU5hbWUsIGNtZCkgPT4gaW5pdChhcHBOYW1lLCBwYWNrYWdlTmFtZSwgY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdsaW5rZWQnKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLmFjdGlvbigoY21kKSA9PiBsaW5rZWQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdsaW50JylcbiAgLm9wdGlvbignLS1jYWNoZScsICdPbmx5IGNoZWNrIGNoYW5nZWQgZmlsZXMuIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWNhY2hlTG9jYXRpb24gPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNhY2hlIGZpbGUgb3IgZGlyZWN0b3J5LicpXG4gIC5vcHRpb24oJy0tY29sb3InLCAnRm9yY2UgZW5hYmxpbmcgb2YgY29sb3IuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdVc2UgdGhpcyBjb25maWd1cmF0aW9uLCBvdmVycmlkaW5nIC5lc2xpbnRyYy4qIGNvbmZpZyBvcHRpb25zIGlmIHByZXNlbnQuIElmIG5vdCBzcGVjaWZpZWQgYW5kIG5vIGxvY2FsIGNvbmZpZyBleGlzdHMsIExleCB3aWxsIHVzZSBpdHMgZGVmYXVsdCBjb25maWcuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdPdXRwdXQgZGVidWdnaW5nIGluZm9ybWF0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudkluZm8nLCAnT3V0cHV0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW52IDxuPicsICdTcGVjaWZ5IGVudmlyb25tZW50cy4nKVxuICAub3B0aW9uKCctLWZpeCcsICdBcHBseSBBSSBmaXhlcyBhZnRlciBidWlsdC1pbiBFU0xpbnQgZml4ZXMgKHNhbWUgYXMgLS1maXgpLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWZpeERyeVJ1bicsICdBdXRvbWF0aWNhbGx5IGZpeCBwcm9ibGVtcyB3aXRob3V0IHNhdmluZyB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZSBzeXN0ZW0uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZml4VHlwZSA8dHlwZT4nLCAnU3BlY2lmeSB0aGUgdHlwZXMgb2YgZml4ZXMgdG8gYXBwbHkgKHByb2JsZW0sIHN1Z2dlc3Rpb24sIGxheW91dCkuJylcbiAgLm9wdGlvbignLS1mb3JtYXQgPG4+JywgJ1VzZSBhIHNwZWNpZmljIG91dHB1dCBmb3JtYXQuIERlZmF1bHQ6IHN0eWxpc2guJylcbiAgLm9wdGlvbignLS1nbG9iYWwgPHZhcmlhYmxlcz4nLCAnRGVmaW5lIGdsb2JhbCB2YXJpYWJsZXMuJylcbiAgLm9wdGlvbignLS1pZ25vcmVQYXRoIDxwYXRoPicsICdTcGVjaWZ5IHBhdGggb2YgaWdub3JlIGZpbGUuJylcbiAgLm9wdGlvbignLS1pZ25vcmVQYXR0ZXJuIDxwYXR0ZXJuPicsICdQYXR0ZXJuIG9mIGZpbGVzIHRvIGlnbm9yZSAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gLmVzbGludGlnbm9yZSkuJylcbiAgLm9wdGlvbignLS1pbml0JywgJ1J1biBjb25maWcgaW5pdGlhbGl6YXRpb24gd2l6YXJkLiBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1tYXhXYXJuaW5ncyA8bnVtPicsICdOdW1iZXIgb2Ygd2FybmluZ3MgdG8gdHJpZ2dlciBub256ZXJvIGV4aXQgY29kZS4gRGVmYXVsdDogLTEuJylcbiAgLm9wdGlvbignLS1ub0NvbG9yJywgJ0ZvcmNlIGRpc2FibGluZyBvZiBjb2xvci4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0VzbGludHJjJywgJ0Rpc2FibGUgdXNlIG9mIGNvbmZpZ3VyYXRpb24gZnJvbSAuZXNsaW50cmMuKi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0lnbm9yZScsICdEaXNhYmxlIHVzZSBvZiBpZ25vcmUgZmlsZXMgYW5kIHBhdHRlcm5zLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vSW5saW5lQ29uZmlnJywgJ1ByZXZlbnQgY29tbWVudHMgZnJvbSBjaGFuZ2luZyBjb25maWcgb3IgcnVsZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8cGF0aD4nLCAnU3BlY2lmeSBmaWxlIHRvIHdyaXRlIHJlcG9ydCB0by4nKVxuICAub3B0aW9uKCctLXBhcnNlciA8bj4nLCAnU3BlY2lmeSB0aGUgcGFyc2VyIHRvIGJlIHVzZWQuJylcbiAgLm9wdGlvbignLS1wYXJzZXJPcHRpb25zIDxvcHRpb25zPicsICdTcGVjaWZ5IHBhcnNlciBvcHRpb25zLicpXG4gIC5vcHRpb24oJy0tcGx1Z2luIDxwbHVnaW5zPicsICdTcGVjaWZ5IHBsdWdpbnMuJylcbiAgLm9wdGlvbignLS1wcmludENvbmZpZyA8cGF0aD4nLCAnUHJpbnQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBmaWxlLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZW1vdmUtY29tbWVudHMnLCAnUmVtb3ZlIGFsbCBjb21tZW50cyBleGNlcHQgVE9ET3MgYW5kIGNvcHlyaWdodCBub3RpY2VzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzJywgJ0FkZHMgcmVwb3J0ZWQgZXJyb3JzIGZvciB1bnVzZWQgZXNsaW50LWRpc2FibGUgZGlyZWN0aXZlcy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZXNvbHZlUGx1Z2luc1JlbGF0aXZlVG8gPHBhdGg+JywgJ0EgZm9sZGVyIHdoZXJlIHBsdWdpbnMgc2hvdWxkIGJlIHJlc29sdmVkIGZyb20uJylcbiAgLm9wdGlvbignLS1ydWxlIDxwYXRoPicsICdTcGVjaWZ5IHJ1bGVzLicpXG4gIC5vcHRpb24oJy0tcnVsZXNkaXIgPHBhdGg+JywgJ1VzZSBhZGRpdGlvbmFsIHJ1bGVzIGZyb20gdGhpcyBkaXJlY3RvcnkuJylcbiAgLm9wdGlvbignLS1zdGRpbicsICdMaW50IGNvZGUgcHJvdmlkZWQgb24gPFNURElOPiAtIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXN0ZGluRmlsZW5hbWUgPG4+JywgJ1NwZWNpZnkgZmlsZW5hbWUgdG8gcHJvY2VzcyBTVERJTiBhcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGxpbnQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdtaWdyYXRlJylcbiAgLm9wdGlvbignLXEsIC0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IG1pZ3JhdGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdwdWJsaXNoJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bXAgPHR5cGU+JywgJ0luY3JlbWVudHMgdGhlIHZlcnNpb24uIFR5cGVzIGluY2x1ZGU6IG1ham9yLCBtaW5vciwgcGF0Y2gsIGJldGEsIGFscGhhLCByYy4gRGVmYXVsdDogXCJwYXRjaFwiLicpLmNob2ljZXMoWydtYWpvcicsICdtaW5vcicsICdwYXRjaCcsICdiZXRhJywgJ2FscGhhJywgJ3JjJ10pLmRlZmF1bHQoJ3BhdGNoJykpXG4gIC5vcHRpb24oJy0tbmV3VmVyc2lvbiA8dmVyc2lvbk51bWJlcj4nLCAnUHVibGlzaCBhcyBhIHNwZWNpZmljIHZlcnNpb24uJylcbiAgLm9wdGlvbignLS1vdHAgPGNvZGU+JywgJ1Byb3ZpZGUgYSB0d28tZmFjdG9yIGNvZGUuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXByaXZhdGUnLCAnUHVibGlzaGVzIHRoZSBtb2R1bGUgYXMgcmVzdHJpY3RlZC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10YWcgPHRhZz4nLCAnUmVnaXN0ZXJzIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB3aXRoIHRoZSBnaXZlbiB0YWcuJylcbiAgLmFjdGlvbigoY21kKSA9PiBwdWJsaXNoKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnc2VydmVybGVzcycpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGRlZmF1bHQ6IGxleC5jb25maWcubWpzKS4nKVxuICAub3B0aW9uKCctLWhvc3QgPGhvc3Q+JywgJ0hvc3QgdG8gYmluZCB0aGUgc2VydmVyIHRvIChkZWZhdWx0OiBsb2NhbGhvc3QpLicpXG4gIC5vcHRpb24oJy0taHR0cFBvcnQgPHBvcnQ+JywgJ0hUVFAgc2VydmVyIHBvcnQgKGRlZmF1bHQ6IDMwMDApLicpXG4gIC5vcHRpb24oJy0taHR0cHNQb3J0IDxwb3J0PicsICdIVFRQUyBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMSkuJylcbiAgLm9wdGlvbignLS13c1BvcnQgPHBvcnQ+JywgJ1dlYlNvY2tldCBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMikuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHN0YXJ0aW5nLicpXG4gIC5vcHRpb24oJy0tdXNlUHVibGljSXAnLCAnRm9yY2UgcmVmcmVzaCB0aGUgY2FjaGVkIHB1YmxpYyBJUCBhZGRyZXNzLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxqc29uPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIHByb2Nlc3MuZW52LicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIEdyYXBoUUwgZGVidWcgbG9nZ2luZyB0byBzZWUgcXVlcmllcywgdmFyaWFibGVzLCBhbmQgb3BlcmF0aW9ucy4nKVxuICAub3B0aW9uKCctLXByaW50T3V0cHV0JywgJ1ByaW50IEdyYXBoUUwgcmVzcG9uc2Ugb3V0cHV0IGluY2x1ZGluZyBzdGF0dXMsIGhlYWRlcnMsIGFuZCBib2R5LicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gc2VydmVybGVzcyhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3N0b3J5Ym9vaycpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gU3Rvcnlib29rIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IHBhdGggKGllLiAuc3Rvcnlib29rKS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gU3Rvcnlib29rIGluIGEgbmV3IGJyb3dzZXIgd2luZG93LicpXG4gIC5vcHRpb24oJy0tcG9ydCA8bnVtYmVyPicsICdQb3J0IG51bWJlciBmb3IgdGhlIFN0b3J5Ym9vayBzZXJ2ZXIuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tc3RhdGljJywgJ0J1aWxkIGEgc3RhdGljIFN0b3J5Ym9vayBzaXRlIGluc3RlYWQgb2Ygc3RhcnRpbmcgZGV2IHNlcnZlci4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7U1RPUllCT09LX1RIRU1FOiBcXCdkYXJrXFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCB3ZWJwYWNrIHByb2dyZXNzIG91dHB1dC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHN0b3J5Ym9vayhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3Rlc3QgW2ZpbGVzLi4uXScpXG4gIC5vcHRpb24oJy0tYW5hbHl6ZScsICdVc2UgQUkgdG8gYW5hbHl6ZSB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0IGltcHJvdmVtZW50cy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1kZWJ1Z1Rlc3RzJywgJ1VzZSBBSSB0byBkZWJ1ZyB0ZXN0IGZhaWx1cmVzIGFuZCBzdWdnZXN0IGZpeGVzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWdlbmVyYXRlJywgJ1VzZSBBSSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciB1bnRlc3RlZCBjb2RlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWJhaWwnLCAnRXhpdCB0aGUgdGVzdCBzdWl0ZSBpbW1lZGlhdGVseSB1cG9uIHRoZSBmaXJzdCBmYWlsaW5nIHRlc3Qgc3VpdGUuJylcbiAgLm9wdGlvbignLS1jaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3InLCAnUnVucyB0ZXN0cyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGNoYW5nZXMgYW5kIHRoZSBjaGFuZ2VzIG1hZGUgaW4gdGhlIGxhc3QgY29tbWl0LicpXG4gIC5vcHRpb24oJy0tY2hhbmdlZFNpbmNlJywgJ1J1bnMgdGVzdHMgcmVsYXRlZCB0aGUgY2hhbmdlcyBzaW5jZSB0aGUgcHJvdmlkZWQgYnJhbmNoLicpXG4gIC5vcHRpb24oJy0tY2knLCAnV2hlbiB0aGlzIG9wdGlvbiBpcyBwcm92aWRlZCwgSmVzdCB3aWxsIGFzc3VtZSBpdCBpcyBydW5uaW5nIGluIGEgQ0kgZW52aXJvbm1lbnQuJylcbiAgLm9wdGlvbignLS1jbGVhckNhY2hlJywgJ0NsZWFyIEplc3QgY2FjaGUuJylcbiAgLm9wdGlvbignLS1jb2xsZWN0Q292ZXJhZ2VGcm9tIDxnbG9iPicsICdBIGdsb2IgcGF0dGVybiByZWxhdGl2ZSB0byBtYXRjaGluZyB0aGUgZmlsZXMgdGhhdCBjb3ZlcmFnZSBpbmZvIG5lZWRzIHRvIGJlIGNvbGxlY3RlZCBmcm9tLicpXG4gIC5vcHRpb24oJy0tY29sb3JzJywgJ0ZvcmNlcyB0ZXN0IHJlc3VsdHMgb3V0cHV0IGhpZ2hsaWdodGluZyBldmVuIGlmIHN0ZG91dCBpcyBub3QgYSBUVFkuJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBKZXN0IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gamVzdC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnUHJpbnQgZGVidWdnaW5nIGluZm8gYWJvdXQgeW91ciBKZXN0IGNvbmZpZy4nKVxuICAub3B0aW9uKCctLWRldGVjdE9wZW5IYW5kbGVzJywgJ0F0dGVtcHQgdG8gY29sbGVjdCBhbmQgcHJpbnQgb3BlbiBoYW5kbGVzIHByZXZlbnRpbmcgSmVzdCBmcm9tIGV4aXRpbmcgY2xlYW5seScpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQgPG4+JywgJ1RhcmdldCBlbnZpcm9ubWVudC4gXCJub2RlXCIgb3IgXCJ3ZWJcIi4gRGVmYXVsdDogXCJub2RlXCIuJylcbiAgLm9wdGlvbignLS1lbnYnLCAnVGhlIHRlc3QgZW52aXJvbm1lbnQgdXNlZCBmb3IgYWxsIHRlc3RzLiBUaGlzIGNhbiBwb2ludCB0byBhbnkgZmlsZSBvciBub2RlIG1vZHVsZS4gRXhhbXBsZXM6IGpzZG9tLCBub2RlIG9yIHBhdGgvdG8vbXktZW52aXJvbm1lbnQuanMuJylcbiAgLm9wdGlvbignLS1lcnJvck9uRGVwcmVjYXRlZCcsICdNYWtlIGNhbGxpbmcgZGVwcmVjYXRlZCBBUElzIHRocm93IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMuJylcbiAgLm9wdGlvbignLS1leHBhbmQnLCAnVXNlIHRoaXMgZmxhZyB0byBzaG93IGZ1bGwgZGlmZnMgYW5kIGVycm9ycyBpbnN0ZWFkIG9mIGEgcGF0Y2guJylcbiAgLm9wdGlvbignLS1mb3JjZUV4aXQnLCAnRm9yY2UgSmVzdCB0byBleGl0IGFmdGVyIGFsbCB0ZXN0cyBoYXZlIGNvbXBsZXRlZCBydW5uaW5nLicpXG4gIC5vcHRpb24oJy0tanNvbicsICdQcmludHMgdGhlIHRlc3QgcmVzdWx0cyBpbiBKU09OLicpXG4gIC5vcHRpb24oJy0tbGFzdENvbW1pdCcsICdSdW4gYWxsIHRlc3RzIGFmZmVjdGVkIGJ5IGZpbGUgY2hhbmdlcyBpbiB0aGUgbGFzdCBjb21taXQgbWFkZS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tbGlzdFRlc3RzJywgJ0xpc3RzIGFsbCB0ZXN0cyBhcyBKU09OIHRoYXQgSmVzdCB3aWxsIHJ1biBnaXZlbiB0aGUgYXJndW1lbnRzLCBhbmQgZXhpdHMuJylcbiAgLm9wdGlvbignLS1sb2dIZWFwVXNhZ2UnLCAnTG9ncyB0aGUgaGVhcCB1c2FnZSBhZnRlciBldmVyeSB0ZXN0LicpXG4gIC5vcHRpb24oJy0tbWF4V29ya2VycyA8bnVtPicsICdTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgdGhlIHdvcmtlci1wb29sIHdpbGwgc3Bhd24gZm9yIHJ1bm5pbmcgdGVzdHMuICcpXG4gIC5vcHRpb24oJy0tbm9TdGFja1RyYWNlJywgJ0Rpc2FibGVzIHN0YWNrIHRyYWNlIGluIHRlc3QgcmVzdWx0cyBvdXRwdXQuJylcbiAgLm9wdGlvbignLS1ub3RpZnknLCAnQWN0aXZhdGVzIG5vdGlmaWNhdGlvbnMgZm9yIHRlc3QgcmVzdWx0cy4nKVxuICAub3B0aW9uKCctLW9ubHlDaGFuZ2VkJywgJ3VuIGJhc2VkIG9uIHdoaWNoIGZpbGVzIGhhdmUgY2hhbmdlZCBpbiB0aGUgY3VycmVudCByZXBvc2l0b3J5LiAnKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPGZpbGVuYW1lPicsICdXcml0ZSB0ZXN0IHJlc3VsdHMgdG8gYSBmaWxlIHdoZW4gdGhlIC0tanNvbiBvcHRpb24gaXMgYWxzbyBzcGVjaWZpZWQuJylcbiAgLm9wdGlvbignLS1wYXNzV2l0aE5vVGVzdHMnLCAnQWxsb3dzIHRoZSB0ZXN0IHN1aXRlIHRvIHBhc3Mgd2hlbiBubyBmaWxlcyBhcmUgZm91bmQuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcnVuSW5CYW5kJywgJ1J1biBhbGwgdGVzdHMgc2VyaWFsbHkgaW4gdGhlIGN1cnJlbnQgcHJvY2VzcywgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSB3b3JrZXIgcG9vbCBvZiBjaGlsZCBwcm9jZXNzZXMgdGhhdCBydW4gdGVzdHMuJylcbiAgLm9wdGlvbignLS1zZXR1cCA8cGF0aD4nLCAnSmVzdCBzZXR1cCBmaWxlIHBhdGguJylcbiAgLm9wdGlvbignLS1zaG93Q29uZmlnJywgJ1ByaW50IHlvdXIgSmVzdCBjb25maWcgYW5kIHRoZW4gZXhpdHMuJylcbiAgLm9wdGlvbignLS1zaWxlbnQnLCAnUHJldmVudCB0ZXN0cyBmcm9tIHByaW50aW5nIG1lc3NhZ2VzIHRocm91Z2ggdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10ZXN0TG9jYXRpb25JblJlc3VsdHMnLCAnQWRkcyBhIGxvY2F0aW9uIGZpZWxkIHRvIHRlc3QgcmVzdWx0cy4nKVxuICAub3B0aW9uKCctLXRlc3ROYW1lUGF0dGVybiA8cmVnZXg+JywgJ1J1biBvbmx5IHRlc3RzIHdpdGggYSBuYW1lIHRoYXQgbWF0Y2hlcyB0aGUgcmVnZXguICcpXG4gIC5vcHRpb24oJy0tdGVzdFBhdGhQYXR0ZXJuIDxyZWdleD4nLCAnQSByZWdleHAgcGF0dGVybiBzdHJpbmcgdGhhdCBpcyBtYXRjaGVkIGFnYWluc3QgYWxsIHRlc3RzIHBhdGhzIGJlZm9yZSBleGVjdXRpbmcgdGhlIHRlc3QuJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tdXBkYXRlJywgJ1VwZGF0ZSBzbmFwc2hvdHMuIFJ1bnMgXCJqZXN0IC0tdXBkYXRlU25hcHNob3RzXCInKVxuICAub3B0aW9uKCctLXVzZVN0ZGVycicsICdEaXZlcnQgYWxsIG91dHB1dCB0byBzdGRlcnIuJylcbiAgLm9wdGlvbignLS12ZXJib3NlJywgJ0Rpc3BsYXkgaW5kaXZpZHVhbCB0ZXN0IHJlc3VsdHMgd2l0aCB0aGUgdGVzdCBzdWl0ZSBoaWVyYXJjaHkuJylcbiAgLm9wdGlvbignLS13YXRjaCA8cGF0aD4nLCAnV2F0Y2ggZmlsZXMgZm9yIGNoYW5nZXMgYW5kIHJlcnVuIHRlc3RzIHJlbGF0ZWQgdG8gY2hhbmdlZCBmaWxlcy4nKVxuICAub3B0aW9uKCctLXdhdGNoQWxsJywgJ1dhdGNoIGZpbGVzIGZvciBjaGFuZ2VzIGFuZCByZXJ1biBhbGwgdGVzdHMgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy4nKVxuICAuYWN0aW9uKChmaWxlcywgb3B0aW9ucywgY21kKSA9PiB0ZXN0KG9wdGlvbnMsIGNtZC5hcmdzLCBmaWxlcywgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndXBkYXRlJylcbiAgLm9wdGlvbignLS1pbnRlcmFjdGl2ZScsICdDaG9vc2Ugd2hpY2ggcGFja2FnZXMgdG8gdXBkYXRlLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVnaXN0cnknLCAnQWRkIGEgY3VzdG9tIHJlZ2lzdHJ5IHVybC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHVwZGF0ZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3VwZ3JhZGUnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IHVwZ3JhZGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdhaScpXG4gIC5vcHRpb24oJy0tY29udGV4dCcsICdJbmNsdWRlIHByb2plY3QgY29udGV4dCBpbiB0aGUgQUkgcHJvbXB0LicsIHRydWUpXG4gIC5vcHRpb24oJy0tZmlsZSA8cGF0aD4nLCAnU3BlY2lmaWMgZmlsZSB0byBvcGVyYXRlIG9uLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1tb2RlbCA8bW9kZWw+JywgJ0FJIG1vZGVsIHRvIHVzZS4gRGVmYXVsdDogZ3B0LTRvLicpXG4gIC5vcHRpb24oJy0tcHJvbXB0IDx0ZXh0PicsICdUaGUgcHJvbXB0IHRvIHNlbmQgdG8gdGhlIEFJLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdGFzayA8dGFzaz4nLCAnVHlwZSBvZiBBSSB0YXNrIHRvIHBlcmZvcm0uJykuY2hvaWNlcyhbJ2dlbmVyYXRlJywgJ2V4cGxhaW4nLCAndGVzdCcsICdvcHRpbWl6ZScsICdoZWxwJ10pLmRlZmF1bHQoJ2hlbHAnKSlcbiAgLmFjdGlvbigoY21kKSA9PiBhaUZ1bmN0aW9uKGNtZCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3ZlcnNpb25zJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50IHRoZSB2ZXJzaW9uIGFzIGEgSlNPTiBvYmplY3QuJylcbiAgLmFjdGlvbigoY21kKSA9PiB2ZXJzaW9ucyhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtXG4gIC52ZXJzaW9uKHBhY2thZ2VKc29uLnZlcnNpb24pXG4gIC5wYXJzZShwcm9jZXNzLmFyZ3YpOyJdLCJuYW1lcyI6WyJPcHRpb24iLCJwcm9ncmFtIiwicmVhZEZpbGVTeW5jIiwiY3JlYXRlUmVxdWlyZSIsImRpcm5hbWUiLCJyZXNvbHZlIiwiZmlsZVVSTFRvUGF0aCIsImFpRnVuY3Rpb24iLCJidWlsZCIsImNsZWFuIiwiY29tcGlsZSIsImNvbmZpZyIsImNyZWF0ZSIsImRldiIsImluaXQiLCJsaW5rZWQiLCJsaW50IiwibWlncmF0ZSIsInB1Ymxpc2giLCJzZXJ2ZXJsZXNzIiwic3Rvcnlib29rIiwidGVzdCIsInVwZGF0ZSIsInVwZ3JhZGUiLCJ2ZXJzaW9ucyIsInByb2Nlc3MiLCJlbnYiLCJMRVhfUk9PVCIsInVybCIsImxleE5vZGVNb2R1bGVzIiwiTk9ERV9QQVRIIiwic3BsaXQiLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJNb2R1bGUiLCJfaW5pdFBhdGhzIiwicGFja2FnZVBhdGgiLCJVUkwiLCJwYWNrYWdlSnNvbiIsIkpTT04iLCJwYXJzZSIsImNvbW1hbmQiLCJvcHRpb24iLCJhZGRPcHRpb24iLCJjaG9pY2VzIiwiZGVmYXVsdCIsImFjdGlvbiIsImNtZCIsImV4aXQiLCJ0aGVuIiwidHlwZSIsImFwcE5hbWUiLCJwYWNrYWdlTmFtZSIsImZpbGVzIiwib3B0aW9ucyIsImFyZ3MiLCJ2ZXJzaW9uIiwiYXJndiJdLCJtYXBwaW5ncyI6IjtBQUNBOzs7Q0FHQyxHQUNELFNBQVFBLE1BQU0sRUFBRUMsT0FBTyxRQUFPLFlBQVk7QUFDMUMsU0FBUUMsWUFBWSxRQUFPLEtBQUs7QUFDaEMsU0FBUUMsYUFBYSxRQUFPLFNBQVM7QUFDckMsU0FBUUMsT0FBTyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUN0QyxTQUFRQyxhQUFhLFFBQU8sTUFBTTtBQUVsQyxTQUFRQyxVQUFVLFFBQU8sc0JBQXNCO0FBQy9DLFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFDaEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxPQUFPLFFBQU8sZ0NBQWdDO0FBQ3RELFNBQVFDLE1BQU0sUUFBTyw4QkFBOEI7QUFDbkQsU0FBUUMsTUFBTSxRQUFPLDhCQUE4QjtBQUNuRCxTQUFRQyxHQUFHLFFBQU8sd0JBQXdCO0FBQzFDLFNBQVFDLElBQUksUUFBTywwQkFBMEI7QUFDN0MsU0FBUUMsTUFBTSxRQUFPLDBCQUEwQjtBQUMvQyxTQUFRQyxJQUFJLFFBQU8sMEJBQTBCO0FBQzdDLFNBQVFDLE9BQU8sUUFBTyxnQ0FBZ0M7QUFDdEQsU0FBUUMsT0FBTyxRQUFPLGdDQUFnQztBQUN0RCxTQUFRQyxVQUFVLFFBQU8sc0NBQXNDO0FBQy9ELFNBQVFDLFNBQVMsUUFBTyxvQ0FBb0M7QUFDNUQsU0FBUUMsSUFBSSxRQUFPLDBCQUEwQjtBQUM3QyxTQUFRQyxNQUFNLFFBQU8sOEJBQThCO0FBQ25ELFNBQVFDLE9BQU8sUUFBTyxnQ0FBZ0M7QUFDdEQsU0FBUUMsUUFBUSxRQUFPLGtDQUFrQztBQUV6REMsUUFBUUMsR0FBRyxDQUFDQyxRQUFRLEdBQUd2QixRQUFRRSxjQUFjLFlBQVlzQixHQUFHO0FBRTVELE1BQU1DLGlCQUFpQnhCLFFBQVFELFFBQVFFLGNBQWMsWUFBWXNCLEdBQUcsSUFBSTtBQUN4RSxJQUFHLENBQUNILFFBQVFDLEdBQUcsQ0FBQ0ksU0FBUyxFQUFFO0lBQ3pCTCxRQUFRQyxHQUFHLENBQUNJLFNBQVMsR0FBR0Q7QUFDMUIsT0FBTyxJQUFHLENBQUNKLFFBQVFDLEdBQUcsQ0FBQ0ksU0FBUyxDQUFDQyxLQUFLLENBQUMsS0FBS0MsUUFBUSxDQUFDSCxpQkFBaUI7SUFDcEVKLFFBQVFDLEdBQUcsQ0FBQ0ksU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFRCxnQkFBZ0I7QUFDL0M7QUFFQSxNQUFNSSxVQUFVOUIsY0FBYyxZQUFZeUIsR0FBRztBQUM3QyxnREFBZ0Q7QUFDaERLLFFBQVEsVUFBVUMsTUFBTSxDQUFDQyxVQUFVO0FBRW5DLE1BQU1DLGNBQWM5QixjQUFjLElBQUkrQixJQUFJLG1CQUFtQixZQUFZVCxHQUFHO0FBQzVFLE1BQU1VLGNBQWNDLEtBQUtDLEtBQUssQ0FBQ3RDLGFBQWFrQyxhQUFhO0FBRXpEbkMsUUFBUXdDLE9BQU8sQ0FBQyxTQUNiQyxNQUFNLENBQUMsWUFBWSxpREFBaUQsT0FDcEVBLE1BQU0sQ0FBQyxhQUFhLG1HQUFtRyxPQUN2SEMsU0FBUyxDQUFDLElBQUkzQyxPQUFPLGlCQUFpQix3REFBd0Q0QyxPQUFPLENBQUM7SUFBQztJQUFXO0NBQU0sRUFBRUMsT0FBTyxDQUFDLFFBQ2xJSCxNQUFNLENBQUMsbUJBQW1CLG1FQUMxQkEsTUFBTSxDQUFDLDJCQUEyQixxQ0FDbENBLE1BQU0sQ0FBQyxxQ0FBcUMsMkZBQzVDQSxNQUFNLENBQUMscUJBQXFCLDBIQUM1QkEsTUFBTSxDQUFDLHNCQUFzQixrREFBa0QsT0FDL0VBLE1BQU0sQ0FBQyxzQkFBc0Isd0VBQzdCQSxNQUFNLENBQUMsaUJBQWlCLGtFQUN4QkEsTUFBTSxDQUFDLG9CQUFvQiw2RUFBNkUsT0FDeEdDLFNBQVMsQ0FBQyxJQUFJM0MsT0FBTyxvQkFBb0IsbUZBQW1GNEMsT0FBTyxDQUFDO0lBQUM7SUFBTztDQUFNLEVBQUVDLE9BQU8sQ0FBQyxRQUM1SkgsTUFBTSxDQUFDLGtCQUFrQixnREFDekJBLE1BQU0sQ0FBQyxzQkFBc0IsZ0RBQzdCQSxNQUFNLENBQUMsV0FBVywyREFBMkQsT0FDN0VDLFNBQVMsQ0FBQyxJQUFJM0MsT0FBTyxpQkFBaUIseUVBQXlFNEMsT0FBTyxDQUFDO0lBQUM7SUFBZTtDQUFhLEVBQUVDLE9BQU8sQ0FBQyxnQkFDOUpILE1BQU0sQ0FBQyxrQkFBa0IseUVBQ3pCQSxNQUFNLENBQUMsZUFBZSw4QkFBOEIsT0FDcERBLE1BQU0sQ0FBQyxhQUFhLDRCQUE0QixPQUNoREEsTUFBTSxDQUFDLGNBQWMsNkJBQTZCLE9BQ2xEQSxNQUFNLENBQUMsYUFBYSw0QkFBNEIsT0FDaERBLE1BQU0sQ0FBQyx5QkFBeUIsMENBQTBDLE9BQzFFQSxNQUFNLENBQUMscUJBQXFCLHFEQUM1QkEsTUFBTSxDQUFDLHdCQUF3Qix5REFDL0JBLE1BQU0sQ0FBQyxXQUFXLGdEQUFnRCxPQUNsRUEsTUFBTSxDQUFDLFlBQVksaUVBQWlFLE9BQ3BGQSxNQUFNLENBQUMsdUJBQXVCLGVBQzlCQSxNQUFNLENBQUMsbUJBQW1CLHdDQUMxQkEsTUFBTSxDQUFDLFlBQVksZ0RBQWdELE9BQ25FQSxNQUFNLENBQUMsb0JBQW9CLHdIQUMzQkEsTUFBTSxDQUFDLGtCQUFrQix3REFBd0QsT0FDakZBLE1BQU0sQ0FBQyxnQkFBZ0IsNEJBQTRCLE9BQ25EQSxNQUFNLENBQUMsbUJBQW1CLHNGQUMxQkEsTUFBTSxDQUFDLFdBQVcsc0JBQXNCLE9BQ3hDQSxNQUFNLENBQUMsdUJBQXVCLDhDQUE4QyxPQUM1RUksTUFBTSxDQUFDLENBQUNDLE1BQVF2QyxNQUFNdUMsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRXhEaEQsUUFBUXdDLE9BQU8sQ0FBQyxTQUNiQyxNQUFNLENBQUMsV0FBVyxnREFDbEJBLE1BQU0sQ0FBQyxlQUFlLDJDQUN0QkksTUFBTSxDQUFDLENBQUNDLE1BQVF0QyxNQUFNc0MsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRXhEaEQsUUFBUXdDLE9BQU8sQ0FBQyxpQkFDYkMsTUFBTSxDQUFDLFdBQVcsZ0RBQ2xCQSxNQUFNLENBQUMsaUJBQWlCLDZCQUN4QkksTUFBTSxDQUFDLENBQUNJLE1BQU1ILE1BQVFwQyxPQUFPdUMsTUFBTUgsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRXJFaEQsUUFBUXdDLE9BQU8sQ0FBQyxXQUNiQyxNQUFNLENBQUMsbUJBQW1CLDJEQUMxQkEsTUFBTSxDQUFDLHFCQUFxQix5REFDNUJDLFNBQVMsQ0FBQyxJQUFJM0MsT0FBTyxvQkFBb0IsbUZBQW1GNEMsT0FBTyxDQUFDO0lBQUM7SUFBTztDQUFNLEVBQUVDLE9BQU8sQ0FBQyxRQUM1SkgsTUFBTSxDQUFDLHNCQUFzQiwyREFDN0JBLE1BQU0sQ0FBQyx1QkFBdUIsZUFDOUJBLE1BQU0sQ0FBQyxZQUFZLGlFQUNuQkEsTUFBTSxDQUFDLHVCQUF1QixlQUM5QkEsTUFBTSxDQUFDLGdCQUFnQiw0QkFDdkJBLE1BQU0sQ0FBQyxXQUFXLGdEQUNsQkEsTUFBTSxDQUFDLFdBQVcscUNBQ2xCSSxNQUFNLENBQUMsQ0FBQ0MsTUFBUXJDLFFBQVFxQyxLQUFLdEIsUUFBUXVCLElBQUksRUFBRUMsSUFBSSxDQUFDLEtBQU87QUFFMURoRCxRQUFRd0MsT0FBTyxDQUFDLGlCQUNiQyxNQUFNLENBQUMsdUJBQXVCLG9CQUM5QkEsTUFBTSxDQUFDLG9CQUFvQixnQkFDM0JBLE1BQU0sQ0FBQyxXQUFXLGdEQUNsQkEsTUFBTSxDQUFDLGdCQUFnQiw4QkFDdkJJLE1BQU0sQ0FBQyxDQUFDSSxNQUFNSCxNQUFRbkMsT0FBT3NDLE1BQU1ILEtBQUt0QixRQUFRdUIsSUFBSSxFQUFFQyxJQUFJLENBQUMsS0FBTztBQUVyRWhELFFBQVF3QyxPQUFPLENBQUMsT0FDYkMsTUFBTSxDQUFDLG9CQUFvQix3QkFDM0JBLE1BQU0sQ0FBQyxtQkFBbUIsbUVBQzFCQyxTQUFTLENBQUMsSUFBSTNDLE9BQU8sb0JBQW9CLG1GQUFtRjRDLE9BQU8sQ0FBQztJQUFDO0lBQU87Q0FBTSxFQUFFQyxPQUFPLENBQUMsUUFDNUpILE1BQU0sQ0FBQyxzQkFBc0IsMkRBQzdCQSxNQUFNLENBQUMsVUFBVSwwREFDakJBLE1BQU0sQ0FBQyx1QkFBdUIsZUFDOUJBLE1BQU0sQ0FBQyxtQkFBbUIsMkRBQzFCQSxNQUFNLENBQUMsV0FBVyxnREFDbEJBLE1BQU0sQ0FBQyxZQUFZLGlFQUNuQkEsTUFBTSxDQUFDLHVCQUF1QixlQUM5QkEsTUFBTSxDQUFDLGtCQUFrQix3REFBd0QsT0FDakZBLE1BQU0sQ0FBQyxnQkFBZ0IsNEJBQ3ZCQSxNQUFNLENBQUMsaUJBQWlCLCtDQUN4QkEsTUFBTSxDQUFDLG1CQUFtQix1RkFDMUJBLE1BQU0sQ0FBQyxXQUFXLHNCQUNsQkksTUFBTSxDQUFDLENBQUNDLE1BQVFsQyxJQUFJa0MsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRXREaEQsUUFBUXdDLE9BQU8sQ0FBQyxnQ0FDYkMsTUFBTSxDQUFDLGFBQWEseUJBQ3BCQyxTQUFTLENBQUMsSUFBSTNDLE9BQU8sK0JBQStCLDhDQUE4QzRDLE9BQU8sQ0FBQztJQUFDO0lBQU87Q0FBTyxFQUFFQyxPQUFPLENBQUMsUUFDbklILE1BQU0sQ0FBQyxXQUFXLGdEQUNsQkEsTUFBTSxDQUFDLGdCQUFnQiwrQkFDdkJJLE1BQU0sQ0FBQyxDQUFDSyxTQUFTQyxhQUFhTCxNQUFRakMsS0FBS3FDLFNBQVNDLGFBQWFMLEtBQUt0QixRQUFRdUIsSUFBSSxFQUFFQyxJQUFJLENBQUMsS0FBTztBQUVuR2hELFFBQVF3QyxPQUFPLENBQUMsVUFDYkMsTUFBTSxDQUFDLFdBQVcsZ0RBQ2xCSSxNQUFNLENBQUMsQ0FBQ0MsTUFBUWhDLE9BQU9nQyxLQUFLdEIsUUFBUXVCLElBQUksRUFBRUMsSUFBSSxDQUFDLEtBQU87QUFFekRoRCxRQUFRd0MsT0FBTyxDQUFDLFFBQ2JDLE1BQU0sQ0FBQyxXQUFXLDZDQUE2QyxPQUMvREEsTUFBTSxDQUFDLDBCQUEwQix3Q0FDakNBLE1BQU0sQ0FBQyxXQUFXLDRCQUE0QixPQUM5Q0EsTUFBTSxDQUFDLG1CQUFtQiwySkFDMUJBLE1BQU0sQ0FBQyxXQUFXLGlDQUFpQyxPQUNuREEsTUFBTSxDQUFDLGFBQWEsNkRBQTZELE9BQ2pGQSxNQUFNLENBQUMsYUFBYSx5QkFDcEJBLE1BQU0sQ0FBQyxTQUFTLCtEQUErRCxPQUMvRUEsTUFBTSxDQUFDLGVBQWUsNkVBQTZFLE9BQ25HQSxNQUFNLENBQUMsb0JBQW9CLHNFQUMzQkEsTUFBTSxDQUFDLGdCQUFnQixtREFDdkJBLE1BQU0sQ0FBQyx3QkFBd0IsNEJBQy9CQSxNQUFNLENBQUMsdUJBQXVCLGdDQUM5QkEsTUFBTSxDQUFDLDZCQUE2Qix1RUFDcENBLE1BQU0sQ0FBQyxVQUFVLHFEQUFxRCxPQUN0RUEsTUFBTSxDQUFDLHVCQUF1QixpRUFDOUJBLE1BQU0sQ0FBQyxhQUFhLDZCQUE2QixPQUNqREEsTUFBTSxDQUFDLGdCQUFnQixrREFBa0QsT0FDekVBLE1BQU0sQ0FBQyxjQUFjLDZDQUE2QyxPQUNsRUEsTUFBTSxDQUFDLG9CQUFvQixtREFBbUQsT0FDOUVBLE1BQU0sQ0FBQyx1QkFBdUIsb0NBQzlCQSxNQUFNLENBQUMsZ0JBQWdCLGtDQUN2QkEsTUFBTSxDQUFDLDZCQUE2QiwyQkFDcENBLE1BQU0sQ0FBQyxzQkFBc0Isb0JBQzdCQSxNQUFNLENBQUMsd0JBQXdCLCtDQUMvQkEsTUFBTSxDQUFDLFdBQVcsZ0RBQWdELE9BQ2xFQSxNQUFNLENBQUMscUJBQXFCLDJEQUEyRCxPQUN2RkEsTUFBTSxDQUFDLG1DQUFtQyw4REFBOEQsT0FDeEdBLE1BQU0sQ0FBQyxxQ0FBcUMsbURBQzVDQSxNQUFNLENBQUMsaUJBQWlCLGtCQUN4QkEsTUFBTSxDQUFDLHFCQUFxQiw2Q0FDNUJBLE1BQU0sQ0FBQyxXQUFXLG1EQUFtRCxPQUNyRUEsTUFBTSxDQUFDLHVCQUF1Qix5Q0FDOUJJLE1BQU0sQ0FBQyxDQUFDQyxNQUFRL0IsS0FBSytCLEtBQUt0QixRQUFRdUIsSUFBSSxFQUFFQyxJQUFJLENBQUMsS0FBTztBQUV2RGhELFFBQVF3QyxPQUFPLENBQUMsV0FDYkMsTUFBTSxDQUFDLGVBQWUsZ0RBQ3RCSSxNQUFNLENBQUMsQ0FBQ0MsTUFBUTlCLFFBQVE4QixLQUFLdEIsUUFBUXVCLElBQUksRUFBRUMsSUFBSSxDQUFDLEtBQU87QUFFMURoRCxRQUFRd0MsT0FBTyxDQUFDLFdBQ2JFLFNBQVMsQ0FBQyxJQUFJM0MsT0FBTyxpQkFBaUIsa0dBQWtHNEMsT0FBTyxDQUFDO0lBQUM7SUFBUztJQUFTO0lBQVM7SUFBUTtJQUFTO0NBQUssRUFBRUMsT0FBTyxDQUFDLFVBQzVNSCxNQUFNLENBQUMsZ0NBQWdDLGtDQUN2Q0EsTUFBTSxDQUFDLGdCQUFnQiw4QkFDdkJDLFNBQVMsQ0FBQyxJQUFJM0MsT0FBTywrQkFBK0IsOENBQThDNEMsT0FBTyxDQUFDO0lBQUM7SUFBTztDQUFPLEVBQUVDLE9BQU8sQ0FBQyxRQUNuSUgsTUFBTSxDQUFDLGFBQWEsdUNBQ3BCQSxNQUFNLENBQUMsV0FBVyxnREFDbEJBLE1BQU0sQ0FBQyxlQUFlLHVEQUN0QkksTUFBTSxDQUFDLENBQUNDLE1BQVE3QixRQUFRNkIsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRTFEaEQsUUFBUXdDLE9BQU8sQ0FBQyxjQUNiQyxNQUFNLENBQUMsbUJBQW1CLDZEQUMxQkEsTUFBTSxDQUFDLGlCQUFpQixvREFDeEJBLE1BQU0sQ0FBQyxxQkFBcUIscUNBQzVCQSxNQUFNLENBQUMsc0JBQXNCLHNDQUM3QkEsTUFBTSxDQUFDLG1CQUFtQiwwQ0FDMUJBLE1BQU0sQ0FBQyxXQUFXLGdEQUNsQkEsTUFBTSxDQUFDLFlBQVksZ0VBQ25CQSxNQUFNLENBQUMsaUJBQWlCLCtDQUN4QkEsTUFBTSxDQUFDLHNCQUFzQixnREFDN0JBLE1BQU0sQ0FBQyxXQUFXLDJFQUNsQkEsTUFBTSxDQUFDLGlCQUFpQixzRUFDeEJJLE1BQU0sQ0FBQyxDQUFDQyxNQUFRNUIsV0FBVzRCLEtBQUt0QixRQUFRdUIsSUFBSSxFQUFFQyxJQUFJLENBQUMsS0FBTztBQUU3RGhELFFBQVF3QyxPQUFPLENBQUMsYUFDYkMsTUFBTSxDQUFDLG1CQUFtQixtRUFDMUJBLE1BQU0sQ0FBQyxzQkFBc0IsMkRBQzdCQSxNQUFNLENBQUMsVUFBVSx5REFDakJBLE1BQU0sQ0FBQyxtQkFBbUIseUNBQzFCQSxNQUFNLENBQUMsV0FBVyxnREFDbEJBLE1BQU0sQ0FBQyxZQUFZLGlFQUNuQkEsTUFBTSxDQUFDLG1CQUFtQix1RkFDMUJBLE1BQU0sQ0FBQyxhQUFhLDBDQUNwQkksTUFBTSxDQUFDLENBQUNDLE1BQVEzQixVQUFVMkIsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRTVEaEQsUUFBUXdDLE9BQU8sQ0FBQyxtQkFDYkMsTUFBTSxDQUFDLGFBQWEsNkRBQTZELE9BQ2pGQSxNQUFNLENBQUMsZ0JBQWdCLG9EQUFvRCxPQUMzRUEsTUFBTSxDQUFDLGNBQWMsb0RBQW9ELE9BQ3pFQSxNQUFNLENBQUMsVUFBVSxzRUFDakJBLE1BQU0sQ0FBQyw4QkFBOEIsc0ZBQ3JDQSxNQUFNLENBQUMsa0JBQWtCLDZEQUN6QkEsTUFBTSxDQUFDLFFBQVEscUZBQ2ZBLE1BQU0sQ0FBQyxnQkFBZ0IscUJBQ3ZCQSxNQUFNLENBQUMsZ0NBQWdDLGdHQUN2Q0EsTUFBTSxDQUFDLFlBQVksd0VBQ25CQSxNQUFNLENBQUMsbUJBQW1CLDZEQUMxQkEsTUFBTSxDQUFDLFdBQVcsZ0RBQ2xCQSxNQUFNLENBQUMsdUJBQXVCLGtGQUM5QkEsTUFBTSxDQUFDLHFCQUFxQix5REFDNUJBLE1BQU0sQ0FBQyxTQUFTLDJJQUNoQkEsTUFBTSxDQUFDLHVCQUF1Qiw4REFDOUJBLE1BQU0sQ0FBQyxZQUFZLG1FQUNuQkEsTUFBTSxDQUFDLGVBQWUsOERBQ3RCQSxNQUFNLENBQUMsVUFBVSxvQ0FDakJBLE1BQU0sQ0FBQyxnQkFBZ0IsbUVBQ3ZCQSxNQUFNLENBQUMsc0JBQXNCLDJEQUM3QkEsTUFBTSxDQUFDLGVBQWUsOEVBQ3RCQSxNQUFNLENBQUMsa0JBQWtCLHlDQUN6QkEsTUFBTSxDQUFDLHNCQUFzQiwwRkFDN0JBLE1BQU0sQ0FBQyxrQkFBa0IsZ0RBQ3pCQSxNQUFNLENBQUMsWUFBWSw2Q0FDbkJBLE1BQU0sQ0FBQyxpQkFBaUIsb0VBQ3hCQSxNQUFNLENBQUMsMkJBQTJCLDBFQUNsQ0EsTUFBTSxDQUFDLHFCQUFxQiwwREFDNUJBLE1BQU0sQ0FBQyxXQUFXLGdEQUNsQkEsTUFBTSxDQUFDLGVBQWUsd0hBQ3RCQSxNQUFNLENBQUMsa0JBQWtCLHlCQUN6QkEsTUFBTSxDQUFDLGdCQUFnQiwwQ0FDdkJBLE1BQU0sQ0FBQyxZQUFZLDZEQUNuQkEsTUFBTSxDQUFDLDJCQUEyQiwwQ0FDbENBLE1BQU0sQ0FBQyw2QkFBNkIsdURBQ3BDQSxNQUFNLENBQUMsNkJBQTZCLDhGQUNwQ0EsTUFBTSxDQUFDLGdCQUFnQiw0QkFDdkJBLE1BQU0sQ0FBQyxZQUFZLG1EQUNuQkEsTUFBTSxDQUFDLGVBQWUsZ0NBQ3RCQSxNQUFNLENBQUMsYUFBYSxrRUFDcEJBLE1BQU0sQ0FBQyxrQkFBa0IscUVBQ3pCQSxNQUFNLENBQUMsY0FBYyx1RUFDckJJLE1BQU0sQ0FBQyxDQUFDTyxPQUFPQyxTQUFTUCxNQUFRMUIsS0FBS2lDLFNBQVNQLElBQUlRLElBQUksRUFBRUYsT0FBTzVCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRTVGaEQsUUFBUXdDLE9BQU8sQ0FBQyxVQUNiQyxNQUFNLENBQUMsaUJBQWlCLG9DQUN4QkMsU0FBUyxDQUFDLElBQUkzQyxPQUFPLCtCQUErQiw4Q0FBOEM0QyxPQUFPLENBQUM7SUFBQztJQUFPO0NBQU8sRUFBRUMsT0FBTyxDQUFDLFFBQ25JSCxNQUFNLENBQUMsV0FBVyxnREFDbEJBLE1BQU0sQ0FBQyxjQUFjLDhCQUNyQkksTUFBTSxDQUFDLENBQUNDLE1BQVF6QixPQUFPeUIsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRXpEaEQsUUFBUXdDLE9BQU8sQ0FBQyxXQUNiRSxTQUFTLENBQUMsSUFBSTNDLE9BQU8sK0JBQStCLDhDQUE4QzRDLE9BQU8sQ0FBQztJQUFDO0lBQU87Q0FBTyxFQUFFQyxPQUFPLENBQUMsUUFDbklILE1BQU0sQ0FBQyxXQUFXLGdEQUNsQkksTUFBTSxDQUFDLENBQUNDLE1BQVF4QixRQUFRd0IsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRTFEaEQsUUFBUXdDLE9BQU8sQ0FBQyxNQUNiQyxNQUFNLENBQUMsYUFBYSw2Q0FBNkMsTUFDakVBLE1BQU0sQ0FBQyxpQkFBaUIsZ0NBQ3hCQSxNQUFNLENBQUMsc0JBQXNCLDJEQUM3QkEsTUFBTSxDQUFDLG1CQUFtQixxQ0FDMUJBLE1BQU0sQ0FBQyxtQkFBbUIsaUNBQzFCQSxNQUFNLENBQUMsV0FBVyxnREFDbEJDLFNBQVMsQ0FBQyxJQUFJM0MsT0FBTyxpQkFBaUIsK0JBQStCNEMsT0FBTyxDQUFDO0lBQUM7SUFBWTtJQUFXO0lBQVE7SUFBWTtDQUFPLEVBQUVDLE9BQU8sQ0FBQyxTQUMxSUMsTUFBTSxDQUFDLENBQUNDLE1BQVF4QyxXQUFXd0MsS0FBS0UsSUFBSSxDQUFDLEtBQU87QUFFL0NoRCxRQUFRd0MsT0FBTyxDQUFDLFlBQ2JDLE1BQU0sQ0FBQyxVQUFVLHVDQUNqQkksTUFBTSxDQUFDLENBQUNDLE1BQVF2QixTQUFTdUIsS0FBS3RCLFFBQVF1QixJQUFJLEVBQUVDLElBQUksQ0FBQyxLQUFPO0FBRTNEaEQsUUFDR3VELE9BQU8sQ0FBQ2xCLFlBQVlrQixPQUFPLEVBQzNCaEIsS0FBSyxDQUFDZixRQUFRZ0MsSUFBSSJ9
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7T3B0aW9uLCBwcm9ncmFtfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7Y3JlYXRlUmVxdWlyZX0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCB7ZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi9jb21tYW5kcy9haS9haS5qcyc7XG5pbXBvcnQge2J1aWxkfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkL2J1aWxkLmpzJztcbmltcG9ydCB7Y2xlYW59IGZyb20gJy4vY29tbWFuZHMvY2xlYW4vY2xlYW4uanMnO1xuaW1wb3J0IHtjb21waWxlfSBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9jb21tYW5kcy9jb25maWcvY29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUuanMnO1xuaW1wb3J0IHtkZXZ9IGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5pbXBvcnQge2luaXR9IGZyb20gJy4vY29tbWFuZHMvaW5pdC9pbml0LmpzJztcbmltcG9ydCB7bGlua2VkfSBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5pbXBvcnQge2xpbnR9IGZyb20gJy4vY29tbWFuZHMvbGludC9saW50LmpzJztcbmltcG9ydCB7bWlncmF0ZX0gZnJvbSAnLi9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUuanMnO1xuaW1wb3J0IHtwdWJsaXNofSBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5pbXBvcnQge3NlcnZlcmxlc3N9IGZyb20gJy4vY29tbWFuZHMvc2VydmVybGVzcy9zZXJ2ZXJsZXNzLmpzJztcbmltcG9ydCB7c3Rvcnlib29rfSBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuaW1wb3J0IHt0ZXN0fSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QvdGVzdC5qcyc7XG5pbXBvcnQge3VwZGF0ZX0gZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmltcG9ydCB7dXBncmFkZX0gZnJvbSAnLi9jb21tYW5kcy91cGdyYWRlL3VwZ3JhZGUuanMnO1xuaW1wb3J0IHt2ZXJzaW9uc30gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbnByb2Nlc3MuZW52LkxFWF9ST09UID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBsZXhOb2RlTW9kdWxlcyA9IHJlc29sdmUoZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAnLi4vbm9kZV9tb2R1bGVzJyk7XG5pZighcHJvY2Vzcy5lbnYuTk9ERV9QQVRIKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfUEFUSCA9IGxleE5vZGVNb2R1bGVzO1xufSBlbHNlIGlmKCFwcm9jZXNzLmVudi5OT0RFX1BBVEguc3BsaXQoJzonKS5pbmNsdWRlcyhsZXhOb2RlTW9kdWxlcykpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9QQVRIICs9IGA6JHtsZXhOb2RlTW9kdWxlc31gO1xufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5yZXF1aXJlKCdtb2R1bGUnKS5Nb2R1bGUuX2luaXRQYXRocygpO1xuXG5jb25zdCBwYWNrYWdlUGF0aCA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxucHJvZ3JhbS5jb21tYW5kKCdidWlsZCcpXG4gIC5vcHRpb24oJy0tYXNzaXN0JywgJ0VuYWJsZSBBSSBhc3Npc3RhbmNlIGZvciBmaXhpbmcgYnVpbGQgZXJyb3JzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWFuYWx5emUnLCAnRW5hYmxlIEFJIGFuYWx5c2lzIGZvciBidWlsZCBvcHRpbWl6YXRpb24gc3VnZ2VzdGlvbnMgb3IgaW52b2tlIHdlYnBhY2stYnVuZGxlLWFuYWx5emVyIHBsdWdpbi4nLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bmRsZXIgPG4+JywgJ0J1bmRsZXIgdG8gdXNlIChcIndlYnBhY2tcIiBvciBcInN3Y1wiKS4gRGVmYXVsdDogXCJzd2NcIi4nKS5jaG9pY2VzKFsnd2VicGFjaycsICdzd2MnXSkuZGVmYXVsdCgnc3djJykpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gV2VicGFjayBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHdlYnBhY2suY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLWNvbmZpZ05hbWUgPHZhbHVlLi4uPicsICdOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZS4nKVxuICAub3B0aW9uKCctLWRlZmluZVByb2Nlc3NFbnZOb2RlRW52IDx2YWx1ZT4nLCAnU2V0cyBwcm9jZXNzLmVudi5OT0RFX0VOViB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLiAoQ3VycmVudGx5IGFuIGFsaWFzIGZvciBgLS1ub2RlLWVudmApJylcbiAgLm9wdGlvbignLS1kZXZ0b29sIDx2YWx1ZT4nLCAnQSBkZXZlbG9wZXIgdG9vbCB0byBlbmhhbmNlIGRlYnVnZ2luZyAoZmFsc2UgfCBldmFsIHwgW2lubGluZS18aGlkZGVuLXxldmFsLV1bbm9zb3VyY2VzLV1bY2hlYXAtW21vZHVsZS1dXXNvdXJjZS1tYXApLicpXG4gIC5vcHRpb24oJy0tZGlzYWJsZUludGVycHJldCcsICdEaXNhYmxlIGludGVycHJldCBmb3IgbG9hZGluZyB0aGUgY29uZmlnIGZpbGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW50cnkgPHZhbHVlLi4uPicsICdBIG1vZHVsZSB0aGF0IGlzIGxvYWRlZCB1cG9uIHN0YXJ0dXAuIE9ubHkgdGhlIGxhc3Qgb25lIGlzIGV4cG9ydGVkLicpXG4gIC5vcHRpb24oJy0tZW52IDx2YWx1ZT4nLCAnRW52aXJvbm1lbnQgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIHdoZW4gaXQgaXMgYSBmdW5jdGlvbi4nKVxuICAub3B0aW9uKCctLWZhaWxPbldhcm5pbmdzJywgJ1N0b3Agd2VicGFjay1jbGkgcHJvY2VzcyB3aXRoIG5vbi16ZXJvIGV4aXQgY29kZSBvbiB3YXJuaW5ncyBmcm9tIHdlYnBhY2snLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWpzb24gPHZhbHVlPicsICdQcmludHMgcmVzdWx0IGFzIEpTT04gb3Igc3RvcmUgaXQgaW4gYSBmaWxlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tbWVyZ2UnLCAnTWVyZ2UgdHdvIG9yIG1vcmUgY29uZmlndXJhdGlvbnMgdXNpbmcgXCJ3ZWJwYWNrLW1lcmdlXCIuJywgZmFsc2UpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1tb2RlIDx0eXBlPicsICdXZWJwYWNrIG1vZGUgKFwicHJvZHVjdGlvblwiIG9yIFwiZGV2ZWxvcG1lbnRcIikuIERlZmF1bHQ6IFwiZGV2ZWxvcG1lbnRcIi4nKS5jaG9pY2VzKFsnZGV2ZWxvcG1lbnQnLCAncHJvZHVjdGlvbiddKS5kZWZhdWx0KCdkZXZlbG9wbWVudCcpKVxuICAub3B0aW9uKCctLW5hbWUgPHZhbHVlPicsICdOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLiBVc2VkIHdoZW4gbG9hZGluZyBtdWx0aXBsZSBjb25maWd1cmF0aW9ucy4nKVxuICAub3B0aW9uKCctLW5vRGV2dG9vbCcsICdOZWdhdGl2ZSBcImRldnRvb2xcIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9TdGF0cycsICdOZWdhdGl2ZSBcInN0YXRzXCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vVGFyZ2V0JywgJ05lZ2F0aXZlIFwidGFyZ2V0XCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vV2F0Y2gnLCAnTmVnYXRpdmUgXCJ3YXRjaFwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1dhdGNoT3B0aW9uc1N0ZGluJywgJ05lZ2F0aXZlIFwid2F0Y2gtb3B0aW9ucy1zdGRpblwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub2RlRW52IDx2YWx1ZT4nLCAnU2V0cyBwcm9jZXNzLmVudi5OT0RFX0VOViB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLicpXG4gIC5vcHRpb24oJy0tb3V0cHV0UGF0aCA8dmFsdWU+JywgJ1RoZSBvdXRwdXQgZGlyZWN0b3J5IGFzICoqYWJzb2x1dGUgcGF0aCoqIChyZXF1aXJlZCkuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXN0YXRzIDx2YWx1ZT4nLCAnU3RhdHMgb3B0aW9ucyBvYmplY3Qgb3IgcHJlc2V0IG5hbWUuJylcbiAgLm9wdGlvbignLS1zdGF0aWMnLCAnQ3JlYXRlcyBzdGF0aWMgSFRNTCBmaWxlcyB3aGVuIGJ1aWxkaW5nIGFwcC4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10YXJnZXQgPHZhbHVlPicsICdFbnZpcm9ubWVudCB0byBidWlsZCBmb3IuIEVudmlyb25tZW50IHRvIGJ1aWxkIGZvci4gQW4gYXJyYXkgb2YgZW52aXJvbm1lbnRzIHRvIGJ1aWxkIGZvciBhbGwgb2YgdGhlbSB3aGVuIHBvc3NpYmxlLicpXG4gIC5vcHRpb24oJy0tdHJhbnNsYXRpb25zJywgJ1Byb2Nlc3MgdHJhbnNsYXRpb24gZmlsZXMgYW5kIG91dHB1dCBmbGF0dGVuZWQgSlNPTi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicsIGZhbHNlKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7Tk9ERV9FTlY6IFxcJ3Byb2R1Y3Rpb25cXCd9XCIpLicpXG4gIC5vcHRpb24oJy0td2F0Y2gnLCAnV2F0Y2ggZm9yIGNoYW5nZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0td2F0Y2hPcHRpb25zU3RkaW4nLCAnU3RvcCB3YXRjaGluZyB3aGVuIHN0ZGluIHN0cmVhbSBoYXMgZW5kZWQuJywgZmFsc2UpXG4gIC5hY3Rpb24oKGNtZCkgPT4gYnVpbGQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjbGVhbicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXNuYXBzaG90cycsICdSZW1vdmUgYWxsIFwiX19zbmFwc2hvdHNfX1wiIGRpcmVjdG9yaWVzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gY2xlYW4oY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjb25maWcgPHR5cGU+JylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tanNvbiA8cGF0aD4nLCAnU2F2ZSBvdXRwdXQgdG8ganNvbiBmaWxlLicpXG4gIC5hY3Rpb24oKHR5cGUsIGNtZCkgPT4gY29uZmlnKHR5cGUsIGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY29tcGlsZScpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdUcmFuc3BpbGVyIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gdHNjb25maWcuanNvbikuJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8bj4nLCAnVGFyZ2V0IGVudmlyb25tZW50LiBcIm5vZGVcIiBvciBcIndlYlwiLiBEZWZhdWx0OiBcIm5vZGVcIi4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDx2YWx1ZT4nLCAnVGhpcyBzZXRzIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgZ2VuZXJhdGVkIEphdmFTY3JpcHQgZmlsZXMuIERlZmF1bHQ6IFwiZXNtXCIuJykuY2hvaWNlcyhbJ2NqcycsICdlc20nXSkuZGVmYXVsdCgnZXNtJykpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1vdXRwdXRQYXRoIDxwYXRoPicsICdPdXRwdXQgcGF0aCcpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIGNvbXBpbGluZy4nKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoZXMgZm9yIGNoYW5nZXMgYW5kIGNvbXBpbGVzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gY29tcGlsZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2NyZWF0ZSA8dHlwZT4nKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPHBhdGg+JywgJ091dHB1dCBmaWxlbmFtZS4nKVxuICAub3B0aW9uKCctLW91dHB1dE5hbWUgPG4+JywgJ091dHB1dCBuYW1lLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnQ3JlYXRlIFR5cGVzY3JpcHQgdmVyc2lvbi4nKVxuICAuYWN0aW9uKCh0eXBlLCBjbWQpID0+IGNyZWF0ZSh0eXBlLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2RldicpXG4gIC5vcHRpb24oJy0tYnVuZGxlQW5hbHl6ZXInLCAnUnVuIGJ1bmRsZSBhbmFseXplci4nKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFdlYnBhY2sgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiB3ZWJwYWNrLmNvbmZpZy5qcykuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gZGV2IHNlcnZlciBpbiBhIG5ldyBicm93c2VyIHdpbmRvdy4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHBhdGg+JywgJ091dHB1dCBwYXRoJylcbiAgLm9wdGlvbignLS1wb3J0IDxudW1iZXI+JywgJ1BvcnQgbnVtYmVyIGZvciB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIChkZWZhdWx0OiAzMDAwKS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXRyYW5zbGF0aW9ucycsICdQcm9jZXNzIHRyYW5zbGF0aW9uIGZpbGVzIGFuZCBvdXRwdXQgZmxhdHRlbmVkIEpTT04uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nKVxuICAub3B0aW9uKCctLXVzZVB1YmxpY0lwJywgJ0ZvcmNlIHJlZnJlc2ggdGhlIGNhY2hlZCBwdWJsaWMgSVAgYWRkcmVzcy4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7Tk9ERV9FTlY6IFxcJ2RldmVsb3BtZW50XFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoIGZvciBjaGFuZ2VzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gZGV2KGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnaW5pdCA8YXBwTmFtZT4gW3BhY2thZ2VOYW1lXScpXG4gIC5vcHRpb24oJy0taW5zdGFsbCcsICdJbnN0YWxsIGRlcGVuZGVuY2llcy4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVXNlIGEgVHlwZXNjcmlwdCBiYXNlZCBhcHAuJylcbiAgLmFjdGlvbigoYXBwTmFtZSwgcGFja2FnZU5hbWUsIGNtZCkgPT4gaW5pdChhcHBOYW1lLCBwYWNrYWdlTmFtZSwgY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdsaW5rZWQnKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLmFjdGlvbigoY21kKSA9PiBsaW5rZWQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdsaW50JylcbiAgLm9wdGlvbignLS1jYWNoZScsICdPbmx5IGNoZWNrIGNoYW5nZWQgZmlsZXMuIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWNhY2hlTG9jYXRpb24gPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNhY2hlIGZpbGUgb3IgZGlyZWN0b3J5LicpXG4gIC5vcHRpb24oJy0tY29sb3InLCAnRm9yY2UgZW5hYmxpbmcgb2YgY29sb3IuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdVc2UgdGhpcyBjb25maWd1cmF0aW9uLCBvdmVycmlkaW5nIC5lc2xpbnRyYy4qIGNvbmZpZyBvcHRpb25zIGlmIHByZXNlbnQuIElmIG5vdCBzcGVjaWZpZWQgYW5kIG5vIGxvY2FsIGNvbmZpZyBleGlzdHMsIExleCB3aWxsIHVzZSBpdHMgZGVmYXVsdCBjb25maWcuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdPdXRwdXQgZGVidWdnaW5nIGluZm9ybWF0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudkluZm8nLCAnT3V0cHV0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW52IDxuPicsICdTcGVjaWZ5IGVudmlyb25tZW50cy4nKVxuICAub3B0aW9uKCctLWZpeCcsICdBcHBseSBBSSBmaXhlcyBhZnRlciBidWlsdC1pbiBFU0xpbnQgZml4ZXMgKHNhbWUgYXMgLS1maXgpLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWZpeERyeVJ1bicsICdBdXRvbWF0aWNhbGx5IGZpeCBwcm9ibGVtcyB3aXRob3V0IHNhdmluZyB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZSBzeXN0ZW0uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZml4VHlwZSA8dHlwZT4nLCAnU3BlY2lmeSB0aGUgdHlwZXMgb2YgZml4ZXMgdG8gYXBwbHkgKHByb2JsZW0sIHN1Z2dlc3Rpb24sIGxheW91dCkuJylcbiAgLm9wdGlvbignLS1mb3JtYXQgPG4+JywgJ1VzZSBhIHNwZWNpZmljIG91dHB1dCBmb3JtYXQuIERlZmF1bHQ6IHN0eWxpc2guJylcbiAgLm9wdGlvbignLS1nbG9iYWwgPHZhcmlhYmxlcz4nLCAnRGVmaW5lIGdsb2JhbCB2YXJpYWJsZXMuJylcbiAgLm9wdGlvbignLS1pZ25vcmVQYXRoIDxwYXRoPicsICdTcGVjaWZ5IHBhdGggb2YgaWdub3JlIGZpbGUuJylcbiAgLm9wdGlvbignLS1pZ25vcmVQYXR0ZXJuIDxwYXR0ZXJuPicsICdQYXR0ZXJuIG9mIGZpbGVzIHRvIGlnbm9yZSAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gLmVzbGludGlnbm9yZSkuJylcbiAgLm9wdGlvbignLS1pbml0JywgJ1J1biBjb25maWcgaW5pdGlhbGl6YXRpb24gd2l6YXJkLiBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1tYXhXYXJuaW5ncyA8bnVtPicsICdOdW1iZXIgb2Ygd2FybmluZ3MgdG8gdHJpZ2dlciBub256ZXJvIGV4aXQgY29kZS4gRGVmYXVsdDogLTEuJylcbiAgLm9wdGlvbignLS1ub0NvbG9yJywgJ0ZvcmNlIGRpc2FibGluZyBvZiBjb2xvci4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0VzbGludHJjJywgJ0Rpc2FibGUgdXNlIG9mIGNvbmZpZ3VyYXRpb24gZnJvbSAuZXNsaW50cmMuKi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0lnbm9yZScsICdEaXNhYmxlIHVzZSBvZiBpZ25vcmUgZmlsZXMgYW5kIHBhdHRlcm5zLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vSW5saW5lQ29uZmlnJywgJ1ByZXZlbnQgY29tbWVudHMgZnJvbSBjaGFuZ2luZyBjb25maWcgb3IgcnVsZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8cGF0aD4nLCAnU3BlY2lmeSBmaWxlIHRvIHdyaXRlIHJlcG9ydCB0by4nKVxuICAub3B0aW9uKCctLXBhcnNlciA8bj4nLCAnU3BlY2lmeSB0aGUgcGFyc2VyIHRvIGJlIHVzZWQuJylcbiAgLm9wdGlvbignLS1wYXJzZXJPcHRpb25zIDxvcHRpb25zPicsICdTcGVjaWZ5IHBhcnNlciBvcHRpb25zLicpXG4gIC5vcHRpb24oJy0tcGx1Z2luIDxwbHVnaW5zPicsICdTcGVjaWZ5IHBsdWdpbnMuJylcbiAgLm9wdGlvbignLS1wcmludENvbmZpZyA8cGF0aD4nLCAnUHJpbnQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBmaWxlLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZW1vdmUtY29tbWVudHMnLCAnUmVtb3ZlIGFsbCBjb21tZW50cyBleGNlcHQgVE9ET3MgYW5kIGNvcHlyaWdodCBub3RpY2VzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzJywgJ0FkZHMgcmVwb3J0ZWQgZXJyb3JzIGZvciB1bnVzZWQgZXNsaW50LWRpc2FibGUgZGlyZWN0aXZlcy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZXNvbHZlUGx1Z2luc1JlbGF0aXZlVG8gPHBhdGg+JywgJ0EgZm9sZGVyIHdoZXJlIHBsdWdpbnMgc2hvdWxkIGJlIHJlc29sdmVkIGZyb20uJylcbiAgLm9wdGlvbignLS1ydWxlIDxwYXRoPicsICdTcGVjaWZ5IHJ1bGVzLicpXG4gIC5vcHRpb24oJy0tcnVsZXNkaXIgPHBhdGg+JywgJ1VzZSBhZGRpdGlvbmFsIHJ1bGVzIGZyb20gdGhpcyBkaXJlY3RvcnkuJylcbiAgLm9wdGlvbignLS1zdGRpbicsICdMaW50IGNvZGUgcHJvdmlkZWQgb24gPFNURElOPiAtIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXN0ZGluRmlsZW5hbWUgPG4+JywgJ1NwZWNpZnkgZmlsZW5hbWUgdG8gcHJvY2VzcyBTVERJTiBhcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGxpbnQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdtaWdyYXRlJylcbiAgLm9wdGlvbignLXEsIC0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IG1pZ3JhdGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdwdWJsaXNoJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bXAgPHR5cGU+JywgJ0luY3JlbWVudHMgdGhlIHZlcnNpb24uIFR5cGVzIGluY2x1ZGU6IG1ham9yLCBtaW5vciwgcGF0Y2gsIGJldGEsIGFscGhhLCByYy4gRGVmYXVsdDogXCJwYXRjaFwiLicpLmNob2ljZXMoWydtYWpvcicsICdtaW5vcicsICdwYXRjaCcsICdiZXRhJywgJ2FscGhhJywgJ3JjJ10pLmRlZmF1bHQoJ3BhdGNoJykpXG4gIC5vcHRpb24oJy0tbmV3VmVyc2lvbiA8dmVyc2lvbk51bWJlcj4nLCAnUHVibGlzaCBhcyBhIHNwZWNpZmljIHZlcnNpb24uJylcbiAgLm9wdGlvbignLS1vdHAgPGNvZGU+JywgJ1Byb3ZpZGUgYSB0d28tZmFjdG9yIGNvZGUuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXByaXZhdGUnLCAnUHVibGlzaGVzIHRoZSBtb2R1bGUgYXMgcmVzdHJpY3RlZC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10YWcgPHRhZz4nLCAnUmVnaXN0ZXJzIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB3aXRoIHRoZSBnaXZlbiB0YWcuJylcbiAgLmFjdGlvbigoY21kKSA9PiBwdWJsaXNoKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnc2VydmVybGVzcycpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGRlZmF1bHQ6IGxleC5jb25maWcubWpzKS4nKVxuICAub3B0aW9uKCctLWhvc3QgPGhvc3Q+JywgJ0hvc3QgdG8gYmluZCB0aGUgc2VydmVyIHRvIChkZWZhdWx0OiBsb2NhbGhvc3QpLicpXG4gIC5vcHRpb24oJy0taHR0cFBvcnQgPHBvcnQ+JywgJ0hUVFAgc2VydmVyIHBvcnQgKGRlZmF1bHQ6IDMwMDApLicpXG4gIC5vcHRpb24oJy0taHR0cHNQb3J0IDxwb3J0PicsICdIVFRQUyBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMSkuJylcbiAgLm9wdGlvbignLS13c1BvcnQgPHBvcnQ+JywgJ1dlYlNvY2tldCBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMikuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHN0YXJ0aW5nLicpXG4gIC5vcHRpb24oJy0tdXNlUHVibGljSXAnLCAnRm9yY2UgcmVmcmVzaCB0aGUgY2FjaGVkIHB1YmxpYyBJUCBhZGRyZXNzLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxqc29uPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIHByb2Nlc3MuZW52LicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIEdyYXBoUUwgZGVidWcgbG9nZ2luZyB0byBzZWUgcXVlcmllcywgdmFyaWFibGVzLCBhbmQgb3BlcmF0aW9ucy4nKVxuICAub3B0aW9uKCctLXByaW50T3V0cHV0JywgJ1ByaW50IEdyYXBoUUwgcmVzcG9uc2Ugb3V0cHV0IGluY2x1ZGluZyBzdGF0dXMsIGhlYWRlcnMsIGFuZCBib2R5LicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gc2VydmVybGVzcyhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3N0b3J5Ym9vaycpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gU3Rvcnlib29rIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IHBhdGggKGllLiAuc3Rvcnlib29rKS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gU3Rvcnlib29rIGluIGEgbmV3IGJyb3dzZXIgd2luZG93LicpXG4gIC5vcHRpb24oJy0tcG9ydCA8bnVtYmVyPicsICdQb3J0IG51bWJlciBmb3IgdGhlIFN0b3J5Ym9vayBzZXJ2ZXIuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tc3RhdGljJywgJ0J1aWxkIGEgc3RhdGljIFN0b3J5Ym9vayBzaXRlIGluc3RlYWQgb2Ygc3RhcnRpbmcgZGV2IHNlcnZlci4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7U1RPUllCT09LX1RIRU1FOiBcXCdkYXJrXFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCB3ZWJwYWNrIHByb2dyZXNzIG91dHB1dC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHN0b3J5Ym9vayhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3Rlc3QgW2ZpbGVzLi4uXScpXG4gIC5vcHRpb24oJy0tYW5hbHl6ZScsICdVc2UgQUkgdG8gYW5hbHl6ZSB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0IGltcHJvdmVtZW50cy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1kZWJ1Z1Rlc3RzJywgJ1VzZSBBSSB0byBkZWJ1ZyB0ZXN0IGZhaWx1cmVzIGFuZCBzdWdnZXN0IGZpeGVzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWdlbmVyYXRlJywgJ1VzZSBBSSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciB1bnRlc3RlZCBjb2RlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWJhaWwnLCAnRXhpdCB0aGUgdGVzdCBzdWl0ZSBpbW1lZGlhdGVseSB1cG9uIHRoZSBmaXJzdCBmYWlsaW5nIHRlc3Qgc3VpdGUuJylcbiAgLm9wdGlvbignLS1jaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3InLCAnUnVucyB0ZXN0cyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGNoYW5nZXMgYW5kIHRoZSBjaGFuZ2VzIG1hZGUgaW4gdGhlIGxhc3QgY29tbWl0LicpXG4gIC5vcHRpb24oJy0tY2hhbmdlZFNpbmNlJywgJ1J1bnMgdGVzdHMgcmVsYXRlZCB0aGUgY2hhbmdlcyBzaW5jZSB0aGUgcHJvdmlkZWQgYnJhbmNoLicpXG4gIC5vcHRpb24oJy0tY2knLCAnV2hlbiB0aGlzIG9wdGlvbiBpcyBwcm92aWRlZCwgVml0ZXN0IHdpbGwgYXNzdW1lIGl0IGlzIHJ1bm5pbmcgaW4gYSBDSSBlbnZpcm9ubWVudC4nKVxuICAub3B0aW9uKCctLWNsZWFyQ2FjaGUnLCAnQ2xlYXIgVml0ZXN0IGNhY2hlLicpXG4gIC5vcHRpb24oJy0tY29sbGVjdENvdmVyYWdlRnJvbSA8Z2xvYj4nLCAnQSBnbG9iIHBhdHRlcm4gcmVsYXRpdmUgdG8gbWF0Y2hpbmcgdGhlIGZpbGVzIHRoYXQgY292ZXJhZ2UgaW5mbyBuZWVkcyB0byBiZSBjb2xsZWN0ZWQgZnJvbS4nKVxuICAub3B0aW9uKCctLWNvbG9ycycsICdGb3JjZXMgdGVzdCByZXN1bHRzIG91dHB1dCBoaWdobGlnaHRpbmcgZXZlbiBpZiBzdGRvdXQgaXMgbm90IGEgVFRZLicpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gVml0ZXN0IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gdml0ZXN0LmNvbmZpZy5tanMpLicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnUHJpbnQgZGVidWdnaW5nIGluZm8gYWJvdXQgeW91ciBWaXRlc3QgY29uZmlnLicpXG4gIC5vcHRpb24oJy0tZGV0ZWN0T3BlbkhhbmRsZXMnLCAnQXR0ZW1wdCB0byBjb2xsZWN0IGFuZCBwcmludCBvcGVuIGhhbmRsZXMgcHJldmVudGluZyBWaXRlc3QgZnJvbSBleGl0aW5nIGNsZWFubHknKVxuICAub3B0aW9uKCctLWVudmlyb25tZW50IDxuPicsICdUYXJnZXQgZW52aXJvbm1lbnQuIFwibm9kZVwiIG9yIFwid2ViXCIuIERlZmF1bHQ6IFwibm9kZVwiLicpXG4gIC5vcHRpb24oJy0tZW52JywgJ1RoZSB0ZXN0IGVudmlyb25tZW50IHVzZWQgZm9yIGFsbCB0ZXN0cy4gVGhpcyBjYW4gcG9pbnQgdG8gYW55IGZpbGUgb3Igbm9kZSBtb2R1bGUuIEV4YW1wbGVzOiBoYXBweS1kb20sIGpzZG9tLCBub2RlIG9yIHBhdGgvdG8vbXktZW52aXJvbm1lbnQuanMuJylcbiAgLm9wdGlvbignLS1lcnJvck9uRGVwcmVjYXRlZCcsICdNYWtlIGNhbGxpbmcgZGVwcmVjYXRlZCBBUElzIHRocm93IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMuJylcbiAgLm9wdGlvbignLS1leHBhbmQnLCAnVXNlIHRoaXMgZmxhZyB0byBzaG93IGZ1bGwgZGlmZnMgYW5kIGVycm9ycyBpbnN0ZWFkIG9mIGEgcGF0Y2guJylcbiAgLm9wdGlvbignLS1mb3JjZUV4aXQnLCAnRm9yY2UgVml0ZXN0IHRvIGV4aXQgYWZ0ZXIgYWxsIHRlc3RzIGhhdmUgY29tcGxldGVkIHJ1bm5pbmcuJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50cyB0aGUgdGVzdCByZXN1bHRzIGluIEpTT04uJylcbiAgLm9wdGlvbignLS1sYXN0Q29tbWl0JywgJ1J1biBhbGwgdGVzdHMgYWZmZWN0ZWQgYnkgZmlsZSBjaGFuZ2VzIGluIHRoZSBsYXN0IGNvbW1pdCBtYWRlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1saXN0VGVzdHMnLCAnTGlzdHMgYWxsIHRlc3RzIGFzIEpTT04gdGhhdCBWaXRlc3Qgd2lsbCBydW4gZ2l2ZW4gdGhlIGFyZ3VtZW50cywgYW5kIGV4aXRzLicpXG4gIC5vcHRpb24oJy0tbG9nSGVhcFVzYWdlJywgJ0xvZ3MgdGhlIGhlYXAgdXNhZ2UgYWZ0ZXIgZXZlcnkgdGVzdC4nKVxuICAub3B0aW9uKCctLW1heFdvcmtlcnMgPG51bT4nLCAnU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB3b3JrZXJzIHRoZSB3b3JrZXItcG9vbCB3aWxsIHNwYXduIGZvciBydW5uaW5nIHRlc3RzLiAnKVxuICAub3B0aW9uKCctLW5vU3RhY2tUcmFjZScsICdEaXNhYmxlcyBzdGFjayB0cmFjZSBpbiB0ZXN0IHJlc3VsdHMgb3V0cHV0LicpXG4gIC5vcHRpb24oJy0tbm90aWZ5JywgJ0FjdGl2YXRlcyBub3RpZmljYXRpb25zIGZvciB0ZXN0IHJlc3VsdHMuJylcbiAgLm9wdGlvbignLS1vbmx5Q2hhbmdlZCcsICd1biBiYXNlZCBvbiB3aGljaCBmaWxlcyBoYXZlIGNoYW5nZWQgaW4gdGhlIGN1cnJlbnQgcmVwb3NpdG9yeS4gJylcbiAgLm9wdGlvbignLS1vdXRwdXRGaWxlIDxmaWxlbmFtZT4nLCAnV3JpdGUgdGVzdCByZXN1bHRzIHRvIGEgZmlsZSB3aGVuIHRoZSAtLWpzb24gb3B0aW9uIGlzIGFsc28gc3BlY2lmaWVkLicpXG4gIC5vcHRpb24oJy0tcGFzc1dpdGhOb1Rlc3RzJywgJ0FsbG93cyB0aGUgdGVzdCBzdWl0ZSB0byBwYXNzIHdoZW4gbm8gZmlsZXMgYXJlIGZvdW5kLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXJ1bkluQmFuZCcsICdSdW4gYWxsIHRlc3RzIHNlcmlhbGx5IGluIHRoZSBjdXJyZW50IHByb2Nlc3MsIHJhdGhlciB0aGFuIGNyZWF0aW5nIGEgd29ya2VyIHBvb2wgb2YgY2hpbGQgcHJvY2Vzc2VzIHRoYXQgcnVuIHRlc3RzLicpXG4gIC5vcHRpb24oJy0tc2V0dXAgPHBhdGg+JywgJ1ZpdGVzdCBzZXR1cCBmaWxlIHBhdGguJylcbiAgLm9wdGlvbignLS1zaG93Q29uZmlnJywgJ1ByaW50IHlvdXIgVml0ZXN0IGNvbmZpZyBhbmQgdGhlbiBleGl0cy4nKVxuICAub3B0aW9uKCctLXNpbGVudCcsICdQcmV2ZW50IHRlc3RzIGZyb20gcHJpbnRpbmcgbWVzc2FnZXMgdGhyb3VnaCB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXRlc3RMb2NhdGlvbkluUmVzdWx0cycsICdBZGRzIGEgbG9jYXRpb24gZmllbGQgdG8gdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tdGVzdE5hbWVQYXR0ZXJuIDxyZWdleD4nLCAnUnVuIG9ubHkgdGVzdHMgd2l0aCBhIG5hbWUgdGhhdCBtYXRjaGVzIHRoZSByZWdleC4gJylcbiAgLm9wdGlvbignLS10ZXN0UGF0aFBhdHRlcm4gPHJlZ2V4PicsICdBIHJlZ2V4cCBwYXR0ZXJuIHN0cmluZyB0aGF0IGlzIG1hdGNoZWQgYWdhaW5zdCBhbGwgdGVzdHMgcGF0aHMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdC4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVHJhbnNwaWxlIGFzIFR5cGVzY3JpcHQuJylcbiAgLm9wdGlvbignLS11cGRhdGUnLCAnVXBkYXRlIHNuYXBzaG90cy4gUnVucyBcInZpdGVzdCAtLXVwZGF0ZVwiJylcbiAgLm9wdGlvbignLS11c2VTdGRlcnInLCAnRGl2ZXJ0IGFsbCBvdXRwdXQgdG8gc3RkZXJyLicpXG4gIC5vcHRpb24oJy0tdmVyYm9zZScsICdEaXNwbGF5IGluZGl2aWR1YWwgdGVzdCByZXN1bHRzIHdpdGggdGhlIHRlc3Qgc3VpdGUgaGllcmFyY2h5LicpXG4gIC5vcHRpb24oJy0td2F0Y2ggPHBhdGg+JywgJ1dhdGNoIGZpbGVzIGZvciBjaGFuZ2VzIGFuZCByZXJ1biB0ZXN0cyByZWxhdGVkIHRvIGNoYW5nZWQgZmlsZXMuJylcbiAgLm9wdGlvbignLS13YXRjaEFsbCcsICdXYXRjaCBmaWxlcyBmb3IgY2hhbmdlcyBhbmQgcmVydW4gYWxsIHRlc3RzIHdoZW4gc29tZXRoaW5nIGNoYW5nZXMuJylcbiAgLmFjdGlvbigoZmlsZXMsIG9wdGlvbnMsIGNtZCkgPT4gdGVzdChvcHRpb25zLCBjbWQuYXJncywgZmlsZXMsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3VwZGF0ZScpXG4gIC5vcHRpb24oJy0taW50ZXJhY3RpdmUnLCAnQ2hvb3NlIHdoaWNoIHBhY2thZ2VzIHRvIHVwZGF0ZS4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXJlZ2lzdHJ5JywgJ0FkZCBhIGN1c3RvbSByZWdpc3RyeSB1cmwuJylcbiAgLmFjdGlvbigoY21kKSA9PiB1cGRhdGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCd1cGdyYWRlJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLmFjdGlvbigoY21kKSA9PiB1cGdyYWRlKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnYWknKVxuICAub3B0aW9uKCctLWNvbnRleHQnLCAnSW5jbHVkZSBwcm9qZWN0IGNvbnRleHQgaW4gdGhlIEFJIHByb21wdC4nLCB0cnVlKVxuICAub3B0aW9uKCctLWZpbGUgPHBhdGg+JywgJ1NwZWNpZmljIGZpbGUgdG8gb3BlcmF0ZSBvbi4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tbW9kZWwgPG1vZGVsPicsICdBSSBtb2RlbCB0byB1c2UuIERlZmF1bHQ6IGdwdC00by4nKVxuICAub3B0aW9uKCctLXByb21wdCA8dGV4dD4nLCAnVGhlIHByb21wdCB0byBzZW5kIHRvIHRoZSBBSS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXRhc2sgPHRhc2s+JywgJ1R5cGUgb2YgQUkgdGFzayB0byBwZXJmb3JtLicpLmNob2ljZXMoWydnZW5lcmF0ZScsICdleHBsYWluJywgJ3Rlc3QnLCAnb3B0aW1pemUnLCAnaGVscCddKS5kZWZhdWx0KCdoZWxwJykpXG4gIC5hY3Rpb24oKGNtZCkgPT4gYWlGdW5jdGlvbihjbWQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCd2ZXJzaW9ucycpXG4gIC5vcHRpb24oJy0tanNvbicsICdQcmludCB0aGUgdmVyc2lvbiBhcyBhIEpTT04gb2JqZWN0LicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gdmVyc2lvbnMoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbVxuICAudmVyc2lvbihwYWNrYWdlSnNvbi52ZXJzaW9uKVxuICAucGFyc2UocHJvY2Vzcy5hcmd2KTtcbiJdLCJuYW1lcyI6WyJPcHRpb24iLCJwcm9ncmFtIiwicmVhZEZpbGVTeW5jIiwiY3JlYXRlUmVxdWlyZSIsImRpcm5hbWUiLCJyZXNvbHZlIiwiZmlsZVVSTFRvUGF0aCIsImFpRnVuY3Rpb24iLCJidWlsZCIsImNsZWFuIiwiY29tcGlsZSIsImNvbmZpZyIsImNyZWF0ZSIsImRldiIsImluaXQiLCJsaW5rZWQiLCJsaW50IiwibWlncmF0ZSIsInB1Ymxpc2giLCJzZXJ2ZXJsZXNzIiwic3Rvcnlib29rIiwidGVzdCIsInVwZGF0ZSIsInVwZ3JhZGUiLCJ2ZXJzaW9ucyIsInByb2Nlc3MiLCJlbnYiLCJMRVhfUk9PVCIsInVybCIsImxleE5vZGVNb2R1bGVzIiwiTk9ERV9QQVRIIiwic3BsaXQiLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJNb2R1bGUiLCJfaW5pdFBhdGhzIiwicGFja2FnZVBhdGgiLCJVUkwiLCJwYWNrYWdlSnNvbiIsIkpTT04iLCJwYXJzZSIsImNvbW1hbmQiLCJvcHRpb24iLCJhZGRPcHRpb24iLCJjaG9pY2VzIiwiZGVmYXVsdCIsImFjdGlvbiIsImNtZCIsImV4aXQiLCJ0aGVuIiwidHlwZSIsImFwcE5hbWUiLCJwYWNrYWdlTmFtZSIsImZpbGVzIiwib3B0aW9ucyIsImFyZ3MiLCJ2ZXJzaW9uIiwiYXJndiJdLCJtYXBwaW5ncyI6IjtBQUNBOzs7Q0FHQyxHQUNELFNBQVFBLE1BQU0sRUFBRUMsT0FBTyxRQUFPLFlBQVk7QUFDMUMsU0FBUUMsWUFBWSxRQUFPLEtBQUs7QUFDaEMsU0FBUUMsYUFBYSxRQUFPLFNBQVM7QUFDckMsU0FBUUMsT0FBTyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUN0QyxTQUFRQyxhQUFhLFFBQU8sTUFBTTtBQUVsQyxTQUFRQyxVQUFVLFFBQU8sc0JBQXNCO0FBQy9DLFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFDaEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxPQUFPLFFBQU8sZ0NBQWdDO0FBQ3RELFNBQVFDLE1BQU0sUUFBTyw4QkFBOEI7QUFDbkQsU0FBUUMsTUFBTSxRQUFPLDhCQUE4QjtBQUNuRCxTQUFRQyxHQUFHLFFBQU8sd0JBQXdCO0FBQzFDLFNBQVFDLElBQUksUUFBTywwQkFBMEI7QUFDN0MsU0FBUUMsTUFBTSxRQUFPLDBCQUEwQjtBQUMvQyxTQUFRQyxJQUFJLFFBQU8sMEJBQTBCO0FBQzdDLFNBQVFDLE9BQU8sUUFBTyxnQ0FBZ0M7QUFDdEQsU0FBUUMsT0FBTyxRQUFPLGdDQUFnQztBQUN0RCxTQUFRQyxVQUFVLFFBQU8sc0NBQXNDO0FBQy9ELFNBQVFDLFNBQVMsUUFBTyxvQ0FB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
@@ -2,5 +2,5 @@
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- import '@testing-library/jest-dom';
5
+ import '@testing-library/jest-dom/vitest';
6
6
  export { render, screen, fireEvent, waitFor, waitForElementToBeRemoved, within, getByRole, getByLabelText, getByPlaceholderText, getByText, getByTestId, getAllByRole, getAllByLabelText, getAllByPlaceholderText, getAllByText, getAllByTestId, queryByRole, queryByLabelText, queryByPlaceholderText, queryByText, queryByTestId, queryAllByRole, queryAllByLabelText, queryAllByPlaceholderText, queryAllByText, queryAllByTestId, findByRole, findByLabelText, findByPlaceholderText, findByText, findByTestId, findAllByRole, findAllByLabelText, findAllByPlaceholderText, findAllByText, findAllByTestId, renderHook, act, cleanup } from '@testing-library/react';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
- */ import '@testing-library/jest-dom';
4
+ */ import '@testing-library/jest-dom/vitest';
5
5
  export { render, screen, fireEvent, waitFor, waitForElementToBeRemoved, within, getByRole, getByLabelText, getByPlaceholderText, getByText, getByTestId, getAllByRole, getAllByLabelText, getAllByPlaceholderText, getAllByText, getAllByTestId, queryByRole, queryByLabelText, queryByPlaceholderText, queryByText, queryByTestId, queryAllByRole, queryAllByLabelText, queryAllByPlaceholderText, queryAllByText, queryAllByTestId, findByRole, findByLabelText, findByPlaceholderText, findByText, findByTestId, findAllByRole, findAllByLabelText, findAllByPlaceholderText, findAllByText, findAllByTestId, renderHook, act, cleanup } from '@testing-library/react';
6
6
 
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXJlYWN0L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nO1xuXG5leHBvcnQge1xuICByZW5kZXIsXG4gIHNjcmVlbixcbiAgZmlyZUV2ZW50LFxuICB3YWl0Rm9yLFxuICB3YWl0Rm9yRWxlbWVudFRvQmVSZW1vdmVkLFxuICB3aXRoaW4sXG4gIGdldEJ5Um9sZSxcbiAgZ2V0QnlMYWJlbFRleHQsXG4gIGdldEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBnZXRCeVRleHQsXG4gIGdldEJ5VGVzdElkLFxuICBnZXRBbGxCeVJvbGUsXG4gIGdldEFsbEJ5TGFiZWxUZXh0LFxuICBnZXRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QWxsQnlUZXh0LFxuICBnZXRBbGxCeVRlc3RJZCxcbiAgcXVlcnlCeVJvbGUsXG4gIHF1ZXJ5QnlMYWJlbFRleHQsXG4gIHF1ZXJ5QnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QnlUZXh0LFxuICBxdWVyeUJ5VGVzdElkLFxuICBxdWVyeUFsbEJ5Um9sZSxcbiAgcXVlcnlBbGxCeUxhYmVsVGV4dCxcbiAgcXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgcXVlcnlBbGxCeVRleHQsXG4gIHF1ZXJ5QWxsQnlUZXN0SWQsXG4gIGZpbmRCeVJvbGUsXG4gIGZpbmRCeUxhYmVsVGV4dCxcbiAgZmluZEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQnlUZXh0LFxuICBmaW5kQnlUZXN0SWQsXG4gIGZpbmRBbGxCeVJvbGUsXG4gIGZpbmRBbGxCeUxhYmVsVGV4dCxcbiAgZmluZEFsbEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQWxsQnlUZXh0LFxuICBmaW5kQWxsQnlUZXN0SWQsXG4gIHJlbmRlckhvb2ssXG4gIGFjdCxcbiAgY2xlYW51cFxufSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JzsiXSwibmFtZXMiOlsicmVuZGVyIiwic2NyZWVuIiwiZmlyZUV2ZW50Iiwid2FpdEZvciIsIndhaXRGb3JFbGVtZW50VG9CZVJlbW92ZWQiLCJ3aXRoaW4iLCJnZXRCeVJvbGUiLCJnZXRCeUxhYmVsVGV4dCIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwiZ2V0QnlUZXh0IiwiZ2V0QnlUZXN0SWQiLCJnZXRBbGxCeVJvbGUiLCJnZXRBbGxCeUxhYmVsVGV4dCIsImdldEFsbEJ5UGxhY2Vob2xkZXJUZXh0IiwiZ2V0QWxsQnlUZXh0IiwiZ2V0QWxsQnlUZXN0SWQiLCJxdWVyeUJ5Um9sZSIsInF1ZXJ5QnlMYWJlbFRleHQiLCJxdWVyeUJ5UGxhY2Vob2xkZXJUZXh0IiwicXVlcnlCeVRleHQiLCJxdWVyeUJ5VGVzdElkIiwicXVlcnlBbGxCeVJvbGUiLCJxdWVyeUFsbEJ5TGFiZWxUZXh0IiwicXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCIsInF1ZXJ5QWxsQnlUZXh0IiwicXVlcnlBbGxCeVRlc3RJZCIsImZpbmRCeVJvbGUiLCJmaW5kQnlMYWJlbFRleHQiLCJmaW5kQnlQbGFjZWhvbGRlclRleHQiLCJmaW5kQnlUZXh0IiwiZmluZEJ5VGVzdElkIiwiZmluZEFsbEJ5Um9sZSIsImZpbmRBbGxCeUxhYmVsVGV4dCIsImZpbmRBbGxCeVBsYWNlaG9sZGVyVGV4dCIsImZpbmRBbGxCeVRleHQiLCJmaW5kQWxsQnlUZXN0SWQiLCJyZW5kZXJIb29rIiwiYWN0IiwiY2xlYW51cCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBTyw0QkFBNEI7QUFFbkMsU0FDRUEsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyx5QkFBeUIsRUFDekJDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLG9CQUFvQixFQUNwQkMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsaUJBQWlCLEVBQ2pCQyx1QkFBdUIsRUFDdkJDLFlBQVksRUFDWkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsc0JBQXNCLEVBQ3RCQyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLHlCQUF5QixFQUN6QkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLFVBQVUsRUFDVkMsZUFBZSxFQUNmQyxxQkFBcUIsRUFDckJDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGtCQUFrQixFQUNsQkMsd0JBQXdCLEVBQ3hCQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxHQUFHLEVBQ0hDLE9BQU8sUUFDRix5QkFBeUIifQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXJlYWN0L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20vdml0ZXN0JztcblxuZXhwb3J0IHtcbiAgcmVuZGVyLFxuICBzY3JlZW4sXG4gIGZpcmVFdmVudCxcbiAgd2FpdEZvcixcbiAgd2FpdEZvckVsZW1lbnRUb0JlUmVtb3ZlZCxcbiAgd2l0aGluLFxuICBnZXRCeVJvbGUsXG4gIGdldEJ5TGFiZWxUZXh0LFxuICBnZXRCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QnlUZXh0LFxuICBnZXRCeVRlc3RJZCxcbiAgZ2V0QWxsQnlSb2xlLFxuICBnZXRBbGxCeUxhYmVsVGV4dCxcbiAgZ2V0QWxsQnlQbGFjZWhvbGRlclRleHQsXG4gIGdldEFsbEJ5VGV4dCxcbiAgZ2V0QWxsQnlUZXN0SWQsXG4gIHF1ZXJ5QnlSb2xlLFxuICBxdWVyeUJ5TGFiZWxUZXh0LFxuICBxdWVyeUJ5UGxhY2Vob2xkZXJUZXh0LFxuICBxdWVyeUJ5VGV4dCxcbiAgcXVlcnlCeVRlc3RJZCxcbiAgcXVlcnlBbGxCeVJvbGUsXG4gIHF1ZXJ5QWxsQnlMYWJlbFRleHQsXG4gIHF1ZXJ5QWxsQnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QWxsQnlUZXh0LFxuICBxdWVyeUFsbEJ5VGVzdElkLFxuICBmaW5kQnlSb2xlLFxuICBmaW5kQnlMYWJlbFRleHQsXG4gIGZpbmRCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZmluZEJ5VGV4dCxcbiAgZmluZEJ5VGVzdElkLFxuICBmaW5kQWxsQnlSb2xlLFxuICBmaW5kQWxsQnlMYWJlbFRleHQsXG4gIGZpbmRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZmluZEFsbEJ5VGV4dCxcbiAgZmluZEFsbEJ5VGVzdElkLFxuICByZW5kZXJIb29rLFxuICBhY3QsXG4gIGNsZWFudXBcbn0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG4iXSwibmFtZXMiOlsicmVuZGVyIiwic2NyZWVuIiwiZmlyZUV2ZW50Iiwid2FpdEZvciIsIndhaXRGb3JFbGVtZW50VG9CZVJlbW92ZWQiLCJ3aXRoaW4iLCJnZXRCeVJvbGUiLCJnZXRCeUxhYmVsVGV4dCIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwiZ2V0QnlUZXh0IiwiZ2V0QnlUZXN0SWQiLCJnZXRBbGxCeVJvbGUiLCJnZXRBbGxCeUxhYmVsVGV4dCIsImdldEFsbEJ5UGxhY2Vob2xkZXJUZXh0IiwiZ2V0QWxsQnlUZXh0IiwiZ2V0QWxsQnlUZXN0SWQiLCJxdWVyeUJ5Um9sZSIsInF1ZXJ5QnlMYWJlbFRleHQiLCJxdWVyeUJ5UGxhY2Vob2xkZXJUZXh0IiwicXVlcnlCeVRleHQiLCJxdWVyeUJ5VGVzdElkIiwicXVlcnlBbGxCeVJvbGUiLCJxdWVyeUFsbEJ5TGFiZWxUZXh0IiwicXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCIsInF1ZXJ5QWxsQnlUZXh0IiwicXVlcnlBbGxCeVRlc3RJZCIsImZpbmRCeVJvbGUiLCJmaW5kQnlMYWJlbFRleHQiLCJmaW5kQnlQbGFjZWhvbGRlclRleHQiLCJmaW5kQnlUZXh0IiwiZmluZEJ5VGVzdElkIiwiZmluZEFsbEJ5Um9sZSIsImZpbmRBbGxCeUxhYmVsVGV4dCIsImZpbmRBbGxCeVBsYWNlaG9sZGVyVGV4dCIsImZpbmRBbGxCeVRleHQiLCJmaW5kQWxsQnlUZXN0SWQiLCJyZW5kZXJIb29rIiwiYWN0IiwiY2xlYW51cCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBTyxtQ0FBbUM7QUFFMUMsU0FDRUEsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyx5QkFBeUIsRUFDekJDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLG9CQUFvQixFQUNwQkMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsaUJBQWlCLEVBQ2pCQyx1QkFBdUIsRUFDdkJDLFlBQVksRUFDWkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsc0JBQXNCLEVBQ3RCQyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLHlCQUF5QixFQUN6QkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLFVBQVUsRUFDVkMsZUFBZSxFQUNmQyxxQkFBcUIsRUFDckJDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGtCQUFrQixFQUNsQkMsd0JBQXdCLEVBQ3hCQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxHQUFHLEVBQ0hDLE9BQU8sUUFDRix5QkFBeUIifQ==
package/lib/types.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- export type { AIConfig, Config, JestConfig, LexConfigType, SWCOptions, WebpackConfig } from './LexConfig.js';
5
+ export type { AIConfig, Config, VitestConfig, LexConfigType, SWCOptions, WebpackConfig } from './LexConfig.js';
package/lib/types.js CHANGED
@@ -4,4 +4,4 @@
4
4
  */ // Re-export all types from LexConfig
5
5
  export { };
6
6
 
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG4vLyBSZS1leHBvcnQgYWxsIHR5cGVzIGZyb20gTGV4Q29uZmlnXG5leHBvcnQgdHlwZSB7XG4gIEFJQ29uZmlnLFxuICBDb25maWcsXG4gIEplc3RDb25maWcsXG4gIExleENvbmZpZ1R5cGUsXG4gIFNXQ09wdGlvbnMsXG4gIFdlYnBhY2tDb25maWdcbn0gZnJvbSAnLi9MZXhDb25maWcuanMnOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxxQ0FBcUM7QUFDckMsV0FPd0IifQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG4vLyBSZS1leHBvcnQgYWxsIHR5cGVzIGZyb20gTGV4Q29uZmlnXG5leHBvcnQgdHlwZSB7XG4gIEFJQ29uZmlnLFxuICBDb25maWcsXG4gIFZpdGVzdENvbmZpZyxcbiAgTGV4Q29uZmlnVHlwZSxcbiAgU1dDT3B0aW9ucyxcbiAgV2VicGFja0NvbmZpZ1xufSBmcm9tICcuL0xleENvbmZpZy5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQscUNBQXFDO0FBQ3JDLFdBT3dCIn0=
package/lib/utils/app.js CHANGED
@@ -210,7 +210,7 @@ export const removeConflictModules = (moduleList)=>{
210
210
  ...moduleList
211
211
  };
212
212
  Object.keys(updatedList).forEach((moduleName)=>{
213
- const regex = new RegExp('^(?!@types/).*?(jest|webpack).*$', 'gi');
213
+ const regex = new RegExp('^(?!@types/).*?(vitest|webpack).*$', 'gi');
214
214
  if (regex.test(moduleName)) {
215
215
  delete updatedList[moduleName];
216
216
  }
@@ -298,4 +298,4 @@ export const updateTemplateName = (filePath, replace, replaceCaps)=>{
298
298
  writeFileSync(filePath, data, 'utf8');
299
299
  };
300
300
 
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hcHAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQge2NvcHlGaWxlLCBleGlzdHNTeW5jLCBsc3RhdFN5bmMsIG1rZGlyU3luYywgcmVhZGRpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB7YmFzZW5hbWUgYXMgcGF0aEJhc2VuYW1lLCBqb2luIGFzIHBhdGhKb2luLCByZWxhdGl2ZSBhcyBwYXRoUmVsYXRpdmUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtyaW1yYWZTeW5jfSBmcm9tICdyaW1yYWYnO1xuXG5cbmltcG9ydCB7bG9nfSBmcm9tICcuL2xvZy5qcyc7XG5cbmltcG9ydCB0eXBlIHtMZXhDb25maWdUeXBlfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZW5hbWVzUHJvcHMge1xuICByZWFkb25seSBjYWxsYmFjaz86IChzdGF0dXM6IG51bWJlcik9PiB2b2lkO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZVR5cGVzY3JpcHQ/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRmlsZW5hbWVzUmVzdWx0IHtcbiAgbmFtZUNhcHM6IHN0cmluZztcbiAgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XG4gIHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZpbGVuYW1lcyA9IChwcm9wczogR2V0RmlsZW5hbWVzUHJvcHMpOiBGaWxlbmFtZXNSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB7Y2FsbGJhY2ssIGNsaU5hbWUsIG5hbWUsIHF1aWV0LCB0eXBlLCB1c2VUeXBlc2NyaXB0fSA9IHByb3BzO1xuXG4gIGxldCBuYW1lQ2Fwczogc3RyaW5nO1xuICBjb25zdCBpdGVtVHlwZXM6IHN0cmluZ1tdID0gWydzdG9yZXMnLCAndmlld3MnXTtcblxuICBpZighbmFtZSkge1xuICAgIGlmKGl0ZW1UeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke3R5cGV9IG5hbWUgaXMgcmVxdWlyZWQuIFBsZWFzZSB1c2UgJ2xleCAtaCcgZm9yIG9wdGlvbnMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2s/LigxKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5hbWVDYXBzID0gYCR7bmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke25hbWUuc3Vic3RyKDEpfWA7XG4gIH1cblxuICBsb2coYCR7Y2xpTmFtZX0gYWRkaW5nICR7bmFtZX0gJHt0eXBlfS4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGxldCB0ZW1wbGF0ZVBhdGg6IHN0cmluZztcbiAgbGV0IHRlbXBsYXRlRXh0OiBzdHJpbmc7XG4gIGxldCB0ZW1wbGF0ZVJlYWN0OiBzdHJpbmc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIHRlbXBsYXRlUGF0aCA9ICcuLi8uLi90ZW1wbGF0ZXMvdHlwZXNjcmlwdCc7XG4gICAgdGVtcGxhdGVFeHQgPSAnLnRzJztcbiAgICB0ZW1wbGF0ZVJlYWN0ID0gJy50c3gnO1xuICB9IGVsc2Uge1xuICAgIHRlbXBsYXRlUGF0aCA9ICcuLi8uLi90ZW1wbGF0ZXMvZmxvdyc7XG4gICAgdGVtcGxhdGVFeHQgPSAnLmpzJztcbiAgICB0ZW1wbGF0ZVJlYWN0ID0gJy5qcyc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWVDYXBzLFxuICAgIHRlbXBsYXRlRXh0LFxuICAgIHRlbXBsYXRlUGF0aCxcbiAgICB0ZW1wbGF0ZVJlYWN0XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5uZXIge1xuICBmYWlsOiAodGV4dD86IHN0cmluZyk9PiB2b2lkO1xuICBzdGFydDogKHRleHQ/OiBzdHJpbmcpPT4gdm9pZDtcbiAgc3VjY2VlZDogKHRleHQ/OiBzdHJpbmcpPT4gdm9pZDtcbiAgdGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNwaW5uZXIgPSAocXVpZXQgPSBmYWxzZSk6IFNwaW5uZXIgPT4ge1xuICBpZihxdWlldCkge1xuICAgIHJldHVybiB7XG4gICAgICBmYWlsOiAoKSA9PiB7fSxcbiAgICAgIHN0YXJ0OiAoKSA9PiB7fSxcbiAgICAgIHN1Y2NlZWQ6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBvcmEoe2NvbG9yOiAneWVsbG93J30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb2dyZXNzQmFyID0gKHBlcmNlbnRhZ2U6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHdpZHRoID0gMjA7XG4gIGNvbnN0IGZpbGxlZCA9IE1hdGgucm91bmQoKHBlcmNlbnRhZ2UgLyAxMDApICogd2lkdGgpO1xuICBjb25zdCBlbXB0eSA9IHdpZHRoIC0gZmlsbGVkO1xuXG4gIGNvbnN0IGZpbGxlZEJhciA9IGNoYWxrLmN5YW4oJ+KWiCcpLnJlcGVhdChmaWxsZWQpO1xuICBjb25zdCBlbXB0eUJhciA9IGNoYWxrLmdyYXkoJ+KWkScpLnJlcGVhdChlbXB0eSk7XG5cbiAgcmV0dXJuIGZpbGxlZEJhciArIGVtcHR5QmFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVdlYnBhY2tQcm9ncmVzcyA9IChcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHNwaW5uZXI6IFNwaW5uZXIsXG4gIHF1aWV0OiBib29sZWFuLFxuICBlbW9qaTogc3RyaW5nLFxuICBhY3Rpb246IHN0cmluZ1xuKTogdm9pZCA9PiB7XG4gIGlmKHF1aWV0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcHJvZ3Jlc3NNYXRjaCA9IG91dHB1dC5tYXRjaCgvXFxbd2VicGFja1xcLlByb2dyZXNzXFxdIChcXGQrKSUvKTtcbiAgaWYocHJvZ3Jlc3NNYXRjaCkge1xuICAgIGNvbnN0IHByb2dyZXNzID0gcGFyc2VJbnQocHJvZ3Jlc3NNYXRjaFsxXSk7XG4gICAgY29uc3QgcHJvZ3Jlc3NCYXIgPSBjcmVhdGVQcm9ncmVzc0Jhcihwcm9ncmVzcyk7XG4gICAgc3Bpbm5lci50ZXh0ID0gYCR7ZW1vaml9ICR7YWN0aW9ufTogJHtwcm9ncmVzc0Jhcn0gJHtwcm9ncmVzc30lYDtcbiAgfSBlbHNlIGlmKG91dHB1dC5pbmNsdWRlcygnW3dlYnBhY2suUHJvZ3Jlc3NdJykpIHtcbiAgICBjb25zdCBnZW5lcmFsUHJvZ3Jlc3NNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspJS8pO1xuICAgIGlmKGdlbmVyYWxQcm9ncmVzc01hdGNoKSB7XG4gICAgICBjb25zdCBwcm9ncmVzcyA9IHBhcnNlSW50KGdlbmVyYWxQcm9ncmVzc01hdGNoWzFdKTtcbiAgICAgIGNvbnN0IHByb2dyZXNzQmFyID0gY3JlYXRlUHJvZ3Jlc3NCYXIocHJvZ3Jlc3MpO1xuICAgICAgc3Bpbm5lci50ZXh0ID0gYCR7ZW1vaml9ICR7YWN0aW9ufTogJHtwcm9ncmVzc0Jhcn0gJHtwcm9ncmVzc30lYDtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5RmlsZXMgPSBhc3luYyAoZmlsZXM6IHN0cmluZ1tdLCB0eXBlTmFtZTogc3RyaW5nLCBzcGlubmVyLCBjb25maWc6IExleENvbmZpZ1R5cGUpID0+IHtcbiAgY29uc3Qge291dHB1dEZ1bGxQYXRoLCBzb3VyY2VGdWxsUGF0aH0gPSBjb25maWc7XG4gIGNvbnN0IGl0ZW1zID0gZmlsZXMubWFwKChmaWxlTmFtZTogc3RyaW5nKSA9PiAoe1xuICAgIGZyb206IGZpbGVOYW1lLFxuICAgIHRvOiBwYXRoUmVzb2x2ZShvdXRwdXRGdWxsUGF0aCwgcGF0aFJlbGF0aXZlKHNvdXJjZUZ1bGxQYXRoLCBmaWxlTmFtZSkpXG4gIH0pKTtcblxuICB0cnkge1xuICAgIHNwaW5uZXIuc3RhcnQoYENvcHlpbmcgJHt0eXBlTmFtZX0gZmlsZXMuLi5gKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoKHtmcm9tLCB0b30pID0+IG5ldyBQcm9taXNlKFxuICAgICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBta2RpclN5bmMocGF0aFJlc29sdmUodG8sICcuLicpLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgICAgIHJldHVybiBjb3B5RmlsZShmcm9tLCB0bywgKGNvcHlFcnJvcikgPT4ge1xuICAgICAgICAgIGlmKGNvcHlFcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApKSk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgY29waWVkICR7ZmlsZXMubGVuZ3RofSAke3R5cGVOYW1lfSBmaWxlcyFgKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbChgQ29weWluZyBvZiAke3R5cGVOYW1lfSBmaWxlcyBmYWlsZWQuYCk7XG4gICAgbG9nKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicpO1xuICAgIGxvZyhlcnJvciwgJ2Vycm9yJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5Q29uZmlndXJlZEZpbGVzID0gYXN5bmMgKHNwaW5uZXIsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSwgcXVpZXQ6IGJvb2xlYW4pID0+IHtcbiAgY29uc3Qge2NvcHlGaWxlczogY29weUZpbGVzQ29uZmlnLCBvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHNvdXJjZVBhdGh9ID0gY29uZmlnO1xuICBpZighY29weUZpbGVzQ29uZmlnIHx8IGNvcHlGaWxlc0NvbmZpZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0NvcHlpbmcgY29uZmlndXJlZCBmaWxlcy4uLicpO1xuICAgIGxldCB0b3RhbENvcGllZCA9IDA7XG5cbiAgICBjb25zdCBiYXNlRGlyID0gc291cmNlRnVsbFBhdGggfHwgKHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBzb3VyY2VQYXRoKSA6IHByb2Nlc3MuY3dkKCkpO1xuICAgIGNvbnN0IGFsbENvcHlQcm9taXNlczogUHJvbWlzZTx1bmtub3duPltdID0gW107XG5cbiAgICBmb3IoY29uc3QgcGF0dGVybiBvZiBjb3B5RmlsZXNDb25maWcpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0dGVybiA9IHBhdGhSZXNvbHZlKGJhc2VEaXIsIHBhdHRlcm4pO1xuICAgICAgY29uc3QgbWF0Y2hpbmdGaWxlcyA9IGdsb2JTeW5jKHJlc29sdmVkUGF0dGVybiwge1xuICAgICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICAgICAgbm9kaXI6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBpZihtYXRjaGluZ0ZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgICBsb2coYFdhcm5pbmc6IE5vIGZpbGVzIGZvdW5kIG1hdGNoaW5nIHBhdHRlcm46ICR7cGF0dGVybn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29weVByb21pc2VzID0gbWF0Y2hpbmdGaWxlcy5tYXAoKHNvdXJjZUZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFJlbGF0aXZlKGJhc2VEaXIsIHNvdXJjZUZpbGUpO1xuICAgICAgICBjb25zdCBkZXN0UGF0aCA9IHBhdGhSZXNvbHZlKG91dHB1dEZ1bGxQYXRoLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICBjb25zdCBkZXN0RGlyID0gcGF0aFJlc29sdmUoZGVzdFBhdGgsICcuLicpO1xuICAgICAgICBta2RpclN5bmMoZGVzdERpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29weUZpbGUoc291cmNlRmlsZSwgZGVzdFBhdGgsIChjb3B5RXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmKGNvcHlFcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoY29weUVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGFsbENvcHlQcm9taXNlcy5wdXNoKC4uLmNvcHlQcm9taXNlcyk7XG4gICAgICB0b3RhbENvcGllZCArPSBtYXRjaGluZ0ZpbGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChhbGxDb3B5UHJvbWlzZXMpO1xuXG4gICAgaWYodG90YWxDb3BpZWQgPiAwKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBjb3BpZWQgJHt0b3RhbENvcGllZH0gY29uZmlndXJlZCBmaWxlcyFgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdObyBjb25maWd1cmVkIGZpbGVzIHRvIGNvcHknKTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMnKTtcbiAgICBsb2coYEVycm9yIGNvcHlpbmcgY29uZmlndXJlZCBmaWxlczogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlU3luYyA9IChzb3VyY2U6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpID0+IHtcbiAgbGV0IHRhcmdldEZpbGU6IHN0cmluZyA9IHRhcmdldDtcblxuICBpZihleGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICBpZihsc3RhdFN5bmModGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0YXJnZXRGaWxlID0gcGF0aEpvaW4odGFyZ2V0LCBwYXRoQmFzZW5hbWUoc291cmNlKSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVGaWxlU3luYyh0YXJnZXRGaWxlLCByZWFkRmlsZVN5bmMoc291cmNlKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGxldCBmaWxlczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCB0YXJnZXRGb2xkZXI6IHN0cmluZyA9IHBhdGhKb2luKHRhcmdldCwgcGF0aEJhc2VuYW1lKHNvdXJjZSkpO1xuXG4gIGlmKCFleGlzdHNTeW5jKHRhcmdldEZvbGRlcikpIHtcbiAgICBta2RpclN5bmModGFyZ2V0Rm9sZGVyKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhzb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlcyA9IHJlYWRkaXJTeW5jKHNvdXJjZSk7XG4gICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBjdXJTb3VyY2U6IHN0cmluZyA9IHBhdGhKb2luKHNvdXJjZSwgZmlsZSk7XG5cbiAgICAgIGlmKGxzdGF0U3luYyhjdXJTb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMoY3VyU291cmNlLCB0YXJnZXRGb2xkZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29weUZpbGVTeW5jKGN1clNvdXJjZSwgdGFyZ2V0Rm9sZGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhY2thZ2VKc29uID0gKHBhY2thZ2VQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG4gIGNvbnN0IHBhY2thZ2VEYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZm9ybWF0UGF0aCkudG9TdHJpbmcoKTtcblxuICByZXR1cm4gSlNPTi5wYXJzZShwYWNrYWdlRGF0YSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZXNCeUV4dCA9IChleHQ6IHN0cmluZywgY29uZmlnOiBMZXhDb25maWdUeXBlKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICByZXR1cm4gZ2xvYlN5bmMoYCoqLyoqJHtleHR9YCwge1xuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIGN3ZDogc291cmNlRnVsbFBhdGgsXG4gICAgbm9kaXI6IHRydWVcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQ29uZmxpY3RNb2R1bGVzID0gKG1vZHVsZUxpc3Q6IG9iamVjdCkgPT4ge1xuICBjb25zdCB1cGRhdGVkTGlzdDogb2JqZWN0ID0gey4uLm1vZHVsZUxpc3R9O1xuXG4gIE9iamVjdC5rZXlzKHVwZGF0ZWRMaXN0KS5mb3JFYWNoKChtb2R1bGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnXig/IUB0eXBlcy8pLio/KGplc3R8d2VicGFjaykuKiQnLCAnZ2knKTtcbiAgICBpZihyZWdleC50ZXN0KG1vZHVsZU5hbWUpKSB7XG4gICAgICBkZWxldGUgdXBkYXRlZExpc3RbbW9kdWxlTmFtZV07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdXBkYXRlZExpc3Q7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRmlsZXMgPSAoZmlsZU5hbWU6IHN0cmluZywgaXNSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBpc1JlbGF0aXZlID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZmlsZU5hbWUpIDogZmlsZU5hbWU7XG5cbiAgdHJ5IHtcbiAgICByaW1yYWZTeW5jKGZpbGVQYXRoKTtcbiAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU1vZHVsZXMgPSAoKSA9PiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vbm9kZV9tb2R1bGVzJywgdHJ1ZSk7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4veWFybi5sb2NrJywgdHJ1ZSk7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vcGFja2FnZS1sb2NrLmpzb24nLCB0cnVlKTtcblxuICAgIHJlc29sdmUobnVsbCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldFBhY2thZ2VKc29uID0gKGpzb24sIHBhY2thZ2VQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGlmKCFqc29uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0UGF0aDogc3RyaW5nID0gcGFja2FnZVBhdGggfHwgYCR7cHJvY2Vzcy5jd2QoKX0vcGFja2FnZS5qc29uYDtcblxuICB3cml0ZUZpbGVTeW5jKGZvcm1hdFBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2VkTW9kdWxlVHlwZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgbGlua2VkTW9kdWxlcyA9IChzdGFydFBhdGg/OiBzdHJpbmcpOiBMaW5rZWRNb2R1bGVUeXBlW10gPT4ge1xuICBjb25zdCB3b3JraW5nUGF0aDogc3RyaW5nID0gc3RhcnRQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gIGxldCBtb2R1bGVQYXRoOiBzdHJpbmc7XG4gIGxldCBwcmVmaXg6IHN0cmluZztcblxuICBpZih3b3JraW5nUGF0aC5pbmNsdWRlcygnQCcpKSB7XG4gICAgcHJlZml4ID0gYEAke3dvcmtpbmdQYXRoLnNwbGl0KCdAJykucG9wKCl9YDtcbiAgICBtb2R1bGVQYXRoID0gd29ya2luZ1BhdGg7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlUGF0aCA9IHBhdGhKb2luKHdvcmtpbmdQYXRoLCAnbm9kZV9tb2R1bGVzJyk7XG4gIH1cblxuICBjb25zdCBmb3VuZFBhdGhzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqJywge1xuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIGN3ZDogbW9kdWxlUGF0aCxcbiAgICBub2RpcjogZmFsc2VcbiAgfSk7XG5cbiAgcmV0dXJuIGZvdW5kUGF0aHMucmVkdWNlKChsaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10sIGZvdW5kUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gbHN0YXRTeW5jKGZvdW5kUGF0aCk7XG5cbiAgICAgIGlmKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29uc3QgZGVlcExpc3Q6IExpbmtlZE1vZHVsZVR5cGVbXSA9IGxpbmtlZE1vZHVsZXMoZm91bmRQYXRoKTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLmRlZXBMaXN0KTtcbiAgICAgIH0gZWxzZSBpZihzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWVzOiBzdHJpbmdbXSA9IChbcHJlZml4LCBwYXRoQmFzZW5hbWUoZm91bmRQYXRoKV0pLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiAhaXNFbXB0eShpdGVtKSk7XG4gICAgICAgIGxpc3QucHVzaCh7bmFtZTogYCR7bW9kdWxlTmFtZXMuam9pbignLycpfWAsIHBhdGg6IGZvdW5kUGF0aH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGNhdGNoe1xuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuICB9LCBbXSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tMaW5rZWRNb2R1bGVzID0gKCkgPT4ge1xuICBjb25zdCBsaW5rZWQgPSBsaW5rZWRNb2R1bGVzKCk7XG5cbiAgaWYobGlua2VkLmxlbmd0aCkge1xuICAgIGNvbnN0IG1zZ01vZHVsZTogc3RyaW5nID0gbGlua2VkLmxlbmd0aCA+IDEgPyAnTW9kdWxlcycgOiAnTW9kdWxlJztcbiAgICBjb25zdCBsaW5rZWRNc2c6IHN0cmluZyA9IGxpbmtlZC5yZWR1Y2UoXG4gICAgICAobXNnOiBzdHJpbmcsIGxpbmtlZE1vZHVsZTogTGlua2VkTW9kdWxlVHlwZSkgPT5cbiAgICAgICAgYCR7bXNnfVxcbiAqICR7bGlua2VkTW9kdWxlLm5hbWV9YCxcbiAgICAgIGBMaW5rZWQgJHttc2dNb2R1bGV9OmBcbiAgICApO1xuXG4gICAgbG9nKGJveGVuKGxpbmtlZE1zZywge2RpbUJvcmRlcjogdHJ1ZSwgcGFkZGluZzogMX0pLCAnd2FybicpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGVtcGxhdGVOYW1lID0gKGZpbGVQYXRoOiBzdHJpbmcsIHJlcGxhY2U6IHN0cmluZywgcmVwbGFjZUNhcHM6IHN0cmluZykgPT4ge1xuICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9zYW1wbGUvZywgcmVwbGFjZSk7XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1NhbXBsZS9nLCByZXBsYWNlQ2Fwcyk7XG4gIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGRhdGEsICd1dGY4Jyk7XG59OyJdLCJuYW1lcyI6WyJib3hlbiIsImNoYWxrIiwiY29weUZpbGUiLCJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwibWtkaXJTeW5jIiwicmVhZGRpclN5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwic3luYyIsImdsb2JTeW5jIiwiaXNFbXB0eSIsIm9yYSIsImJhc2VuYW1lIiwicGF0aEJhc2VuYW1lIiwiam9pbiIsInBhdGhKb2luIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJyaW1yYWZTeW5jIiwibG9nIiwiZ2V0RmlsZW5hbWVzIiwicHJvcHMiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJuYW1lIiwicXVpZXQiLCJ0eXBlIiwidXNlVHlwZXNjcmlwdCIsIm5hbWVDYXBzIiwiaXRlbVR5cGVzIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInN1YnN0ciIsInRlbXBsYXRlUGF0aCIsInRlbXBsYXRlRXh0IiwidGVtcGxhdGVSZWFjdCIsImNyZWF0ZVNwaW5uZXIiLCJmYWlsIiwic3RhcnQiLCJzdWNjZWVkIiwiY29sb3IiLCJjcmVhdGVQcm9ncmVzc0JhciIsInBlcmNlbnRhZ2UiLCJ3aWR0aCIsImZpbGxlZCIsIk1hdGgiLCJyb3VuZCIsImVtcHR5IiwiZmlsbGVkQmFyIiwiY3lhbiIsInJlcGVhdCIsImVtcHR5QmFyIiwiZ3JheSIsImhhbmRsZVdlYnBhY2tQcm9ncmVzcyIsIm91dHB1dCIsInNwaW5uZXIiLCJlbW9qaSIsImFjdGlvbiIsInByb2dyZXNzTWF0Y2giLCJtYXRjaCIsInByb2dyZXNzIiwicGFyc2VJbnQiLCJwcm9ncmVzc0JhciIsInRleHQiLCJnZW5lcmFsUHJvZ3Jlc3NNYXRjaCIsImNvcHlGaWxlcyIsImZpbGVzIiwidHlwZU5hbWUiLCJjb25maWciLCJvdXRwdXRGdWxsUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwiaXRlbXMiLCJtYXAiLCJmaWxlTmFtZSIsImZyb20iLCJ0byIsIlByb21pc2UiLCJhbGwiLCJyZWplY3QiLCJyZWN1cnNpdmUiLCJjb3B5RXJyb3IiLCJsZW5ndGgiLCJlcnJvciIsIm1lc3NhZ2UiLCJjb3B5Q29uZmlndXJlZEZpbGVzIiwiY29weUZpbGVzQ29uZmlnIiwic291cmNlUGF0aCIsInRvdGFsQ29waWVkIiwiYmFzZURpciIsInByb2Nlc3MiLCJjd2QiLCJhbGxDb3B5UHJvbWlzZXMiLCJwYXR0ZXJuIiwicmVzb2x2ZWRQYXR0ZXJuIiwibWF0Y2hpbmdGaWxlcyIsImFic29sdXRlIiwibm9kaXIiLCJjb3B5UHJvbWlzZXMiLCJzb3VyY2VGaWxlIiwicmVsYXRpdmVQYXRoIiwiZGVzdFBhdGgiLCJkZXN0RGlyIiwicHVzaCIsImNvcHlGaWxlU3luYyIsInNvdXJjZSIsInRhcmdldCIsInRhcmdldEZpbGUiLCJpc0RpcmVjdG9yeSIsImNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jIiwidGFyZ2V0Rm9sZGVyIiwiZm9yRWFjaCIsImZpbGUiLCJjdXJTb3VyY2UiLCJnZXRQYWNrYWdlSnNvbiIsInBhY2thZ2VQYXRoIiwiZm9ybWF0UGF0aCIsInBhY2thZ2VEYXRhIiwidG9TdHJpbmciLCJKU09OIiwicGFyc2UiLCJnZXRGaWxlc0J5RXh0IiwiZXh0IiwicmVtb3ZlQ29uZmxpY3RNb2R1bGVzIiwibW9kdWxlTGlzdCIsInVwZGF0ZWRMaXN0IiwiT2JqZWN0Iiwia2V5cyIsIm1vZHVsZU5hbWUiLCJyZWdleCIsIlJlZ0V4cCIsInRlc3QiLCJyZW1vdmVGaWxlcyIsImlzUmVsYXRpdmUiLCJmaWxlUGF0aCIsInJlbW92ZU1vZHVsZXMiLCJzZXRQYWNrYWdlSnNvbiIsImpzb24iLCJzdHJpbmdpZnkiLCJsaW5rZWRNb2R1bGVzIiwic3RhcnRQYXRoIiwid29ya2luZ1BhdGgiLCJtb2R1bGVQYXRoIiwicHJlZml4Iiwic3BsaXQiLCJwb3AiLCJmb3VuZFBhdGhzIiwicmVkdWNlIiwibGlzdCIsImZvdW5kUGF0aCIsInN0YXRzIiwiZGVlcExpc3QiLCJpc1N5bWJvbGljTGluayIsIm1vZHVsZU5hbWVzIiwiZmlsdGVyIiwiaXRlbSIsInBhdGgiLCJjaGVja0xpbmtlZE1vZHVsZXMiLCJsaW5rZWQiLCJtc2dNb2R1bGUiLCJsaW5rZWRNc2ciLCJtc2ciLCJsaW5rZWRNb2R1bGUiLCJkaW1Cb3JkZXIiLCJwYWRkaW5nIiwidXBkYXRlVGVtcGxhdGVOYW1lIiwicmVwbGFjZSIsInJlcGxhY2VDYXBzIiwiZGF0YSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLFFBQU8sS0FBSztBQUN4RyxTQUFRQyxRQUFRQyxRQUFRLFFBQU8sT0FBTztBQUN0QyxPQUFPQyxhQUFhLG9CQUFvQjtBQUN4QyxPQUFPQyxTQUFTLE1BQU07QUFDdEIsU0FBUUMsWUFBWUMsWUFBWSxFQUFF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
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hcHAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQge2NvcHlGaWxlLCBleGlzdHNTeW5jLCBsc3RhdFN5bmMsIG1rZGlyU3luYywgcmVhZGRpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB7YmFzZW5hbWUgYXMgcGF0aEJhc2VuYW1lLCBqb2luIGFzIHBhdGhKb2luLCByZWxhdGl2ZSBhcyBwYXRoUmVsYXRpdmUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtyaW1yYWZTeW5jfSBmcm9tICdyaW1yYWYnO1xuXG5cbmltcG9ydCB7bG9nfSBmcm9tICcuL2xvZy5qcyc7XG5cbmltcG9ydCB0eXBlIHtMZXhDb25maWdUeXBlfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZW5hbWVzUHJvcHMge1xuICByZWFkb25seSBjYWxsYmFjaz86IChzdGF0dXM6IG51bWJlcik9PiB2b2lkO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZVR5cGVzY3JpcHQ/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRmlsZW5hbWVzUmVzdWx0IHtcbiAgbmFtZUNhcHM6IHN0cmluZztcbiAgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XG4gIHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZpbGVuYW1lcyA9IChwcm9wczogR2V0RmlsZW5hbWVzUHJvcHMpOiBGaWxlbmFtZXNSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCB7Y2FsbGJhY2ssIGNsaU5hbWUsIG5hbWUsIHF1aWV0LCB0eXBlLCB1c2VUeXBlc2NyaXB0fSA9IHByb3BzO1xuXG4gIGxldCBuYW1lQ2Fwczogc3RyaW5nO1xuICBjb25zdCBpdGVtVHlwZXM6IHN0cmluZ1tdID0gWydzdG9yZXMnLCAndmlld3MnXTtcblxuICBpZighbmFtZSkge1xuICAgIGlmKGl0ZW1UeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke3R5cGV9IG5hbWUgaXMgcmVxdWlyZWQuIFBsZWFzZSB1c2UgJ2xleCAtaCcgZm9yIG9wdGlvbnMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2s/LigxKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5hbWVDYXBzID0gYCR7bmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke25hbWUuc3Vic3RyKDEpfWA7XG4gIH1cblxuICBsb2coYCR7Y2xpTmFtZX0gYWRkaW5nICR7bmFtZX0gJHt0eXBlfS4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGxldCB0ZW1wbGF0ZVBhdGg6IHN0cmluZztcbiAgbGV0IHRlbXBsYXRlRXh0OiBzdHJpbmc7XG4gIGxldCB0ZW1wbGF0ZVJlYWN0OiBzdHJpbmc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIHRlbXBsYXRlUGF0aCA9ICcuLi8uLi90ZW1wbGF0ZXMvdHlwZXNjcmlwdCc7XG4gICAgdGVtcGxhdGVFeHQgPSAnLnRzJztcbiAgICB0ZW1wbGF0ZVJlYWN0ID0gJy50c3gnO1xuICB9IGVsc2Uge1xuICAgIHRlbXBsYXRlUGF0aCA9ICcuLi8uLi90ZW1wbGF0ZXMvZmxvdyc7XG4gICAgdGVtcGxhdGVFeHQgPSAnLmpzJztcbiAgICB0ZW1wbGF0ZVJlYWN0ID0gJy5qcyc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWVDYXBzLFxuICAgIHRlbXBsYXRlRXh0LFxuICAgIHRlbXBsYXRlUGF0aCxcbiAgICB0ZW1wbGF0ZVJlYWN0XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5uZXIge1xuICBmYWlsOiAodGV4dD86IHN0cmluZyk9PiB2b2lkO1xuICBzdGFydDogKHRleHQ/OiBzdHJpbmcpPT4gdm9pZDtcbiAgc3VjY2VlZDogKHRleHQ/OiBzdHJpbmcpPT4gdm9pZDtcbiAgdGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNwaW5uZXIgPSAocXVpZXQgPSBmYWxzZSk6IFNwaW5uZXIgPT4ge1xuICBpZihxdWlldCkge1xuICAgIHJldHVybiB7XG4gICAgICBmYWlsOiAoKSA9PiB7fSxcbiAgICAgIHN0YXJ0OiAoKSA9PiB7fSxcbiAgICAgIHN1Y2NlZWQ6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBvcmEoe2NvbG9yOiAneWVsbG93J30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb2dyZXNzQmFyID0gKHBlcmNlbnRhZ2U6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHdpZHRoID0gMjA7XG4gIGNvbnN0IGZpbGxlZCA9IE1hdGgucm91bmQoKHBlcmNlbnRhZ2UgLyAxMDApICogd2lkdGgpO1xuICBjb25zdCBlbXB0eSA9IHdpZHRoIC0gZmlsbGVkO1xuXG4gIGNvbnN0IGZpbGxlZEJhciA9IGNoYWxrLmN5YW4oJ+KWiCcpLnJlcGVhdChmaWxsZWQpO1xuICBjb25zdCBlbXB0eUJhciA9IGNoYWxrLmdyYXkoJ+KWkScpLnJlcGVhdChlbXB0eSk7XG5cbiAgcmV0dXJuIGZpbGxlZEJhciArIGVtcHR5QmFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVdlYnBhY2tQcm9ncmVzcyA9IChcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHNwaW5uZXI6IFNwaW5uZXIsXG4gIHF1aWV0OiBib29sZWFuLFxuICBlbW9qaTogc3RyaW5nLFxuICBhY3Rpb246IHN0cmluZ1xuKTogdm9pZCA9PiB7XG4gIGlmKHF1aWV0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcHJvZ3Jlc3NNYXRjaCA9IG91dHB1dC5tYXRjaCgvXFxbd2VicGFja1xcLlByb2dyZXNzXFxdIChcXGQrKSUvKTtcbiAgaWYocHJvZ3Jlc3NNYXRjaCkge1xuICAgIGNvbnN0IHByb2dyZXNzID0gcGFyc2VJbnQocHJvZ3Jlc3NNYXRjaFsxXSk7XG4gICAgY29uc3QgcHJvZ3Jlc3NCYXIgPSBjcmVhdGVQcm9ncmVzc0Jhcihwcm9ncmVzcyk7XG4gICAgc3Bpbm5lci50ZXh0ID0gYCR7ZW1vaml9ICR7YWN0aW9ufTogJHtwcm9ncmVzc0Jhcn0gJHtwcm9ncmVzc30lYDtcbiAgfSBlbHNlIGlmKG91dHB1dC5pbmNsdWRlcygnW3dlYnBhY2suUHJvZ3Jlc3NdJykpIHtcbiAgICBjb25zdCBnZW5lcmFsUHJvZ3Jlc3NNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspJS8pO1xuICAgIGlmKGdlbmVyYWxQcm9ncmVzc01hdGNoKSB7XG4gICAgICBjb25zdCBwcm9ncmVzcyA9IHBhcnNlSW50KGdlbmVyYWxQcm9ncmVzc01hdGNoWzFdKTtcbiAgICAgIGNvbnN0IHByb2dyZXNzQmFyID0gY3JlYXRlUHJvZ3Jlc3NCYXIocHJvZ3Jlc3MpO1xuICAgICAgc3Bpbm5lci50ZXh0ID0gYCR7ZW1vaml9ICR7YWN0aW9ufTogJHtwcm9ncmVzc0Jhcn0gJHtwcm9ncmVzc30lYDtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5RmlsZXMgPSBhc3luYyAoZmlsZXM6IHN0cmluZ1tdLCB0eXBlTmFtZTogc3RyaW5nLCBzcGlubmVyLCBjb25maWc6IExleENvbmZpZ1R5cGUpID0+IHtcbiAgY29uc3Qge291dHB1dEZ1bGxQYXRoLCBzb3VyY2VGdWxsUGF0aH0gPSBjb25maWc7XG4gIGNvbnN0IGl0ZW1zID0gZmlsZXMubWFwKChmaWxlTmFtZTogc3RyaW5nKSA9PiAoe1xuICAgIGZyb206IGZpbGVOYW1lLFxuICAgIHRvOiBwYXRoUmVzb2x2ZShvdXRwdXRGdWxsUGF0aCwgcGF0aFJlbGF0aXZlKHNvdXJjZUZ1bGxQYXRoLCBmaWxlTmFtZSkpXG4gIH0pKTtcblxuICB0cnkge1xuICAgIHNwaW5uZXIuc3RhcnQoYENvcHlpbmcgJHt0eXBlTmFtZX0gZmlsZXMuLi5gKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoKHtmcm9tLCB0b30pID0+IG5ldyBQcm9taXNlKFxuICAgICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBta2RpclN5bmMocGF0aFJlc29sdmUodG8sICcuLicpLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgICAgIHJldHVybiBjb3B5RmlsZShmcm9tLCB0bywgKGNvcHlFcnJvcikgPT4ge1xuICAgICAgICAgIGlmKGNvcHlFcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApKSk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgY29waWVkICR7ZmlsZXMubGVuZ3RofSAke3R5cGVOYW1lfSBmaWxlcyFgKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbChgQ29weWluZyBvZiAke3R5cGVOYW1lfSBmaWxlcyBmYWlsZWQuYCk7XG4gICAgbG9nKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicpO1xuICAgIGxvZyhlcnJvciwgJ2Vycm9yJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5Q29uZmlndXJlZEZpbGVzID0gYXN5bmMgKHNwaW5uZXIsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSwgcXVpZXQ6IGJvb2xlYW4pID0+IHtcbiAgY29uc3Qge2NvcHlGaWxlczogY29weUZpbGVzQ29uZmlnLCBvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHNvdXJjZVBhdGh9ID0gY29uZmlnO1xuICBpZighY29weUZpbGVzQ29uZmlnIHx8IGNvcHlGaWxlc0NvbmZpZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0NvcHlpbmcgY29uZmlndXJlZCBmaWxlcy4uLicpO1xuICAgIGxldCB0b3RhbENvcGllZCA9IDA7XG5cbiAgICBjb25zdCBiYXNlRGlyID0gc291cmNlRnVsbFBhdGggfHwgKHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBzb3VyY2VQYXRoKSA6IHByb2Nlc3MuY3dkKCkpO1xuICAgIGNvbnN0IGFsbENvcHlQcm9taXNlczogUHJvbWlzZTx1bmtub3duPltdID0gW107XG5cbiAgICBmb3IoY29uc3QgcGF0dGVybiBvZiBjb3B5RmlsZXNDb25maWcpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0dGVybiA9IHBhdGhSZXNvbHZlKGJhc2VEaXIsIHBhdHRlcm4pO1xuICAgICAgY29uc3QgbWF0Y2hpbmdGaWxlcyA9IGdsb2JTeW5jKHJlc29sdmVkUGF0dGVybiwge1xuICAgICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICAgICAgbm9kaXI6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBpZihtYXRjaGluZ0ZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgICBsb2coYFdhcm5pbmc6IE5vIGZpbGVzIGZvdW5kIG1hdGNoaW5nIHBhdHRlcm46ICR7cGF0dGVybn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29weVByb21pc2VzID0gbWF0Y2hpbmdGaWxlcy5tYXAoKHNvdXJjZUZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFJlbGF0aXZlKGJhc2VEaXIsIHNvdXJjZUZpbGUpO1xuICAgICAgICBjb25zdCBkZXN0UGF0aCA9IHBhdGhSZXNvbHZlKG91dHB1dEZ1bGxQYXRoLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICBjb25zdCBkZXN0RGlyID0gcGF0aFJlc29sdmUoZGVzdFBhdGgsICcuLicpO1xuICAgICAgICBta2RpclN5bmMoZGVzdERpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29weUZpbGUoc291cmNlRmlsZSwgZGVzdFBhdGgsIChjb3B5RXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmKGNvcHlFcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoY29weUVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGFsbENvcHlQcm9taXNlcy5wdXNoKC4uLmNvcHlQcm9taXNlcyk7XG4gICAgICB0b3RhbENvcGllZCArPSBtYXRjaGluZ0ZpbGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChhbGxDb3B5UHJvbWlzZXMpO1xuXG4gICAgaWYodG90YWxDb3BpZWQgPiAwKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBjb3BpZWQgJHt0b3RhbENvcGllZH0gY29uZmlndXJlZCBmaWxlcyFgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdObyBjb25maWd1cmVkIGZpbGVzIHRvIGNvcHknKTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMnKTtcbiAgICBsb2coYEVycm9yIGNvcHlpbmcgY29uZmlndXJlZCBmaWxlczogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlU3luYyA9IChzb3VyY2U6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpID0+IHtcbiAgbGV0IHRhcmdldEZpbGU6IHN0cmluZyA9IHRhcmdldDtcblxuICBpZihleGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICBpZihsc3RhdFN5bmModGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0YXJnZXRGaWxlID0gcGF0aEpvaW4odGFyZ2V0LCBwYXRoQmFzZW5hbWUoc291cmNlKSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVGaWxlU3luYyh0YXJnZXRGaWxlLCByZWFkRmlsZVN5bmMoc291cmNlKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGxldCBmaWxlczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCB0YXJnZXRGb2xkZXI6IHN0cmluZyA9IHBhdGhKb2luKHRhcmdldCwgcGF0aEJhc2VuYW1lKHNvdXJjZSkpO1xuXG4gIGlmKCFleGlzdHNTeW5jKHRhcmdldEZvbGRlcikpIHtcbiAgICBta2RpclN5bmModGFyZ2V0Rm9sZGVyKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhzb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlcyA9IHJlYWRkaXJTeW5jKHNvdXJjZSk7XG4gICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBjdXJTb3VyY2U6IHN0cmluZyA9IHBhdGhKb2luKHNvdXJjZSwgZmlsZSk7XG5cbiAgICAgIGlmKGxzdGF0U3luYyhjdXJTb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMoY3VyU291cmNlLCB0YXJnZXRGb2xkZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29weUZpbGVTeW5jKGN1clNvdXJjZSwgdGFyZ2V0Rm9sZGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhY2thZ2VKc29uID0gKHBhY2thZ2VQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG4gIGNvbnN0IHBhY2thZ2VEYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZm9ybWF0UGF0aCkudG9TdHJpbmcoKTtcblxuICByZXR1cm4gSlNPTi5wYXJzZShwYWNrYWdlRGF0YSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZXNCeUV4dCA9IChleHQ6IHN0cmluZywgY29uZmlnOiBMZXhDb25maWdUeXBlKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICByZXR1cm4gZ2xvYlN5bmMoYCoqLyoqJHtleHR9YCwge1xuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIGN3ZDogc291cmNlRnVsbFBhdGgsXG4gICAgbm9kaXI6IHRydWVcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQ29uZmxpY3RNb2R1bGVzID0gKG1vZHVsZUxpc3Q6IG9iamVjdCkgPT4ge1xuICBjb25zdCB1cGRhdGVkTGlzdDogb2JqZWN0ID0gey4uLm1vZHVsZUxpc3R9O1xuXG4gIE9iamVjdC5rZXlzKHVwZGF0ZWRMaXN0KS5mb3JFYWNoKChtb2R1bGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnXig/IUB0eXBlcy8pLio/KHZpdGVzdHx3ZWJwYWNrKS4qJCcsICdnaScpO1xuICAgIGlmKHJlZ2V4LnRlc3QobW9kdWxlTmFtZSkpIHtcbiAgICAgIGRlbGV0ZSB1cGRhdGVkTGlzdFttb2R1bGVOYW1lXTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB1cGRhdGVkTGlzdDtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVGaWxlcyA9IChmaWxlTmFtZTogc3RyaW5nLCBpc1JlbGF0aXZlOiBib29sZWFuID0gZmFsc2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGlzUmVsYXRpdmUgPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlTmFtZSkgOiBmaWxlTmFtZTtcblxuICB0cnkge1xuICAgIHJpbXJhZlN5bmMoZmlsZVBhdGgpO1xuICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTW9kdWxlcyA9ICgpID0+IG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9ub2RlX21vZHVsZXMnLCB0cnVlKTtcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi95YXJuLmxvY2snLCB0cnVlKTtcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9wYWNrYWdlLWxvY2suanNvbicsIHRydWUpO1xuXG4gICAgcmVzb2x2ZShudWxsKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0UGFja2FnZUpzb24gPSAoanNvbiwgcGFja2FnZVBhdGg/OiBzdHJpbmcpID0+IHtcbiAgaWYoIWpzb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmb3JtYXRQYXRoOiBzdHJpbmcgPSBwYWNrYWdlUGF0aCB8fCBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuXG4gIHdyaXRlRmlsZVN5bmMoZm9ybWF0UGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMikpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rZWRNb2R1bGVUeXBlIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBsaW5rZWRNb2R1bGVzID0gKHN0YXJ0UGF0aD86IHN0cmluZyk6IExpbmtlZE1vZHVsZVR5cGVbXSA9PiB7XG4gIGNvbnN0IHdvcmtpbmdQYXRoOiBzdHJpbmcgPSBzdGFydFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgbGV0IG1vZHVsZVBhdGg6IHN0cmluZztcbiAgbGV0IHByZWZpeDogc3RyaW5nO1xuXG4gIGlmKHdvcmtpbmdQYXRoLmluY2x1ZGVzKCdAJykpIHtcbiAgICBwcmVmaXggPSBgQCR7d29ya2luZ1BhdGguc3BsaXQoJ0AnKS5wb3AoKX1gO1xuICAgIG1vZHVsZVBhdGggPSB3b3JraW5nUGF0aDtcbiAgfSBlbHNlIHtcbiAgICBtb2R1bGVQYXRoID0gcGF0aEpvaW4od29ya2luZ1BhdGgsICdub2RlX21vZHVsZXMnKTtcbiAgfVxuXG4gIGNvbnN0IGZvdW5kUGF0aHM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoJyonLCB7XG4gICAgYWJzb2x1dGU6IHRydWUsXG4gICAgY3dkOiBtb2R1bGVQYXRoLFxuICAgIG5vZGlyOiBmYWxzZVxuICB9KTtcblxuICByZXR1cm4gZm91bmRQYXRocy5yZWR1Y2UoKGxpc3Q6IExpbmtlZE1vZHVsZVR5cGVbXSwgZm91bmRQYXRoOiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSBsc3RhdFN5bmMoZm91bmRQYXRoKTtcblxuICAgICAgaWYoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBjb25zdCBkZWVwTGlzdDogTGlua2VkTW9kdWxlVHlwZVtdID0gbGlua2VkTW9kdWxlcyhmb3VuZFBhdGgpO1xuICAgICAgICBsaXN0LnB1c2goLi4uZGVlcExpc3QpO1xuICAgICAgfSBlbHNlIGlmKHN0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZXM6IHN0cmluZ1tdID0gKFtwcmVmaXgsIHBhdGhCYXNlbmFtZShmb3VuZFBhdGgpXSkuZmlsdGVyKChpdGVtOiBzdHJpbmcpID0+ICFpc0VtcHR5KGl0ZW0pKTtcbiAgICAgICAgbGlzdC5wdXNoKHtuYW1lOiBgJHttb2R1bGVOYW1lcy5qb2luKCcvJyl9YCwgcGF0aDogZm91bmRQYXRofSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9XG4gIH0sIFtdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0xpbmtlZE1vZHVsZXMgPSAoKSA9PiB7XG4gIGNvbnN0IGxpbmtlZCA9IGxpbmtlZE1vZHVsZXMoKTtcblxuICBpZihsaW5rZWQubGVuZ3RoKSB7XG4gICAgY29uc3QgbXNnTW9kdWxlOiBzdHJpbmcgPSBsaW5rZWQubGVuZ3RoID4gMSA/ICdNb2R1bGVzJyA6ICdNb2R1bGUnO1xuICAgIGNvbnN0IGxpbmtlZE1zZzogc3RyaW5nID0gbGlua2VkLnJlZHVjZShcbiAgICAgIChtc2c6IHN0cmluZywgbGlua2VkTW9kdWxlOiBMaW5rZWRNb2R1bGVUeXBlKSA9PlxuICAgICAgICBgJHttc2d9XFxuICogJHtsaW5rZWRNb2R1bGUubmFtZX1gLFxuICAgICAgYExpbmtlZCAke21zZ01vZHVsZX06YFxuICAgICk7XG5cbiAgICBsb2coYm94ZW4obGlua2VkTXNnLCB7ZGltQm9yZGVyOiB0cnVlLCBwYWRkaW5nOiAxfSksICd3YXJuJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUZW1wbGF0ZU5hbWUgPSAoZmlsZVBhdGg6IHN0cmluZywgcmVwbGFjZTogc3RyaW5nLCByZXBsYWNlQ2Fwczogc3RyaW5nKSA9PiB7XG4gIGxldCBkYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4Jyk7XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoL3NhbXBsZS9nLCByZXBsYWNlKTtcbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvU2FtcGxlL2csIHJlcGxhY2VDYXBzKTtcbiAgd3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZGF0YSwgJ3V0ZjgnKTtcbn07XG4iXSwibmFtZXMiOlsiYm94ZW4iLCJjaGFsayIsImNvcHlGaWxlIiwiZXhpc3RzU3luYyIsImxzdGF0U3luYyIsIm1rZGlyU3luYyIsInJlYWRkaXJTeW5jIiwicmVhZEZpbGVTeW5jIiwid3JpdGVGaWxlU3luYyIsInN5bmMiLCJnbG9iU3luYyIsImlzRW1wdHkiLCJvcmEiLCJiYXNlbmFtZSIsInBhdGhCYXNlbmFtZSIsImpvaW4iLCJwYXRoSm9pbiIsInJlbGF0aXZlIiwicGF0aFJlbGF0aXZlIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwicmltcmFmU3luYyIsImxvZyIsImdldEZpbGVuYW1lcyIsInByb3BzIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwibmFtZSIsInF1aWV0IiwidHlwZSIsInVzZVR5cGVzY3JpcHQiLCJuYW1lQ2FwcyIsIml0ZW1UeXBlcyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJ0ZW1wbGF0ZVBhdGgiLCJ0ZW1wbGF0ZUV4dCIsInRlbXBsYXRlUmVhY3QiLCJjcmVhdGVTcGlubmVyIiwiZmFpbCIsInN0YXJ0Iiwic3VjY2VlZCIsImNvbG9yIiwiY3JlYXRlUHJvZ3Jlc3NCYXIiLCJwZXJjZW50YWdlIiwid2lkdGgiLCJmaWxsZWQiLCJNYXRoIiwicm91bmQiLCJlbXB0eSIsImZpbGxlZEJhciIsImN5YW4iLCJyZXBlYXQiLCJlbXB0eUJhciIsImdyYXkiLCJoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MiLCJvdXRwdXQiLCJzcGlubmVyIiwiZW1vamkiLCJhY3Rpb24iLCJwcm9ncmVzc01hdGNoIiwibWF0Y2giLCJwcm9ncmVzcyIsInBhcnNlSW50IiwicHJvZ3Jlc3NCYXIiLCJ0ZXh0IiwiZ2VuZXJhbFByb2dyZXNzTWF0Y2giLCJjb3B5RmlsZXMiLCJmaWxlcyIsInR5cGVOYW1lIiwiY29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJzb3VyY2VGdWxsUGF0aCIsIml0ZW1zIiwibWFwIiwiZmlsZU5hbWUiLCJmcm9tIiwidG8iLCJQcm9taXNlIiwiYWxsIiwicmVqZWN0IiwicmVjdXJzaXZlIiwiY29weUVycm9yIiwibGVuZ3RoIiwiZXJyb3IiLCJtZXNzYWdlIiwiY29weUNvbmZpZ3VyZWRGaWxlcyIsImNvcHlGaWxlc0NvbmZpZyIsInNvdXJjZVBhdGgiLCJ0b3RhbENvcGllZCIsImJhc2VEaXIiLCJwcm9jZXNzIiwiY3dkIiwiYWxsQ29weVByb21pc2VzIiwicGF0dGVybiIsInJlc29sdmVkUGF0dGVybiIsIm1hdGNoaW5nRmlsZXMiLCJhYnNvbHV0ZSIsIm5vZGlyIiwiY29weVByb21pc2VzIiwic291cmNlRmlsZSIsInJlbGF0aXZlUGF0aCIsImRlc3RQYXRoIiwiZGVzdERpciIsInB1c2giLCJjb3B5RmlsZVN5bmMiLCJzb3VyY2UiLCJ0YXJnZXQiLCJ0YXJnZXRGaWxlIiwiaXNEaXJlY3RvcnkiLCJjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyIsInRhcmdldEZvbGRlciIsImZvckVhY2giLCJmaWxlIiwiY3VyU291cmNlIiwiZ2V0UGFja2FnZUpzb24iLCJwYWNrYWdlUGF0aCIsImZvcm1hdFBhdGgiLCJwYWNrYWdlRGF0YSIsInRvU3RyaW5nIiwiSlNPTiIsInBhcnNlIiwiZ2V0RmlsZXNCeUV4dCIsImV4dCIsInJlbW92ZUNvbmZsaWN0TW9kdWxlcyIsIm1vZHVsZUxpc3QiLCJ1cGRhdGVkTGlzdCIsIk9iamVjdCIsImtleXMiLCJtb2R1bGVOYW1lIiwicmVnZXgiLCJSZWdFeHAiLCJ0ZXN0IiwicmVtb3ZlRmlsZXMiLCJpc1JlbGF0aXZlIiwiZmlsZVBhdGgiLCJyZW1vdmVNb2R1bGVzIiwic2V0UGFja2FnZUpzb24iLCJqc29uIiwic3RyaW5naWZ5IiwibGlua2VkTW9kdWxlcyIsInN0YXJ0UGF0aCIsIndvcmtpbmdQYXRoIiwibW9kdWxlUGF0aCIsInByZWZpeCIsInNwbGl0IiwicG9wIiwiZm91bmRQYXRocyIsInJlZHVjZSIsImxpc3QiLCJmb3VuZFBhdGgiLCJzdGF0cyIsImRlZXBMaXN0IiwiaXNTeW1ib2xpY0xpbmsiLCJtb2R1bGVOYW1lcyIsImZpbHRlciIsIml0ZW0iLCJwYXRoIiwiY2hlY2tMaW5rZWRNb2R1bGVzIiwibGlua2VkIiwibXNnTW9kdWxlIiwibGlua2VkTXNnIiwibXNnIiwibGlua2VkTW9kdWxlIiwiZGltQm9yZGVyIiwicGFkZGluZyIsInVwZGF0ZVRlbXBsYXRlTmFtZSIsInJlcGxhY2UiLCJyZXBsYWNlQ2FwcyIsImRhdGEiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVELE9BQU9BLFdBQVcsUUFBUTtBQUMxQixPQUFPQyxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxFQUFFQyxXQUFXLEVBQUVDLFlBQVksRUFBRUMsYUFBYSxRQUFPLEtBQUs7QUFDeEcsU0FBUUMsUUFBUUMsUUFBUSxRQUFPLE9BQU87QUFDdEMsT0FBT0MsYUFBYSxvQkFBb0I7QUFDeEMsT0FBT0MsU0FBUyxNQUFNO0FBQ3RCLFNBQVFDLFlBQVlDLFlBQVks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
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92aXRlc3QuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdHlwZSBNb2NrID0gaW1wb3J0KCd2aXRlc3QnKS5Nb2NrO1xuICB0eXBlIE1vY2tlZEZ1bmN0aW9uPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4gPSBpbXBvcnQoJ3ZpdGVzdCcpLk1vY2tlZEZ1bmN0aW9uPFQ+O1xuICB0eXBlIE1vY2tlZENsYXNzPFQgZXh0ZW5kcyBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+ID0gaW1wb3J0KCd2aXRlc3QnKS5Nb2NrZWRDbGFzczxUPjtcbiAgdHlwZSBTcHlJbnN0YW5jZSA9IGltcG9ydCgndml0ZXN0JykuU3B5SW5zdGFuY2U7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/lex",
3
- "version": "1.54.2",
3
+ "version": "1.54.3",
4
4
  "description": "Lex",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -62,11 +62,11 @@
62
62
  "publish:minor": "npm version minor && npm publish",
63
63
  "publish:patch": "npm version patch && npm publish",
64
64
  "test": "NODE_ENV=test && (npm run lint || true) && npm run test:unit",
65
- "test:unit": "NODE_ENV=test && npm run env && npx jest",
66
- "test:integration": "NODE_ENV=test && npx jest --testPathPattern=integration",
67
- "test:cli": "NODE_ENV=test && npx jest --testPathPattern=cli",
65
+ "test:unit": "NODE_ENV=test && npm run env && npx vitest run",
66
+ "test:integration": "NODE_ENV=test && npx vitest run \"src/**/*.integration.*\"",
67
+ "test:cli": "NODE_ENV=test && npx vitest run \"src/**/*.cli.*\"",
68
68
  "test:commands": "NODE_ENV=test && npm run test:cli && npm run test:integration",
69
- "test:coverage": "NODE_ENV=test && npx jest --coverage --coverageDirectory=coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=html",
69
+ "test:coverage": "NODE_ENV=test && npx vitest run --coverage",
70
70
  "test:coverage:upload": "codecov",
71
71
  "test:webpack": "node scripts/test-webpack.js",
72
72
  "type-check": "tsc --noEmit --project tsconfig.lint.json",
@@ -83,34 +83,35 @@
83
83
  "dependencies": {
84
84
  "@mdx-js/loader": "^3.1.1",
85
85
  "@nlabs/webpack-plugin-static-site": "*",
86
- "@storybook/addon-docs": "^10.2.1",
87
- "@storybook/addon-links": "^10.2.1",
86
+ "@storybook/addon-docs": "^10.2.12",
87
+ "@storybook/addon-links": "^10.2.12",
88
88
  "@storybook/addon-postcss": "^2.0.0",
89
89
  "@storybook/addon-styling-webpack": "^3.0.0",
90
- "@storybook/addon-themes": "^10.2.1",
91
- "@storybook/cli": "^10.2.1",
92
- "@storybook/react": "^10.2.1",
93
- "@storybook/react-webpack5": "^10.2.1",
94
- "@swc/cli": "^0.7.10",
95
- "@swc/core": "^1.15.11",
96
- "@swc/jest": "^0.2.39",
90
+ "@storybook/addon-themes": "^10.2.12",
91
+ "@storybook/cli": "^10.2.12",
92
+ "@storybook/react": "^10.2.12",
93
+ "@storybook/react-webpack5": "^10.2.12",
94
+ "@swc/cli": "^0.8.0",
95
+ "@swc/core": "^1.15.13",
96
+ "@tailwindcss/forms": "^0.5.11",
97
97
  "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
98
- "@tailwindcss/postcss": "4.1.18",
98
+ "@tailwindcss/postcss": "4.2.1",
99
99
  "@testing-library/jest-dom": "^6.9.1",
100
100
  "@testing-library/react": "^16.3.2",
101
+ "@vitest/coverage-v8": "^4.0.18",
101
102
  "assert": "^2.1.0",
102
- "autoprefixer": "^10.4.23",
103
+ "autoprefixer": "^10.4.27",
103
104
  "boxen": "8.0.1",
104
105
  "buffer": "^6.0.3",
105
- "caniuse-lite": "1.0.30001766",
106
+ "caniuse-lite": "1.0.30001774",
106
107
  "chalk": "^5.6.2",
107
- "commander": "^14.0.2",
108
+ "commander": "^14.0.3",
108
109
  "compare-versions": "^6.1.1",
109
110
  "compression-webpack-plugin": "^11.1.0",
110
111
  "copy-webpack-plugin": "^13.0.1",
111
112
  "core-js": "^3.48.0",
112
113
  "crypto-js": "^4.2.0",
113
- "css-loader": "^7.1.3",
114
+ "css-loader": "^7.1.4",
114
115
  "css-minimizer-webpack-plugin": "^7.0.4",
115
116
  "cssnano": "^7.1.2",
116
117
  "dotenv-webpack": "^8.1.1",
@@ -122,42 +123,37 @@
122
123
  "express": "^5.2.1",
123
124
  "favicons-webpack-plugin": "^6.0.1",
124
125
  "find-file-up": "^2.0.1",
125
- "glob": "^13.0.0",
126
+ "glob": "^13.0.6",
126
127
  "global": "^4.4.0",
127
- "graphql": "^16.12.0",
128
+ "graphql": "^16.13.0",
128
129
  "graphql-tag": "^2.12.6",
129
130
  "html-loader": "^5.1.0",
130
131
  "html-webpack-plugin": "^5.6.6",
131
132
  "https-browserify": "^1.0.0",
132
133
  "image-webpack-loader": "^8.1.0",
133
- "jest": "^30.2.0",
134
- "jest-circus": "^30.2.0",
135
- "jest-cli": "^30.2.0",
136
- "jest-environment-jsdom": "^30.2.0",
137
- "jest-transform-graphql": "2.1.0",
138
- "jest-util": "^30.2.0",
134
+ "jsdom": "^28.1.0",
139
135
  "latest-version": "9.0.0",
140
136
  "lodash": "^4.17.23",
141
137
  "luxon": "^3.7.2",
142
138
  "math-expression-evaluator": "^2.0.7",
143
139
  "mini-css-extract-plugin": "^2.10.0",
144
- "npm-check-updates": "^19.3.2",
145
- "openai": "^6.16.0",
146
- "ora": "9.1.0",
140
+ "npm-check-updates": "^19.5.0",
141
+ "openai": "^6.25.0",
142
+ "ora": "9.3.0",
147
143
  "os-browserify": "^0.3.0",
148
144
  "path-browserify": "^1.0.1",
149
145
  "postcss": "^8.5.6",
150
146
  "postcss-browser-reporter": "^0.7.0",
151
147
  "postcss-cli": "^11.0.1",
152
- "postcss-custom-properties": "^15.0.0",
148
+ "postcss-custom-properties": "^15.0.1",
153
149
  "postcss-flexbugs-fixes": "^5.0.2",
154
150
  "postcss-for": "^2.1.1",
155
151
  "postcss-hash": "^3.0.0",
156
152
  "postcss-import": "16.1.1",
157
- "postcss-loader": "^8.2.0",
153
+ "postcss-loader": "^8.2.1",
158
154
  "postcss-nesting": "^14.0.0",
159
155
  "postcss-percentage": "^0.0.0",
160
- "postcss-preset-env": "^11.1.2",
156
+ "postcss-preset-env": "^11.2.0",
161
157
  "postcss-simple-vars": "^7.0.1",
162
158
  "postcss-svgo": "7.1.0",
163
159
  "postcss-url": "10.1.3",
@@ -168,23 +164,24 @@
168
164
  "react-dom": "^19.2.4",
169
165
  "regenerator-runtime": "^0.14.1",
170
166
  "resolve": "^1.22.11",
171
- "rimraf": "^6.1.2",
172
- "semver": "^7.7.3",
167
+ "rimraf": "^6.1.3",
168
+ "semver": "^7.7.4",
173
169
  "source-map-loader": "^5.0.0",
174
- "storybook": "^10.2.1",
170
+ "storybook": "^10.2.12",
175
171
  "stream-browserify": "^3.0.0",
176
172
  "stream-http": "^3.2.0",
177
173
  "style-loader": "^4.0.0",
178
174
  "svg-spritemap-webpack-plugin": "^5.1.0",
179
175
  "svgo": "4.0.0",
180
176
  "swc-loader": "^0.2.7",
181
- "tailwindcss": "^4.1.18",
177
+ "tailwindcss": "^4.2.1",
182
178
  "ts-node": "^10.9.2",
183
179
  "tsconfig-paths-webpack-plugin": "^4.2.0",
184
180
  "typescript": "5.9.3",
185
181
  "util": "^0.12.5",
182
+ "vitest": "^4.0.18",
186
183
  "vm-browserify": "^1.1.2",
187
- "webpack": "5.104.1",
184
+ "webpack": "5.105.2",
188
185
  "webpack-bundle-analyzer": "^5.2.0",
189
186
  "webpack-cli": "^6.0.1",
190
187
  "webpack-merge": "^6.0.1",
@@ -193,29 +190,32 @@
193
190
  },
194
191
  "devDependencies": {
195
192
  "@types/express": "^5.0.6",
196
- "@types/jest": "^30.0.0",
197
193
  "@types/luxon": "^3.7.1",
198
- "@types/node": "^25.1.0",
194
+ "@types/node": "^25.3.1",
199
195
  "@types/ora": "^3.2.0",
200
- "@types/react": "^19.2.10",
196
+ "@types/react": "^19.2.14",
201
197
  "@types/webpack": "^5.28.5"
202
198
  },
203
199
  "overrides": {
200
+ "ajv": ">=8.18.0",
204
201
  "cheerio": "^1.1.2",
205
202
  "cross-spawn": "^7.0.6",
206
203
  "css-select": "^6.0.0",
207
204
  "diff": "8.0.3",
205
+ "fast-xml-parser": ">=5.4.1",
208
206
  "got": "^14.6.6",
209
207
  "http-cache-semantics": "^4.2.0",
210
208
  "http-proxy-middleware": "^3.0.5",
211
209
  "lodash.pick": "^4.4.0",
210
+ "minimatch": ">=10.2.4",
212
211
  "querystring": false,
213
212
  "gm": false,
214
213
  "lodash-es": "^4.17.23",
215
214
  "node-domexception": false,
216
215
  "nth-check": "^2.1.1",
217
216
  "postcss": "^8.5.6",
218
- "qs": "^6.14.1",
217
+ "qs": ">=6.15.0",
218
+ "rollup": ">=4.59.0",
219
219
  "semver-regex": "^4.0.5",
220
220
  "tmp": "^0.2.5"
221
221
  },