testcafe 2.0.0-rc.3 → 2.0.0-rc.4

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.
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -16,14 +39,15 @@ const test_page_url_1 = require("../../../../api/test-page-url");
16
39
  const exportble_lib_path_1 = __importDefault(require("../../exportble-lib-path"));
17
40
  const disable_v8_optimization_note_1 = __importDefault(require("../../disable-v8-optimization-note"));
18
41
  // NOTE: For type definitions only
19
- const typescript_1 = require("typescript");
42
+ const typescript_1 = __importStar(require("typescript"));
43
+ const tsFactory = typescript_1.default.factory;
20
44
  function testcafeImportPathReplacer() {
21
45
  return context => {
22
46
  const visit = (node) => {
23
47
  var _a;
24
48
  // @ts-ignore
25
49
  if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.kind) === typescript_1.SyntaxKind.ImportDeclaration && node.kind === typescript_1.SyntaxKind.StringLiteral && node.text === 'testcafe')
26
- return (0, typescript_1.createStringLiteral)(exportble_lib_path_1.default);
50
+ return tsFactory.createStringLiteral(exportble_lib_path_1.default);
27
51
  return (0, typescript_1.visitEachChild)(node, child => visit(child), context);
28
52
  };
29
53
  return node => (0, typescript_1.visitNode)(node, visit);
@@ -32,10 +56,10 @@ function testcafeImportPathReplacer() {
32
56
  function disableV8OptimizationCodeAppender() {
33
57
  return () => {
34
58
  const visit = (node) => {
35
- const evalStatement = (0, typescript_1.createExpressionStatement)((0, typescript_1.createCall)((0, typescript_1.createIdentifier)('eval'), void 0, [(0, typescript_1.createStringLiteral)('')]));
59
+ const evalStatement = tsFactory.createExpressionStatement(tsFactory.createCallExpression(tsFactory.createIdentifier('eval'), void 0, [tsFactory.createStringLiteral('')]));
36
60
  const evalStatementWithComment = (0, typescript_1.addSyntheticLeadingComment)(evalStatement, typescript_1.SyntaxKind.MultiLineCommentTrivia, disable_v8_optimization_note_1.default, true);
37
61
  // @ts-ignore
38
- return (0, typescript_1.updateSourceFileNode)(node, [...node.statements, evalStatementWithComment]);
62
+ return tsFactory.updateSourceFile(node, [...node.statements, evalStatementWithComment]);
39
63
  };
40
64
  return node => (0, typescript_1.visitNode)(node, visit);
41
65
  };
@@ -168,4 +192,4 @@ class TypeScriptTestFileCompiler extends api_based_1.default {
168
192
  exports.default = TypeScriptTestFileCompiler;
169
193
  TypeScriptTestFileCompiler.tsDefsPath = TypeScriptTestFileCompiler._getTSDefsPath();
170
194
  module.exports = exports.default;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvdHlwZXNjcmlwdC9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4QixtQ0FBbUM7QUFDbkMsMERBQTJCO0FBQzNCLGdFQUEyRDtBQUMzRCxtRUFBeUQ7QUFDekQsa0hBQXlGO0FBQ3pGLHdEQUEwRDtBQUMxRCxvREFBMEQ7QUFDMUQsa0RBQTBCO0FBQzFCLGlFQUEyRDtBQUMzRCxrRkFBMkQ7QUFDM0Qsc0dBQThFO0FBRTlFLGtDQUFrQztBQUNsQywyQ0FnQm9CO0FBbUJwQixTQUFTLDBCQUEwQjtJQUMvQixPQUFPLE9BQU8sQ0FBQyxFQUFFO1FBQ2IsTUFBTSxLQUFLLEdBQVksQ0FBQyxJQUFJLEVBQXFCLEVBQUU7O1lBQy9DLGFBQWE7WUFDYixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLE1BQUssdUJBQVUsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHVCQUFVLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFDeEgsT0FBTyxJQUFBLGdDQUFtQixFQUFDLDRCQUFtQixDQUFDLENBQUM7WUFFcEQsT0FBTyxJQUFBLDJCQUFjLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFBLHNCQUFTLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLGlDQUFpQztJQUN0QyxPQUFPLEdBQUcsRUFBRTtRQUNSLE1BQU0sS0FBSyxHQUFZLENBQUMs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J3BhdGgnO1xuaW1wb3J0IHsgemlwT2JqZWN0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UgZnJvbSAnLi4vLi4vYXBpLWJhc2VkJztcbmltcG9ydCBFU05leHRUZXN0RmlsZUNvbXBpbGVyIGZyb20gJy4uL2VzLW5leHQvY29tcGlsZXInO1xuaW1wb3J0IFR5cGVzY3JpcHRDb25maWd1cmF0aW9uIGZyb20gJy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vdHlwZXNjcmlwdC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBpc1JlbGF0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IEVYUE9SVEFCTEVfTElCX1BBVEggZnJvbSAnLi4vLi4vZXhwb3J0YmxlLWxpYi1wYXRoJztcbmltcG9ydCBESVNBQkxFX1Y4X09QVElNSVpBVElPTl9OT1RFIGZyb20gJy4uLy4uL2Rpc2FibGUtdjgtb3B0aW1pemF0aW9uLW5vdGUnO1xuXG4vLyBOT1RFOiBGb3IgdHlwZSBkZWZpbml0aW9ucyBvbmx5XG5pbXBvcnQgVHlwZVNjcmlwdCwge1xuICAgIENvbXBpbGVyT3B0aW9uc1ZhbHVlLFxuICAgIFN5bnRheEtpbmQsXG4gICAgVmlzaXRSZXN1bHQsXG4gICAgVmlzaXRvcixcbiAgICBOb2RlLFxuICAgIGNyZWF0ZVN0cmluZ0xpdGVyYWwsXG4gICAgdmlzaXRFYWNoQ2hpbGQsXG4gICAgdmlzaXROb2RlLFxuICAgIFRyYW5zZm9ybWVyRmFjdG9yeSxcbiAgICBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50LFxuICAgIGNyZWF0ZUNhbGwsXG4gICAgY3JlYXRlSWRlbnRpZmllcixcbiAgICB1cGRhdGVTb3VyY2VGaWxlTm9kZSxcbiAgICBTb3VyY2VGaWxlLFxuICAgIGFkZFN5bnRoZXRpY0xlYWRpbmdDb21tZW50LFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgRGljdGlvbmFyeSwgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPcHRpb25hbENvbXBpbGVyQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmRlY2xhcmUgdHlwZSBUeXBlU2NyaXB0SW5zdGFuY2UgPSB0eXBlb2YgVHlwZVNjcmlwdDtcblxuaW50ZXJmYWNlIFRlc3RGaWxlSW5mbyB7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbn1cblxuZGVjbGFyZSBpbnRlcmZhY2UgUmVxdWlyZUNvbXBpbGVyRnVuY3Rpb24ge1xuICAgIChjb2RlOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZXF1aXJlQ29tcGlsZXJzIHtcbiAgICBbZXh0ZW5zaW9uOiBzdHJpbmddOiBSZXF1aXJlQ29tcGlsZXJGdW5jdGlvbjtcbn1cblxuZnVuY3Rpb24gdGVzdGNhZmVJbXBvcnRQYXRoUmVwbGFjZXI8VCBleHRlbmRzIE5vZGU+ICgpOiBUcmFuc2Zvcm1lckZhY3Rvcnk8VD4ge1xuICAgIHJldHVybiBjb250ZXh0ID0+IHtcbiAgICAgICAgY29uc3QgdmlzaXQ6IFZpc2l0b3IgPSAobm9kZSk6IFZpc2l0UmVzdWx0PE5vZGU+ID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmIChub2RlLnBhcmVudD8ua2luZCA9PT0gU3ludGF4S2luZC5JbXBvcnREZWNsYXJhdGlvbiAmJiBub2RlLmtpbmQgPT09IFN5bnRheEtpbmQuU3RyaW5nTGl0ZXJhbCAmJiBub2RlLnRleHQgPT09ICd0ZXN0Y2FmZScpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0cmluZ0xpdGVyYWwoRVhQT1JUQUJMRV9MSUJfUEFUSCk7XG5cbiAgICAgICAgICAgIHJldHVybiB2aXNpdEVhY2hDaGlsZChub2RlLCBjaGlsZCA9PiB2aXNpdChjaGlsZCksIGNvbnRleHQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBub2RlID0+IHZpc2l0Tm9kZShub2RlLCB2aXNpdCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZGlzYWJsZVY4T3B0aW1pemF0aW9uQ29kZUFwcGVuZGVyPFQgZXh0ZW5kcyBOb2RlPiAoKTogVHJhbnNmb3JtZXJGYWN0b3J5PFQ+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCB2aXNpdDogVmlzaXRvciA9IChub2RlKTogVmlzaXRSZXN1bHQ8Tm9kZT4gPT4ge1xuICAgICAgICAgICAgY29uc3QgZXZhbFN0YXRlbWVudCA9IGNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoY3JlYXRlQ2FsbChcbiAgICAgICAgICAgICAgICBjcmVhdGVJZGVudGlmaWVyKCdldmFsJyksXG4gICAgICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgICAgIFtjcmVhdGVTdHJpbmdMaXRlcmFsKCcnKV1cbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBjb25zdCBldmFsU3RhdGVtZW50V2l0aENvbW1lbnQgPSBhZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudChldmFsU3RhdGVtZW50LCBTeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEsIERJU0FCTEVfVjhfT1BUSU1JWkFUSU9OX05PVEUsIHRydWUpO1xuXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlU291cmNlRmlsZU5vZGUobm9kZSwgWy4uLm5vZGUuc3RhdGVtZW50cywgZXZhbFN0YXRlbWVudFdpdGhDb21tZW50XSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5vZGUgPT4gdmlzaXROb2RlKG5vZGUsIHZpc2l0KTtcbiAgICB9O1xufVxuXG5cbmNvbnN0IERFQlVHX0xPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpjb21waWxlcjp0eXBlc2NyaXB0Jyk7XG5cbmNvbnN0IFJFTkFNRURfREVQRU5ERU5DSUVTX01BUCA9IG5ldyBNYXAoW1sndGVzdGNhZmUnLCBFWFBPUlRBQkxFX0xJQl9QQVRIXV0pO1xuXG5jb25zdCBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfUEFUSCA9ICd0eXBlc2NyaXB0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIgZXh0ZW5kcyBBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyB0c0RlZnNQYXRoID0gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX2dldFRTRGVmc1BhdGgoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RzQ29uZmlnOiBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21waWxlclBhdGg6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21Db21waWxlck9wdGlvbnM/OiBvYmplY3Q7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbXBpbGVyT3B0aW9ucz86IFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMsIHsgaXNDb21waWxlclNlcnZpY2VNb2RlLCBiYXNlVXJsIH06IE9wdGlvbmFsQ29tcGlsZXJBcmd1bWVudHMgPSB7fSkge1xuICAgICAgICBzdXBlcih7IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZSwgYmFzZVVybCB9KTtcblxuICAgICAgICAvLyBOT1RFOiBBdCBwcmVzZW50LCBpdCdzIG5lY2Vzc2FyeSBjcmVhdGUgYW4gaW5zdGFuY2UgVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXJcbiAgICAgICAgLy8gdG8gY29sbGVjdCBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHRlc3QgZmlsZSBleHRlbnNpb25zLlxuICAgICAgICAvLyBTbyBhbGwgY29tcGlsZXJzIGNyZWF0ZXMgMiB0aW1lczogZmlyc3QgdGltZSAtIGZvciBjb2xsZWN0aW5nIGFsbCBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb25zLFxuICAgICAgICAvLyBzZWNvbmQgb25lIC0gZm9yIGNvbXBpbGluZyB0ZXN0cy5cbiAgICAgICAgLy8gSW4gZnV0dXJlLCBuZWVkIHRvIHJld3JpdGUgJ2dldFN1cHBvcnRlZEV4dGVuc2lvbicgbWV0aG9kIGFzIHN0YXRpYy5cblxuICAgICAgICBjb25zdCBjb25maWdQYXRoID0gY29tcGlsZXJPcHRpb25zICYmIGNvbXBpbGVyT3B0aW9ucy5jb25maWdQYXRoIHx8IG51bGw7XG5cbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcGlsZXJPcHRpb25zID0gY29tcGlsZXJPcHRpb25zICYmIGNvbXBpbGVyT3B0aW9ucy5vcHRpb25zO1xuICAgICAgICB0aGlzLl90c0NvbmZpZyAgICAgICAgICAgICAgPSBuZXcgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24oY29uZmlnUGF0aCwgaXNDb21waWxlclNlcnZpY2VNb2RlKTtcbiAgICAgICAgdGhpcy5fY29tcGlsZXJQYXRoICAgICAgICAgID0gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX2dldENvbXBpbGVyUGF0aChjb21waWxlck9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRDb21waWxlclBhdGggKGNvbXBpbGVyT3B0aW9ucz86IFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgY29tcGlsZXJQYXRoID0gY29tcGlsZXJPcHRpb25zICYmIGNvbXBpbGVyT3B0aW9ucy5jdXN0b21Db21waWxlck1vZHVsZVBhdGg7XG5cbiAgICAgICAgaWYgKCFjb21waWxlclBhdGggfHwgY29tcGlsZXJQYXRoID09PSBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfUEFUSClcbiAgICAgICAgICAgIHJldHVybiBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfUEFUSDtcblxuICAgICAgICAvLyBOT1RFOiBpZiB0aGUgcmVsYXRpdmUgcGF0aCB0byBjdXN0b20gVHlwZVNjcmlwdCBjb21waWxlciBtb2R1bGUgaXMgc3BlY2lmaWVkXG4gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCByZXNvbHZlIHRoZSBwYXRoIGZyb20gdGhlIHJvb3Qgb2YgdGhlICd0ZXN0Y2FmZScgbW9kdWxlXG4gICAgICAgIGlmIChpc1JlbGF0aXZlKGNvbXBpbGVyUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RjYWZlUm9vdEZvbGRlciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi8uLi8uLi8uLi8uLi8nKTtcblxuICAgICAgICAgICAgY29tcGlsZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRlc3RjYWZlUm9vdEZvbGRlciwgY29tcGlsZXJQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21waWxlclBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9hZFR5cGVTY3JpcHRDb21waWxlciAoKTogVHlwZVNjcmlwdEluc3RhbmNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKHRoaXMuX2NvbXBpbGVyUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnR5cGVTY3JpcHRDb21waWxlckxvYWRpbmdFcnJvciwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX25vcm1hbGl6ZUZpbGVuYW1lIChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgZmlsZW5hbWUgPSBwYXRoLnJlc29sdmUoZmlsZW5hbWUpO1xuXG4gICAgICAgIGlmIChPUy53aW4pXG4gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRUU0RlZnNQYXRoICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX25vcm1hbGl6ZUZpbGVuYW1lKHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi8uLi8uLi8uLi8uLi90cy1kZWZzL2luZGV4LmQudHMnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVwb3J0RXJyb3JzIChkaWFnbm9zdGljczogUmVhZG9ubHk8VHlwZVNjcmlwdC5EaWFnbm9zdGljW10+KTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IGxhenkgbG9hZCB0aGUgY29tcGlsZXJcbiAgICAgICAgY29uc3QgdHM6IFR5cGVTY3JpcHRJbnN0YW5jZSA9IHRoaXMuX2xvYWRUeXBlU2NyaXB0Q29tcGlsZXIoKTtcbiAgICAgICAgbGV0IGVyck1zZyA9ICdUeXBlU2NyaXB0IGNvbXBpbGF0aW9uIGZhaWxlZC5cXG4nO1xuXG4gICAgICAgIGRpYWdub3N0aWNzLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdHMuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChkLm1lc3NhZ2VUZXh0LCAnXFxuJyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlICAgID0gZC5maWxlO1xuXG4gICAgICAgICAgICBpZiAoZmlsZSAmJiBkLnN0YXJ0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxpbmUsIGNoYXJhY3RlciB9ID0gZmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihkLnN0YXJ0KTtcblxuICAgICAgICAgICAgICAgIGVyck1zZyArPSBgJHtmaWxlLmZpbGVOYW1lfSAoJHtsaW5lICsgMX0sICR7Y2hhcmFjdGVyICsgMX0pOiBgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlcnJNc2cgKz0gYCR7bWVzc2FnZX1cXG5gO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX2NvbXBpbGVDb2RlRm9yVGVzdEZpbGVzICh0ZXN0RmlsZXNJbmZvOiBUZXN0RmlsZUluZm9bXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RzQ29uZmlnLmluaXQodGhpcy5fY3VzdG9tQ29tcGlsZXJPcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5fY29tcGlsZUNvZGVGb3JUZXN0RmlsZXModGVzdEZpbGVzSW5mbyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb21waWxlRmlsZXNUb0NhY2hlICh0czogVHlwZVNjcmlwdEluc3RhbmNlLCBmaWxlbmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdHMgICAgPSB0aGlzLl90c0NvbmZpZy5nZXRPcHRpb25zKCkgYXMgRGljdGlvbmFyeTxDb21waWxlck9wdGlvbnNWYWx1ZT47XG4gICAgICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFtUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci50c0RlZnNQYXRoLCAuLi5maWxlbmFtZXNdLCBvcHRzKTtcblxuICAgICAgICBERUJVR19MT0dHRVIoJ3ZlcnNpb246ICVzJywgdHMudmVyc2lvbik7XG4gICAgICAgIERFQlVHX0xPR0dFUignb3B0aW9uczogJU8nLCBvcHRzKTtcblxuICAgICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQSBoYWNrIHRvIGFsbG93IGltcG9ydCBnbG9iYWxseSBpbnN0YWxsZWQgVGVzdENhZmUgaW4gdGVzdHNcbiAgICAgICAgICAgIHNvdXJjZUZpbGUucmVuYW1lZERlcGVuZGVuY2llcyA9IFJFTkFNRURfREVQRU5ERU5DSUVTX01BUDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGlhZ25vc3RpY3MgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG5cbiAgICAgICAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydEVycm9ycyhkaWFnbm9zdGljcyk7XG5cbiAgICAgICAgLy8gTk9URTogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIGVtaXQoKSBpcyBhIHNvdXJjZSBmaWxlIHRvIGJlIGNvbXBpbGVkLiBJZiBpdCdzIHVuZGVmaW5lZCwgYWxsIGZpbGVzIGluXG4gICAgICAgIC8vIDxwcm9ncmFtPiB3aWxsIGJlIGNvbXBpbGVkLiA8cHJvZ3JhbT4gY29udGFpbnMgYSBmaWxlIHNwZWNpZmllZCBpbiBjcmVhdGVQcm9ncmFtKCkgcGx1cyBhbGwgaXRzIGRlcGVuZGVuY2llcy5cbiAgICAgICAgLy8gVGhpcyBtb2RlIGlzIG11Y2ggZmFzdGVyIHRoYW4gY29tcGlsaW5nIGZpbGVzIG9uZS1ieS1vbmUsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSB0c2MgQ0xJIGNvbXBpbGVyLlxuICAgICAgICBwcm9ncmFtLmVtaXQodm9pZCAwLCAob3V0cHV0TmFtZSwgcmVzdWx0LCB3cml0ZUJPTSwgb25FcnJvciwgc291cmNlcykgPT4ge1xuICAgICAgICAgICAgaWYgKCFzb3VyY2VzKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3Qgc291cmNlUGF0aCA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9ub3JtYWxpemVGaWxlbmFtZShzb3VyY2VzWzBdLmZpbGVOYW1lKTtcblxuICAgICAgICAgICAgdGhpcy5jYWNoZVtzb3VyY2VQYXRoXSA9IHJlc3VsdDtcbiAgICAgICAgfSwgdm9pZCAwLCB2b2lkIDAsIHtcbiAgICAgICAgICAgIGJlZm9yZTogdGhpcy5fZ2V0VHlwZXNjcmlwdFRyYW5zZm9ybWVycygpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRUeXBlc2NyaXB0VHJhbnNmb3JtZXJzICgpOiBUcmFuc2Zvcm1lckZhY3Rvcnk8U291cmNlRmlsZT5bXSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyczogVHJhbnNmb3JtZXJGYWN0b3J5PFNvdXJjZUZpbGU+W10gPSBbdGVzdGNhZmVJbXBvcnRQYXRoUmVwbGFjZXIoKV07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNDb21waWxlclNlcnZpY2VNb2RlKVxuICAgICAgICAgICAgdHJhbnNmb3JtZXJzLnB1c2goZGlzYWJsZVY4T3B0aW1pemF0aW9uQ29kZUFwcGVuZGVyKCkpO1xuXG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1lcnM7XG4gICAgfVxuXG4gICAgcHVibGljIF9wcmVjb21waWxlQ29kZSAodGVzdEZpbGVzSW5mbzogVGVzdEZpbGVJbmZvW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIERFQlVHX0xPR0dFUigncGF0aDogXCIlc1wiJywgdGhpcy5fY29tcGlsZXJQYXRoKTtcblxuICAgICAgICAvLyBOT1RFOiBsYXp5IGxvYWQgdGhlIGNvbXBpbGVyXG4gICAgICAgIGNvbnN0IHRzOiBUeXBlU2NyaXB0SW5zdGFuY2UgPSB0aGlzLl9sb2FkVHlwZVNjcmlwdENvbXBpbGVyKCk7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lcyAgICAgICAgICAgICAgPSB0ZXN0RmlsZXNJbmZvLm1hcCgoeyBmaWxlbmFtZSB9KSA9PiBmaWxlbmFtZSk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGaWxlbmFtZXMgICAgPSBmaWxlbmFtZXMubWFwKGZpbGVuYW1lID0+IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9ub3JtYWxpemVGaWxlbmFtZShmaWxlbmFtZSkpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRmlsZW5hbWVzTWFwID0gemlwT2JqZWN0KG5vcm1hbGl6ZWRGaWxlbmFtZXMsIGZpbGVuYW1lcyk7XG5cbiAgICAgICAgY29uc3QgdW5jYWNoZWRGaWxlcyA9IG5vcm1hbGl6ZWRGaWxlbmFtZXNcbiAgICAgICAgICAgIC5maWx0ZXIoZmlsZW5hbWUgPT4gZmlsZW5hbWUgIT09IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLnRzRGVmc1BhdGggJiYgIXRoaXMuY2FjaGVbZmlsZW5hbWVdKVxuICAgICAgICAgICAgLm1hcChmaWxlbmFtZSA9PiBub3JtYWxpemVkRmlsZW5hbWVzTWFwW2ZpbGVuYW1lXSk7XG5cbiAgICAgICAgaWYgKHVuY2FjaGVkRmlsZXMubGVuZ3RoKVxuICAgICAgICAgICAgdGhpcy5fY29tcGlsZUZpbGVzVG9DYWNoZSh0cywgdW5jYWNoZWRGaWxlcyk7XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRGaWxlbmFtZXMubWFwKGZpbGVuYW1lID0+IHRoaXMuY2FjaGVbZmlsZW5hbWVdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX2dldFJlcXVpcmVDb21waWxlcnMgKCk6IFJlcXVpcmVDb21waWxlcnMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJy50cyc6ICAoY29kZSwgZmlsZW5hbWUpID0+IHRoaXMuX2NvbXBpbGVDb2RlKGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgICcudHN4JzogKGNvZGUsIGZpbGVuYW1lKSA9PiB0aGlzLl9jb21waWxlQ29kZShjb2RlLCBmaWxlbmFtZSksXG4gICAgICAgICAgICAnLmpzJzogIChjb2RlLCBmaWxlbmFtZSkgPT4gRVNOZXh0VGVzdEZpbGVDb21waWxlci5wcm90b3R5cGUuX2NvbXBpbGVDb2RlLmNhbGwodGhpcywgY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICAgICAgJy5qc3gnOiAoY29kZSwgZmlsZW5hbWUpID0+IEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIucHJvdG90eXBlLl9jb21waWxlQ29kZS5jYWxsKHRoaXMsIGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNhblByZWNvbXBpbGUgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbJy50cycsICcudHN4J107XG4gICAgfVxufVxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvdHlwZXNjcmlwdC9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLG1DQUFtQztBQUNuQywwREFBMkI7QUFDM0IsZ0VBQTJEO0FBQzNELG1FQUF5RDtBQUN6RCxrSEFBeUY7QUFDekYsd0RBQTBEO0FBQzFELG9EQUEwRDtBQUMxRCxrREFBMEI7QUFDMUIsaUVBQTJEO0FBQzNELGtGQUEyRDtBQUMzRCxzR0FBOEU7QUFFOUUsa0NBQWtDO0FBQ2xDLHlEQVdvQjtBQU9wQixNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQztBQWNyQyxTQUFTLDBCQUEwQjtJQUMvQixPQUFPLE9BQU8sQ0FBQyxFQUFFO1FBQ2IsTUFBTSxLQUFLLEdBQVksQ0FBQyxJQUFJLEVBQXFCLEVBQUU7O1lBQy9DLGFBQWE7WUFDYixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLE1BQUssdUJBQVUsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHVCQUFVLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFDeEgsT0FBTyxTQUFTLENBQUMsbUJBQW1CLENBQUMsNEJBQW1CLENBQUMsQ0FBQztZQUU5RCxPQUFPLElBQUEsMkJBQWMsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUEsc0JBQVMsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0FBQ04s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QXJLTCw2Q0FzS0M7QUFyS2tCLHFDQUFVLEdBQUcsMEJBQTBCLENBQUMsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHppcE9iamVjdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCBBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlIGZyb20gJy4uLy4uL2FwaS1iYXNlZCc7XG5pbXBvcnQgRVNOZXh0VGVzdEZpbGVDb21waWxlciBmcm9tICcuLi9lcy1uZXh0L2NvbXBpbGVyJztcbmltcG9ydCBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbiBmcm9tICcuLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL3R5cGVzY3JpcHQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uLy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgaXNSZWxhdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2FwaS90ZXN0LXBhZ2UtdXJsJztcbmltcG9ydCBFWFBPUlRBQkxFX0xJQl9QQVRIIGZyb20gJy4uLy4uL2V4cG9ydGJsZS1saWItcGF0aCc7XG5pbXBvcnQgRElTQUJMRV9WOF9PUFRJTUlaQVRJT05fTk9URSBmcm9tICcuLi8uLi9kaXNhYmxlLXY4LW9wdGltaXphdGlvbi1ub3RlJztcblxuLy8gTk9URTogRm9yIHR5cGUgZGVmaW5pdGlvbnMgb25seVxuaW1wb3J0IFR5cGVTY3JpcHQsIHtcbiAgICBDb21waWxlck9wdGlvbnNWYWx1ZSxcbiAgICBTeW50YXhLaW5kLFxuICAgIFZpc2l0UmVzdWx0LFxuICAgIFZpc2l0b3IsXG4gICAgTm9kZSxcbiAgICB2aXNpdEVhY2hDaGlsZCxcbiAgICB2aXNpdE5vZGUsXG4gICAgVHJhbnNmb3JtZXJGYWN0b3J5LFxuICAgIFNvdXJjZUZpbGUsXG4gICAgYWRkU3ludGhldGljTGVhZGluZ0NvbW1lbnQsXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbmFsQ29tcGlsZXJBcmd1bWVudHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuZGVjbGFyZSB0eXBlIFR5cGVTY3JpcHRJbnN0YW5jZSA9IHR5cGVvZiBUeXBlU2NyaXB0O1xuXG5jb25zdCB0c0ZhY3RvcnkgPSBUeXBlU2NyaXB0LmZhY3Rvcnk7XG5cbmludGVyZmFjZSBUZXN0RmlsZUluZm8ge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgaW50ZXJmYWNlIFJlcXVpcmVDb21waWxlckZ1bmN0aW9uIHtcbiAgICAoY29kZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUmVxdWlyZUNvbXBpbGVycyB7XG4gICAgW2V4dGVuc2lvbjogc3RyaW5nXTogUmVxdWlyZUNvbXBpbGVyRnVuY3Rpb247XG59XG5cbmZ1bmN0aW9uIHRlc3RjYWZlSW1wb3J0UGF0aFJlcGxhY2VyPFQgZXh0ZW5kcyBOb2RlPiAoKTogVHJhbnNmb3JtZXJGYWN0b3J5PFQ+IHtcbiAgICByZXR1cm4gY29udGV4dCA9PiB7XG4gICAgICAgIGNvbnN0IHZpc2l0OiBWaXNpdG9yID0gKG5vZGUpOiBWaXNpdFJlc3VsdDxOb2RlPiA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBpZiAobm9kZS5wYXJlbnQ/LmtpbmQgPT09IFN5bnRheEtpbmQuSW1wb3J0RGVjbGFyYXRpb24gJiYgbm9kZS5raW5kID09PSBTeW50YXhLaW5kLlN0cmluZ0xpdGVyYWwgJiYgbm9kZS50ZXh0ID09PSAndGVzdGNhZmUnKVxuICAgICAgICAgICAgICAgIHJldHVybiB0c0ZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChFWFBPUlRBQkxFX0xJQl9QQVRIKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0RWFjaENoaWxkKG5vZGUsIGNoaWxkID0+IHZpc2l0KGNoaWxkKSwgY29udGV4dCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5vZGUgPT4gdmlzaXROb2RlKG5vZGUsIHZpc2l0KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBkaXNhYmxlVjhPcHRpbWl6YXRpb25Db2RlQXBwZW5kZXI8VCBleHRlbmRzIE5vZGU+ICgpOiBUcmFuc2Zvcm1lckZhY3Rvcnk8VD4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpc2l0OiBWaXNpdG9yID0gKG5vZGUpOiBWaXNpdFJlc3VsdDxOb2RlPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBldmFsU3RhdGVtZW50ID0gdHNGYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQodHNGYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgIHRzRmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKCdldmFsJyksXG4gICAgICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgICAgIFt0c0ZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbCgnJyldXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgY29uc3QgZXZhbFN0YXRlbWVudFdpdGhDb21tZW50ID0gYWRkU3ludGhldGljTGVhZGluZ0NvbW1lbnQoZXZhbFN0YXRlbWVudCwgU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhLCBESVNBQkxFX1Y4X09QVElNSVpBVElPTl9OT1RFLCB0cnVlKTtcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIHRzRmFjdG9yeS51cGRhdGVTb3VyY2VGaWxlKG5vZGUsIFsuLi5ub2RlLnN0YXRlbWVudHMsIGV2YWxTdGF0ZW1lbnRXaXRoQ29tbWVudF0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBub2RlID0+IHZpc2l0Tm9kZShub2RlLCB2aXNpdCk7XG4gICAgfTtcbn1cblxuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6Y29tcGlsZXI6dHlwZXNjcmlwdCcpO1xuXG5jb25zdCBSRU5BTUVEX0RFUEVOREVOQ0lFU19NQVAgPSBuZXcgTWFwKFtbJ3Rlc3RjYWZlJywgRVhQT1JUQUJMRV9MSUJfUEFUSF1dKTtcblxuY29uc3QgREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX1BBVEggPSAndHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyIGV4dGVuZHMgQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgdHNEZWZzUGF0aCA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9nZXRUU0RlZnNQYXRoKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90c0NvbmZpZzogVHlwZXNjcmlwdENvbmZpZ3VyYXRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29tcGlsZXJQYXRoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tQ29tcGlsZXJPcHRpb25zPzogb2JqZWN0O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zLCB7IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZSwgYmFzZVVybCB9OiBPcHRpb25hbENvbXBpbGVyQXJndW1lbnRzID0ge30pIHtcbiAgICAgICAgc3VwZXIoeyBpc0NvbXBpbGVyU2VydmljZU1vZGUsIGJhc2VVcmwgfSk7XG5cbiAgICAgICAgLy8gTk9URTogQXQgcHJlc2VudCwgaXQncyBuZWNlc3NhcnkgY3JlYXRlIGFuIGluc3RhbmNlIFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyXG4gICAgICAgIC8vIHRvIGNvbGxlY3QgYSBsaXN0IG9mIHN1cHBvcnRlZCB0ZXN0IGZpbGUgZXh0ZW5zaW9ucy5cbiAgICAgICAgLy8gU28gYWxsIGNvbXBpbGVycyBjcmVhdGVzIDIgdGltZXM6IGZpcnN0IHRpbWUgLSBmb3IgY29sbGVjdGluZyBhbGwgc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9ucyxcbiAgICAgICAgLy8gc2Vjb25kIG9uZSAtIGZvciBjb21waWxpbmcgdGVzdHMuXG4gICAgICAgIC8vIEluIGZ1dHVyZSwgbmVlZCB0byByZXdyaXRlICdnZXRTdXBwb3J0ZWRFeHRlbnNpb24nIG1ldGhvZCBhcyBzdGF0aWMuXG5cbiAgICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGNvbXBpbGVyT3B0aW9ucyAmJiBjb21waWxlck9wdGlvbnMuY29uZmlnUGF0aCB8fCBudWxsO1xuXG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBpbGVyT3B0aW9ucyA9IGNvbXBpbGVyT3B0aW9ucyAmJiBjb21waWxlck9wdGlvbnMub3B0aW9ucztcbiAgICAgICAgdGhpcy5fdHNDb25maWcgICAgICAgICAgICAgID0gbmV3IFR5cGVzY3JpcHRDb25maWd1cmF0aW9uKGNvbmZpZ1BhdGgsIGlzQ29tcGlsZXJTZXJ2aWNlTW9kZSk7XG4gICAgICAgIHRoaXMuX2NvbXBpbGVyUGF0aCAgICAgICAgICA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9nZXRDb21waWxlclBhdGgoY29tcGlsZXJPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0Q29tcGlsZXJQYXRoIChjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGNvbXBpbGVyUGF0aCA9IGNvbXBpbGVyT3B0aW9ucyAmJiBjb21waWxlck9wdGlvbnMuY3VzdG9tQ29tcGlsZXJNb2R1bGVQYXRoO1xuXG4gICAgICAgIGlmICghY29tcGlsZXJQYXRoIHx8IGNvbXBpbGVyUGF0aCA9PT0gREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX1BBVEgpXG4gICAgICAgICAgICByZXR1cm4gREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX1BBVEg7XG5cbiAgICAgICAgLy8gTk9URTogaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gY3VzdG9tIFR5cGVTY3JpcHQgY29tcGlsZXIgbW9kdWxlIGlzIHNwZWNpZmllZFxuICAgICAgICAvLyB0aGVuIHdlIHdpbGwgcmVzb2x2ZSB0aGUgcGF0aCBmcm9tIHRoZSByb290IG9mIHRoZSAndGVzdGNhZmUnIG1vZHVsZVxuICAgICAgICBpZiAoaXNSZWxhdGl2ZShjb21waWxlclBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXN0Y2FmZVJvb3RGb2xkZXIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vLi4vLi4vLi4vLi4vJyk7XG5cbiAgICAgICAgICAgIGNvbXBpbGVyUGF0aCA9IHBhdGgucmVzb2x2ZSh0ZXN0Y2FmZVJvb3RGb2xkZXIsIGNvbXBpbGVyUGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcGlsZXJQYXRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2xvYWRUeXBlU2NyaXB0Q29tcGlsZXIgKCk6IFR5cGVTY3JpcHRJbnN0YW5jZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWlyZSh0aGlzLl9jb21waWxlclBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy50eXBlU2NyaXB0Q29tcGlsZXJMb2FkaW5nRXJyb3IsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9ub3JtYWxpemVGaWxlbmFtZSAoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGZpbGVuYW1lID0gcGF0aC5yZXNvbHZlKGZpbGVuYW1lKTtcblxuICAgICAgICBpZiAoT1Mud2luKVxuICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHJldHVybiBmaWxlbmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0VFNEZWZzUGF0aCAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9ub3JtYWxpemVGaWxlbmFtZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vLi4vLi4vLi4vLi4vdHMtZGVmcy9pbmRleC5kLnRzJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcG9ydEVycm9ycyAoZGlhZ25vc3RpY3M6IFJlYWRvbmx5PFR5cGVTY3JpcHQuRGlhZ25vc3RpY1tdPik6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBsYXp5IGxvYWQgdGhlIGNvbXBpbGVyXG4gICAgICAgIGNvbnN0IHRzOiBUeXBlU2NyaXB0SW5zdGFuY2UgPSB0aGlzLl9sb2FkVHlwZVNjcmlwdENvbXBpbGVyKCk7XG4gICAgICAgIGxldCBlcnJNc2cgPSAnVHlwZVNjcmlwdCBjb21waWxhdGlvbiBmYWlsZWQuXFxuJztcblxuICAgICAgICBkaWFnbm9zdGljcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZC5tZXNzYWdlVGV4dCwgJ1xcbicpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSAgICA9IGQuZmlsZTtcblxuICAgICAgICAgICAgaWYgKGZpbGUgJiYgZC5zdGFydCAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBsaW5lLCBjaGFyYWN0ZXIgfSA9IGZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZC5zdGFydCk7XG5cbiAgICAgICAgICAgICAgICBlcnJNc2cgKz0gYCR7ZmlsZS5maWxlTmFtZX0gKCR7bGluZSArIDF9LCAke2NoYXJhY3RlciArIDF9KTogYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXJyTXNnICs9IGAke21lc3NhZ2V9XFxuYDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG4gICAgfVxuXG4gICAgcHVibGljIF9jb21waWxlQ29kZUZvclRlc3RGaWxlcyAodGVzdEZpbGVzSW5mbzogVGVzdEZpbGVJbmZvW10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90c0NvbmZpZy5pbml0KHRoaXMuX2N1c3RvbUNvbXBpbGVyT3B0aW9ucylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuX2NvbXBpbGVDb2RlRm9yVGVzdEZpbGVzKHRlc3RGaWxlc0luZm8pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29tcGlsZUZpbGVzVG9DYWNoZSAodHM6IFR5cGVTY3JpcHRJbnN0YW5jZSwgZmlsZW5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRzICAgID0gdGhpcy5fdHNDb25maWcuZ2V0T3B0aW9ucygpIGFzIERpY3Rpb25hcnk8Q29tcGlsZXJPcHRpb25zVmFsdWU+O1xuICAgICAgICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShbVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIudHNEZWZzUGF0aCwgLi4uZmlsZW5hbWVzXSwgb3B0cyk7XG5cbiAgICAgICAgREVCVUdfTE9HR0VSKCd2ZXJzaW9uOiAlcycsIHRzLnZlcnNpb24pO1xuICAgICAgICBERUJVR19MT0dHRVIoJ29wdGlvbnM6ICVPJywgb3B0cyk7XG5cbiAgICAgICAgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goc291cmNlRmlsZSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIEEgaGFjayB0byBhbGxvdyBpbXBvcnQgZ2xvYmFsbHkgaW5zdGFsbGVkIFRlc3RDYWZlIGluIHRlc3RzXG4gICAgICAgICAgICBzb3VyY2VGaWxlLnJlbmFtZWREZXBlbmRlbmNpZXMgPSBSRU5BTUVEX0RFUEVOREVOQ0lFU19NQVA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRpYWdub3N0aWNzID0gdHMuZ2V0UHJlRW1pdERpYWdub3N0aWNzKHByb2dyYW0pO1xuXG4gICAgICAgIGlmIChkaWFnbm9zdGljcy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLl9yZXBvcnRFcnJvcnMoZGlhZ25vc3RpY3MpO1xuXG4gICAgICAgIC8vIE5PVEU6IFRoZSBmaXJzdCBhcmd1bWVudCBvZiBlbWl0KCkgaXMgYSBzb3VyY2UgZmlsZSB0byBiZSBjb21waWxlZC4gSWYgaXQncyB1bmRlZmluZWQsIGFsbCBmaWxlcyBpblxuICAgICAgICAvLyA8cHJvZ3JhbT4gd2lsbCBiZSBjb21waWxlZC4gPHByb2dyYW0+IGNvbnRhaW5zIGEgZmlsZSBzcGVjaWZpZWQgaW4gY3JlYXRlUHJvZ3JhbSgpIHBsdXMgYWxsIGl0cyBkZXBlbmRlbmNpZXMuXG4gICAgICAgIC8vIFRoaXMgbW9kZSBpcyBtdWNoIGZhc3RlciB0aGFuIGNvbXBpbGluZyBmaWxlcyBvbmUtYnktb25lLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgdHNjIENMSSBjb21waWxlci5cbiAgICAgICAgcHJvZ3JhbS5lbWl0KHZvaWQgMCwgKG91dHB1dE5hbWUsIHJlc3VsdCwgd3JpdGVCT00sIG9uRXJyb3IsIHNvdXJjZXMpID0+IHtcbiAgICAgICAgICAgIGlmICghc291cmNlcylcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci5fbm9ybWFsaXplRmlsZW5hbWUoc291cmNlc1swXS5maWxlTmFtZSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2FjaGVbc291cmNlUGF0aF0gPSByZXN1bHQ7XG4gICAgICAgIH0sIHZvaWQgMCwgdm9pZCAwLCB7XG4gICAgICAgICAgICBiZWZvcmU6IHRoaXMuX2dldFR5cGVzY3JpcHRUcmFuc2Zvcm1lcnMoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VHlwZXNjcmlwdFRyYW5zZm9ybWVycyAoKTogVHJhbnNmb3JtZXJGYWN0b3J5PFNvdXJjZUZpbGU+W10ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lcnM6IFRyYW5zZm9ybWVyRmFjdG9yeTxTb3VyY2VGaWxlPltdID0gW3Rlc3RjYWZlSW1wb3J0UGF0aFJlcGxhY2VyKCldO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ29tcGlsZXJTZXJ2aWNlTW9kZSlcbiAgICAgICAgICAgIHRyYW5zZm9ybWVycy5wdXNoKGRpc2FibGVWOE9wdGltaXphdGlvbkNvZGVBcHBlbmRlcigpKTtcblxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBfcHJlY29tcGlsZUNvZGUgKHRlc3RGaWxlc0luZm86IFRlc3RGaWxlSW5mb1tdKTogc3RyaW5nW10ge1xuICAgICAgICBERUJVR19MT0dHRVIoJ3BhdGg6IFwiJXNcIicsIHRoaXMuX2NvbXBpbGVyUGF0aCk7XG5cbiAgICAgICAgLy8gTk9URTogbGF6eSBsb2FkIHRoZSBjb21waWxlclxuICAgICAgICBjb25zdCB0czogVHlwZVNjcmlwdEluc3RhbmNlID0gdGhpcy5fbG9hZFR5cGVTY3JpcHRDb21waWxlcigpO1xuICAgICAgICBjb25zdCBmaWxlbmFtZXMgICAgICAgICAgICAgID0gdGVzdEZpbGVzSW5mby5tYXAoKHsgZmlsZW5hbWUgfSkgPT4gZmlsZW5hbWUpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRmlsZW5hbWVzICAgID0gZmlsZW5hbWVzLm1hcChmaWxlbmFtZSA9PiBUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci5fbm9ybWFsaXplRmlsZW5hbWUoZmlsZW5hbWUpKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbGVuYW1lc01hcCA9IHppcE9iamVjdChub3JtYWxpemVkRmlsZW5hbWVzLCBmaWxlbmFtZXMpO1xuXG4gICAgICAgIGNvbnN0IHVuY2FjaGVkRmlsZXMgPSBub3JtYWxpemVkRmlsZW5hbWVzXG4gICAgICAgICAgICAuZmlsdGVyKGZpbGVuYW1lID0+IGZpbGVuYW1lICE9PSBUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci50c0RlZnNQYXRoICYmICF0aGlzLmNhY2hlW2ZpbGVuYW1lXSlcbiAgICAgICAgICAgIC5tYXAoZmlsZW5hbWUgPT4gbm9ybWFsaXplZEZpbGVuYW1lc01hcFtmaWxlbmFtZV0pO1xuXG4gICAgICAgIGlmICh1bmNhY2hlZEZpbGVzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuX2NvbXBpbGVGaWxlc1RvQ2FjaGUodHMsIHVuY2FjaGVkRmlsZXMpO1xuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVkRmlsZW5hbWVzLm1hcChmaWxlbmFtZSA9PiB0aGlzLmNhY2hlW2ZpbGVuYW1lXSk7XG4gICAgfVxuXG4gICAgcHVibGljIF9nZXRSZXF1aXJlQ29tcGlsZXJzICgpOiBSZXF1aXJlQ29tcGlsZXJzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICcudHMnOiAgKGNvZGUsIGZpbGVuYW1lKSA9PiB0aGlzLl9jb21waWxlQ29kZShjb2RlLCBmaWxlbmFtZSksXG4gICAgICAgICAgICAnLnRzeCc6IChjb2RlLCBmaWxlbmFtZSkgPT4gdGhpcy5fY29tcGlsZUNvZGUoY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICAgICAgJy5qcyc6ICAoY29kZSwgZmlsZW5hbWUpID0+IEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIucHJvdG90eXBlLl9jb21waWxlQ29kZS5jYWxsKHRoaXMsIGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgICcuanN4JzogKGNvZGUsIGZpbGVuYW1lKSA9PiBFU05leHRUZXN0RmlsZUNvbXBpbGVyLnByb3RvdHlwZS5fY29tcGlsZUNvZGUuY2FsbCh0aGlzLCBjb2RlLCBmaWxlbmFtZSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYW5QcmVjb21waWxlICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN1cHBvcnRlZEV4dGVuc2lvbiAoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWycudHMnLCAnLnRzeCddO1xuICAgIH1cbn1cbiJdfQ==
@@ -7,6 +7,7 @@ const EXTERNAL_LINKS = {
7
7
  createNewIssue: 'https://github.com/DevExpress/testcafe/issues/new?template=bug-report.md',
8
8
  troubleshootNetwork: 'https://go.devexpress.com/TestCafe_FAQ_ARequestHasFailed.aspx',
9
9
  viewportSizes: 'https://github.com/DevExpress/device-specs/blob/master/viewport-sizes.json',
10
+ skipJsErrorsRecipes: 'https://testcafe.io/documentation/404038/recipes/debugging/skip-javascript-errors',
10
11
  };
11
12
  exports.default = {
12
13
  [types_1.TEST_RUN_ERRORS.actionIntegerOptionError]: err => `
@@ -32,7 +33,7 @@ exports.default = {
32
33
  [types_1.TEST_RUN_ERRORS.uncaughtErrorOnPage]: err => `
33
34
  A JavaScript error occurred on ${(0, utils_1.formatUrl)(err.pageDestUrl)}.
34
35
  Repeat test actions in the browser and check the console for errors.
35
- To ignore client-side JavaScript errors, enable the "--skip-js-errors" CLI option, or set the "skipJsErrors" configuration file property to "true".
36
+ Enable the “skipJsErrors” option to ignore JavaScript errors during test execution. Learn more: ${(0, utils_1.formatUrl)(EXTERNAL_LINKS.skipJsErrorsRecipes)}
36
37
  If the website only throws this error when you test it with TestCafe, please create a new issue at:
37
38
  ${(0, utils_1.formatUrl)(EXTERNAL_LINKS.createNewIssue)}.
38
39
 
@@ -351,4 +352,4 @@ exports.default = {
351
352
  `,
352
353
  };
353
354
  module.exports = exports.default;
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy90ZXN0LXJ1bi90ZW1wbGF0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBOEM7QUFDOUMsb0NBQTJDO0FBQzNDLG1DQU9pQjtBQUVqQixNQUFNLGNBQWMsR0FBRztJQUNuQixjQUFjLEVBQU8sMEVBQTBFO0lBQy9GLG1CQUFtQixFQUFFLCtEQUErRDtJQUNwRixhQUFhLEVBQVEsNEVBQTRFO0NBQ3BHLENBQUM7QUFFRixrQkFBZTtJQUNYLENBQUMsdUJBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDeEMsR0FBRyxDQUFDLFVBQVUscURBQXFELEdBQUcsQ0FBQyxXQUFXO0tBQzVGO0lBRUQsQ0FBQyx1QkFBZSxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztlQUNoRCxHQUFHLENBQUMsVUFBVSw2REFBNkQsR0FBRyxDQUFDLFdBQVc7S0FDcEc7SUFFRCxDQUFDLHVCQUFlLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ3hDLEdBQUcsQ0FBQyxVQUFVLDBEQUEwRCxHQUFHLENBQUMsV0FBVztLQUNqRztJQUVELENBQUMsdUJBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDdEMsR0FBRyxDQUFDLFVBQVUsc0VBQXNFLEdBQUcsQ0FBQyxXQUFXO0tBQzdHO0lBRUQsQ0FBQyx1QkFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7cUNBQ1AsSUFBQSxpQkFBUyxFQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7O3FFQUVjLElBQUEsaUJBQVMsRUFBQyxjQUFjLENBQUMsbUJBQW1CLENBQUM7OztVQUd4RyxHQUFHLENBQUMsTUFBTTtLQUNmO0lBRUQsQ0FBQyx1QkFBZSxD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QUFDLHVCQUFlLENBQUMsMkNBQTJDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzJIQUNpRCxHQUFHLENBQUMsV0FBVztLQUNySTtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlc2NhcGUgYXMgZXNjYXBlSHRtbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBURVNUX1JVTl9FUlJPUlMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIHJlbmRlckZvcmJpZGRlbkNoYXJzTGlzdCxcbiAgICByZW5kZXJEaWZmLFxuICAgIGZvcm1hdFNlbGVjdG9yQ2FsbHN0YWNrLFxuICAgIGZvcm1hdFVybCxcbiAgICByZXBsYWNlTGVhZGluZ1NwYWNlc1dpdGhOYnNwLFxuICAgIGZvcm1hdEV4cHJlc3Npb25NZXNzYWdlLFxufSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgRVhURVJOQUxfTElOS1MgPSB7XG4gICAgY3JlYXRlTmV3SXNzdWU6ICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9EZXZFeHByZXNzL3Rlc3RjYWZlL2lzc3Vlcy9uZXc/dGVtcGxhdGU9YnVnLXJlcG9ydC5tZCcsXG4gICAgdHJvdWJsZXNob290TmV0d29yazogJ2h0dHBzOi8vZ28uZGV2ZXhwcmVzcy5jb20vVGVzdENhZmVfRkFRX0FSZXF1ZXN0SGFzRmFpbGVkLmFzcHgnLFxuICAgIHZpZXdwb3J0U2l6ZXM6ICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy9kZXZpY2Utc3BlY3MvYmxvYi9tYXN0ZXIvdmlld3BvcnQtc2l6ZXMuanNvbicsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbnRlZ2VyT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBpcyBleHBlY3RlZCB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Qb3NpdGl2ZUludGVnZXJPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQm9vbGVhbk9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgYSBib29sZWFuIHZhbHVlLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TcGVlZE9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXIgYmV0d2VlbiAwLjAxIGFuZCAxLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5wYWdlTG9hZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgRmFpbGVkIHRvIGxvYWQgdGhlIHBhZ2UgYXQgJHtmb3JtYXRVcmwoZXJyLnVybCl9LlxuICAgICAgICBJbmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhlIFwicGFnZVJlcXVlc3RUaW1lb3V0XCIgdmFyaWFibGUsIGVuYWJsZSB0aGUgXCJyZXRyeVRlc3RQYWdlc1wiIG9wdGlvbiwgb3IgdXNlIHF1YXJhbnRpbmUgbW9kZSB0byBwZXJmb3JtIGFkZGl0aW9uYWwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSB0aGlzIHRlc3QuXG4gICAgICAgIFlvdSBjYW4gZmluZCB0cm91Ymxlc2hvb3RpbmcgaW5mb3JtYXRpb24gZm9yIHRoaXMgaXNzdWUgYXQgJHtmb3JtYXRVcmwoRVhURVJOQUxfTElOS1MudHJvdWJsZXNob290TmV0d29yayl9LlxuXG4gICAgICAgIEVycm9yIGRldGFpbHM6XG4gICAgICAgICR7ZXJyLmVyck1zZ31cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9yT25QYWdlXTogZXJyID0+IGBcbiAgICAgICAgQSBKYXZhU2NyaXB0IGVycm9yIG9jY3VycmVkIG9uICR7Zm9ybWF0VXJsKGVyci5wYWdlRGVzdFVybCl9LlxuICAgICAgICBSZXBlYXQgdGVzdCBhY3Rpb25zIGluIHRoZSBicm93c2VyIGFuZCBjaGVjayB0aGUgY29uc29sZSBmb3IgZXJyb3JzLlxuICAgICAgICBUbyBpZ25vcmUgY2xpZW50LXNpZGUgSmF2YVNjcmlwdCBlcnJvcnMsIGVuYWJsZSB0aGUgXCItLXNraXAtanMtZXJyb3JzXCIgQ0xJIG9wdGlvbiwgb3Igc2V0IHRoZSBcInNraXBKc0Vycm9yc1wiIGNvbmZpZ3VyYXRpb24gZmlsZSBwcm9wZXJ0eSB0byBcInRydWVcIi5cbiAgICAgICAgSWYgdGhlIHdlYnNpdGUgb25seSB0aHJvd3MgdGhpcyBlcnJvciB3aGVuIHlvdSB0ZXN0IGl0IHdpdGggVGVzdENhZmUsIHBsZWFzZSBjcmVhdGUgYSBuZXcgaXNzdWUgYXQ6XG4gICAgICAgICR7Zm9ybWF0VXJsKEVYVEVSTkFMX0xJTktTLmNyZWF0ZU5ld0lzc3VlKX0uXG5cbiAgICAgICAgSmF2YVNjcmlwdCBlcnJvciBkZXRhaWxzOlxuICAgICAgICAke3JlcGxhY2VMZWFkaW5nU3BhY2VzV2l0aE5ic3AoZXNjYXBlSHRtbChlcnIuZXJyU3RhY2spKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5UZXN0Q29kZV06IGVyciA9PiBgXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5uYXRpdmVEaWFsb2dOb3RIYW5kbGVkRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBBIG5hdGl2ZSAke2Vyci5kaWFsb2dUeXBlfSBkaWFsb2cgd2FzIGludm9rZWQgb24gcGFnZSAke2Zvcm1hdFVybChlcnIucGFnZVVybCl9LCBidXQgbm8gaGFuZGxlciB3YXMgc2V0IGZvciBpdC4gVXNlIHRoZSBcInNldE5hdGl2ZURpYWxvZ0hhbmRsZXJcIiBmdW5jdGlvbiB0byBpbnRyb2R1Y2UgYSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBuYXRpdmUgZGlhbG9ncy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5OYXRpdmVEaWFsb2dIYW5kbGVyXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIG5hdGl2ZSBkaWFsb2cgaGFuZGxlciBjYWxsZWQgZm9yIGEgbmF0aXZlICR7ZXJyLmRpYWxvZ1R5cGV9IGRpYWxvZyBvbiBwYWdlICR7Zm9ybWF0VXJsKGVyci5wYWdlVXJsKX06XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnNldFRlc3RTcGVlZEFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBTcGVlZCBpcyBleHBlY3RlZCB0byBiZSBhIG51bWJlciBiZXR3ZWVuIDAuMDEgYW5kIDEsIGJ1dCAke2Vyci5hY3R1YWxWYWx1ZX0gd2FzIHBhc3NlZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5zZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29kZVdyb25nVHlwZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIG5hdGl2ZSBkaWFsb2cgaGFuZGxlciBpcyBleHBlY3RlZCB0byBiZSBhIGZ1bmN0aW9uLCBDbGllbnRGdW5jdGlvbiBvciBudWxsLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFR5cGV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkNsaWVudEZ1bmN0aW9uQ29kZV06IGVyciA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIGluICR7ZXJyLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGNvZGU6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkN1c3RvbURPTVByb3BlcnR5Q29kZV06IGVyciA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIHdoZW4gdHJ5aW5nIHRvIGNhbGN1bGF0ZSBhIGN1c3RvbSBTZWxlY3RvciBwcm9wZXJ0eSBcIiR7ZXJyLnByb3BlcnR5fVwiOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jbGllbnRGdW5jdGlvbkV4ZWN1dGlvbkludGVycnVwdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgJHtlcnIuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0gZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZCBieSBwYWdlIHVubG9hZC4gVGhpcyBwcm9ibGVtIG1heSBhcHBlYXIgaWYgeW91IHRyaWdnZXIgcGFnZSBuYXZpZ2F0aW9uIGZyb20gJHtlcnIuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0gY29kZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodE5vbkVycm9yT2JqZWN0SW5UZXN0Q29kZV06IGVyciA9PiBgXG4gICAgICAgIFVuY2F1Z2h0ICR7ZXJyLm9ialR5cGV9IFwiJHtlc2NhcGVIdG1sKGVyci5vYmpTdHIpfVwiIHdhcyB0aHJvd24uIFRocm93IEVycm9yIGluc3RlYWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbl06IGVyciA9PiBgXG4gICAgICAgIFVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbjpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFeGNlcHRpb25dOiBlcnIgPT4gYFxuICAgICAgICBVbmNhdWdodCBleGNlcHRpb246XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbk9wdGlvbnNUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBBY3Rpb24gb3B0aW9ucyBpcyBleHBlY3RlZCB0byBiZSBhbiBvYmplY3QsIG51bGwgb3IgdW5kZWZpbmVkIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVHlwZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3RyaW5nQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkJvb2xlYW5Bcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uTnVsbGFibGVTdHJpbmdBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVsbCBvciBhIHN0cmluZywgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3RyaW5nT3JTdHJpbmdBcnJheUFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nIGFycmF5LCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdBcnJheUVsZW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEVsZW1lbnRzIG9mIHRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBhcmUgZXhwZWN0ZWQgdG8gYmUgbm9uLWVtcHR5IHN0cmluZ3MsIGJ1dCB0aGUgZWxlbWVudCBhdCBpbmRleCAke2Vyci5lbGVtZW50SW5kZXh9IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUmVxdWlyZWRDb29raWVBcmd1bWVudHNdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBtYW5kYXRvcnkgXCJjb29raWVzXCIgYXJndW1lbnQgaXMgbWlzc2luZy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Db29raWVBcmd1bWVudEVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiY29va2llc1wiIGFyZ3VtZW50IGRvZXMgbm90IGJlbG9uZyB0byBhbiBhY2NlcHRhYmxlIGRhdGEgdHlwZTogT2JqZWN0LCBTdHJpbmcsIG9yIEFycmF5IG9mIG9iamVjdHMgb3Igc3RyaW5ncy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Db29raWVBcmd1bWVudHNFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiBjb29raWUgbnVtYmVyICR7ZXJyLmluZGV4ICsgMX0gKCR7ZXJyLmFjdHVhbFZhbHVlfSkgZG9lcyBub3QgYmVsb25nIHRvIGFuIGFjY2VwdGFibGUgZGF0YSB0eXBlOiBPYmplY3Qgb3IgU3RyaW5nLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybENvb2tpZUFyZ3VtZW50RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvdWxkIG5vdCBwYXJzZSB0aGUgdXJsIHBhcmFtZXRlci4gQ2hlY2sgdGhlIHZhbHVlIGZvciBmb3JtYXR0aW5nIGVycm9ycy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VcmxzQ29va2llQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIENvdWxkIG5vdCBwYXJzZSB1cmwgbnVtYmVyICR7ZXJyLmluZGV4ICsgMX0gKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIENoZWNrIHRoZSB2YWx1ZSBmb3IgZm9ybWF0dGluZyBlcnJvcnMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW50ZWdlckFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUm9sZUFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBSb2xlIGluc3RhbmNlLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25GdW5jdGlvbkFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbiwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUG9zaXRpdmVJbnRlZ2VyQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnROb3RGb3VuZEVycm9yXTogKGVyciwgdmlld3BvcnRXaWR0aCkgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIHNlbGVjdG9yIGRvZXMgbm90IG1hdGNoIGFueSBlbGVtZW50IGluIHRoZSBET00gdHJlZS5cblxuICAgICAgICAke2Zvcm1hdFNlbGVjdG9yQ2FsbHN0YWNrKGVyci5hcGlGbkNoYWluLCBlcnIuYXBpRm5JbmRleCwgdmlld3BvcnRXaWR0aCl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudElzSW52aXNpYmxlRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHNlbGVjdG9yIGlzIG5vdCB2aXNpYmxlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblNlbGVjdG9yTWF0Y2hlc1dyb25nTm9kZVR5cGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgaXMgZXhwZWN0ZWQgdG8gbWF0Y2ggYSBET00gZWxlbWVudCwgYnV0IGl0IG1hdGNoZXMgYSAke2Vyci5ub2RlRGVzY3JpcHRpb259IG5vZGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQWRkaXRpb25hbEVsZW1lbnROb3RGb3VuZEVycm9yXTogKGVyciwgdmlld3BvcnRXaWR0aCkgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGRvZXMgbm90IG1hdGNoIGFueSBlbGVtZW50IGluIHRoZSBET00gdHJlZS5cblxuICAgICAgICAke2Zvcm1hdFNlbGVjdG9yQ2FsbHN0YWNrKGVyci5hcGlGbkNoYWluLCBlcnIuYXBpRm5JbmRleCwgdmlld3BvcnRXaWR0aCl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQWRkaXRpb25hbEVsZW1lbnRJc0ludmlzaWJsZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgaXMgbm90IHZpc2libGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQWRkaXRpb25hbFNlbGVjdG9yTWF0Y2hlc1dyb25nTm9kZVR5cGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBzcGVjaWZpZWQgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgaXMgZXhwZWN0ZWQgdG8gbWF0Y2ggYSBET00gZWxlbWVudCwgYnV0IGl0IG1hdGNoZXMgYSAke2Vyci5ub2RlRGVzY3JpcHRpb259IG5vZGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vbkVkaXRhYmxlRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBhY3Rpb24gZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZSBlZGl0YWJsZSAoYW4gaW5wdXQsIHRleHRhcmVhIG9yIGVsZW1lbnQgd2l0aCB0aGUgY29udGVudEVkaXRhYmxlIGF0dHJpYnV0ZSkuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vbkNvbnRlbnRFZGl0YWJsZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgY29udGVudEVkaXRhYmxlIGF0dHJpYnV0ZSBlbmFibGVkIG9yIHRoZSBlbnRpcmUgZG9jdW1lbnQgc2hvdWxkIGJlIGluIGRlc2lnbiBtb2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblJvb3RDb250YWluZXJOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDb250ZW50IGJldHdlZW4gdGhlIGFjdGlvbiBlbGVtZW50cyBjYW5ub3QgYmUgc2VsZWN0ZWQgYmVjYXVzZSB0aGUgcm9vdCBjb250YWluZXIgZm9yIHRoZSBzZWxlY3Rpb24gcmFuZ2UgY2Fubm90IGJlIGZvdW5kLCBpLmUuIHRoZXNlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIGEgY29tbW9uIGFuY2VzdG9yIHdpdGggdGhlIGNvbnRlbnRFZGl0YWJsZSBhdHRyaWJ1dGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudElzTm90RmlsZUlucHV0RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgZG9lcyBub3QgbWF0Y2ggYSBmaWxlIGlucHV0IGVsZW1lbnQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQ2Fubm90RmluZEZpbGVUb1VwbG9hZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQ2Fubm90IGZpbmQgdGhlIGZvbGxvd2luZyBmaWxlKHMpIHRvIHVwbG9hZDpcbiAgICAgICAgJHtlcnIuZmlsZVBhdGhzLm1hcChwYXRoID0+IGVzY2FwZUh0bWwocGF0aCkpLmpvaW4oJ1xcbicpfVxuXG4gICAgICAgIFRoZSBmb2xsb3dpbmcgbG9jYXRpb25zIHdlcmUgc2Nhbm5lZCBmb3IgdGhlIG1pc3NpbmcgdXBsb2FkIGZpbGVzOlxuICAgICAgICAke2Vyci5zY2FubmVkRmlsZVBhdGhzLm1hcChwYXRoID0+IGVzY2FwZUh0bWwocGF0aCkpLmpvaW4oJ1xcbicpfVxuXG4gICAgICAgIEVuc3VyZSB0aGVzZSBmaWxlcyBleGlzdCBvciBjaGFuZ2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnROb3RUZXh0QXJlYUVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgYWN0aW9uIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSAmbHQ7dGV4dGFyZWEmZ3Q7LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnROb3RJZnJhbWVFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGFjdGlvbiBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFuICZsdDtpZnJhbWUmZ3QuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW5jb3JyZWN0S2V5c0Vycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGNvbnRhaW5zIGFuIGluY29ycmVjdCBrZXkgb3Iga2V5IGNvbWJpbmF0aW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVuc3VwcG9ydGVkRGV2aWNlVHlwZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IHNwZWNpZmllcyBhbiB1bnN1cHBvcnRlZCBcIiR7ZXJyLmFjdHVhbFZhbHVlfVwiIGRldmljZS4gRm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcywgcmVmZXIgdG8gJHtmb3JtYXRVcmwoRVhURVJOQUxfTElOS1Mudmlld3BvcnRTaXplcyl9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkludmFsaWRTY3JvbGxUYXJnZXRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFVuYWJsZSB0byBzY3JvbGwgdG8gdGhlIHNwZWNpZmllZCBwb2ludCBiZWNhdXNlIGEgcG9pbnQgd2l0aCB0aGUgc3BlY2lmaWVkICR7ZXJyLnByb3BlcnRpZXN9IGlzIG5vdCBsb2NhdGVkIGluc2lkZSB0aGUgZWxlbWVudCdzIGNyb3BwaW5nIHJlZ2lvbi5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JZnJhbWVJc05vdExvYWRlZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDb250ZW50IG9mIHRoZSBpZnJhbWUgdG8gd2hpY2ggeW91IGFyZSBzd2l0Y2hpbmcgZGlkIG5vdCBsb2FkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmN1cnJlbnRJZnJhbWVJc05vdExvYWRlZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDb250ZW50IG9mIHRoZSBpZnJhbWUgaW4gd2hpY2ggdGhlIHRlc3QgaXMgY3VycmVudGx5IG9wZXJhdGluZyBkaWQgbm90IGxvYWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY3VycmVudElmcmFtZU5vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBpZnJhbWUgaW4gd2hpY2ggdGhlIHRlc3QgaXMgY3VycmVudGx5IG9wZXJhdGluZyBkb2VzIG5vdCBleGlzdCBhbnltb3JlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmN1cnJlbnRJZnJhbWVJc0ludmlzaWJsZUVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgaWZyYW1lIGluIHdoaWNoIHRoZSB0ZXN0IGlzIGN1cnJlbnRseSBvcGVyYXRpbmcgaXMgbm90IHZpc2libGUgYW55bW9yZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5taXNzaW5nQXdhaXRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQSBjYWxsIHRvIGFuIGFzeW5jIGZ1bmN0aW9uIGlzIG5vdCBhd2FpdGVkLiBVc2UgdGhlIFwiYXdhaXRcIiBrZXl3b3JkIGJlZm9yZSBhY3Rpb25zLCBhc3NlcnRpb25zIG9yIGNoYWlucyBvZiB0aGVtIHRvIGVuc3VyZSB0aGF0IHRoZXkgcnVuIGluIHRoZSByaWdodCBzZXF1ZW5jZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5leHRlcm5hbEFzc2VydGlvbkxpYnJhcnlFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cblxuICAgICAgICAke3JlbmRlckRpZmYoZXJyLmRpZmYpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmRvbU5vZGVDbGllbnRGdW5jdGlvblJlc3VsdEVycm9yXTogZXJyID0+IGBcbiAgICAgICAke2Vyci5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBjYW5ub3QgcmV0dXJuIERPTSBlbGVtZW50cy4gVXNlIFNlbGVjdG9yIGZ1bmN0aW9ucyBmb3IgdGhpcyBwdXJwb3NlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmludmFsaWRTZWxlY3RvclJlc3VsdEVycm9yXTogKCkgPT4gYFxuICAgICAgICBGdW5jdGlvbiB0aGF0IHNwZWNpZmllcyBhIHNlbGVjdG9yIGNhbiBvbmx5IHJldHVybiBhIERPTSBub2RlLCBhbiBhcnJheSBvZiBub2RlcywgTm9kZUxpc3QsIEhUTUxDb2xsZWN0aW9uLCBudWxsIG9yIHVuZGVmaW5lZC4gVXNlIENsaWVudEZ1bmN0aW9uIHRvIHJldHVybiBvdGhlciB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU2VsZWN0b3JFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEFjdGlvbiBcIiR7ZXJyLnNlbGVjdG9yTmFtZX1cIiBhcmd1bWVudCBlcnJvcjpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2Fubm90T2J0YWluSW5mb0ZvckVsZW1lbnRTcGVjaWZpZWRCeVNlbGVjdG9yRXJyb3JdOiAoZXJyLCB2aWV3cG9ydFdpZHRoKSA9PiBgXG4gICAgICAgIENhbm5vdCBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vZGUgYmVjYXVzZSB0aGUgc3BlY2lmaWVkIHNlbGVjdG9yIGRvZXMgbm90IG1hdGNoIGFueSBub2RlIGluIHRoZSBET00gdHJlZS5cblxuICAgICAgICAke2Zvcm1hdFNlbGVjdG9yQ2FsbHN0YWNrKGVyci5hcGlGbkNoYWluLCBlcnIuYXBpRm5JbmRleCwgdmlld3BvcnRXaWR0aCl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMud2luZG93RGltZW5zaW9uc092ZXJmbG93RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFVuYWJsZSB0byByZXNpemUgdGhlIHdpbmRvdyBiZWNhdXNlIHRoZSBzcGVjaWZpZWQgc2l6ZSBleGNlZWRzIHRoZSBzY3JlZW4gc2l6ZS4gT24gbWFjT1MsIGEgd2luZG93IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiB0aGUgc2NyZWVuLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmZvcmJpZGRlbkNoYXJhY3RlcnNJblNjcmVlbnNob3RQYXRoRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGVyZSBhcmUgZm9yYmlkZGVuIGNoYXJhY3RlcnMgaW4gdGhlIFwiJHtlcnIuc2NyZWVuc2hvdFBhdGh9XCIgc2NyZWVuc2hvdCBwYXRoOlxuICAgICAgICAke3JlbmRlckZvcmJpZGRlbkNoYXJzTGlzdChlcnIuZm9yYmlkZGVuQ2hhcnNMaXN0KX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5pbnZhbGlkRWxlbWVudFNjcmVlbnNob3REaW1lbnNpb25zRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICAgVW5hYmxlIHRvIGNhcHR1cmUgYW4gZWxlbWVudCBpbWFnZSBiZWNhdXNlIHRoZSByZXN1bHRpbmcgaW1hZ2UgJHtlcnIuZGltZW5zaW9uc30gJHtlcnIudmVyYn0gemVybyBvciBuZWdhdGl2ZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5yb2xlU3dpdGNoSW5Sb2xlSW5pdGlhbGl6ZXJFcnJvcl06ICgpID0+IGBcbiAgICAgICAgUm9sZSBjYW5ub3QgYmUgc3dpdGNoZWQgd2hpbGUgYW5vdGhlciByb2xlIGlzIGJlaW5nIGluaXRpYWxpemVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFzc2VydGlvbkV4ZWN1dGFibGVBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQ2Fubm90IGV2YWx1YXRlIHRoZSBcIiR7ZXJyLmFjdHVhbFZhbHVlfVwiIGV4cHJlc3Npb24gaW4gdGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIHBhcmFtZXRlciBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXJyb3I6XG5cbiAgICAgICAgJHtlcnIuZXJyTXNnfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFzc2VydGlvbldpdGhvdXRNZXRob2RDYWxsRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEFuIGFzc2VydGlvbiBtZXRob2QgaXMgbm90IHNwZWNpZmllZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hc3NlcnRpb25VbmF3YWl0ZWRQcm9taXNlRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEF0dGVtcHRlZCB0byBydW4gYXNzZXJ0aW9ucyBvbiBhIFByb21pc2Ugb2JqZWN0LiBEaWQgeW91IGZvcmdldCB0byBhd2FpdCBpdD8gSWYgbm90LCBwYXNzIFwieyBhbGxvd1VuYXdhaXRlZFByb21pc2U6IHRydWUgfVwiIHRvIHRoZSBhc3NlcnRpb24gb3B0aW9ucy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5yZXF1ZXN0SG9va05vdEltcGxlbWVudGVkRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBZb3Ugc2hvdWxkIGltcGxlbWVudCB0aGUgXCIke2Vyci5tZXRob2ROYW1lfVwiIG1ldGhvZCBpbiB0aGUgXCIke2Vyci5ob29rQ2xhc3NOYW1lfVwiIGNsYXNzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnJlcXVlc3RIb29rVW5oYW5kbGVkRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBBbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJyZWQgaW4gdGhlIFwiJHtlcnIubWV0aG9kTmFtZX1cIiBtZXRob2Qgb2YgdGhlIFwiJHtlcnIuaG9va0NsYXNzTmFtZX1cIiBjbGFzczpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ3VzdG9tQ2xpZW50U2NyaXB0Q29kZV06IGVyciA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIGluIGEgc2NyaXB0IGluamVjdGVkIGludG8gdGhlIHRlc3RlZCBwYWdlOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5DdXN0b21DbGllbnRTY3JpcHRDb2RlTG9hZGVkRnJvbU1vZHVsZV06IGVyciA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIGluIHRoZSAnJHtlcnIubW9kdWxlTmFtZX0nIG1vZHVsZSBpbmplY3RlZCBpbnRvIHRoZSB0ZXN0ZWQgcGFnZS4gTWFrZSBzdXJlIHRoYXQgdGhpcyBtb2R1bGUgY2FuIGJlIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyIGVudmlyb25tZW50LlxuXG4gICAgICAgIEVycm9yIGRldGFpbHM6XG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5DdXN0b21TY3JpcHRdOiBlcnIgPT4gYFxuICAgICAgICBBbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJyZWQgaW4gdGhlIGN1c3RvbSBzY3JpcHQ6XG5cbiAgICAgICAgRXJyb3IgZGV0YWlsczogJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuXG4gICAgICAgICR7Zm9ybWF0RXhwcmVzc2lvbk1lc3NhZ2UoZXJyLmV4cHJlc3Npb24sIGVyci5saW5lLCBlcnIuY29sdW1uKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jaGlsZFdpbmRvd0lzTm90TG9hZGVkRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBwYWdlIGluIHRoZSBjaGlsZCB3aW5kb3cgaXMgbm90IGxvYWRlZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jaGlsZFdpbmRvd05vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBjaGlsZCB3aW5kb3cgaXMgbm90IGZvdW5kLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNhbm5vdFN3aXRjaFRvV2luZG93RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBzd2l0Y2ggdG8gdGhlIHdpbmRvdy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jbG9zZUNoaWxkV2luZG93RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNsb3NpbmcgY2hpbGQgd2luZG93cy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jaGlsZFdpbmRvd0Nsb3NlZEJlZm9yZVN3aXRjaGluZ0Vycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgY2hpbGQgd2luZG93IHdhcyBjbG9zZWQgYmVmb3JlIFRlc3RDYWZlIGNvdWxkIHN3aXRjaCB0byBpdC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RDbG9zZVdpbmRvd1dpdGhDaGlsZHJlbkVycm9yXTogKCkgPT4gYFxuICAgICAgICBDYW5ub3QgY2xvc2UgYSB3aW5kb3cgdGhhdCBoYXMgYW4gb3BlbiBjaGlsZCB3aW5kb3cuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudGFyZ2V0V2luZG93Tm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IGZpbmQgdGhlIHdpbmRvdyBzcGVjaWZpZWQgaW4gdGhlIGFjdGlvbiBwYXJhbWV0ZXJzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnBhcmVudFdpbmRvd05vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBmaW5kIHRoZSBwYXJlbnQgd2luZG93LiBNYWtlIHN1cmUgdGhhdCB0aGUgdGVzdGVkIHdpbmRvdyB3YXMgb3BlbmVkIGZyb20gYW5vdGhlciB3aW5kb3cuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucHJldmlvdXNXaW5kb3dOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDYW5ub3QgZmluZCB0aGUgcHJldmlvdXMgd2luZG93LiBNYWtlIHN1cmUgdGhhdCB0aGUgcHJldmlvdXMgd2luZG93IGlzIG9wZW5lZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5zd2l0Y2hUb1dpbmRvd1ByZWRpY2F0ZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW5zaWRlIHRoZSBcInN3aXRjaFRvV2luZG93XCIgYXJndW1lbnQgZnVuY3Rpb24uXG5cbiAgICAgICAgRXJyb3IgZGV0YWlsczpcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm11bHRpcGxlV2luZG93c01vZGVJc0Rpc2FibGVkRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBNdWx0aS13aW5kb3cgbW9kZSBpcyBkaXNhYmxlZC4gVG8gdXNlIHRoZSBcIiR7ZXJyLm1ldGhvZE5hbWV9XCIgbWV0aG9kLCByZW1vdmUgdGhlIFwiZGlzYWJsZU11bHRpcGxlV2luZG93c1wiIG9wdGlvbi5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5tdWx0aXBsZVdpbmRvd3NNb2RlSXNOb3RTdXBwb3J0ZWRJblJlbW90ZUJyb3dzZXJFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIE11bHRpLXdpbmRvdyBtb2RlIGlzIHN1cHBvcnRlZCBvbmx5IGluIGxvY2FsbHktaW5zdGFsbGVkIENocm9tZSwgQ2hyb21pdW0sIEVkZ2UgODQrIGFuZCBGaXJlZm94LiBSdW4gdGVzdHMgaW4gdGhlc2UgYnJvd3NlcnMgdG8gdXNlIHRoZSBcIiR7ZXJyLm1ldGhvZE5hbWV9XCIgbWV0aG9kLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNhbm5vdENsb3NlV2luZG93V2l0aG91dFBhcmVudF06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IGNsb3NlIHRoZSB3aW5kb3cgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIGEgcGFyZW50LiBUaGUgcGFyZW50IHdpbmRvdyB3YXMgY2xvc2VkIG9yIHlvdSBhcmUgYXR0ZW1wdGluZyB0byBjbG9zZSB0aGUgcm9vdCBicm93c2VyIHdpbmRvdyB3aGVyZSB0ZXN0cyB3ZXJlIGxhdW5jaGVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNhbm5vdFJlc3RvcmVDaGlsZFdpbmRvd0Vycm9yXTogKCkgPT4gYFxuICAgICAgICBGYWlsZWQgdG8gcmVzdG9yZSBjb25uZWN0aW9uIHRvIHdpbmRvdyB3aXRoaW4gdGhlIGFsbG9jYXRlZCB0aW1lb3V0LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmV4ZWN1dGlvblRpbWVvdXRFeGNlZWRlZF06IGVyciA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnIuc2NvcGV9IHRpbWVvdXQgb2YgJHtlcnIudGltZW91dH1tcyBleGNlZWRlZC5gO1xuICAgIH0sXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblN0cmluZ09wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgU3RyaW5nIHR5cGUgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblN0cmluZ09yUmVnZXhPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIFN0cmluZyBvciBSZWdleCB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25EYXRlT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBEYXRlIHR5cGUgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbk51bWJlck9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgTnVtYmVyIHR5cGUgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybE9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgc3RyaW5nIG9yIFVSTCB0eXBlcyB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVXJsU2VhcmNoUGFyYW1zT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBvYmplY3Qgb3IgVVJMU2VhcmNoUGFyYW1zIHR5cGVzIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25PYmplY3RPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIG9iamVjdCB0eXBlcyB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVXJsQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhbiBVUkwgb3IgYSBzdHJpbmcsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblNraXBKc0Vycm9yc0FyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDYW5ub3QgZXhlY3V0ZSB0aGUgc2tpcEpzRXJyb3JzIG1ldGhvZC4gVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGRhdGEgdHlwZXM6IEJvb2xlYW4sIE9iamVjdCwgRnVuY3Rpb24uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU2tpcEpzRXJyb3JzRGVwZW5kZW5jaWVzQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIENhbm5vdCBleGVjdXRlIHRoZSBza2lwSnNFcnJvcnMgbWV0aG9kLiBUaGUgdmFsdWUgb2YgdGhlIFwiZGVwZW5kZW5jaWVzXCIgYXJndW1lbnQgYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCJkZXBlbmRlbmNpZXNcIiBhcmd1bWVudCBvbmx5IHN1cHBvcnRzIHRoZSBPYmplY3QgZGF0YSB0eXBlLlxuICAgIGAsXG59O1xuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy90ZXN0LXJ1bi90ZW1wbGF0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBOEM7QUFDOUMsb0NBQTJDO0FBQzNDLG1DQU9pQjtBQUVqQixNQUFNLGNBQWMsR0FBRztJQUNuQixjQUFjLEVBQU8sMEVBQTBFO0lBQy9GLG1CQUFtQixFQUFFLCtEQUErRDtJQUNwRixhQUFhLEVBQVEsNEVBQTRFO0lBQ2pHLG1CQUFtQixFQUFFLG1GQUFtRjtDQUMzRyxDQUFDO0FBRUYsa0JBQWU7SUFDWCxDQUFDLHVCQUFlLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ3hDLEdBQUcsQ0FBQyxVQUFVLHFEQUFxRCxHQUFHLENBQUMsV0FBVztLQUM1RjtJQUVELENBQUMsdUJBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDaEQsR0FBRyxDQUFDLFVBQVUsNkRBQTZELEdBQUcsQ0FBQyxXQUFXO0tBQ3BHO0lBRUQsQ0FBQyx1QkFBZSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztlQUN4QyxHQUFHLENBQUMsVUFBVSwwREFBMEQsR0FBRyxDQUFDLFdBQVc7S0FDakc7SUFFRCxDQUFDLHVCQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ3RDLEdBQUcsQ0FBQyxVQUFVLHNFQUFzRSxHQUFHLENBQUMsV0FBVztLQUM3RztJQUVELENBQUMsdUJBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO3FDQUNQLElBQUEsaUJBQVMsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDOztxRUFFYyxJQUFBLGlCQUFTLEVBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDOzs7VUFHeEcsR0FBRyxDQUFDLE1B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R0FBRyxDQUFDLFlBQVksOENBQThDLEdBQUcsQ0FBQyxXQUFXLFdBQVcsR0FBRyxDQUFDLFlBQVk7S0FDdks7SUFFRCxDQUFDLHVCQUFlLENBQUMsMkNBQTJDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzJIQUNpRCxHQUFHLENBQUMsV0FBVztLQUNySTtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlc2NhcGUgYXMgZXNjYXBlSHRtbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBURVNUX1JVTl9FUlJPUlMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIHJlbmRlckZvcmJpZGRlbkNoYXJzTGlzdCxcbiAgICByZW5kZXJEaWZmLFxuICAgIGZvcm1hdFNlbGVjdG9yQ2FsbHN0YWNrLFxuICAgIGZvcm1hdFVybCxcbiAgICByZXBsYWNlTGVhZGluZ1NwYWNlc1dpdGhOYnNwLFxuICAgIGZvcm1hdEV4cHJlc3Npb25NZXNzYWdlLFxufSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgRVhURVJOQUxfTElOS1MgPSB7XG4gICAgY3JlYXRlTmV3SXNzdWU6ICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9EZXZFeHByZXNzL3Rlc3RjYWZlL2lzc3Vlcy9uZXc/dGVtcGxhdGU9YnVnLXJlcG9ydC5tZCcsXG4gICAgdHJvdWJsZXNob290TmV0d29yazogJ2h0dHBzOi8vZ28uZGV2ZXhwcmVzcy5jb20vVGVzdENhZmVfRkFRX0FSZXF1ZXN0SGFzRmFpbGVkLmFzcHgnLFxuICAgIHZpZXdwb3J0U2l6ZXM6ICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy9kZXZpY2Utc3BlY3MvYmxvYi9tYXN0ZXIvdmlld3BvcnQtc2l6ZXMuanNvbicsXG4gICAgc2tpcEpzRXJyb3JzUmVjaXBlczogJ2h0dHBzOi8vdGVzdGNhZmUuaW8vZG9jdW1lbnRhdGlvbi80MDQwMzgvcmVjaXBlcy9kZWJ1Z2dpbmcvc2tpcC1qYXZhc2NyaXB0LWVycm9ycycsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbnRlZ2VyT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBpcyBleHBlY3RlZCB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Qb3NpdGl2ZUludGVnZXJPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQm9vbGVhbk9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgYSBib29sZWFuIHZhbHVlLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TcGVlZE9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXIgYmV0d2VlbiAwLjAxIGFuZCAxLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5wYWdlTG9hZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgRmFpbGVkIHRvIGxvYWQgdGhlIHBhZ2UgYXQgJHtmb3JtYXRVcmwoZXJyLnVybCl9LlxuICAgICAgICBJbmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhlIFwicGFnZVJlcXVlc3RUaW1lb3V0XCIgdmFyaWFibGUsIGVuYWJsZSB0aGUgXCJyZXRyeVRlc3RQYWdlc1wiIG9wdGlvbiwgb3IgdXNlIHF1YXJhbnRpbmUgbW9kZSB0byBwZXJmb3JtIGFkZGl0aW9uYWwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSB0aGlzIHRlc3QuXG4gICAgICAgIFlvdSBjYW4gZmluZCB0cm91Ymxlc2hvb3RpbmcgaW5mb3JtYXRpb24gZm9yIHRoaXMgaXNzdWUgYXQgJHtmb3JtYXRVcmwoRVhURVJOQUxfTElOS1MudHJvdWJsZXNob290TmV0d29yayl9LlxuXG4gICAgICAgIEVycm9yIGRldGFpbHM6XG4gICAgICAgICR7ZXJyLmVyck1zZ31cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9yT25QYWdlXTogZXJyID0+IGBcbiAgICAgICAgQSBKYXZhU2NyaXB0IGVycm9yIG9jY3VycmVkIG9uICR7Zm9ybWF0VXJsKGVyci5wYWdlRGVzdFVybCl9LlxuICAgICAgICBSZXBlYXQgdGVzdCBhY3Rpb25zIGluIHRoZSBicm93c2VyIGFuZCBjaGVjayB0aGUgY29uc29sZSBmb3IgZXJyb3JzLlxuICAgICAgICBFbmFibGUgdGhlIOKAnHNraXBKc0Vycm9yc+KAnSBvcHRpb24gdG8gaWdub3JlIEphdmFTY3JpcHQgZXJyb3JzIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbi4gTGVhcm4gbW9yZTogJHtmb3JtYXRVcmwoRVhURVJOQUxfTElOS1Muc2tpcEpzRXJyb3JzUmVjaXBlcyl9XG4gICAgICAgIElmIHRoZSB3ZWJzaXRlIG9ubHkgdGhyb3dzIHRoaXMgZXJyb3Igd2hlbiB5b3UgdGVzdCBpdCB3aXRoIFRlc3RDYWZlLCBwbGVhc2UgY3JlYXRlIGEgbmV3IGlzc3VlIGF0OlxuICAgICAgICAke2Zvcm1hdFVybChFWFRFUk5BTF9MSU5LUy5jcmVhdGVOZXdJc3N1ZSl9LlxuXG4gICAgICAgIEphdmFTY3JpcHQgZXJyb3IgZGV0YWlsczpcbiAgICAgICAgJHtyZXBsYWNlTGVhZGluZ1NwYWNlc1dpdGhOYnNwKGVzY2FwZUh0bWwoZXJyLmVyclN0YWNrKSl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluVGVzdENvZGVdOiBlcnIgPT4gYFxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMubmF0aXZlRGlhbG9nTm90SGFuZGxlZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQSBuYXRpdmUgJHtlcnIuZGlhbG9nVHlwZX0gZGlhbG9nIHdhcyBpbnZva2VkIG9uIHBhZ2UgJHtmb3JtYXRVcmwoZXJyLnBhZ2VVcmwpfSwgYnV0IG5vIGhhbmRsZXIgd2FzIHNldCBmb3IgaXQuIFVzZSB0aGUgXCJzZXROYXRpdmVEaWFsb2dIYW5kbGVyXCIgZnVuY3Rpb24gdG8gaW50cm9kdWNlIGEgaGFuZGxlciBmdW5jdGlvbiBmb3IgbmF0aXZlIGRpYWxvZ3MuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluTmF0aXZlRGlhbG9nSGFuZGxlcl06IGVyciA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBuYXRpdmUgZGlhbG9nIGhhbmRsZXIgY2FsbGVkIGZvciBhIG5hdGl2ZSAke2Vyci5kaWFsb2dUeXBlfSBkaWFsb2cgb24gcGFnZSAke2Zvcm1hdFVybChlcnIucGFnZVVybCl9OlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5zZXRUZXN0U3BlZWRBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgU3BlZWQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXIgYmV0d2VlbiAwLjAxIGFuZCAxLCBidXQgJHtlcnIuYWN0dWFsVmFsdWV9IHdhcyBwYXNzZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuc2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvZGVXcm9uZ1R5cGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBuYXRpdmUgZGlhbG9nIGhhbmRsZXIgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbiwgQ2xpZW50RnVuY3Rpb24gb3IgbnVsbCwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxUeXBlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5DbGllbnRGdW5jdGlvbkNvZGVdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiAke2Vyci5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBjb2RlOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5DdXN0b21ET01Qcm9wZXJ0eUNvZGVdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIHRyeWluZyB0byBjYWxjdWxhdGUgYSBjdXN0b20gU2VsZWN0b3IgcHJvcGVydHkgXCIke2Vyci5wcm9wZXJ0eX1cIjpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2xpZW50RnVuY3Rpb25FeGVjdXRpb25JbnRlcnJ1cHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgICR7ZXJyLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGV4ZWN1dGlvbiB3YXMgaW50ZXJydXB0ZWQgYnkgcGFnZSB1bmxvYWQuIFRoaXMgcHJvYmxlbSBtYXkgYXBwZWFyIGlmIHlvdSB0cmlnZ2VyIHBhZ2UgbmF2aWdhdGlvbiBmcm9tICR7ZXJyLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGNvZGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHROb25FcnJvck9iamVjdEluVGVzdENvZGVdOiBlcnIgPT4gYFxuICAgICAgICBVbmNhdWdodCAke2Vyci5vYmpUeXBlfSBcIiR7ZXNjYXBlSHRtbChlcnIub2JqU3RyKX1cIiB3YXMgdGhyb3duLiBUaHJvdyBFcnJvciBpbnN0ZWFkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25dOiBlcnIgPT4gYFxuICAgICAgICBVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb246XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXhjZXB0aW9uXTogZXJyID0+IGBcbiAgICAgICAgVW5jYXVnaHQgZXhjZXB0aW9uOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25PcHRpb25zVHlwZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQWN0aW9uIG9wdGlvbnMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gb2JqZWN0LCBudWxsIG9yIHVuZGVmaW5lZCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFR5cGV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblN0cmluZ0FyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Cb29sZWFuQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIGJvb2xlYW4gdmFsdWUsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbk51bGxhYmxlU3RyaW5nQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIG51bGwgb3IgYSBzdHJpbmcsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblN0cmluZ09yU3RyaW5nQXJyYXlBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHN0cmluZyBhcnJheSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3RyaW5nQXJyYXlFbGVtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBFbGVtZW50cyBvZiB0aGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgYXJlIGV4cGVjdGVkIHRvIGJlIG5vbi1lbXB0eSBzdHJpbmdzLCBidXQgdGhlIGVsZW1lbnQgYXQgaW5kZXggJHtlcnIuZWxlbWVudEluZGV4fSB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblJlcXVpcmVkQ29va2llQXJndW1lbnRzXTogKCkgPT4gYFxuICAgICAgICBUaGUgbWFuZGF0b3J5IFwiY29va2llc1wiIGFyZ3VtZW50IGlzIG1pc3NpbmcuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQ29va2llQXJndW1lbnRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcImNvb2tpZXNcIiBhcmd1bWVudCBkb2VzIG5vdCBiZWxvbmcgdG8gYW4gYWNjZXB0YWJsZSBkYXRhIHR5cGU6IE9iamVjdCwgU3RyaW5nLCBvciBBcnJheSBvZiBvYmplY3RzIG9yIHN0cmluZ3MuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQ29va2llQXJndW1lbnRzRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgY29va2llIG51bWJlciAke2Vyci5pbmRleCArIDF9ICgke2Vyci5hY3R1YWxWYWx1ZX0pIGRvZXMgbm90IGJlbG9uZyB0byBhbiBhY2NlcHRhYmxlIGRhdGEgdHlwZTogT2JqZWN0IG9yIFN0cmluZy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VcmxDb29raWVBcmd1bWVudEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDb3VsZCBub3QgcGFyc2UgdGhlIHVybCBwYXJhbWV0ZXIuIENoZWNrIHRoZSB2YWx1ZSBmb3IgZm9ybWF0dGluZyBlcnJvcnMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVXJsc0Nvb2tpZUFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDb3VsZCBub3QgcGFyc2UgdXJsIG51bWJlciAke2Vyci5pbmRleCArIDF9ICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBDaGVjayB0aGUgdmFsdWUgZm9yIGZvcm1hdHRpbmcgZXJyb3JzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkludGVnZXJBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblJvbGVBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgUm9sZSBpbnN0YW5jZSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRnVuY3Rpb25Bcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgZnVuY3Rpb24sIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblBvc2l0aXZlSW50ZWdlckFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm90Rm91bmRFcnJvcl06IChlcnIsIHZpZXdwb3J0V2lkdGgpID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBzZWxlY3RvciBkb2VzIG5vdCBtYXRjaCBhbnkgZWxlbWVudCBpbiB0aGUgRE9NIHRyZWUuXG5cbiAgICAgICAgJHtmb3JtYXRTZWxlY3RvckNhbGxzdGFjayhlcnIuYXBpRm5DaGFpbiwgZXJyLmFwaUZuSW5kZXgsIHZpZXdwb3J0V2lkdGgpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnRJc0ludmlzaWJsZUVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBzZWxlY3RvciBpcyBub3QgdmlzaWJsZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIHNlbGVjdG9yIGlzIGV4cGVjdGVkIHRvIG1hdGNoIGEgRE9NIGVsZW1lbnQsIGJ1dCBpdCBtYXRjaGVzIGEgJHtlcnIubm9kZURlc2NyaXB0aW9ufSBub2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxFbGVtZW50Tm90Rm91bmRFcnJvcl06IChlcnIsIHZpZXdwb3J0V2lkdGgpID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBkb2VzIG5vdCBtYXRjaCBhbnkgZWxlbWVudCBpbiB0aGUgRE9NIHRyZWUuXG5cbiAgICAgICAgJHtmb3JtYXRTZWxlY3RvckNhbGxzdGFjayhlcnIuYXBpRm5DaGFpbiwgZXJyLmFwaUZuSW5kZXgsIHZpZXdwb3J0V2lkdGgpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxFbGVtZW50SXNJbnZpc2libGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGlzIG5vdCB2aXNpYmxlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxTZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGlzIGV4cGVjdGVkIHRvIG1hdGNoIGEgRE9NIGVsZW1lbnQsIGJ1dCBpdCBtYXRjaGVzIGEgJHtlcnIubm9kZURlc2NyaXB0aW9ufSBub2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnROb25FZGl0YWJsZUVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgYWN0aW9uIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZWRpdGFibGUgKGFuIGlucHV0LCB0ZXh0YXJlYSBvciBlbGVtZW50IHdpdGggdGhlIGNvbnRlbnRFZGl0YWJsZSBhdHRyaWJ1dGUpLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnROb25Db250ZW50RWRpdGFibGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGlzIGV4cGVjdGVkIHRvIGhhdmUgdGhlIGNvbnRlbnRFZGl0YWJsZSBhdHRyaWJ1dGUgZW5hYmxlZCBvciB0aGUgZW50aXJlIGRvY3VtZW50IHNob3VsZCBiZSBpbiBkZXNpZ24gbW9kZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Sb290Q29udGFpbmVyTm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ29udGVudCBiZXR3ZWVuIHRoZSBhY3Rpb24gZWxlbWVudHMgY2Fubm90IGJlIHNlbGVjdGVkIGJlY2F1c2UgdGhlIHJvb3QgY29udGFpbmVyIGZvciB0aGUgc2VsZWN0aW9uIHJhbmdlIGNhbm5vdCBiZSBmb3VuZCwgaS5lLiB0aGVzZSBlbGVtZW50cyBkbyBub3QgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvciB3aXRoIHRoZSBjb250ZW50RWRpdGFibGUgYXR0cmlidXRlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnRJc05vdEZpbGVJbnB1dEVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIHNlbGVjdG9yIGRvZXMgbm90IG1hdGNoIGEgZmlsZSBpbnB1dCBlbGVtZW50LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkNhbm5vdEZpbmRGaWxlVG9VcGxvYWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIENhbm5vdCBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZShzKSB0byB1cGxvYWQ6XG4gICAgICAgICR7ZXJyLmZpbGVQYXRocy5tYXAocGF0aCA9PiBlc2NhcGVIdG1sKHBhdGgpKS5qb2luKCdcXG4nKX1cblxuICAgICAgICBUaGUgZm9sbG93aW5nIGxvY2F0aW9ucyB3ZXJlIHNjYW5uZWQgZm9yIHRoZSBtaXNzaW5nIHVwbG9hZCBmaWxlczpcbiAgICAgICAgJHtlcnIuc2Nhbm5lZEZpbGVQYXRocy5tYXAocGF0aCA9PiBlc2NhcGVIdG1sKHBhdGgpKS5qb2luKCdcXG4nKX1cblxuICAgICAgICBFbnN1cmUgdGhlc2UgZmlsZXMgZXhpc3Qgb3IgY2hhbmdlIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm90VGV4dEFyZWFFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGFjdGlvbiBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgJmx0O3RleHRhcmVhJmd0Oy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm90SWZyYW1lRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBhY3Rpb24gZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZSBhbiAmbHQ7aWZyYW1lJmd0LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkluY29ycmVjdEtleXNFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBjb250YWlucyBhbiBpbmNvcnJlY3Qga2V5IG9yIGtleSBjb21iaW5hdGlvbi5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VbnN1cHBvcnRlZERldmljZVR5cGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBzcGVjaWZpZXMgYW4gdW5zdXBwb3J0ZWQgXCIke2Vyci5hY3R1YWxWYWx1ZX1cIiBkZXZpY2UuIEZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGRldmljZXMsIHJlZmVyIHRvICR7Zm9ybWF0VXJsKEVYVEVSTkFMX0xJTktTLnZpZXdwb3J0U2l6ZXMpfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbnZhbGlkU2Nyb2xsVGFyZ2V0RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBVbmFibGUgdG8gc2Nyb2xsIHRvIHRoZSBzcGVjaWZpZWQgcG9pbnQgYmVjYXVzZSBhIHBvaW50IHdpdGggdGhlIHNwZWNpZmllZCAke2Vyci5wcm9wZXJ0aWVzfSBpcyBub3QgbG9jYXRlZCBpbnNpZGUgdGhlIGVsZW1lbnQncyBjcm9wcGluZyByZWdpb24uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSWZyYW1lSXNOb3RMb2FkZWRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ29udGVudCBvZiB0aGUgaWZyYW1lIHRvIHdoaWNoIHlvdSBhcmUgc3dpdGNoaW5nIGRpZCBub3QgbG9hZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jdXJyZW50SWZyYW1lSXNOb3RMb2FkZWRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ29udGVudCBvZiB0aGUgaWZyYW1lIGluIHdoaWNoIHRoZSB0ZXN0IGlzIGN1cnJlbnRseSBvcGVyYXRpbmcgZGlkIG5vdCBsb2FkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmN1cnJlbnRJZnJhbWVOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgaWZyYW1lIGluIHdoaWNoIHRoZSB0ZXN0IGlzIGN1cnJlbnRseSBvcGVyYXRpbmcgZG9lcyBub3QgZXhpc3QgYW55bW9yZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jdXJyZW50SWZyYW1lSXNJbnZpc2libGVFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGlmcmFtZSBpbiB3aGljaCB0aGUgdGVzdCBpcyBjdXJyZW50bHkgb3BlcmF0aW5nIGlzIG5vdCB2aXNpYmxlIGFueW1vcmUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMubWlzc2luZ0F3YWl0RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEEgY2FsbCB0byBhbiBhc3luYyBmdW5jdGlvbiBpcyBub3QgYXdhaXRlZC4gVXNlIHRoZSBcImF3YWl0XCIga2V5d29yZCBiZWZvcmUgYWN0aW9ucywgYXNzZXJ0aW9ucyBvciBjaGFpbnMgb2YgdGhlbSB0byBlbnN1cmUgdGhhdCB0aGV5IHJ1biBpbiB0aGUgcmlnaHQgc2VxdWVuY2UuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuZXh0ZXJuYWxBc3NlcnRpb25MaWJyYXJ5RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG5cbiAgICAgICAgJHtyZW5kZXJEaWZmKGVyci5kaWZmKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5kb21Ob2RlQ2xpZW50RnVuY3Rpb25SZXN1bHRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgJHtlcnIuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0gY2Fubm90IHJldHVybiBET00gZWxlbWVudHMuIFVzZSBTZWxlY3RvciBmdW5jdGlvbnMgZm9yIHRoaXMgcHVycG9zZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5pbnZhbGlkU2VsZWN0b3JSZXN1bHRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgRnVuY3Rpb24gdGhhdCBzcGVjaWZpZXMgYSBzZWxlY3RvciBjYW4gb25seSByZXR1cm4gYSBET00gbm9kZSwgYW4gYXJyYXkgb2Ygbm9kZXMsIE5vZGVMaXN0LCBIVE1MQ29sbGVjdGlvbiwgbnVsbCBvciB1bmRlZmluZWQuIFVzZSBDbGllbnRGdW5jdGlvbiB0byByZXR1cm4gb3RoZXIgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblNlbGVjdG9yRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBBY3Rpb24gXCIke2Vyci5zZWxlY3Rvck5hbWV9XCIgYXJndW1lbnQgZXJyb3I6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNhbm5vdE9idGFpbkluZm9Gb3JFbGVtZW50U3BlY2lmaWVkQnlTZWxlY3RvckVycm9yXTogKGVyciwgdmlld3BvcnRXaWR0aCkgPT4gYFxuICAgICAgICBDYW5ub3Qgb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub2RlIGJlY2F1c2UgdGhlIHNwZWNpZmllZCBzZWxlY3RvciBkb2VzIG5vdCBtYXRjaCBhbnkgbm9kZSBpbiB0aGUgRE9NIHRyZWUuXG5cbiAgICAgICAgJHtmb3JtYXRTZWxlY3RvckNhbGxzdGFjayhlcnIuYXBpRm5DaGFpbiwgZXJyLmFwaUZuSW5kZXgsIHZpZXdwb3J0V2lkdGgpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLndpbmRvd0RpbWVuc2lvbnNPdmVyZmxvd0Vycm9yXTogKCkgPT4gYFxuICAgICAgICBVbmFibGUgdG8gcmVzaXplIHRoZSB3aW5kb3cgYmVjYXVzZSB0aGUgc3BlY2lmaWVkIHNpemUgZXhjZWVkcyB0aGUgc2NyZWVuIHNpemUuIE9uIG1hY09TLCBhIHdpbmRvdyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gdGhlIHNjcmVlbi5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5mb3JiaWRkZW5DaGFyYWN0ZXJzSW5TY3JlZW5zaG90UGF0aEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlcmUgYXJlIGZvcmJpZGRlbiBjaGFyYWN0ZXJzIGluIHRoZSBcIiR7ZXJyLnNjcmVlbnNob3RQYXRofVwiIHNjcmVlbnNob3QgcGF0aDpcbiAgICAgICAgJHtyZW5kZXJGb3JiaWRkZW5DaGFyc0xpc3QoZXJyLmZvcmJpZGRlbkNoYXJzTGlzdCl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuaW52YWxpZEVsZW1lbnRTY3JlZW5zaG90RGltZW5zaW9uc0Vycm9yXTogZXJyID0+IGBcbiAgICAgICAgIFVuYWJsZSB0byBjYXB0dXJlIGFuIGVsZW1lbnQgaW1hZ2UgYmVjYXVzZSB0aGUgcmVzdWx0aW5nIGltYWdlICR7ZXJyLmRpbWVuc2lvbnN9ICR7ZXJyLnZlcmJ9IHplcm8gb3IgbmVnYXRpdmUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucm9sZVN3aXRjaEluUm9sZUluaXRpYWxpemVyRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFJvbGUgY2Fubm90IGJlIHN3aXRjaGVkIHdoaWxlIGFub3RoZXIgcm9sZSBpcyBiZWluZyBpbml0aWFsaXplZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hc3NlcnRpb25FeGVjdXRhYmxlQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIENhbm5vdCBldmFsdWF0ZSB0aGUgXCIke2Vyci5hY3R1YWxWYWx1ZX1cIiBleHByZXNzaW9uIGluIHRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBwYXJhbWV0ZXIgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGVycm9yOlxuXG4gICAgICAgICR7ZXJyLmVyck1zZ31cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hc3NlcnRpb25XaXRob3V0TWV0aG9kQ2FsbEVycm9yXTogKCkgPT4gYFxuICAgICAgICBBbiBhc3NlcnRpb24gbWV0aG9kIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYXNzZXJ0aW9uVW5hd2FpdGVkUHJvbWlzZUVycm9yXTogKCkgPT4gYFxuICAgICAgICBBdHRlbXB0ZWQgdG8gcnVuIGFzc2VydGlvbnMgb24gYSBQcm9taXNlIG9iamVjdC4gRGlkIHlvdSBmb3JnZXQgdG8gYXdhaXQgaXQ/IElmIG5vdCwgcGFzcyBcInsgYWxsb3dVbmF3YWl0ZWRQcm9taXNlOiB0cnVlIH1cIiB0byB0aGUgYXNzZXJ0aW9uIG9wdGlvbnMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucmVxdWVzdEhvb2tOb3RJbXBsZW1lbnRlZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgWW91IHNob3VsZCBpbXBsZW1lbnQgdGhlIFwiJHtlcnIubWV0aG9kTmFtZX1cIiBtZXRob2QgaW4gdGhlIFwiJHtlcnIuaG9va0NsYXNzTmFtZX1cIiBjbGFzcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5yZXF1ZXN0SG9va1VuaGFuZGxlZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQW4gdW5oYW5kbGVkIGVycm9yIG9jY3VycmVkIGluIHRoZSBcIiR7ZXJyLm1ldGhvZE5hbWV9XCIgbWV0aG9kIG9mIHRoZSBcIiR7ZXJyLmhvb2tDbGFzc05hbWV9XCIgY2xhc3M6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkN1c3RvbUNsaWVudFNjcmlwdENvZGVdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiBhIHNjcmlwdCBpbmplY3RlZCBpbnRvIHRoZSB0ZXN0ZWQgcGFnZTpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ3VzdG9tQ2xpZW50U2NyaXB0Q29kZUxvYWRlZEZyb21Nb2R1bGVdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgJyR7ZXJyLm1vZHVsZU5hbWV9JyBtb2R1bGUgaW5qZWN0ZWQgaW50byB0aGUgdGVzdGVkIHBhZ2UuIE1ha2Ugc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGNhbiBiZSBleGVjdXRlZCBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudC5cblxuICAgICAgICBFcnJvciBkZXRhaWxzOlxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ3VzdG9tU2NyaXB0XTogZXJyID0+IGBcbiAgICAgICAgQW4gdW5oYW5kbGVkIGVycm9yIG9jY3VycmVkIGluIHRoZSBjdXN0b20gc2NyaXB0OlxuXG4gICAgICAgIEVycm9yIGRldGFpbHM6ICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cblxuICAgICAgICAke2Zvcm1hdEV4cHJlc3Npb25NZXNzYWdlKGVyci5leHByZXNzaW9uLCBlcnIubGluZSwgZXJyLmNvbHVtbil9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2hpbGRXaW5kb3dJc05vdExvYWRlZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgcGFnZSBpbiB0aGUgY2hpbGQgd2luZG93IGlzIG5vdCBsb2FkZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2hpbGRXaW5kb3dOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgY2hpbGQgd2luZG93IGlzIG5vdCBmb3VuZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RTd2l0Y2hUb1dpbmRvd0Vycm9yXTogKCkgPT4gYFxuICAgICAgICBDYW5ub3Qgc3dpdGNoIHRvIHRoZSB3aW5kb3cuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2xvc2VDaGlsZFdpbmRvd0Vycm9yXTogKCkgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBjbG9zaW5nIGNoaWxkIHdpbmRvd3MuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2hpbGRXaW5kb3dDbG9zZWRCZWZvcmVTd2l0Y2hpbmdFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGNoaWxkIHdpbmRvdyB3YXMgY2xvc2VkIGJlZm9yZSBUZXN0Q2FmZSBjb3VsZCBzd2l0Y2ggdG8gaXQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2Fubm90Q2xvc2VXaW5kb3dXaXRoQ2hpbGRyZW5FcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IGNsb3NlIGEgd2luZG93IHRoYXQgaGFzIGFuIG9wZW4gY2hpbGQgd2luZG93LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnRhcmdldFdpbmRvd05vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBmaW5kIHRoZSB3aW5kb3cgc3BlY2lmaWVkIGluIHRoZSBhY3Rpb24gcGFyYW1ldGVycy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5wYXJlbnRXaW5kb3dOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDYW5ub3QgZmluZCB0aGUgcGFyZW50IHdpbmRvdy4gTWFrZSBzdXJlIHRoYXQgdGhlIHRlc3RlZCB3aW5kb3cgd2FzIG9wZW5lZCBmcm9tIGFub3RoZXIgd2luZG93LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnByZXZpb3VzV2luZG93Tm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IGZpbmQgdGhlIHByZXZpb3VzIHdpbmRvdy4gTWFrZSBzdXJlIHRoYXQgdGhlIHByZXZpb3VzIHdpbmRvdyBpcyBvcGVuZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuc3dpdGNoVG9XaW5kb3dQcmVkaWNhdGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEFuIGVycm9yIG9jY3VycmVkIGluc2lkZSB0aGUgXCJzd2l0Y2hUb1dpbmRvd1wiIGFyZ3VtZW50IGZ1bmN0aW9uLlxuXG4gICAgICAgIEVycm9yIGRldGFpbHM6XG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5tdWx0aXBsZVdpbmRvd3NNb2RlSXNEaXNhYmxlZEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgTXVsdGktd2luZG93IG1vZGUgaXMgZGlzYWJsZWQuIFRvIHVzZSB0aGUgXCIke2Vyci5tZXRob2ROYW1lfVwiIG1ldGhvZCwgcmVtb3ZlIHRoZSBcImRpc2FibGVNdWx0aXBsZVdpbmRvd3NcIiBvcHRpb24uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMubXVsdGlwbGVXaW5kb3dzTW9kZUlzTm90U3VwcG9ydGVkSW5SZW1vdGVCcm93c2VyRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBNdWx0aS13aW5kb3cgbW9kZSBpcyBzdXBwb3J0ZWQgb25seSBpbiBsb2NhbGx5LWluc3RhbGxlZCBDaHJvbWUsIENocm9taXVtLCBFZGdlIDg0KyBhbmQgRmlyZWZveC4gUnVuIHRlc3RzIGluIHRoZXNlIGJyb3dzZXJzIHRvIHVzZSB0aGUgXCIke2Vyci5tZXRob2ROYW1lfVwiIG1ldGhvZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RDbG9zZVdpbmRvd1dpdGhvdXRQYXJlbnRdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBjbG9zZSB0aGUgd2luZG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhIHBhcmVudC4gVGhlIHBhcmVudCB3aW5kb3cgd2FzIGNsb3NlZCBvciB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gY2xvc2UgdGhlIHJvb3QgYnJvd3NlciB3aW5kb3cgd2hlcmUgdGVzdHMgd2VyZSBsYXVuY2hlZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RSZXN0b3JlQ2hpbGRXaW5kb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgRmFpbGVkIHRvIHJlc3RvcmUgY29ubmVjdGlvbiB0byB3aW5kb3cgd2l0aGluIHRoZSBhbGxvY2F0ZWQgdGltZW91dC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5leGVjdXRpb25UaW1lb3V0RXhjZWVkZWRdOiBlcnIgPT4ge1xuICAgICAgICByZXR1cm4gYCR7ZXJyLnNjb3BlfSB0aW1lb3V0IG9mICR7ZXJyLnRpbWVvdXR9bXMgZXhjZWVkZWQuYDtcbiAgICB9LFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIFN0cmluZyB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdPclJlZ2V4T3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBTdHJpbmcgb3IgUmVnZXggdHlwZSB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRGF0ZU9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgRGF0ZSB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25OdW1iZXJPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIE51bWJlciB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VcmxPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIHN0cmluZyBvciBVUkwgdHlwZXMgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybFNlYXJjaFBhcmFtc09wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgb2JqZWN0IG9yIFVSTFNlYXJjaFBhcmFtcyB0eXBlcyB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uT2JqZWN0T3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBvYmplY3QgdHlwZXMgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybEFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gVVJMIG9yIGEgc3RyaW5nLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Ta2lwSnNFcnJvcnNBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQ2Fubm90IGV4ZWN1dGUgdGhlIHNraXBKc0Vycm9ycyBtZXRob2QuIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBkYXRhIHR5cGVzOiBCb29sZWFuLCBPYmplY3QsIEZ1bmN0aW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblNraXBKc0Vycm9yc0RlcGVuZGVuY2llc0FyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDYW5ub3QgZXhlY3V0ZSB0aGUgc2tpcEpzRXJyb3JzIG1ldGhvZC4gVGhlIHZhbHVlIG9mIHRoZSBcImRlcGVuZGVuY2llc1wiIGFyZ3VtZW50IGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiZGVwZW5kZW5jaWVzXCIgYXJndW1lbnQgb25seSBzdXBwb3J0cyB0aGUgT2JqZWN0IGRhdGEgdHlwZS5cbiAgICBgLFxufTtcbiJdfQ==
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "testcafe",
3
3
  "description": "Automated browser testing for the modern web development stack.",
4
4
  "license": "MIT",
5
- "version": "2.0.0-rc.3",
5
+ "version": "2.0.0-rc.4",
6
6
  "author": {
7
7
  "name": "Developer Express Inc.",
8
8
  "url": "https://www.devexpress.com/"
@@ -149,7 +149,7 @@
149
149
  "time-limit-promise": "^1.0.2",
150
150
  "tmp": "0.0.28",
151
151
  "tree-kill": "^1.2.2",
152
- "typescript": "^4.7.4",
152
+ "typescript": "4.7.4",
153
153
  "unquote": "^1.1.1"
154
154
  },
155
155
  "devDependencies": {
@@ -2211,7 +2211,7 @@ declare module 'testcafe' {
2211
2211
  *
2212
2212
  * @param options - Error skipping conditions: a Boolean flag, an Object with options, or a callback function that defines custom error skipping logic.
2213
2213
  */
2214
- skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): this;
2214
+ skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): TestControllerPromise;
2215
2215
  }
2216
2216
 
2217
2217
  interface TestControllerPromise<T=any> extends TestController, Promise<T> {
@@ -2209,7 +2209,7 @@ declare module 'testcafe' {
2209
2209
  *
2210
2210
  * @param options - Error skipping conditions: a Boolean flag, an Object with options, or a callback function that defines custom error skipping logic.
2211
2211
  */
2212
- skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): this;
2212
+ skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): TestControllerPromise;
2213
2213
  }
2214
2214
 
2215
2215
  interface TestControllerPromise<T=any> extends TestController, Promise<T> {
@@ -2209,7 +2209,7 @@ declare module 'testcafe' {
2209
2209
  *
2210
2210
  * @param options - Error skipping conditions: a Boolean flag, an Object with options, or a callback function that defines custom error skipping logic.
2211
2211
  */
2212
- skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): this;
2212
+ skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): TestControllerPromise;
2213
2213
  }
2214
2214
 
2215
2215
  interface TestControllerPromise<T=any> extends TestController, Promise<T> {