@appium/base-driver 8.1.1 → 8.2.2
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.
- package/build/lib/basedriver/capabilities.js +6 -6
- package/build/lib/basedriver/commands/find.js +1 -1
- package/build/lib/basedriver/commands/index.js +2 -4
- package/build/lib/basedriver/commands/log.js +1 -1
- package/build/lib/basedriver/commands/session.js +1 -1
- package/build/lib/basedriver/commands/timeout.js +1 -1
- package/build/lib/basedriver/desired-caps.js +1 -1
- package/build/lib/basedriver/device-settings.js +1 -1
- package/build/lib/basedriver/driver.js +5 -7
- package/build/lib/basedriver/helpers.js +5 -3
- package/build/lib/constants.js +1 -1
- package/build/lib/express/crash.js +1 -1
- package/build/lib/express/middleware.js +3 -3
- package/build/lib/express/server.js +1 -1
- package/build/lib/express/static.js +2 -2
- package/build/lib/express/websocket.js +3 -3
- package/build/lib/index.js +124 -0
- package/build/lib/jsonwp-status/status.js +1 -1
- package/build/lib/protocol/errors.js +6 -5
- package/build/lib/protocol/helpers.js +3 -3
- package/build/lib/protocol/index.js +31 -19
- package/build/lib/protocol/protocol.js +22 -11
- package/build/lib/protocol/routes.js +6 -12
- package/build/test/basedriver/capability-specs.js +10 -10
- package/build/test/basedriver/commands/event-specs.js +10 -10
- package/build/test/basedriver/driver-e2e-specs.js +3 -3
- package/build/test/basedriver/driver-e2e-tests.js +53 -256
- package/build/test/basedriver/driver-specs.js +3 -3
- package/build/test/basedriver/driver-tests.js +6 -6
- package/build/test/basedriver/helpers-e2e-specs.js +10 -4
- package/build/test/basedriver/index.js +4 -4
- package/build/test/basedriver/timeout-specs.js +7 -7
- package/build/test/basedriver/websockets-e2e-specs.js +11 -11
- package/build/test/express/server-e2e-specs.js +156 -0
- package/build/test/express/server-specs.js +151 -0
- package/build/test/express/static-specs.js +23 -0
- package/build/test/helpers.js +57 -0
- package/build/test/jsonwp-proxy/mock-request.js +93 -0
- package/build/test/jsonwp-proxy/protocol-converter-specs.js +173 -0
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +62 -0
- package/build/test/jsonwp-proxy/proxy-specs.js +299 -0
- package/build/test/jsonwp-proxy/url-specs.js +167 -0
- package/build/test/jsonwp-status/status-specs.js +36 -0
- package/build/test/protocol/errors-specs.js +388 -0
- package/build/test/protocol/fake-driver.js +168 -0
- package/build/test/protocol/helpers.js +27 -0
- package/build/test/protocol/protocol-e2e-specs.js +1242 -0
- package/build/test/protocol/routes-specs.js +82 -0
- package/build/test/protocol/validator-specs.js +151 -0
- package/index.d.ts +309 -44
- package/index.js +1 -62
- package/lib/basedriver/commands/index.js +0 -2
- package/lib/basedriver/driver.js +2 -22
- package/lib/basedriver/helpers.js +5 -4
- package/lib/index.js +62 -0
- package/lib/protocol/index.js +3 -1
- package/lib/protocol/protocol.js +18 -7
- package/lib/protocol/routes.js +1 -4
- package/package.json +8 -16
- package/test/basedriver/capability-specs.js +1 -1
- package/test/basedriver/commands/event-specs.js +1 -1
- package/test/basedriver/driver-e2e-specs.js +1 -1
- package/test/basedriver/driver-e2e-tests.js +66 -213
- package/test/basedriver/driver-specs.js +1 -1
- package/test/basedriver/driver-tests.js +3 -3
- package/test/basedriver/helpers-e2e-specs.js +9 -4
- package/test/basedriver/timeout-specs.js +1 -1
- package/test/basedriver/websockets-e2e-specs.js +7 -7
- package/build/index.js +0 -118
- package/build/lib/basedriver/commands/execute-child.js +0 -137
- package/build/lib/basedriver/commands/execute.js +0 -119
- package/build/test/basedriver/fixtures/custom-element-finder-bad.js +0 -12
- package/build/test/basedriver/fixtures/custom-element-finder.js +0 -36
- package/lib/basedriver/commands/execute-child.js +0 -132
- package/lib/basedriver/commands/execute.js +0 -126
|
@@ -5,11 +5,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.DEFAULT_WS_PATHNAME_PREFIX = void 0;
|
|
8
9
|
exports.addWebSocketHandler = addWebSocketHandler;
|
|
9
|
-
exports.removeWebSocketHandler = removeWebSocketHandler;
|
|
10
|
-
exports.removeAllWebSocketHandlers = removeAllWebSocketHandlers;
|
|
11
10
|
exports.getWebSocketHandlers = getWebSocketHandlers;
|
|
12
|
-
exports.
|
|
11
|
+
exports.removeAllWebSocketHandlers = removeAllWebSocketHandlers;
|
|
12
|
+
exports.removeWebSocketHandler = removeWebSocketHandler;
|
|
13
13
|
|
|
14
14
|
require("source-map-support/register");
|
|
15
15
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CREATE_SESSION_COMMAND = exports.BaseDriver = exports.BASEDRIVER_HANDLED_SETTINGS = exports.ALL_COMMANDS = void 0;
|
|
7
|
+
Object.defineProperty(exports, "DEFAULT_BASE_PATH", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _constants.DEFAULT_BASE_PATH;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.NO_SESSION_ID_COMMANDS = exports.METHOD_MAP = exports.JWProxy = exports.DeviceSettings = exports.DELETE_SESSION_COMMAND = exports.DEFAULT_WS_PATHNAME_PREFIX = void 0;
|
|
14
|
+
Object.defineProperty(exports, "PROTOCOLS", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return _constants.PROTOCOLS;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
exports.validateCaps = exports.statusCodes = exports.server = exports.routeToCommandName = exports.routeConfiguringFunction = exports.processCapabilities = exports.normalizeBasePath = exports.isStandardCap = exports.isSessionCommand = exports.isErrorType = exports.getSummaryByCode = exports.errors = exports.errorFromW3CJsonCode = exports.errorFromMJSONWPStatusCode = exports.errorFromCode = exports.determineProtocol = exports.default = exports.STATIC_DIR = exports.Protocol = void 0;
|
|
21
|
+
|
|
22
|
+
require("source-map-support/register");
|
|
23
|
+
|
|
24
|
+
var driver = _interopRequireWildcard(require("./basedriver/driver"));
|
|
25
|
+
|
|
26
|
+
var deviceSettings = _interopRequireWildcard(require("./basedriver/device-settings"));
|
|
27
|
+
|
|
28
|
+
var protocol = _interopRequireWildcard(require("./protocol"));
|
|
29
|
+
|
|
30
|
+
var _constants = require("./constants");
|
|
31
|
+
|
|
32
|
+
var staticIndex = _interopRequireWildcard(require("./express/static"));
|
|
33
|
+
|
|
34
|
+
var serverIndex = _interopRequireWildcard(require("./express/server"));
|
|
35
|
+
|
|
36
|
+
var proxyIndex = _interopRequireWildcard(require("./jsonwp-proxy/proxy"));
|
|
37
|
+
|
|
38
|
+
var statusIndex = _interopRequireWildcard(require("./jsonwp-status/status"));
|
|
39
|
+
|
|
40
|
+
var caps = _interopRequireWildcard(require("./basedriver/capabilities"));
|
|
41
|
+
|
|
42
|
+
var ws = _interopRequireWildcard(require("./express/websocket"));
|
|
43
|
+
|
|
44
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
45
|
+
|
|
46
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
47
|
+
|
|
48
|
+
const {
|
|
49
|
+
BaseDriver
|
|
50
|
+
} = driver;
|
|
51
|
+
exports.BaseDriver = BaseDriver;
|
|
52
|
+
const {
|
|
53
|
+
DeviceSettings,
|
|
54
|
+
BASEDRIVER_HANDLED_SETTINGS
|
|
55
|
+
} = deviceSettings;
|
|
56
|
+
exports.BASEDRIVER_HANDLED_SETTINGS = BASEDRIVER_HANDLED_SETTINGS;
|
|
57
|
+
exports.DeviceSettings = DeviceSettings;
|
|
58
|
+
var _default = BaseDriver;
|
|
59
|
+
exports.default = _default;
|
|
60
|
+
const {
|
|
61
|
+
Protocol,
|
|
62
|
+
routeConfiguringFunction,
|
|
63
|
+
errors,
|
|
64
|
+
isErrorType,
|
|
65
|
+
errorFromMJSONWPStatusCode,
|
|
66
|
+
errorFromW3CJsonCode,
|
|
67
|
+
ALL_COMMANDS,
|
|
68
|
+
METHOD_MAP,
|
|
69
|
+
routeToCommandName,
|
|
70
|
+
NO_SESSION_ID_COMMANDS,
|
|
71
|
+
isSessionCommand,
|
|
72
|
+
normalizeBasePath,
|
|
73
|
+
determineProtocol,
|
|
74
|
+
CREATE_SESSION_COMMAND,
|
|
75
|
+
DELETE_SESSION_COMMAND
|
|
76
|
+
} = protocol;
|
|
77
|
+
exports.DELETE_SESSION_COMMAND = DELETE_SESSION_COMMAND;
|
|
78
|
+
exports.CREATE_SESSION_COMMAND = CREATE_SESSION_COMMAND;
|
|
79
|
+
exports.determineProtocol = determineProtocol;
|
|
80
|
+
exports.normalizeBasePath = normalizeBasePath;
|
|
81
|
+
exports.isSessionCommand = isSessionCommand;
|
|
82
|
+
exports.NO_SESSION_ID_COMMANDS = NO_SESSION_ID_COMMANDS;
|
|
83
|
+
exports.routeToCommandName = routeToCommandName;
|
|
84
|
+
exports.METHOD_MAP = METHOD_MAP;
|
|
85
|
+
exports.ALL_COMMANDS = ALL_COMMANDS;
|
|
86
|
+
exports.errorFromW3CJsonCode = errorFromW3CJsonCode;
|
|
87
|
+
exports.errorFromCode = exports.errorFromMJSONWPStatusCode = errorFromMJSONWPStatusCode;
|
|
88
|
+
exports.isErrorType = isErrorType;
|
|
89
|
+
exports.errors = errors;
|
|
90
|
+
exports.routeConfiguringFunction = routeConfiguringFunction;
|
|
91
|
+
exports.Protocol = Protocol;
|
|
92
|
+
const {
|
|
93
|
+
STATIC_DIR
|
|
94
|
+
} = staticIndex;
|
|
95
|
+
exports.STATIC_DIR = STATIC_DIR;
|
|
96
|
+
const {
|
|
97
|
+
server
|
|
98
|
+
} = serverIndex;
|
|
99
|
+
exports.server = server;
|
|
100
|
+
const {
|
|
101
|
+
JWProxy
|
|
102
|
+
} = proxyIndex;
|
|
103
|
+
exports.JWProxy = JWProxy;
|
|
104
|
+
const {
|
|
105
|
+
codes: statusCodes,
|
|
106
|
+
getSummaryByCode
|
|
107
|
+
} = statusIndex;
|
|
108
|
+
exports.getSummaryByCode = getSummaryByCode;
|
|
109
|
+
exports.statusCodes = statusCodes;
|
|
110
|
+
const {
|
|
111
|
+
processCapabilities,
|
|
112
|
+
isStandardCap,
|
|
113
|
+
validateCaps
|
|
114
|
+
} = caps;
|
|
115
|
+
exports.validateCaps = validateCaps;
|
|
116
|
+
exports.isStandardCap = isStandardCap;
|
|
117
|
+
exports.processCapabilities = processCapabilities;
|
|
118
|
+
const {
|
|
119
|
+
DEFAULT_WS_PATHNAME_PREFIX
|
|
120
|
+
} = ws;
|
|
121
|
+
exports.DEFAULT_WS_PATHNAME_PREFIX = DEFAULT_WS_PATHNAME_PREFIX;require('source-map-support').install();
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJCYXNlRHJpdmVyIiwiZHJpdmVyIiwiRGV2aWNlU2V0dGluZ3MiLCJCQVNFRFJJVkVSX0hBTkRMRURfU0VUVElOR1MiLCJkZXZpY2VTZXR0aW5ncyIsIlByb3RvY29sIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiZXJyb3JzIiwiaXNFcnJvclR5cGUiLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwiQUxMX0NPTU1BTkRTIiwiTUVUSE9EX01BUCIsInJvdXRlVG9Db21tYW5kTmFtZSIsIk5PX1NFU1NJT05fSURfQ09NTUFORFMiLCJpc1Nlc3Npb25Db21tYW5kIiwibm9ybWFsaXplQmFzZVBhdGgiLCJkZXRlcm1pbmVQcm90b2NvbCIsIkNSRUFURV9TRVNTSU9OX0NPTU1BTkQiLCJERUxFVEVfU0VTU0lPTl9DT01NQU5EIiwicHJvdG9jb2wiLCJTVEFUSUNfRElSIiwic3RhdGljSW5kZXgiLCJzZXJ2ZXIiLCJzZXJ2ZXJJbmRleCIsIkpXUHJveHkiLCJwcm94eUluZGV4IiwiY29kZXMiLCJzdGF0dXNDb2RlcyIsImdldFN1bW1hcnlCeUNvZGUiLCJzdGF0dXNJbmRleCIsInByb2Nlc3NDYXBhYmlsaXRpZXMiLCJpc1N0YW5kYXJkQ2FwIiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwid3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBVUE7O0FBQ0E7O0FBb0JBOztBQUlBOztBQUtBOztBQUtBOztBQUtBOztBQUtBOzs7Ozs7QUFyREEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQWlCQyxNQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLGNBQUY7QUFBa0JDLEVBQUFBO0FBQWxCLElBQWtEQyxjQUF4RDs7O2VBR2VKLFU7O0FBU2YsTUFBTTtBQUNKSyxFQUFBQSxRQURJO0FBQ01DLEVBQUFBLHdCQUROO0FBQ2dDQyxFQUFBQSxNQURoQztBQUN3Q0MsRUFBQUEsV0FEeEM7QUFFSkMsRUFBQUEsMEJBRkk7QUFFd0JDLEVBQUFBLG9CQUZ4QjtBQUU4Q0MsRUFBQUEsWUFGOUM7QUFFNERDLEVBQUFBLFVBRjVEO0FBR0pDLEVBQUFBLGtCQUhJO0FBR2dCQyxFQUFBQSxzQkFIaEI7QUFHd0NDLEVBQUFBLGdCQUh4QztBQUlKQyxFQUFBQSxpQkFKSTtBQUllQyxFQUFBQSxpQkFKZjtBQUlrQ0MsRUFBQUEsc0JBSmxDO0FBSTBEQyxFQUFBQTtBQUoxRCxJQUtGQyxRQUxKOzs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFpQkMsV0FBdkI7O0FBSUEsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWFDLFdBQW5COztBQUtBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFjQyxVQUFwQjs7QUFLQSxNQUFNO0FBQUVDLEVBQUFBLEtBQUssRUFBRUMsV0FBVDtBQUFzQkMsRUFBQUE7QUFBdEIsSUFBMkNDLFdBQWpEOzs7QUFLQSxNQUFNO0FBQUVDLEVBQUFBLG1CQUFGO0FBQXVCQyxFQUFBQSxhQUF2QjtBQUFzQ0MsRUFBQUE7QUFBdEMsSUFBdURDLElBQTdEOzs7O0FBS0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWlDQyxFQUF2QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbi8vIEJhc2VEcml2ZXIgZXhwb3J0c1xuaW1wb3J0ICogYXMgZHJpdmVyIGZyb20gJy4vYmFzZWRyaXZlci9kcml2ZXInO1xuaW1wb3J0ICogYXMgZGV2aWNlU2V0dGluZ3MgZnJvbSAnLi9iYXNlZHJpdmVyL2RldmljZS1zZXR0aW5ncyc7XG5cbmNvbnN0IHsgQmFzZURyaXZlciB9ID0gZHJpdmVyO1xuY29uc3QgeyBEZXZpY2VTZXR0aW5ncywgQkFTRURSSVZFUl9IQU5ETEVEX1NFVFRJTkdTIH0gPSBkZXZpY2VTZXR0aW5ncztcblxuZXhwb3J0IHsgQmFzZURyaXZlciwgRGV2aWNlU2V0dGluZ3MsIEJBU0VEUklWRVJfSEFORExFRF9TRVRUSU5HUyB9O1xuZXhwb3J0IGRlZmF1bHQgQmFzZURyaXZlcjtcblxuXG4vLyBNSlNPTldQIGV4cG9ydHNcbmltcG9ydCAqIGFzIHByb3RvY29sIGZyb20gJy4vcHJvdG9jb2wnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9CQVNFX1BBVEgsIFBST1RPQ09MU1xufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcbiAgUHJvdG9jb2wsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiwgZXJyb3JzLCBpc0Vycm9yVHlwZSxcbiAgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlLCBBTExfQ09NTUFORFMsIE1FVEhPRF9NQVAsXG4gIHJvdXRlVG9Db21tYW5kTmFtZSwgTk9fU0VTU0lPTl9JRF9DT01NQU5EUywgaXNTZXNzaW9uQ29tbWFuZCxcbiAgbm9ybWFsaXplQmFzZVBhdGgsIGRldGVybWluZVByb3RvY29sLCBDUkVBVEVfU0VTU0lPTl9DT01NQU5ELCBERUxFVEVfU0VTU0lPTl9DT01NQU5ELFxufSA9IHByb3RvY29sO1xuXG5leHBvcnQge1xuICBQcm90b2NvbCwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBQUk9UT0NPTFMsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSwgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlIGFzIGVycm9yRnJvbUNvZGUsIEFMTF9DT01NQU5EUywgTUVUSE9EX01BUCxcbiAgcm91dGVUb0NvbW1hbmROYW1lLCBOT19TRVNTSU9OX0lEX0NPTU1BTkRTLCBpc1Nlc3Npb25Db21tYW5kLFxuICBERUZBVUxUX0JBU0VfUEFUSCwgbm9ybWFsaXplQmFzZVBhdGgsIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsIERFTEVURV9TRVNTSU9OX0NPTU1BTkRcbn07XG5cbi8vIEV4cHJlc3MgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdGljSW5kZXggZnJvbSAnLi9leHByZXNzL3N0YXRpYyc7XG5jb25zdCB7IFNUQVRJQ19ESVIgfSA9IHN0YXRpY0luZGV4O1xuZXhwb3J0IHsgU1RBVElDX0RJUiB9O1xuXG5pbXBvcnQgKiBhcyBzZXJ2ZXJJbmRleCBmcm9tICcuL2V4cHJlc3Mvc2VydmVyJztcbmNvbnN0IHsgc2VydmVyIH0gPSBzZXJ2ZXJJbmRleDtcbmV4cG9ydCB7IHNlcnZlciB9O1xuXG4vLyBqc29ud3AtcHJveHkgZXhwb3J0c1xuaW1wb3J0ICogYXMgcHJveHlJbmRleCBmcm9tICcuL2pzb253cC1wcm94eS9wcm94eSc7XG5jb25zdCB7IEpXUHJveHkgfSA9IHByb3h5SW5kZXg7XG5leHBvcnQgeyBKV1Byb3h5IH07XG5cbi8vIGpzb253cC1zdGF0dXMgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdHVzSW5kZXggZnJvbSAnLi9qc29ud3Atc3RhdHVzL3N0YXR1cyc7XG5jb25zdCB7IGNvZGVzOiBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9ID0gc3RhdHVzSW5kZXg7XG5leHBvcnQgeyBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9O1xuXG4vLyBXM0MgY2FwYWJpbGl0aWVzIHBhcnNlclxuaW1wb3J0ICogYXMgY2FwcyBmcm9tICcuL2Jhc2Vkcml2ZXIvY2FwYWJpbGl0aWVzJztcbmNvbnN0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH0gPSBjYXBzO1xuZXhwb3J0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH07XG5cbi8vIFdlYiBzb2NrZXQgaGVscGVyc1xuaW1wb3J0ICogYXMgd3MgZnJvbSAnLi9leHByZXNzL3dlYnNvY2tldCc7XG5jb25zdCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH0gPSB3cztcbmV4cG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH07XG4iXSwiZmlsZSI6ImxpYi9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.default = exports.codes = void 0;
|
|
8
9
|
exports.getSummaryByCode = getSummaryByCode;
|
|
9
|
-
exports.codes = exports.default = void 0;
|
|
10
10
|
|
|
11
11
|
require("source-map-support/register");
|
|
12
12
|
|
|
@@ -5,13 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
9
|
-
exports.isUnknownError = isUnknownError;
|
|
8
|
+
exports.ProtocolError = void 0;
|
|
10
9
|
exports.errorFromMJSONWPStatusCode = errorFromMJSONWPStatusCode;
|
|
11
10
|
exports.errorFromW3CJsonCode = errorFromW3CJsonCode;
|
|
12
|
-
exports.
|
|
11
|
+
exports.errors = void 0;
|
|
13
12
|
exports.getResponseForJsonwpError = getResponseForJsonwpError;
|
|
14
|
-
exports.
|
|
13
|
+
exports.getResponseForW3CError = getResponseForW3CError;
|
|
14
|
+
exports.isErrorType = isErrorType;
|
|
15
|
+
exports.isUnknownError = isUnknownError;
|
|
15
16
|
|
|
16
17
|
require("source-map-support/register");
|
|
17
18
|
|
|
@@ -931,4 +932,4 @@ function getResponseForJsonwpError(err) {
|
|
|
931
932
|
}require('source-map-support').install();
|
|
932
933
|
|
|
933
934
|
|
|
934
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wcm90b2NvbC9lcnJvcnMuanMiXSwibmFtZXMiOlsibWpzb253cExvZyIsImxvZ2dlciIsImdldExvZ2dlciIsInczY0xvZyIsIlczQ19VTktOT1dOX0VSUk9SIiwiUHJvdG9jb2xFcnJvciIsIkVTNkVycm9yIiwiY29uc3RydWN0b3IiLCJtc2ciLCJqc29ud3BDb2RlIiwidzNjU3RhdHVzIiwiZXJyb3IiLCJIVFRQU3RhdHVzQ29kZXMiLCJCQURfUkVRVUVTVCIsIl9zdGFja3RyYWNlIiwic3RhY2t0cmFjZSIsInN0YWNrIiwidmFsdWUiLCJOb1N1Y2hEcml2ZXJFcnJvciIsImNvZGUiLCJOT1RfRk9VTkQiLCJlcnIiLCJOb1N1Y2hFbGVtZW50RXJyb3IiLCJOb1N1Y2hGcmFtZUVycm9yIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlN0YWxlRWxlbWVudFJlZmVyZW5jZUVycm9yIiwiRWxlbWVudE5vdFZpc2libGVFcnJvciIsIkludmFsaWRFbGVtZW50U3RhdGVFcnJvciIsIlVua25vd25FcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImVycm9yT3JNZXNzYWdlIiwib3JpZ01lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJtZXNzYWdlIiwiVW5rbm93bk1ldGhvZEVycm9yIiwiTUVUSE9EX05PVF9BTExPV0VEIiwiVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvciIsIkVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvciIsIkVsZW1lbnRDbGlja0ludGVyY2VwdGVkRXJyb3IiLCJFbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3IiLCJJbnNlY3VyZUNlcnRpZmljYXRlRXJyb3IiLCJKYXZhU2NyaXB0RXJyb3IiLCJYUGF0aExvb2t1cEVycm9yIiwiVGltZW91dEVycm9yIiwiUkVRVUVTVF9USU1FT1VUIiwiTm9TdWNoV2luZG93RXJyb3IiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIkludmFsaWRDb29raWVEb21haW5FcnJvciIsIk5vU3VjaENvb2tpZUVycm9yIiwiVW5hYmxlVG9TZXRDb29raWVFcnJvciIsIlVuZXhwZWN0ZWRBbGVydE9wZW5FcnJvciIsIk5vQWxlcnRPcGVuRXJyb3IiLCJOb1N1Y2hBbGVydEVycm9yIiwiU2NyaXB0VGltZW91dEVycm9yIiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlc0Vycm9yIiwiSW52YWxpZENvb3JkaW5hdGVzRXJyb3IiLCJJTUVOb3RBdmFpbGFibGVFcnJvciIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWRFcnJvciIsIkludmFsaWRTZWxlY3RvckVycm9yIiwiU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciIsImRldGFpbHMiLCJNb3ZlVGFyZ2V0T3V0T2ZCb3VuZHNFcnJvciIsIk5vU3VjaENvbnRleHRFcnJvciIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIlVuYWJsZVRvQ2FwdHVyZVNjcmVlbiIsIkJhZFBhcmFtZXRlcnNFcnJvciIsInJlcXVpcmVkUGFyYW1zIiwiYWN0dWFsUGFyYW1zIiwiZXJyTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJQcm94eVJlcXVlc3RFcnJvciIsInJlc3BvbnNlRXJyb3IiLCJodHRwU3RhdHVzIiwicmVzcG9uc2VFcnJvck9iaiIsInV0aWwiLCJzYWZlSnNvblBhcnNlIiwiaXNQbGFpbk9iamVjdCIsImlzRW1wdHkiLCJoYXMiLCJ3M2MiLCJqc29ud3AiLCJnZXRBY3R1YWxFcnJvciIsImhhc1ZhbHVlIiwic3RhdHVzIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJpc051bWJlciIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwiZXJyb3JzIiwianNvbndwRXJyb3JDb2RlTWFwIiwiRXJyb3JDbGFzcyIsInZhbHVlcyIsInczY0Vycm9yQ29kZU1hcCIsImlzVW5rbm93bkVycm9yIiwibmFtZSIsImZpbmQiLCJlcXVhbE5hbWVzIiwiaXNFcnJvclR5cGUiLCJ0eXBlIiwiZGVidWciLCJ0b0xvd2VyQ2FzZSIsInJlc3VsdEVycm9yIiwiZ2V0UmVzcG9uc2VGb3JXM0NFcnJvciIsInczY0Vycm9yU3RyaW5nIiwiaHR0cFJlc0JvZHkiLCJnZXRSZXNwb25zZUZvckpzb253cEVycm9yIiwiTk9UX0lNUExFTUVOVEVEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsU0FBakIsQ0FBbkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixnQkFBT0MsU0FBUCxDQUFpQixLQUFqQixDQUFmOztBQUVBLE1BQU1FLGlCQUFpQixHQUFHLGVBQTFCOztBQUdBLE1BQU1DLGFBQU4sU0FBNEJDLGlCQUE1QixDQUFxQztBQUNuQ0MsRUFBQUEsV0FBVyxDQUFFQyxHQUFGLEVBQU9DLFVBQVAsRUFBbUJDLFNBQW5CLEVBQThCQyxLQUE5QixFQUFxQztBQUM5QyxVQUFNSCxHQUFOO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxTQUFLRSxLQUFMLEdBQWFBLEtBQUssSUFBSVAsaUJBQXRCOztBQUNBLFFBQUksS0FBS0ssVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QixXQUFLQSxVQUFMLEdBQWtCLEVBQWxCO0FBQ0Q7O0FBQ0QsU0FBS0MsU0FBTCxHQUFpQkEsU0FBUyxJQUFJRSw2QkFBZ0JDLFdBQTlDO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixJQUFuQjtBQUNEOztBQUVhLE1BQVZDLFVBQVUsR0FBSTtBQUNoQixXQUFPLEtBQUtELFdBQUwsSUFBb0IsS0FBS0UsS0FBaEM7QUFDRDs7QUFFYSxNQUFWRCxVQUFVLENBQUVFLEtBQUYsRUFBUztBQUNyQixTQUFLSCxXQUFMLEdBQW1CRyxLQUFuQjtBQUNEOztBQWxCa0M7Ozs7QUF5QnJDLE1BQU1DLGlCQUFOLFNBQWdDYixhQUFoQyxDQUE4QztBQUNqQyxTQUFKYyxJQUFJLEdBQUk7QUFDYixXQUFPLENBQVA7QUFDRDs7QUFF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QUFHaEUsNkJBQWdCaUcsZUFBN0I7QUFDRCxHQUpNLE1BSUEsSUFBSVQsV0FBVyxDQUFDL0UsR0FBRCxFQUFNc0UsTUFBTSxDQUFDekUsaUJBQWIsQ0FBZixFQUFnRDtBQUVyRDBELElBQUFBLFVBQVUsR0FBR2hFLDZCQUFnQlEsU0FBN0I7QUFDRDs7QUFHRCxTQUFPLENBQUN3RCxVQUFELEVBQWErQixXQUFiLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFUzZFcnJvciBmcm9tICdlczYtZXJyb3InO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHV0aWwsIGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBTdGF0dXNDb2RlcyBhcyBIVFRQU3RhdHVzQ29kZXMgfSBmcm9tICdodHRwLXN0YXR1cy1jb2Rlcyc7XG5cbmNvbnN0IG1qc29ud3BMb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdNSlNPTldQJyk7XG5jb25zdCB3M2NMb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdXM0MnKTtcblxuY29uc3QgVzNDX1VOS05PV05fRVJST1IgPSAndW5rbm93biBlcnJvcic7XG5cbi8vIGJhc2UgZXJyb3IgY2xhc3MgZm9yIGFsbCBvZiBvdXIgZXJyb3JzXG5jbGFzcyBQcm90b2NvbEVycm9yIGV4dGVuZHMgRVM2RXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobXNnLCBqc29ud3BDb2RlLCB3M2NTdGF0dXMsIGVycm9yKSB7XG4gICAgc3VwZXIobXNnKTtcbiAgICB0aGlzLmpzb253cENvZGUgPSBqc29ud3BDb2RlO1xuICAgIHRoaXMuZXJyb3IgPSBlcnJvciB8fCBXM0NfVU5LTk9XTl9FUlJPUjtcbiAgICBpZiAodGhpcy5qc29ud3BDb2RlID09PSBudWxsKSB7XG4gICAgICB0aGlzLmpzb253cENvZGUgPSAxMztcbiAgICB9XG4gICAgdGhpcy53M2NTdGF0dXMgPSB3M2NTdGF0dXMgfHwgSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICAgIHRoaXMuX3N0YWNrdHJhY2UgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHN0YWNrdHJhY2UgKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFja3RyYWNlIHx8IHRoaXMuc3RhY2s7XG4gIH1cblxuICBzZXQgc3RhY2t0cmFjZSAodmFsdWUpIHtcbiAgICB0aGlzLl9zdGFja3RyYWNlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8xNzZiNGE5ZTMwODJhYzE5MjZmMmE0MzZlYjM0Njc2MGMzN2E1OTk4L2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL3JlbW90ZS9FcnJvckNvZGVzLmphdmEjTDIxNVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vaXNzdWVzLzU1NjIjaXNzdWVjb21tZW50LTM3MDM3OTQ3MFxuLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci93ZWJkcml2ZXItc3BlYy5odG1sI2Rmbi1lcnJvci1jb2RlXG5cbmNsYXNzIE5vU3VjaERyaXZlckVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNjtcbiAgfVxuICAvLyBXM0MgRXJyb3IgaXMgY2FsbGVkIEludmFsaWRTZXNzaW9uSURcbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQ7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2ludmFsaWQgc2Vzc2lvbiBpZCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQSBzZXNzaW9uIGlzIGVpdGhlciB0ZXJtaW5hdGVkIG9yIG5vdCBzdGFydGVkJywgTm9TdWNoRHJpdmVyRXJyb3IuY29kZSgpLFxuICAgICAgICAgIE5vU3VjaERyaXZlckVycm9yLnczY1N0YXR1cygpLCBOb1N1Y2hEcml2ZXJFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBOb1N1Y2hFbGVtZW50RXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA3O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdubyBzdWNoIGVsZW1lbnQnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FuIGVsZW1lbnQgY291bGQgbm90IGJlIGxvY2F0ZWQgb24gdGhlIHBhZ2UgdXNpbmcgdGhlIGdpdmVuICcgK1xuICAgICAgICAgICdzZWFyY2ggcGFyYW1ldGVycy4nLCBOb1N1Y2hFbGVtZW50RXJyb3IuY29kZSgpLCBOb1N1Y2hFbGVtZW50RXJyb3IudzNjU3RhdHVzKCksXG4gICAgICAgICAgTm9TdWNoRWxlbWVudEVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIE5vU3VjaEZyYW1lRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA4O1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdubyBzdWNoIGZyYW1lJztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLk5PVF9GT1VORDtcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIHJlcXVlc3QgdG8gc3dpdGNoIHRvIGEgZnJhbWUgY291bGQgbm90IGJlIHNhdGlzZmllZCBiZWNhdXNlICcgK1xuICAgICAgICAgICd0aGUgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kLicsIE5vU3VjaEZyYW1lRXJyb3IuY29kZSgpLFxuICAgICAgICAgIE5vU3VjaEZyYW1lRXJyb3IudzNjU3RhdHVzKCksIE5vU3VjaEZyYW1lRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgVW5rbm93bkNvbW1hbmRFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDk7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQ7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ3Vua25vd24gY29tbWFuZCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQsIG9yIGEgcmVxdWVzdCB3YXMgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAgICdyZXNvdXJjZS4nLCBVbmtub3duQ29tbWFuZEVycm9yLmNvZGUoKSwgVW5rbm93bkNvbW1hbmRFcnJvci53M2NTdGF0dXMoKSwgVW5rbm93bkNvbW1hbmRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDEwO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdzdGFsZSBlbGVtZW50IHJlZmVyZW5jZSc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gZWxlbWVudCBjb21tYW5kIGZhaWxlZCBiZWNhdXNlIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgaXMgbm8gJyArXG4gICAgICAgICAgJ2xvbmdlciBhdHRhY2hlZCB0byB0aGUgRE9NLicsIFN0YWxlRWxlbWVudFJlZmVyZW5jZUVycm9yLmNvZGUoKSxcbiAgICAgICAgICBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFcnJvci53M2NTdGF0dXMoKSwgU3RhbGVFbGVtZW50UmVmZXJlbmNlRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgRWxlbWVudE5vdFZpc2libGVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDExO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2VsZW1lbnQgbm90IHZpc2libGUnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgJyArXG4gICAgICAgICAgJ25vdCB2aXNpYmxlIG9uIHRoZSBwYWdlLicsIEVsZW1lbnROb3RWaXNpYmxlRXJyb3IuY29kZSgpLFxuICAgICAgICAgIEVsZW1lbnROb3RWaXNpYmxlRXJyb3IudzNjU3RhdHVzKCksIEVsZW1lbnROb3RWaXNpYmxlRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZEVsZW1lbnRTdGF0ZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMTI7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnaW52YWxpZCBlbGVtZW50IHN0YXRlJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBlbGVtZW50IGNvbW1hbmQgY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzICcgK1xuICAgICAgICAgICdpbiBhbiBpbnZhbGlkIHN0YXRlIChlLmcuIGF0dGVtcHRpbmcgdG8gY2xpY2sgYSBkaXNhYmxlZCBlbGVtZW50KS4nLFxuICAgICAgICAgIEludmFsaWRFbGVtZW50U3RhdGVFcnJvci5jb2RlKCksIEludmFsaWRFbGVtZW50U3RhdGVFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBJbnZhbGlkRWxlbWVudFN0YXRlRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgVW5rbm93bkVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMTM7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5JTlRFUk5BTF9TRVJWRVJfRVJST1I7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gVzNDX1VOS05PV05fRVJST1I7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycm9yT3JNZXNzYWdlKSB7XG4gICAgY29uc3Qgb3JpZ01lc3NhZ2UgPSBfLmlzU3RyaW5nKChlcnJvck9yTWVzc2FnZSB8fCB7fSkubWVzc2FnZSlcbiAgICAgID8gZXJyb3JPck1lc3NhZ2UubWVzc2FnZVxuICAgICAgOiBlcnJvck9yTWVzc2FnZTtcbiAgICBjb25zdCBtZXNzYWdlID0gJ0FuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZC4nICtcbiAgICAgIChvcmlnTWVzc2FnZSA/IGAgT3JpZ2luYWwgZXJyb3I6ICR7b3JpZ01lc3NhZ2V9YCA6ICcnKTtcbiAgICBzdXBlcihtZXNzYWdlLCBVbmtub3duRXJyb3IuY29kZSgpLCBVbmtub3duRXJyb3IudzNjU3RhdHVzKCksIFVua25vd25FcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBVbmtub3duTWV0aG9kRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA0MDU7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5NRVRIT0RfTk9UX0FMTE9XRUQ7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ3Vua25vd24gbWV0aG9kJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdUaGUgcmVxdWVzdGVkIGNvbW1hbmQgbWF0Y2hlZCBhIGtub3duIFVSTCBidXQgZGlkIG5vdCBtYXRjaCBhbiBtZXRob2QgZm9yIHRoYXQgVVJMJyxcbiAgICAgICAgICBVbmtub3duTWV0aG9kRXJyb3IuY29kZSgpLCBVbmtub3duTWV0aG9kRXJyb3IudzNjU3RhdHVzKCksIFVua25vd25NZXRob2RFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNDA1O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd1bnN1cHBvcnRlZCBvcGVyYXRpb24nO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0Egc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQuIENvbW1hbmQgY2Fubm90IGJlIHN1cHBvcnRlZC4nLFxuICAgICAgICAgIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IuY29kZSgpLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLnczY1N0YXR1cygpLFxuICAgICAgICAgIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgRWxlbWVudElzTm90U2VsZWN0YWJsZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMTU7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2VsZW1lbnQgbm90IHNlbGVjdGFibGUnO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBzZWxlY3QgYW4gZWxlbWVudCB0aGF0IGNhbm5vdCBiZSBzZWxlY3RlZC4nLFxuICAgICAgICAgIEVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvci5jb2RlKCksIEVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBFbGVtZW50SXNOb3RTZWxlY3RhYmxlRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWRFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDY0O1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdlbGVtZW50IGNsaWNrIGludGVyY2VwdGVkJztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ1RoZSBFbGVtZW50IENsaWNrIGNvbW1hbmQgY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIHRoZSBlbGVtZW50IHJlY2VpdmluZyAnICtcbiAgICAgICAgICAndGhlIGV2ZW50cyBpcyBvYnNjdXJpbmcgdGhlIGVsZW1lbnQgdGhhdCB3YXMgcmVxdWVzdGVkIGNsaWNrZWQnLFxuICAgICAgICAgIEVsZW1lbnRDbGlja0ludGVyY2VwdGVkRXJyb3IuY29kZSgpLCBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZEVycm9yLnczY1N0YXR1cygpLFxuICAgICAgICAgIEVsZW1lbnRDbGlja0ludGVyY2VwdGVkRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgRWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNjA7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2VsZW1lbnQgbm90IGludGVyYWN0YWJsZSc7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIGNvbW1hbmQgY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIG5vdCBwb2ludGVyLSBvciBrZXlib2FyZCBpbnRlcmFjdGFibGUnLFxuICAgICAgICAgIEVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvci5jb2RlKCksIEVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBFbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW5zZWN1cmVDZXJ0aWZpY2F0ZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdpbnNlY3VyZSBjZXJ0aWZpY2F0ZSc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnTmF2aWdhdGlvbiBjYXVzZWQgdGhlIHVzZXIgYWdlbnQgdG8gaGl0IGEgY2VydGlmaWNhdGUgd2FybmluZywgd2hpY2ggaXMgdXN1YWxseSB0aGUgcmVzdWx0IG9mIGFuIGV4cGlyZWQgb3IgaW52YWxpZCBUTFMgY2VydGlmaWNhdGUnLFxuICAgICAgRWxlbWVudElzTm90U2VsZWN0YWJsZUVycm9yLmNvZGUoKSwgbnVsbCwgSW5zZWN1cmVDZXJ0aWZpY2F0ZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEphdmFTY3JpcHRFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDE3O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdqYXZhc2NyaXB0IGVycm9yJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgdXNlciBzdXBwbGllZCBKYXZhU2NyaXB0LicsXG4gICAgICAgICAgSmF2YVNjcmlwdEVycm9yLmNvZGUoKSwgSmF2YVNjcmlwdEVycm9yLnczY1N0YXR1cygpLCBKYXZhU2NyaXB0RXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgWFBhdGhMb29rdXBFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDE5O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2ludmFsaWQgc2VsZWN0b3InO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHNlYXJjaGluZyBmb3IgYW4gZWxlbWVudCBieSBYUGF0aC4nLFxuICAgICAgICAgIFhQYXRoTG9va3VwRXJyb3IuY29kZSgpLCBYUGF0aExvb2t1cEVycm9yLnczY1N0YXR1cygpLCBYUGF0aExvb2t1cEVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFRpbWVvdXRFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDIxO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuUkVRVUVTVF9USU1FT1VUO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd0aW1lb3V0JztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSBiZWZvcmUgaXRzIHRpbWVvdXQgZXhwaXJlZC4nLFxuICAgICAgICAgIFRpbWVvdXRFcnJvci5jb2RlKCksIFRpbWVvdXRFcnJvci53M2NTdGF0dXMoKSwgVGltZW91dEVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIE5vU3VjaFdpbmRvd0Vycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMjM7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ25vIHN1Y2ggd2luZG93JztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLk5PVF9GT1VORDtcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIHJlcXVlc3QgdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IHdpbmRvdyBjb3VsZCBub3QgYmUgc2F0aXNmaWVkICcgK1xuICAgICAgICAgICdiZWNhdXNlIHRoZSB3aW5kb3cgY291bGQgbm90IGJlIGZvdW5kLicsIE5vU3VjaFdpbmRvd0Vycm9yLmNvZGUoKSxcbiAgICAgICAgICBOb1N1Y2hXaW5kb3dFcnJvci53M2NTdGF0dXMoKSwgTm9TdWNoV2luZG93RXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZEFyZ3VtZW50RXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA2MTtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnaW52YWxpZCBhcmd1bWVudCc7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdUaGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY29tbWFuZCBhcmUgZWl0aGVyIGludmFsaWQgb3IgbWFsZm9ybWVkJyxcbiAgICAgICAgICBJbnZhbGlkQXJndW1lbnRFcnJvci5jb2RlKCksIEludmFsaWRBcmd1bWVudEVycm9yLnczY1N0YXR1cygpLFxuICAgICAgICAgIEludmFsaWRBcmd1bWVudEVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEludmFsaWRDb29raWVEb21haW5FcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDI0O1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdpbnZhbGlkIGNvb2tpZSBkb21haW4nO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gaWxsZWdhbCBhdHRlbXB0IHdhcyBtYWRlIHRvIHNldCBhIGNvb2tpZSB1bmRlciBhIGRpZmZlcmVudCAnICtcbiAgICAgICAgICAnZG9tYWluIHRoYW4gdGhlIGN1cnJlbnQgcGFnZS4nLCBJbnZhbGlkQ29va2llRG9tYWluRXJyb3IuY29kZSgpLFxuICAgICAgICAgIEludmFsaWRDb29raWVEb21haW5FcnJvci53M2NTdGF0dXMoKSwgSW52YWxpZENvb2tpZURvbWFpbkVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIE5vU3VjaENvb2tpZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQ7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ25vIHN1Y2ggY29va2llJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdObyBjb29raWUgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGggbmFtZSB3YXMgZm91bmQgYW1vbmdzdCB0aGUgYXNzb2NpYXRlZCBjb29raWVzIG9mIHRoZSBjdXJyZW50IGJyb3dzaW5nIGNvbnRleHTigJlzIGFjdGl2ZSBkb2N1bWVudCcsXG4gICAgICAgICAgTm9TdWNoQ29va2llRXJyb3IuY29kZSgpLCBOb1N1Y2hDb29raWVFcnJvci53M2NTdGF0dXMoKSwgTm9TdWNoQ29va2llRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgVW5hYmxlVG9TZXRDb29raWVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDI1O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd1bmFibGUgdG8gc2V0IGNvb2tpZSc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQSByZXF1ZXN0IHRvIHNldCBhIGNvb2tpZVxcJ3MgdmFsdWUgY291bGQgbm90IGJlIHNhdGlzZmllZC4nLFxuICAgICAgICAgIFVuYWJsZVRvU2V0Q29va2llRXJyb3IuY29kZSgpLCBVbmFibGVUb1NldENvb2tpZUVycm9yLnczY1N0YXR1cygpLCBVbmFibGVUb1NldENvb2tpZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFVuZXhwZWN0ZWRBbGVydE9wZW5FcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDI2O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd1bmV4cGVjdGVkIGFsZXJ0IG9wZW4nO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0EgbW9kYWwgZGlhbG9nIHdhcyBvcGVuLCBibG9ja2luZyB0aGlzIG9wZXJhdGlvbicsXG4gICAgICAgICAgVW5leHBlY3RlZEFsZXJ0T3BlbkVycm9yLmNvZGUoKSwgVW5leHBlY3RlZEFsZXJ0T3BlbkVycm9yLnczY1N0YXR1cygpLCBVbmV4cGVjdGVkQWxlcnRPcGVuRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgTm9BbGVydE9wZW5FcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDI3O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdubyBzdWNoIGFsZXJ0JztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG9wZXJhdGUgb24gYSBtb2RhbCBkaWFsb2cgd2hlbiBvbmUgJyArXG4gICAgICAgICAgJ3dhcyBub3Qgb3Blbi4nLCBOb0FsZXJ0T3BlbkVycm9yLmNvZGUoKSwgTm9BbGVydE9wZW5FcnJvci53M2NTdGF0dXMoKSwgTm9BbGVydE9wZW5FcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBOb1N1Y2hBbGVydEVycm9yIGV4dGVuZHMgTm9BbGVydE9wZW5FcnJvciB7fVxuXG5jbGFzcyBTY3JpcHRUaW1lb3V0RXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyODtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLlJFUVVFU1RfVElNRU9VVDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnc2NyaXB0IHRpbWVvdXQnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0Egc2NyaXB0IGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJyxcbiAgICAgICAgICBTY3JpcHRUaW1lb3V0RXJyb3IuY29kZSgpLCBTY3JpcHRUaW1lb3V0RXJyb3IudzNjU3RhdHVzKCksIFNjcmlwdFRpbWVvdXRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBJbnZhbGlkRWxlbWVudENvb3JkaW5hdGVzRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyOTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdpbnZhbGlkIGNvb3JkaW5hdGVzJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdUaGUgY29vcmRpbmF0ZXMgcHJvdmlkZWQgdG8gYW4gaW50ZXJhY3Rpb25zIG9wZXJhdGlvbiBhcmUgaW52YWxpZC4nLFxuICAgICAgICAgIEludmFsaWRFbGVtZW50Q29vcmRpbmF0ZXNFcnJvci5jb2RlKCksIEludmFsaWRFbGVtZW50Q29vcmRpbmF0ZXNFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBJbnZhbGlkRWxlbWVudENvb3JkaW5hdGVzRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZENvb3JkaW5hdGVzRXJyb3IgZXh0ZW5kcyBJbnZhbGlkRWxlbWVudENvb3JkaW5hdGVzRXJyb3Ige31cblxuY2xhc3MgSU1FTm90QXZhaWxhYmxlRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAzMDtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndW5zdXBwb3J0ZWQgb3BlcmF0aW9uJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdJTUUgd2FzIG5vdCBhdmFpbGFibGUuJywgSU1FTm90QXZhaWxhYmxlRXJyb3IuY29kZSgpLFxuICAgICAgICAgIElNRU5vdEF2YWlsYWJsZUVycm9yLnczY1N0YXR1cygpLCBJTUVOb3RBdmFpbGFibGVFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBJTUVFbmdpbmVBY3RpdmF0aW9uRmFpbGVkRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAzMTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndW5zdXBwb3J0ZWQgb3BlcmF0aW9uJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBJTUUgZW5naW5lIGNvdWxkIG5vdCBiZSBzdGFydGVkLicsXG4gICAgICAgICAgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZEVycm9yLmNvZGUoKSwgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZEVycm9yLnczY1N0YXR1cygpLFxuICAgICAgICAgIElNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBJbnZhbGlkU2VsZWN0b3JFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDMyO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2ludmFsaWQgc2VsZWN0b3InO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FyZ3VtZW50IHdhcyBhbiBpbnZhbGlkIHNlbGVjdG9yIChlLmcuIFhQYXRoL0NTUykuJyxcbiAgICAgICAgICBJbnZhbGlkU2VsZWN0b3JFcnJvci5jb2RlKCksIEludmFsaWRTZWxlY3RvckVycm9yLnczY1N0YXR1cygpLFxuICAgICAgICAgIEludmFsaWRTZWxlY3RvckVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFNlc3Npb25Ob3RDcmVhdGVkRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAzMztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnc2Vzc2lvbiBub3QgY3JlYXRlZCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGRldGFpbHMpIHtcbiAgICBsZXQgbWVzc2FnZSA9ICdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLic7XG4gICAgaWYgKGRldGFpbHMpIHtcbiAgICAgIG1lc3NhZ2UgKz0gYCBEZXRhaWxzOiAke2RldGFpbHN9YDtcbiAgICB9XG5cbiAgICBzdXBlcihtZXNzYWdlLCBTZXNzaW9uTm90Q3JlYXRlZEVycm9yLmNvZGUoKSwgU2Vzc2lvbk5vdENyZWF0ZWRFcnJvci53M2NTdGF0dXMoKSwgU2Vzc2lvbk5vdENyZWF0ZWRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBNb3ZlVGFyZ2V0T3V0T2ZCb3VuZHNFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDM0O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdtb3ZlIHRhcmdldCBvdXQgb2YgYm91bmRzJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdUYXJnZXQgcHJvdmlkZWQgZm9yIGEgbW92ZSBhY3Rpb24gaXMgb3V0IG9mIGJvdW5kcy4nLFxuICAgICAgICAgIE1vdmVUYXJnZXRPdXRPZkJvdW5kc0Vycm9yLmNvZGUoKSwgTW92ZVRhcmdldE91dE9mQm91bmRzRXJyb3IudzNjU3RhdHVzKCksIE1vdmVUYXJnZXRPdXRPZkJvdW5kc0Vycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIE5vU3VjaENvbnRleHRFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDM1O1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ05vIHN1Y2ggY29udGV4dCBmb3VuZC4nLCBOb1N1Y2hDb250ZXh0RXJyb3IuY29kZSgpKTtcbiAgfVxufVxuXG5jbGFzcyBJbnZhbGlkQ29udGV4dEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMzY7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnVGhhdCBjb21tYW5kIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBpbiB0aGUgY3VycmVudCBjb250ZXh0LicsXG4gICAgICAgICAgSW52YWxpZENvbnRleHRFcnJvci5jb2RlKCkpO1xuICB9XG59XG5cbi8vIFRoZXNlIGFyZSBhbGlhc2VzIGZvciBVbmtub3duTWV0aG9kRXJyb3JcbmNsYXNzIE5vdFlldEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBVbmtub3duTWV0aG9kRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdNZXRob2QgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5jbGFzcyBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgVW5rbm93bk1ldGhvZEVycm9yIHtcbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnTWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG5cbmNsYXNzIFVuYWJsZVRvQ2FwdHVyZVNjcmVlbiBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDYzO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd1bmFibGUgdG8gY2FwdHVyZSBzY3JlZW4nO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0Egc2NyZWVuIGNhcHR1cmUgd2FzIG1hZGUgaW1wb3NzaWJsZScsXG4gICAgICAgICAgVW5hYmxlVG9DYXB0dXJlU2NyZWVuLmNvZGUoKSwgVW5hYmxlVG9DYXB0dXJlU2NyZWVuLnczY1N0YXR1cygpLCBVbmFibGVUb0NhcHR1cmVTY3JlZW4uZXJyb3IoKSk7XG4gIH1cbn1cblxuXG4vLyBFcXVpdmFsZW50IHRvIFczQyBJbnZhbGlkQXJndW1lbnRFcnJvclxuY2xhc3MgQmFkUGFyYW1ldGVyc0Vycm9yIGV4dGVuZHMgRVM2RXJyb3Ige1xuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnaW52YWxpZCBhcmd1bWVudCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKHJlcXVpcmVkUGFyYW1zLCBhY3R1YWxQYXJhbXMsIGVyck1lc3NhZ2UpIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAoIWVyck1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBgUGFyYW1ldGVycyB3ZXJlIGluY29ycmVjdC4gV2Ugd2FudGVkIGAgK1xuICAgICAgICAgIGAke0pTT04uc3RyaW5naWZ5KHJlcXVpcmVkUGFyYW1zKX0gYW5kIHlvdSBgICtcbiAgICAgICAgICBgc2VudCAke0pTT04uc3RyaW5naWZ5KGFjdHVhbFBhcmFtcyl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IGBQYXJhbWV0ZXJzIHdlcmUgaW5jb3JyZWN0LiBZb3Ugc2VudCAke0pTT04uc3RyaW5naWZ5KGFjdHVhbFBhcmFtcyl9LCAke2Vyck1lc3NhZ2V9YDtcbiAgICB9XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy53M2NTdGF0dXMgPSBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm94eVJlcXVlc3RFcnJvciBpcyBhIGN1c3RvbSBlcnJvciBhbmQgd2lsbCBiZSB0aHJvd24gdXAgb24gdW5zdWNjZXNzZnVsIHByb3h5IHJlcXVlc3QgYW5kXG4gKiB3aWxsIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb3h5IGZhaWx1cmUuXG4gKiBJbiBjYXNlIG9mIFByb3h5UmVxdWVzdEVycm9yIHNob3VsZCBmZXRjaCB0aGUgYWN0dWFsIGVycm9yIGJ5IGNhbGxpbmcgYGdldEFjdHVhbEVycm9yKClgXG4gKiBmb3IgcHJveHkgZmFpbHVyZSB0byBnZW5lcmF0ZSB0aGUgY2xpZW50IHJlc3BvbnNlLlxuICovXG5jbGFzcyBQcm94eVJlcXVlc3RFcnJvciBleHRlbmRzIEVTNkVycm9yIHtcbiAgY29uc3RydWN0b3IgKGVyciwgcmVzcG9uc2VFcnJvciwgaHR0cFN0YXR1cykge1xuICAgIGxldCByZXNwb25zZUVycm9yT2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKHJlc3BvbnNlRXJyb3IpO1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KHJlc3BvbnNlRXJyb3JPYmopKSB7XG4gICAgICByZXNwb25zZUVycm9yT2JqID0ge307XG4gICAgfVxuICAgIGxldCBvcmlnTWVzc2FnZSA9IF8uaXNTdHJpbmcocmVzcG9uc2VFcnJvcikgPyByZXNwb25zZUVycm9yIDogJyc7XG4gICAgaWYgKCFfLmlzRW1wdHkocmVzcG9uc2VFcnJvck9iaikpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKHJlc3BvbnNlRXJyb3JPYmoudmFsdWUpKSB7XG4gICAgICAgIG9yaWdNZXNzYWdlID0gcmVzcG9uc2VFcnJvck9iai52YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KHJlc3BvbnNlRXJyb3JPYmoudmFsdWUpICYmIF8uaXNTdHJpbmcocmVzcG9uc2VFcnJvck9iai52YWx1ZS5tZXNzYWdlKSkge1xuICAgICAgICBvcmlnTWVzc2FnZSA9IHJlc3BvbnNlRXJyb3JPYmoudmFsdWUubWVzc2FnZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3VwZXIoXy5pc0VtcHR5KGVycikgPyBgUHJveHkgcmVxdWVzdCB1bnN1Y2Nlc3NmdWwuICR7b3JpZ01lc3NhZ2V9YCA6IGVycik7XG5cbiAgICB0aGlzLnczY1N0YXR1cyA9IEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcblxuICAgIC8vIElmIHRoZSByZXNwb25zZSBlcnJvciBpcyBhbiBvYmplY3QgYW5kIHZhbHVlIGlzIGFuIG9iamVjdCwgaXQncyBhIFczQyBlcnJvciAoZm9yIEpTT05XUCB2YWx1ZSBpcyBhIHN0cmluZylcbiAgICBpZiAoXy5pc1BsYWluT2JqZWN0KHJlc3BvbnNlRXJyb3JPYmoudmFsdWUpICYmIF8uaGFzKHJlc3BvbnNlRXJyb3JPYmoudmFsdWUsICdlcnJvcicpKSB7XG4gICAgICB0aGlzLnczYyA9IHJlc3BvbnNlRXJyb3JPYmoudmFsdWU7XG4gICAgICB0aGlzLnczY1N0YXR1cyA9IGh0dHBTdGF0dXMgfHwgSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmpzb253cCA9IHJlc3BvbnNlRXJyb3JPYmo7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0dWFsRXJyb3IgKCkge1xuICAgIC8vIElmIGl0J3MgTUpTT05XUCBlcnJvciwgcmV0dXJucyBhY3R1YWwgZXJyb3IgY2F1c2UgZm9yIHJlcXVlc3QgZmFpbHVyZSBiYXNlZCBvbiBganNvbndwLnN0YXR1c2BcbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLmpzb253cCkgJiYgdXRpbC5oYXNWYWx1ZSh0aGlzLmpzb253cC5zdGF0dXMpICYmIHV0aWwuaGFzVmFsdWUodGhpcy5qc29ud3AudmFsdWUpKSB7XG4gICAgICByZXR1cm4gZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUodGhpcy5qc29ud3Auc3RhdHVzLCB0aGlzLmpzb253cC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMudzNjKSAmJiBfLmlzTnVtYmVyKHRoaXMudzNjU3RhdHVzKSAmJiB0aGlzLnczY1N0YXR1cyA+PSAzMDApIHtcbiAgICAgIHJldHVybiBlcnJvckZyb21XM0NKc29uQ29kZSh0aGlzLnczYy5lcnJvciwgdGhpcy53M2MubWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsIHRoaXMudzNjLnN0YWNrdHJhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFVua25vd25FcnJvcih0aGlzLm1lc3NhZ2UpO1xuICB9XG59XG4vLyBtYXAgb2YgZXJyb3IgY2xhc3MgbmFtZSB0byBlcnJvciBjbGFzc1xuY29uc3QgZXJyb3JzID0ge05vdFlldEltcGxlbWVudGVkRXJyb3IsXG4gICAgICAgICAgICAgICAgTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgICAgICAgICAgICAgICBCYWRQYXJhbWV0ZXJzRXJyb3IsXG4gICAgICAgICAgICAgICAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gICAgICAgICAgICAgICAgTm9TdWNoRHJpdmVyRXJyb3IsXG4gICAgICAgICAgICAgICAgTm9TdWNoRWxlbWVudEVycm9yLFxuICAgICAgICAgICAgICAgIFVua25vd25Db21tYW5kRXJyb3IsXG4gICAgICAgICAgICAgICAgU3RhbGVFbGVtZW50UmVmZXJlbmNlRXJyb3IsXG4gICAgICAgICAgICAgICAgRWxlbWVudE5vdFZpc2libGVFcnJvcixcbiAgICAgICAgICAgICAgICBJbnZhbGlkRWxlbWVudFN0YXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgVW5rbm93bkVycm9yLFxuICAgICAgICAgICAgICAgIEVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvcixcbiAgICAgICAgICAgICAgICBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZEVycm9yLFxuICAgICAgICAgICAgICAgIEVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvcixcbiAgICAgICAgICAgICAgICBJbnNlY3VyZUNlcnRpZmljYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgSmF2YVNjcmlwdEVycm9yLFxuICAgICAgICAgICAgICAgIFhQYXRoTG9va3VwRXJyb3IsXG4gICAgICAgICAgICAgICAgVGltZW91dEVycm9yLFxuICAgICAgICAgICAgICAgIE5vU3VjaFdpbmRvd0Vycm9yLFxuICAgICAgICAgICAgICAgIE5vU3VjaENvb2tpZUVycm9yLFxuICAgICAgICAgICAgICAgIEludmFsaWRDb29raWVEb21haW5FcnJvcixcbiAgICAgICAgICAgICAgICBJbnZhbGlkQ29vcmRpbmF0ZXNFcnJvcixcbiAgICAgICAgICAgICAgICBVbmFibGVUb1NldENvb2tpZUVycm9yLFxuICAgICAgICAgICAgICAgIFVuZXhwZWN0ZWRBbGVydE9wZW5FcnJvcixcbiAgICAgICAgICAgICAgICBOb0FsZXJ0T3BlbkVycm9yLFxuICAgICAgICAgICAgICAgIFNjcmlwdFRpbWVvdXRFcnJvcixcbiAgICAgICAgICAgICAgICBJbnZhbGlkRWxlbWVudENvb3JkaW5hdGVzRXJyb3IsXG4gICAgICAgICAgICAgICAgSU1FTm90QXZhaWxhYmxlRXJyb3IsXG4gICAgICAgICAgICAgICAgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZEVycm9yLFxuICAgICAgICAgICAgICAgIEludmFsaWRTZWxlY3RvckVycm9yLFxuICAgICAgICAgICAgICAgIFNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsXG4gICAgICAgICAgICAgICAgTW92ZVRhcmdldE91dE9mQm91bmRzRXJyb3IsXG4gICAgICAgICAgICAgICAgTm9TdWNoQWxlcnRFcnJvcixcbiAgICAgICAgICAgICAgICBOb1N1Y2hDb250ZXh0RXJyb3IsXG4gICAgICAgICAgICAgICAgSW52YWxpZENvbnRleHRFcnJvcixcbiAgICAgICAgICAgICAgICBOb1N1Y2hGcmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIFVuYWJsZVRvQ2FwdHVyZVNjcmVlbixcbiAgICAgICAgICAgICAgICBVbmtub3duTWV0aG9kRXJyb3IsXG4gICAgICAgICAgICAgICAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgICAgICAgICAgICAgICBQcm94eVJlcXVlc3RFcnJvcn07XG5cbi8vIG1hcCBvZiBlcnJvciBjb2RlIHRvIGVycm9yIGNsYXNzXG5jb25zdCBqc29ud3BFcnJvckNvZGVNYXAgPSB7fTtcbmZvciAobGV0IEVycm9yQ2xhc3Mgb2YgXy52YWx1ZXMoZXJyb3JzKSkge1xuICBpZiAoRXJyb3JDbGFzcy5jb2RlKSB7XG4gICAganNvbndwRXJyb3JDb2RlTWFwW0Vycm9yQ2xhc3MuY29kZSgpXSA9IEVycm9yQ2xhc3M7XG4gIH1cbn1cblxuY29uc3QgdzNjRXJyb3JDb2RlTWFwID0ge307XG5mb3IgKGxldCBFcnJvckNsYXNzIG9mIF8udmFsdWVzKGVycm9ycykpIHtcbiAgaWYgKEVycm9yQ2xhc3MuZXJyb3IpIHtcbiAgICB3M2NFcnJvckNvZGVNYXBbRXJyb3JDbGFzcy5lcnJvcigpXSA9IEVycm9yQ2xhc3M7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNVbmtub3duRXJyb3IgKGVycikge1xuICByZXR1cm4gIWVyci5jb25zdHJ1Y3Rvci5uYW1lIHx8XG4gICAgICAgICAhXy52YWx1ZXMoZXJyb3JzKS5maW5kKGZ1bmN0aW9uIGVxdWFsTmFtZXMgKGVycm9yKSB7XG4gICAgICAgICAgIHJldHVybiBlcnJvci5uYW1lID09PSBlcnIuY29uc3RydWN0b3IubmFtZTtcbiAgICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiBpc0Vycm9yVHlwZSAoZXJyLCB0eXBlKSB7XG4gIC8vIGBuYW1lYCBwcm9wZXJ0eSBpcyB0aGUgY29uc3RydWN0b3IgbmFtZVxuICBpZiAodHlwZS5uYW1lID09PSBQcm90b2NvbEVycm9yLm5hbWUpIHtcbiAgICAvLyBganNvbndwQ29kZWAgaXMgYDBgIG9uIHN1Y2Nlc3NcbiAgICByZXR1cm4gISFlcnIuanNvbndwQ29kZTtcbiAgfSBlbHNlIGlmICh0eXBlLm5hbWUgPT09IFByb3h5UmVxdWVzdEVycm9yLm5hbWUpIHtcbiAgICAvLyBgc3RhdHVzYCBpcyBgMGAgb24gc3VjY2Vzc1xuICAgIGlmIChlcnIuanNvbndwKSB7XG4gICAgICByZXR1cm4gISFlcnIuanNvbndwLnN0YXR1cztcbiAgICB9XG5cbiAgICBpZiAoXy5pc1BsYWluT2JqZWN0KGVyci53M2MpKSB7XG4gICAgICByZXR1cm4gXy5pc051bWJlcihlcnIudzNjU3RhdHVzKSAmJiBlcnIudzNjU3RhdHVzID49IDMwMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGVyci5jb25zdHJ1Y3Rvci5uYW1lID09PSB0eXBlLm5hbWU7XG59XG5cbi8qKlxuICogUmV0cmlldmUgYW4gZXJyb3IgZGVyaXZlZCBmcm9tIE1KU09OV1Agc3RhdHVzXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZSBKU09OV1Agc3RhdHVzIGNvZGVcbiAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gdmFsdWUgVGhlIGVycm9yIG1lc3NhZ2UsIG9yIGFuIG9iamVjdCB3aXRoIGEgYG1lc3NhZ2VgIHByb3BlcnR5XG4gKiBAcmV0dXJuIHtQcm90b2NvbEVycm9yfSBUaGUgZXJyb3IgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggcHJvdmlkZWQgSlNPTldQIHN0YXR1cyBjb2RlXG4gKi9cbmZ1bmN0aW9uIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlIChjb2RlLCB2YWx1ZSA9ICcnKSB7XG4gIC8vIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBwdWxsIG1lc3NhZ2UgZnJvbSBpdCwgb3RoZXJ3aXNlIHVzZSB0aGUgcGxhaW5cbiAgLy8gdmFsdWUsIG9yIGRlZmF1bHQgdG8gYW4gZW1wdHkgc3RyaW5nLCBpZiBudWxsXG4gIGNvbnN0IG1lc3NhZ2UgPSAodmFsdWUgfHwge30pLm1lc3NhZ2UgfHwgdmFsdWUgfHwgJyc7XG4gIGlmIChjb2RlICE9PSBVbmtub3duRXJyb3IuY29kZSgpICYmIGpzb253cEVycm9yQ29kZU1hcFtjb2RlXSkge1xuICAgIG1qc29ud3BMb2cuZGVidWcoYE1hdGNoZWQgSlNPTldQIGVycm9yIGNvZGUgJHtjb2RlfSB0byAke2pzb253cEVycm9yQ29kZU1hcFtjb2RlXS5uYW1lfWApO1xuICAgIHJldHVybiBuZXcganNvbndwRXJyb3JDb2RlTWFwW2NvZGVdKG1lc3NhZ2UpO1xuICB9XG4gIG1qc29ud3BMb2cuZGVidWcoYE1hdGNoZWQgSlNPTldQIGVycm9yIGNvZGUgJHtjb2RlfSB0byBVbmtub3duRXJyb3JgKTtcbiAgcmV0dXJuIG5ldyBVbmtub3duRXJyb3IobWVzc2FnZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmUgYW4gZXJyb3IgZGVyaXZlZCBmcm9tIFczQyBKU09OIENvZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIFczQyBlcnJvciBzdHJpbmcgKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNoYW5kbGluZy1lcnJvcnMgYEpTT04gRXJyb3IgQ29kZWAgY29sdW1uKVxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgdGhlIGVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSB7P3N0cmluZ30gc3RhY2t0cmFjZSBhbiBvcHRpb25hbCBlcnJvciBzdGFja3RyYWNlXG4gKiBAcmV0dXJuIHtQcm90b2NvbEVycm9yfSAgVGhlIGVycm9yIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBXM0MgZXJyb3Igc3RyaW5nXG4gKi9cbmZ1bmN0aW9uIGVycm9yRnJvbVczQ0pzb25Db2RlIChjb2RlLCBtZXNzYWdlLCBzdGFja3RyYWNlID0gbnVsbCkge1xuICBpZiAoY29kZSAmJiB3M2NFcnJvckNvZGVNYXBbY29kZS50b0xvd2VyQ2FzZSgpXSkge1xuICAgIHczY0xvZy5kZWJ1ZyhgTWF0Y2hlZCBXM0MgZXJyb3IgY29kZSAnJHtjb2RlfScgdG8gJHt3M2NFcnJvckNvZGVNYXBbY29kZS50b0xvd2VyQ2FzZSgpXS5uYW1lfWApO1xuICAgIGNvbnN0IHJlc3VsdEVycm9yID0gbmV3IHczY0Vycm9yQ29kZU1hcFtjb2RlLnRvTG93ZXJDYXNlKCldKG1lc3NhZ2UpO1xuICAgIHJlc3VsdEVycm9yLnN0YWNrdHJhY2UgPSBzdGFja3RyYWNlO1xuICAgIHJldHVybiByZXN1bHRFcnJvcjtcbiAgfVxuICB3M2NMb2cuZGVidWcoYE1hdGNoZWQgVzNDIGVycm9yIGNvZGUgJyR7Y29kZX0nIHRvIFVua25vd25FcnJvcmApO1xuICBjb25zdCByZXN1bHRFcnJvciA9IG5ldyBVbmtub3duRXJyb3IobWVzc2FnZSk7XG4gIHJlc3VsdEVycm9yLnN0YWNrdHJhY2UgPSBzdGFja3RyYWNlO1xuICByZXR1cm4gcmVzdWx0RXJyb3I7XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBBcHBpdW0gZXJyb3IgdG8gcHJvcGVyIFczQyBIVFRQIHJlc3BvbnNlXG4gKiBAcGFyYW0ge1Byb3RvY29sRXJyb3J9IGVyciBUaGUgZXJyb3IgdGhhdCBuZWVkcyB0byBiZSB0cmFuc2xhdGVkXG4gKi9cbmZ1bmN0aW9uIGdldFJlc3BvbnNlRm9yVzNDRXJyb3IgKGVycikge1xuICBsZXQgaHR0cFN0YXR1cztcblxuICAvLyBXM0MgZGVmaW5lZCBlcnJvciBtZXNzYWdlIChodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tZXJyb3ItY29kZSlcbiAgbGV0IHczY0Vycm9yU3RyaW5nO1xuXG4gIGlmICghZXJyLnczY1N0YXR1cykge1xuICAgIGVyciA9IHV0aWwuaGFzVmFsdWUoZXJyLnN0YXR1cylcbiAgICAgIC8vIElmIGl0J3MgYSBKU09OV1AgZXJyb3IsIGZpbmQgY29ycmVzcG9uZGluZyBlcnJvclxuICAgICAgPyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZShlcnIuc3RhdHVzLCBlcnIudmFsdWUpXG4gICAgICA6IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGVyci5tZXNzYWdlKTtcbiAgfVxuXG4gIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5CYWRQYXJhbWV0ZXJzRXJyb3IpKSB7XG4gICAgLy8gcmVzcG9uZCB3aXRoIGEgNDAwIGlmIHdlIGhhdmUgYmFkIHBhcmFtZXRlcnNcbiAgICB3M2NMb2cuZGVidWcoYEJhZCBwYXJhbWV0ZXJzOiAke2Vycn1gKTtcbiAgICB3M2NFcnJvclN0cmluZyA9IEJhZFBhcmFtZXRlcnNFcnJvci5lcnJvcigpO1xuICB9IGVsc2Uge1xuICAgIHczY0Vycm9yU3RyaW5nID0gZXJyLmVycm9yO1xuICB9XG5cbiAgaHR0cFN0YXR1cyA9IGVyci53M2NTdGF0dXM7XG5cbiAgaWYgKCF3M2NFcnJvclN0cmluZykge1xuICAgIHczY0Vycm9yU3RyaW5nID0gVW5rbm93bkVycm9yLmVycm9yKCk7XG4gIH1cblxuICBsZXQgaHR0cFJlc0JvZHkgPSB7XG4gICAgdmFsdWU6IHtcbiAgICAgIGVycm9yOiB3M2NFcnJvclN0cmluZyxcbiAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgc3RhY2t0cmFjZTogZXJyLnN0YWNrdHJhY2UgfHwgZXJyLnN0YWNrLFxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIFtodHRwU3RhdHVzLCBodHRwUmVzQm9keV07XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBBcHBpdW0gZXJyb3IgdG8gYSBwcm9wZXIgSlNPTldQIHJlc3BvbnNlXG4gKiBAcGFyYW0ge1Byb3RvY29sRXJyb3J9IGVyciBUaGUgZXJyb3IgdG8gYmUgY29udmVydGVkXG4gKi9cbmZ1bmN0aW9uIGdldFJlc3BvbnNlRm9ySnNvbndwRXJyb3IgKGVycikge1xuICBpZiAoaXNVbmtub3duRXJyb3IoZXJyKSkge1xuICAgIGVyciA9IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGVycik7XG4gIH1cbiAgLy8gTUpTT05XUCBlcnJvcnMgYXJlIHVzdWFsbHkgNTAwIHN0YXR1cyBjb2RlIHNvIHNldCBpdCB0byB0aGF0IGJ5IGRlZmF1bHRcbiAgbGV0IGh0dHBTdGF0dXMgPSBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICBsZXQgaHR0cFJlc0JvZHkgPSB7XG4gICAgc3RhdHVzOiBlcnIuanNvbndwQ29kZSxcbiAgICB2YWx1ZToge1xuICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2VcbiAgICB9XG4gIH07XG5cbiAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLkJhZFBhcmFtZXRlcnNFcnJvcikpIHtcbiAgICAvLyByZXNwb25kIHdpdGggYSA0MDAgaWYgd2UgaGF2ZSBiYWQgcGFyYW1ldGVyc1xuICAgIG1qc29ud3BMb2cuZGVidWcoYEJhZCBwYXJhbWV0ZXJzOiAke2Vycn1gKTtcbiAgICBodHRwU3RhdHVzID0gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICAgIGh0dHBSZXNCb2R5ID0gZXJyLm1lc3NhZ2U7XG4gIH0gZWxzZSBpZiAoaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcikgfHxcbiAgICAgICAgICAgICBpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKSkge1xuICAgIC8vIHJlc3BvbmQgd2l0aCBhIDUwMSBpZiB0aGUgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZFxuICAgIGh0dHBTdGF0dXMgPSBIVFRQU3RhdHVzQ29kZXMuTk9UX0lNUExFTUVOVEVEO1xuICB9IGVsc2UgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vU3VjaERyaXZlckVycm9yKSkge1xuICAgIC8vIHJlc3BvbmQgd2l0aCBhIDQwNCBpZiB0aGVyZSBpcyBubyBkcml2ZXIgZm9yIHRoZSBzZXNzaW9uXG4gICAgaHR0cFN0YXR1cyA9IEhUVFBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQ7XG4gIH1cblxuXG4gIHJldHVybiBbaHR0cFN0YXR1cywgaHR0cFJlc0JvZHldO1xufVxuXG5leHBvcnQge1xuICBQcm90b2NvbEVycm9yLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBpc1Vua25vd25FcnJvcixcbiAgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlLFxuICBnZXRSZXNwb25zZUZvclczQ0Vycm9yLCBnZXRSZXNwb25zZUZvckpzb253cEVycm9yLFxufTtcbiJdLCJmaWxlIjoibGliL3Byb3RvY29sL2Vycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
935
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wcm90b2NvbC9lcnJvcnMuanMiXSwibmFtZXMiOlsibWpzb253cExvZyIsImxvZ2dlciIsImdldExvZ2dlciIsInczY0xvZyIsIlczQ19VTktOT1dOX0VSUk9SIiwiUHJvdG9jb2xFcnJvciIsIkVTNkVycm9yIiwiY29uc3RydWN0b3IiLCJtc2ciLCJqc29ud3BDb2RlIiwidzNjU3RhdHVzIiwiZXJyb3IiLCJIVFRQU3RhdHVzQ29kZXMiLCJCQURfUkVRVUVTVCIsIl9zdGFja3RyYWNlIiwic3RhY2t0cmFjZSIsInN0YWNrIiwidmFsdWUiLCJOb1N1Y2hEcml2ZXJFcnJvciIsImNvZGUiLCJOT1RfRk9VTkQiLCJlcnIiLCJOb1N1Y2hFbGVtZW50RXJyb3IiLCJOb1N1Y2hGcmFtZUVycm9yIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlN0YWxlRWxlbWVudFJlZmVyZW5jZUVycm9yIiwiRWxlbWVudE5vdFZpc2libGVFcnJvciIsIkludmFsaWRFbGVtZW50U3RhdGVFcnJvciIsIlVua25vd25FcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImVycm9yT3JNZXNzYWdlIiwib3JpZ01lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJtZXNzYWdlIiwiVW5rbm93bk1ldGhvZEVycm9yIiwiTUVUSE9EX05PVF9BTExPV0VEIiwiVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvciIsIkVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvciIsIkVsZW1lbnRDbGlja0ludGVyY2VwdGVkRXJyb3IiLCJFbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3IiLCJJbnNlY3VyZUNlcnRpZmljYXRlRXJyb3IiLCJKYXZhU2NyaXB0RXJyb3IiLCJYUGF0aExvb2t1cEVycm9yIiwiVGltZW91dEVycm9yIiwiUkVRVUVTVF9USU1FT1VUIiwiTm9TdWNoV2luZG93RXJyb3IiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIkludmFsaWRDb29raWVEb21haW5FcnJvciIsIk5vU3VjaENvb2tpZUVycm9yIiwiVW5hYmxlVG9TZXRDb29raWVFcnJvciIsIlVuZXhwZWN0ZWRBbGVydE9wZW5FcnJvciIsIk5vQWxlcnRPcGVuRXJyb3IiLCJOb1N1Y2hBbGVydEVycm9yIiwiU2NyaXB0VGltZW91dEVycm9yIiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlc0Vycm9yIiwiSW52YWxpZENvb3JkaW5hdGVzRXJyb3IiLCJJTUVOb3RBdmFpbGFibGVFcnJvciIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWRFcnJvciIsIkludmFsaWRTZWxlY3RvckVycm9yIiwiU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciIsImRldGFpbHMiLCJNb3ZlVGFyZ2V0T3V0T2ZCb3VuZHNFcnJvciIsIk5vU3VjaENvbnRleHRFcnJvciIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIlVuYWJsZVRvQ2FwdHVyZVNjcmVlbiIsIkJhZFBhcmFtZXRlcnNFcnJvciIsInJlcXVpcmVkUGFyYW1zIiwiYWN0dWFsUGFyYW1zIiwiZXJyTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJQcm94eVJlcXVlc3RFcnJvciIsInJlc3BvbnNlRXJyb3IiLCJodHRwU3RhdHVzIiwicmVzcG9uc2VFcnJvck9iaiIsInV0aWwiLCJzYWZlSnNvblBhcnNlIiwiaXNQbGFpbk9iamVjdCIsImlzRW1wdHkiLCJoYXMiLCJ3M2MiLCJqc29ud3AiLCJnZXRBY3R1YWxFcnJvciIsImhhc1ZhbHVlIiwic3RhdHVzIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJpc051bWJlciIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwiZXJyb3JzIiwianNvbndwRXJyb3JDb2RlTWFwIiwiRXJyb3JDbGFzcyIsInZhbHVlcyIsInczY0Vycm9yQ29kZU1hcCIsImlzVW5rbm93bkVycm9yIiwibmFtZSIsImZpbmQiLCJlcXVhbE5hbWVzIiwiaXNFcnJvclR5cGUiLCJ0eXBlIiwiZGVidWciLCJ0b0xvd2VyQ2FzZSIsInJlc3VsdEVycm9yIiwiZ2V0UmVzcG9uc2VGb3JXM0NFcnJvciIsInczY0Vycm9yU3RyaW5nIiwiaHR0cFJlc0JvZHkiLCJnZXRSZXNwb25zZUZvckpzb253cEVycm9yIiwiTk9UX0lNUExFTUVOVEVEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLFNBQWpCLENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsZ0JBQU9DLFNBQVAsQ0FBaUIsS0FBakIsQ0FBZjs7QUFFQSxNQUFNRSxpQkFBaUIsR0FBRyxlQUExQjs7QUFHQSxNQUFNQyxhQUFOLFNBQTRCQyxpQkFBNUIsQ0FBcUM7QUFDbkNDLEVBQUFBLFdBQVcsQ0FBRUMsR0FBRixFQUFPQyxVQUFQLEVBQW1CQyxTQUFuQixFQUE4QkMsS0FBOUIsRUFBcUM7QUFDOUMsVUFBTUgsR0FBTjtBQUNBLFNBQUtDLFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0EsU0FBS0UsS0FBTCxHQUFhQSxLQUFLLElBQUlQLGlCQUF0Qjs7QUFDQSxRQUFJLEtBQUtLLFVBQUwsS0FBb0IsSUFBeEIsRUFBOEI7QUFDNUIsV0FBS0EsVUFBTCxHQUFrQixFQUFsQjtBQUNEOztBQUNELFNBQUtDLFNBQUwsR0FBaUJBLFNBQVMsSUFBSUUsNkJBQWdCQyxXQUE5QztBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDRDs7QUFFYSxNQUFWQyxVQUFVLEdBQUk7QUFDaEIsV0FBTyxLQUFLRCxXQUFMLElBQW9CLEtBQUtFLEtBQWhDO0FBQ0Q7O0FBRWEsTUFBVkQsVUFBVSxDQUFFRSxLQUFGLEVBQVM7QUFDckIsU0FBS0gsV0FBTCxHQUFtQkcsS0FBbkI7QUFDRDs7QUFsQmtDOzs7O0FBeUJyQyxNQUFNQyxpQkFBTixTQUFnQ2IsYUFBaEMsQ0FBOEM7QUFDakMsU0FBSmMsSUFBSSxHQUFJO0FBQ2IsV0FBTyxDQUFQO0FBQ0Q7O0FB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R0FBR2hFLDZCQUFnQmlHLGVBQTdCO0FBQ0QsR0FKTSxNQUlBLElBQUlULFdBQVcsQ0FBQy9FLEdBQUQsRUFBTXNFLE1BQU0sQ0FBQ3pFLGlCQUFiLENBQWYsRUFBZ0Q7QUFFckQwRCxJQUFBQSxVQUFVLEdBQUdoRSw2QkFBZ0JRLFNBQTdCO0FBQ0Q7O0FBR0QsU0FBTyxDQUFDd0QsVUFBRCxFQUFhK0IsV0FBYixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRVM2RXJyb3IgZnJvbSAnZXM2LWVycm9yJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsLCBsb2dnZXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgU3RhdHVzQ29kZXMgYXMgSFRUUFN0YXR1c0NvZGVzIH0gZnJvbSAnaHR0cC1zdGF0dXMtY29kZXMnO1xuXG5jb25zdCBtanNvbndwTG9nID0gbG9nZ2VyLmdldExvZ2dlcignTUpTT05XUCcpO1xuY29uc3QgdzNjTG9nID0gbG9nZ2VyLmdldExvZ2dlcignVzNDJyk7XG5cbmNvbnN0IFczQ19VTktOT1dOX0VSUk9SID0gJ3Vua25vd24gZXJyb3InO1xuXG4vLyBiYXNlIGVycm9yIGNsYXNzIGZvciBhbGwgb2Ygb3VyIGVycm9yc1xuY2xhc3MgUHJvdG9jb2xFcnJvciBleHRlbmRzIEVTNkVycm9yIHtcbiAgY29uc3RydWN0b3IgKG1zZywganNvbndwQ29kZSwgdzNjU3RhdHVzLCBlcnJvcikge1xuICAgIHN1cGVyKG1zZyk7XG4gICAgdGhpcy5qc29ud3BDb2RlID0ganNvbndwQ29kZTtcbiAgICB0aGlzLmVycm9yID0gZXJyb3IgfHwgVzNDX1VOS05PV05fRVJST1I7XG4gICAgaWYgKHRoaXMuanNvbndwQ29kZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5qc29ud3BDb2RlID0gMTM7XG4gICAgfVxuICAgIHRoaXMudzNjU3RhdHVzID0gdzNjU3RhdHVzIHx8IEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgICB0aGlzLl9zdGFja3RyYWNlID0gbnVsbDtcbiAgfVxuXG4gIGdldCBzdGFja3RyYWNlICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhY2t0cmFjZSB8fCB0aGlzLnN0YWNrO1xuICB9XG5cbiAgc2V0IHN0YWNrdHJhY2UgKHZhbHVlKSB7XG4gICAgdGhpcy5fc3RhY2t0cmFjZSA9IHZhbHVlO1xuICB9XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9TZWxlbml1bUhRL3NlbGVuaXVtL2Jsb2IvMTc2YjRhOWUzMDgyYWMxOTI2ZjJhNDM2ZWIzNDY3NjBjMzdhNTk5OC9qYXZhL2NsaWVudC9zcmMvb3JnL29wZW5xYS9zZWxlbml1bS9yZW1vdGUvRXJyb3JDb2Rlcy5qYXZhI0wyMTVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9TZWxlbml1bUhRL3NlbGVuaXVtL2lzc3Vlcy81NTYyI2lzc3VlY29tbWVudC0zNzAzNzk0NzBcbi8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4tZXJyb3ItY29kZVxuXG5jbGFzcyBOb1N1Y2hEcml2ZXJFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDY7XG4gIH1cbiAgLy8gVzNDIEVycm9yIGlzIGNhbGxlZCBJbnZhbGlkU2Vzc2lvbklEXG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdpbnZhbGlkIHNlc3Npb24gaWQnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0Egc2Vzc2lvbiBpcyBlaXRoZXIgdGVybWluYXRlZCBvciBub3Qgc3RhcnRlZCcsIE5vU3VjaERyaXZlckVycm9yLmNvZGUoKSxcbiAgICAgICAgICBOb1N1Y2hEcml2ZXJFcnJvci53M2NTdGF0dXMoKSwgTm9TdWNoRHJpdmVyRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgTm9TdWNoRWxlbWVudEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLk5PVF9GT1VORDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnbm8gc3VjaCBlbGVtZW50JztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBlbGVtZW50IGNvdWxkIG5vdCBiZSBsb2NhdGVkIG9uIHRoZSBwYWdlIHVzaW5nIHRoZSBnaXZlbiAnICtcbiAgICAgICAgICAnc2VhcmNoIHBhcmFtZXRlcnMuJywgTm9TdWNoRWxlbWVudEVycm9yLmNvZGUoKSwgTm9TdWNoRWxlbWVudEVycm9yLnczY1N0YXR1cygpLFxuICAgICAgICAgIE5vU3VjaEVsZW1lbnRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBOb1N1Y2hGcmFtZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gODtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnbm8gc3VjaCBmcmFtZSc7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQ7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGZyYW1lIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQgYmVjYXVzZSAnICtcbiAgICAgICAgICAndGhlIGZyYW1lIGNvdWxkIG5vdCBiZSBmb3VuZC4nLCBOb1N1Y2hGcmFtZUVycm9yLmNvZGUoKSxcbiAgICAgICAgICBOb1N1Y2hGcmFtZUVycm9yLnczY1N0YXR1cygpLCBOb1N1Y2hGcmFtZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFVua25vd25Db21tYW5kRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA5O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd1bmtub3duIGNvbW1hbmQnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ1RoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kLCBvciBhIHJlcXVlc3Qgd2FzICcgK1xuICAgICAgICAgICdyZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCAnICtcbiAgICAgICAgICAncmVzb3VyY2UuJywgVW5rbm93bkNvbW1hbmRFcnJvci5jb2RlKCksIFVua25vd25Db21tYW5kRXJyb3IudzNjU3RhdHVzKCksIFVua25vd25Db21tYW5kRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgU3RhbGVFbGVtZW50UmVmZXJlbmNlRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAxMDtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLk5PVF9GT1VORDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnc3RhbGUgZWxlbWVudCByZWZlcmVuY2UnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FuIGVsZW1lbnQgY29tbWFuZCBmYWlsZWQgYmVjYXVzZSB0aGUgcmVmZXJlbmNlZCBlbGVtZW50IGlzIG5vICcgK1xuICAgICAgICAgICdsb25nZXIgYXR0YWNoZWQgdG8gdGhlIERPTS4nLCBTdGFsZUVsZW1lbnRSZWZlcmVuY2VFcnJvci5jb2RlKCksXG4gICAgICAgICAgU3RhbGVFbGVtZW50UmVmZXJlbmNlRXJyb3IudzNjU3RhdHVzKCksIFN0YWxlRWxlbWVudFJlZmVyZW5jZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEVsZW1lbnROb3RWaXNpYmxlRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAxMTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdlbGVtZW50IG5vdCB2aXNpYmxlJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBlbGVtZW50IGNvbW1hbmQgY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzICcgK1xuICAgICAgICAgICdub3QgdmlzaWJsZSBvbiB0aGUgcGFnZS4nLCBFbGVtZW50Tm90VmlzaWJsZUVycm9yLmNvZGUoKSxcbiAgICAgICAgICBFbGVtZW50Tm90VmlzaWJsZUVycm9yLnczY1N0YXR1cygpLCBFbGVtZW50Tm90VmlzaWJsZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEludmFsaWRFbGVtZW50U3RhdGVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDEyO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2ludmFsaWQgZWxlbWVudCBzdGF0ZSc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gZWxlbWVudCBjb21tYW5kIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgYmVjYXVzZSB0aGUgZWxlbWVudCBpcyAnICtcbiAgICAgICAgICAnaW4gYW4gaW52YWxpZCBzdGF0ZSAoZS5nLiBhdHRlbXB0aW5nIHRvIGNsaWNrIGEgZGlzYWJsZWQgZWxlbWVudCkuJyxcbiAgICAgICAgICBJbnZhbGlkRWxlbWVudFN0YXRlRXJyb3IuY29kZSgpLCBJbnZhbGlkRWxlbWVudFN0YXRlRXJyb3IudzNjU3RhdHVzKCksXG4gICAgICAgICAgSW52YWxpZEVsZW1lbnRTdGF0ZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFVua25vd25FcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDEzO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuIFczQ19VTktOT1dOX0VSUk9SO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnJvck9yTWVzc2FnZSkge1xuICAgIGNvbnN0IG9yaWdNZXNzYWdlID0gXy5pc1N0cmluZygoZXJyb3JPck1lc3NhZ2UgfHwge30pLm1lc3NhZ2UpXG4gICAgICA/IGVycm9yT3JNZXNzYWdlLm1lc3NhZ2VcbiAgICAgIDogZXJyb3JPck1lc3NhZ2U7XG4gICAgY29uc3QgbWVzc2FnZSA9ICdBbiB1bmtub3duIHNlcnZlci1zaWRlIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQuJyArXG4gICAgICAob3JpZ01lc3NhZ2UgPyBgIE9yaWdpbmFsIGVycm9yOiAke29yaWdNZXNzYWdlfWAgOiAnJyk7XG4gICAgc3VwZXIobWVzc2FnZSwgVW5rbm93bkVycm9yLmNvZGUoKSwgVW5rbm93bkVycm9yLnczY1N0YXR1cygpLCBVbmtub3duRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgVW5rbm93bk1ldGhvZEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNDA1O1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTUVUSE9EX05PVF9BTExPV0VEO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICd1bmtub3duIG1ldGhvZCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnVGhlIHJlcXVlc3RlZCBjb21tYW5kIG1hdGNoZWQgYSBrbm93biBVUkwgYnV0IGRpZCBub3QgbWF0Y2ggYW4gbWV0aG9kIGZvciB0aGF0IFVSTCcsXG4gICAgICAgICAgVW5rbm93bk1ldGhvZEVycm9yLmNvZGUoKSwgVW5rbm93bk1ldGhvZEVycm9yLnczY1N0YXR1cygpLCBVbmtub3duTWV0aG9kRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDQwNTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndW5zdXBwb3J0ZWQgb3BlcmF0aW9uJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIHNlcnZlci1zaWRlIGVycm9yIG9jY3VycmVkLiBDb21tYW5kIGNhbm5vdCBiZSBzdXBwb3J0ZWQuJyxcbiAgICAgICAgICBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLmNvZGUoKSwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDE1O1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdlbGVtZW50IG5vdCBzZWxlY3RhYmxlJztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FuIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuJyxcbiAgICAgICAgICBFbGVtZW50SXNOb3RTZWxlY3RhYmxlRXJyb3IuY29kZSgpLCBFbGVtZW50SXNOb3RTZWxlY3RhYmxlRXJyb3IudzNjU3RhdHVzKCksXG4gICAgICAgICAgRWxlbWVudElzTm90U2VsZWN0YWJsZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEVsZW1lbnRDbGlja0ludGVyY2VwdGVkRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA2NDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnZWxlbWVudCBjbGljayBpbnRlcmNlcHRlZCc7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdUaGUgRWxlbWVudCBDbGljayBjb21tYW5kIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgYmVjYXVzZSB0aGUgZWxlbWVudCByZWNlaXZpbmcgJyArXG4gICAgICAgICAgJ3RoZSBldmVudHMgaXMgb2JzY3VyaW5nIHRoZSBlbGVtZW50IHRoYXQgd2FzIHJlcXVlc3RlZCBjbGlja2VkJyxcbiAgICAgICAgICBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZEVycm9yLmNvZGUoKSwgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWRFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBFbGVtZW50Q2xpY2tJbnRlcmNlcHRlZEVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDYwO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdlbGVtZW50IG5vdCBpbnRlcmFjdGFibGUnO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQSBjb21tYW5kIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgYmVjYXVzZSB0aGUgZWxlbWVudCBpcyBub3QgcG9pbnRlci0gb3Iga2V5Ym9hcmQgaW50ZXJhY3RhYmxlJyxcbiAgICAgICAgICBFbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3IuY29kZSgpLCBFbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3IudzNjU3RhdHVzKCksXG4gICAgICAgICAgRWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEluc2VjdXJlQ2VydGlmaWNhdGVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnaW5zZWN1cmUgY2VydGlmaWNhdGUnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ05hdmlnYXRpb24gY2F1c2VkIHRoZSB1c2VyIGFnZW50IHRvIGhpdCBhIGNlcnRpZmljYXRlIHdhcm5pbmcsIHdoaWNoIGlzIHVzdWFsbHkgdGhlIHJlc3VsdCBvZiBhbiBleHBpcmVkIG9yIGludmFsaWQgVExTIGNlcnRpZmljYXRlJyxcbiAgICAgIEVsZW1lbnRJc05vdFNlbGVjdGFibGVFcnJvci5jb2RlKCksIG51bGwsIEluc2VjdXJlQ2VydGlmaWNhdGVFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBKYXZhU2NyaXB0RXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAxNztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnamF2YXNjcmlwdCBlcnJvcic7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHVzZXIgc3VwcGxpZWQgSmF2YVNjcmlwdC4nLFxuICAgICAgICAgIEphdmFTY3JpcHRFcnJvci5jb2RlKCksIEphdmFTY3JpcHRFcnJvci53M2NTdGF0dXMoKSwgSmF2YVNjcmlwdEVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFhQYXRoTG9va3VwRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAxOTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdpbnZhbGlkIHNlbGVjdG9yJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGFuIGVsZW1lbnQgYnkgWFBhdGguJyxcbiAgICAgICAgICBYUGF0aExvb2t1cEVycm9yLmNvZGUoKSwgWFBhdGhMb29rdXBFcnJvci53M2NTdGF0dXMoKSwgWFBhdGhMb29rdXBFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyMTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLlJFUVVFU1RfVElNRU9VVDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndGltZW91dCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJyxcbiAgICAgICAgICBUaW1lb3V0RXJyb3IuY29kZSgpLCBUaW1lb3V0RXJyb3IudzNjU3RhdHVzKCksIFRpbWVvdXRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBOb1N1Y2hXaW5kb3dFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDIzO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdubyBzdWNoIHdpbmRvdyc7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQ7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudCB3aW5kb3cgY291bGQgbm90IGJlIHNhdGlzZmllZCAnICtcbiAgICAgICAgICAnYmVjYXVzZSB0aGUgd2luZG93IGNvdWxkIG5vdCBiZSBmb3VuZC4nLCBOb1N1Y2hXaW5kb3dFcnJvci5jb2RlKCksXG4gICAgICAgICAgTm9TdWNoV2luZG93RXJyb3IudzNjU3RhdHVzKCksIE5vU3VjaFdpbmRvd0Vycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gNjE7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2ludmFsaWQgYXJndW1lbnQnO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNvbW1hbmQgYXJlIGVpdGhlciBpbnZhbGlkIG9yIG1hbGZvcm1lZCcsXG4gICAgICAgICAgSW52YWxpZEFyZ3VtZW50RXJyb3IuY29kZSgpLCBJbnZhbGlkQXJndW1lbnRFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBJbnZhbGlkQXJndW1lbnRFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBJbnZhbGlkQ29va2llRG9tYWluRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyNDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnaW52YWxpZCBjb29raWUgZG9tYWluJztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0FuIGlsbGVnYWwgYXR0ZW1wdCB3YXMgbWFkZSB0byBzZXQgYSBjb29raWUgdW5kZXIgYSBkaWZmZXJlbnQgJyArXG4gICAgICAgICAgJ2RvbWFpbiB0aGFuIHRoZSBjdXJyZW50IHBhZ2UuJywgSW52YWxpZENvb2tpZURvbWFpbkVycm9yLmNvZGUoKSxcbiAgICAgICAgICBJbnZhbGlkQ29va2llRG9tYWluRXJyb3IudzNjU3RhdHVzKCksIEludmFsaWRDb29raWVEb21haW5FcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBOb1N1Y2hDb29raWVFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDYyO1xuICB9XG4gIHN0YXRpYyB3M2NTdGF0dXMgKCkge1xuICAgIHJldHVybiBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdubyBzdWNoIGNvb2tpZSc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnTm8gY29va2llIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIG5hbWUgd2FzIGZvdW5kIGFtb25nc3QgdGhlIGFzc29jaWF0ZWQgY29va2llcyBvZiB0aGUgY3VycmVudCBicm93c2luZyBjb250ZXh04oCZcyBhY3RpdmUgZG9jdW1lbnQnLFxuICAgICAgICAgIE5vU3VjaENvb2tpZUVycm9yLmNvZGUoKSwgTm9TdWNoQ29va2llRXJyb3IudzNjU3RhdHVzKCksIE5vU3VjaENvb2tpZUVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIFVuYWJsZVRvU2V0Q29va2llRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyNTtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndW5hYmxlIHRvIHNldCBjb29raWUnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ0EgcmVxdWVzdCB0byBzZXQgYSBjb29raWVcXCdzIHZhbHVlIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuJyxcbiAgICAgICAgICBVbmFibGVUb1NldENvb2tpZUVycm9yLmNvZGUoKSwgVW5hYmxlVG9TZXRDb29raWVFcnJvci53M2NTdGF0dXMoKSwgVW5hYmxlVG9TZXRDb29raWVFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBVbmV4cGVjdGVkQWxlcnRPcGVuRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyNjtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndW5leHBlY3RlZCBhbGVydCBvcGVuJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIG1vZGFsIGRpYWxvZyB3YXMgb3BlbiwgYmxvY2tpbmcgdGhpcyBvcGVyYXRpb24nLFxuICAgICAgICAgIFVuZXhwZWN0ZWRBbGVydE9wZW5FcnJvci5jb2RlKCksIFVuZXhwZWN0ZWRBbGVydE9wZW5FcnJvci53M2NTdGF0dXMoKSwgVW5leHBlY3RlZEFsZXJ0T3BlbkVycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIE5vQWxlcnRPcGVuRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAyNztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLk5PVF9GT1VORDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnbm8gc3VjaCBhbGVydCc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVyYXRlIG9uIGEgbW9kYWwgZGlhbG9nIHdoZW4gb25lICcgK1xuICAgICAgICAgICd3YXMgbm90IG9wZW4uJywgTm9BbGVydE9wZW5FcnJvci5jb2RlKCksIE5vQWxlcnRPcGVuRXJyb3IudzNjU3RhdHVzKCksIE5vQWxlcnRPcGVuRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgTm9TdWNoQWxlcnRFcnJvciBleHRlbmRzIE5vQWxlcnRPcGVuRXJyb3Ige31cblxuY2xhc3MgU2NyaXB0VGltZW91dEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMjg7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5SRVFVRVNUX1RJTUVPVVQ7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ3NjcmlwdCB0aW1lb3V0JztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIHNjcmlwdCBkaWQgbm90IGNvbXBsZXRlIGJlZm9yZSBpdHMgdGltZW91dCBleHBpcmVkLicsXG4gICAgICAgICAgU2NyaXB0VGltZW91dEVycm9yLmNvZGUoKSwgU2NyaXB0VGltZW91dEVycm9yLnczY1N0YXR1cygpLCBTY3JpcHRUaW1lb3V0RXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZEVsZW1lbnRDb29yZGluYXRlc0Vycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMjk7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnaW52YWxpZCBjb29yZGluYXRlcyc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnVGhlIGNvb3JkaW5hdGVzIHByb3ZpZGVkIHRvIGFuIGludGVyYWN0aW9ucyBvcGVyYXRpb24gYXJlIGludmFsaWQuJyxcbiAgICAgICAgICBJbnZhbGlkRWxlbWVudENvb3JkaW5hdGVzRXJyb3IuY29kZSgpLCBJbnZhbGlkRWxlbWVudENvb3JkaW5hdGVzRXJyb3IudzNjU3RhdHVzKCksXG4gICAgICAgICAgSW52YWxpZEVsZW1lbnRDb29yZGluYXRlc0Vycm9yLmVycm9yKCkpO1xuICB9XG59XG5cbmNsYXNzIEludmFsaWRDb29yZGluYXRlc0Vycm9yIGV4dGVuZHMgSW52YWxpZEVsZW1lbnRDb29yZGluYXRlc0Vycm9yIHt9XG5cbmNsYXNzIElNRU5vdEF2YWlsYWJsZUVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMzA7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5JTlRFUk5BTF9TRVJWRVJfRVJST1I7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkIG9wZXJhdGlvbic7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnSU1FIHdhcyBub3QgYXZhaWxhYmxlLicsIElNRU5vdEF2YWlsYWJsZUVycm9yLmNvZGUoKSxcbiAgICAgICAgICBJTUVOb3RBdmFpbGFibGVFcnJvci53M2NTdGF0dXMoKSwgSU1FTm90QXZhaWxhYmxlRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMzE7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5JTlRFUk5BTF9TRVJWRVJfRVJST1I7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkIG9wZXJhdGlvbic7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnQW4gSU1FIGVuZ2luZSBjb3VsZCBub3QgYmUgc3RhcnRlZC4nLFxuICAgICAgICAgIElNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWRFcnJvci5jb2RlKCksIElNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWRFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBJTUVFbmdpbmVBY3RpdmF0aW9uRmFpbGVkRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZFNlbGVjdG9yRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAzMjtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG4gIHN0YXRpYyBlcnJvciAoKSB7XG4gICAgcmV0dXJuICdpbnZhbGlkIHNlbGVjdG9yJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBcmd1bWVudCB3YXMgYW4gaW52YWxpZCBzZWxlY3RvciAoZS5nLiBYUGF0aC9DU1MpLicsXG4gICAgICAgICAgSW52YWxpZFNlbGVjdG9yRXJyb3IuY29kZSgpLCBJbnZhbGlkU2VsZWN0b3JFcnJvci53M2NTdGF0dXMoKSxcbiAgICAgICAgICBJbnZhbGlkU2VsZWN0b3JFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBTZXNzaW9uTm90Q3JlYXRlZEVycm9yIGV4dGVuZHMgUHJvdG9jb2xFcnJvciB7XG4gIHN0YXRpYyBjb2RlICgpIHtcbiAgICByZXR1cm4gMzM7XG4gIH1cbiAgc3RhdGljIHczY1N0YXR1cyAoKSB7XG4gICAgcmV0dXJuIEhUVFBTdGF0dXNDb2Rlcy5JTlRFUk5BTF9TRVJWRVJfRVJST1I7XG4gIH1cbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ3Nlc3Npb24gbm90IGNyZWF0ZWQnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChkZXRhaWxzKSB7XG4gICAgbGV0IG1lc3NhZ2UgPSAnQSBuZXcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nO1xuICAgIGlmIChkZXRhaWxzKSB7XG4gICAgICBtZXNzYWdlICs9IGAgRGV0YWlsczogJHtkZXRhaWxzfWA7XG4gICAgfVxuXG4gICAgc3VwZXIobWVzc2FnZSwgU2Vzc2lvbk5vdENyZWF0ZWRFcnJvci5jb2RlKCksIFNlc3Npb25Ob3RDcmVhdGVkRXJyb3IudzNjU3RhdHVzKCksIFNlc3Npb25Ob3RDcmVhdGVkRXJyb3IuZXJyb3IoKSk7XG4gIH1cbn1cblxuY2xhc3MgTW92ZVRhcmdldE91dE9mQm91bmRzRXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAzNDtcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAnbW92ZSB0YXJnZXQgb3V0IG9mIGJvdW5kcyc7XG4gIH1cbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnVGFyZ2V0IHByb3ZpZGVkIGZvciBhIG1vdmUgYWN0aW9uIGlzIG91dCBvZiBib3VuZHMuJyxcbiAgICAgICAgICBNb3ZlVGFyZ2V0T3V0T2ZCb3VuZHNFcnJvci5jb2RlKCksIE1vdmVUYXJnZXRPdXRPZkJvdW5kc0Vycm9yLnczY1N0YXR1cygpLCBNb3ZlVGFyZ2V0T3V0T2ZCb3VuZHNFcnJvci5lcnJvcigpKTtcbiAgfVxufVxuXG5jbGFzcyBOb1N1Y2hDb250ZXh0RXJyb3IgZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiAzNTtcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdObyBzdWNoIGNvbnRleHQgZm91bmQuJywgTm9TdWNoQ29udGV4dEVycm9yLmNvZGUoKSk7XG4gIH1cbn1cblxuY2xhc3MgSW52YWxpZENvbnRleHRFcnJvciBleHRlbmRzIFByb3RvY29sRXJyb3Ige1xuICBzdGF0aWMgY29kZSAoKSB7XG4gICAgcmV0dXJuIDM2O1xuICB9XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ1RoYXQgY29tbWFuZCBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgaW4gdGhlIGN1cnJlbnQgY29udGV4dC4nLFxuICAgICAgICAgIEludmFsaWRDb250ZXh0RXJyb3IuY29kZSgpKTtcbiAgfVxufVxuXG4vLyBUaGVzZSBhcmUgYWxpYXNlcyBmb3IgVW5rbm93bk1ldGhvZEVycm9yXG5jbGFzcyBOb3RZZXRJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgVW5rbm93bk1ldGhvZEVycm9yIHtcbiAgY29uc3RydWN0b3IgKGVycikge1xuICAgIHN1cGVyKGVyciB8fCAnTWV0aG9kIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIFVua25vd25NZXRob2RFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChlcnIpIHtcbiAgICBzdXBlcihlcnIgfHwgJ01ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuXG5jbGFzcyBVbmFibGVUb0NhcHR1cmVTY3JlZW4gZXh0ZW5kcyBQcm90b2NvbEVycm9yIHtcbiAgc3RhdGljIGNvZGUgKCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuICBzdGF0aWMgdzNjU3RhdHVzICgpIHtcbiAgICByZXR1cm4gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgfVxuICBzdGF0aWMgZXJyb3IgKCkge1xuICAgIHJldHVybiAndW5hYmxlIHRvIGNhcHR1cmUgc2NyZWVuJztcbiAgfVxuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoZXJyIHx8ICdBIHNjcmVlbiBjYXB0dXJlIHdhcyBtYWRlIGltcG9zc2libGUnLFxuICAgICAgICAgIFVuYWJsZVRvQ2FwdHVyZVNjcmVlbi5jb2RlKCksIFVuYWJsZVRvQ2FwdHVyZVNjcmVlbi53M2NTdGF0dXMoKSwgVW5hYmxlVG9DYXB0dXJlU2NyZWVuLmVycm9yKCkpO1xuICB9XG59XG5cblxuLy8gRXF1aXZhbGVudCB0byBXM0MgSW52YWxpZEFyZ3VtZW50RXJyb3JcbmNsYXNzIEJhZFBhcmFtZXRlcnNFcnJvciBleHRlbmRzIEVTNkVycm9yIHtcbiAgc3RhdGljIGVycm9yICgpIHtcbiAgICByZXR1cm4gJ2ludmFsaWQgYXJndW1lbnQnO1xuICB9XG4gIGNvbnN0cnVjdG9yIChyZXF1aXJlZFBhcmFtcywgYWN0dWFsUGFyYW1zLCBlcnJNZXNzYWdlKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKCFlcnJNZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gYFBhcmFtZXRlcnMgd2VyZSBpbmNvcnJlY3QuIFdlIHdhbnRlZCBgICtcbiAgICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShyZXF1aXJlZFBhcmFtcyl9IGFuZCB5b3UgYCArXG4gICAgICAgICAgYHNlbnQgJHtKU09OLnN0cmluZ2lmeShhY3R1YWxQYXJhbXMpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lc3NhZ2UgPSBgUGFyYW1ldGVycyB3ZXJlIGluY29ycmVjdC4gWW91IHNlbnQgJHtKU09OLnN0cmluZ2lmeShhY3R1YWxQYXJhbXMpfSwgJHtlcnJNZXNzYWdlfWA7XG4gICAgfVxuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMudzNjU3RhdHVzID0gSFRUUFN0YXR1c0NvZGVzLkJBRF9SRVFVRVNUO1xuICB9XG59XG5cbi8qKlxuICogUHJveHlSZXF1ZXN0RXJyb3IgaXMgYSBjdXN0b20gZXJyb3IgYW5kIHdpbGwgYmUgdGhyb3duIHVwIG9uIHVuc3VjY2Vzc2Z1bCBwcm94eSByZXF1ZXN0IGFuZFxuICogd2lsbCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm94eSBmYWlsdXJlLlxuICogSW4gY2FzZSBvZiBQcm94eVJlcXVlc3RFcnJvciBzaG91bGQgZmV0Y2ggdGhlIGFjdHVhbCBlcnJvciBieSBjYWxsaW5nIGBnZXRBY3R1YWxFcnJvcigpYFxuICogZm9yIHByb3h5IGZhaWx1cmUgdG8gZ2VuZXJhdGUgdGhlIGNsaWVudCByZXNwb25zZS5cbiAqL1xuY2xhc3MgUHJveHlSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBFUzZFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChlcnIsIHJlc3BvbnNlRXJyb3IsIGh0dHBTdGF0dXMpIHtcbiAgICBsZXQgcmVzcG9uc2VFcnJvck9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShyZXNwb25zZUVycm9yKTtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChyZXNwb25zZUVycm9yT2JqKSkge1xuICAgICAgcmVzcG9uc2VFcnJvck9iaiA9IHt9O1xuICAgIH1cbiAgICBsZXQgb3JpZ01lc3NhZ2UgPSBfLmlzU3RyaW5nKHJlc3BvbnNlRXJyb3IpID8gcmVzcG9uc2VFcnJvciA6ICcnO1xuICAgIGlmICghXy5pc0VtcHR5KHJlc3BvbnNlRXJyb3JPYmopKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyhyZXNwb25zZUVycm9yT2JqLnZhbHVlKSkge1xuICAgICAgICBvcmlnTWVzc2FnZSA9IHJlc3BvbnNlRXJyb3JPYmoudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChyZXNwb25zZUVycm9yT2JqLnZhbHVlKSAmJiBfLmlzU3RyaW5nKHJlc3BvbnNlRXJyb3JPYmoudmFsdWUubWVzc2FnZSkpIHtcbiAgICAgICAgb3JpZ01lc3NhZ2UgPSByZXNwb25zZUVycm9yT2JqLnZhbHVlLm1lc3NhZ2U7XG4gICAgICB9XG4gICAgfVxuICAgIHN1cGVyKF8uaXNFbXB0eShlcnIpID8gYFByb3h5IHJlcXVlc3QgdW5zdWNjZXNzZnVsLiAke29yaWdNZXNzYWdlfWAgOiBlcnIpO1xuXG4gICAgdGhpcy53M2NTdGF0dXMgPSBIVFRQU3RhdHVzQ29kZXMuQkFEX1JFUVVFU1Q7XG5cbiAgICAvLyBJZiB0aGUgcmVzcG9uc2UgZXJyb3IgaXMgYW4gb2JqZWN0IGFuZCB2YWx1ZSBpcyBhbiBvYmplY3QsIGl0J3MgYSBXM0MgZXJyb3IgKGZvciBKU09OV1AgdmFsdWUgaXMgYSBzdHJpbmcpXG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChyZXNwb25zZUVycm9yT2JqLnZhbHVlKSAmJiBfLmhhcyhyZXNwb25zZUVycm9yT2JqLnZhbHVlLCAnZXJyb3InKSkge1xuICAgICAgdGhpcy53M2MgPSByZXNwb25zZUVycm9yT2JqLnZhbHVlO1xuICAgICAgdGhpcy53M2NTdGF0dXMgPSBodHRwU3RhdHVzIHx8IEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qc29ud3AgPSByZXNwb25zZUVycm9yT2JqO1xuICAgIH1cbiAgfVxuXG4gIGdldEFjdHVhbEVycm9yICgpIHtcbiAgICAvLyBJZiBpdCdzIE1KU09OV1AgZXJyb3IsIHJldHVybnMgYWN0dWFsIGVycm9yIGNhdXNlIGZvciByZXF1ZXN0IGZhaWx1cmUgYmFzZWQgb24gYGpzb253cC5zdGF0dXNgXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5qc29ud3ApICYmIHV0aWwuaGFzVmFsdWUodGhpcy5qc29ud3Auc3RhdHVzKSAmJiB1dGlsLmhhc1ZhbHVlKHRoaXMuanNvbndwLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlKHRoaXMuanNvbndwLnN0YXR1cywgdGhpcy5qc29ud3AudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLnczYykgJiYgXy5pc051bWJlcih0aGlzLnczY1N0YXR1cykgJiYgdGhpcy53M2NTdGF0dXMgPj0gMzAwKSB7XG4gICAgICByZXR1cm4gZXJyb3JGcm9tVzNDSnNvbkNvZGUodGhpcy53M2MuZXJyb3IsIHRoaXMudzNjLm1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCB0aGlzLnczYy5zdGFja3RyYWNlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVbmtub3duRXJyb3IodGhpcy5tZXNzYWdlKTtcbiAgfVxufVxuLy8gbWFwIG9mIGVycm9yIGNsYXNzIG5hbWUgdG8gZXJyb3IgY2xhc3NcbmNvbnN0IGVycm9ycyA9IHtOb3RZZXRJbXBsZW1lbnRlZEVycm9yLFxuICAgICAgICAgICAgICAgIE5vdEltcGxlbWVudGVkRXJyb3IsXG4gICAgICAgICAgICAgICAgQmFkUGFyYW1ldGVyc0Vycm9yLFxuICAgICAgICAgICAgICAgIEludmFsaWRBcmd1bWVudEVycm9yLFxuICAgICAgICAgICAgICAgIE5vU3VjaERyaXZlckVycm9yLFxuICAgICAgICAgICAgICAgIE5vU3VjaEVsZW1lbnRFcnJvcixcbiAgICAgICAgICAgICAgICBVbmtub3duQ29tbWFuZEVycm9yLFxuICAgICAgICAgICAgICAgIFN0YWxlRWxlbWVudFJlZmVyZW5jZUVycm9yLFxuICAgICAgICAgICAgICAgIEVsZW1lbnROb3RWaXNpYmxlRXJyb3IsXG4gICAgICAgICAgICAgICAgSW52YWxpZEVsZW1lbnRTdGF0ZUVycm9yLFxuICAgICAgICAgICAgICAgIFVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBFbGVtZW50SXNOb3RTZWxlY3RhYmxlRXJyb3IsXG4gICAgICAgICAgICAgICAgRWxlbWVudENsaWNrSW50ZXJjZXB0ZWRFcnJvcixcbiAgICAgICAgICAgICAgICBFbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3IsXG4gICAgICAgICAgICAgICAgSW5zZWN1cmVDZXJ0aWZpY2F0ZUVycm9yLFxuICAgICAgICAgICAgICAgIEphdmFTY3JpcHRFcnJvcixcbiAgICAgICAgICAgICAgICBYUGF0aExvb2t1cEVycm9yLFxuICAgICAgICAgICAgICAgIFRpbWVvdXRFcnJvcixcbiAgICAgICAgICAgICAgICBOb1N1Y2hXaW5kb3dFcnJvcixcbiAgICAgICAgICAgICAgICBOb1N1Y2hDb29raWVFcnJvcixcbiAgICAgICAgICAgICAgICBJbnZhbGlkQ29va2llRG9tYWluRXJyb3IsXG4gICAgICAgICAgICAgICAgSW52YWxpZENvb3JkaW5hdGVzRXJyb3IsXG4gICAgICAgICAgICAgICAgVW5hYmxlVG9TZXRDb29raWVFcnJvcixcbiAgICAgICAgICAgICAgICBVbmV4cGVjdGVkQWxlcnRPcGVuRXJyb3IsXG4gICAgICAgICAgICAgICAgTm9BbGVydE9wZW5FcnJvcixcbiAgICAgICAgICAgICAgICBTY3JpcHRUaW1lb3V0RXJyb3IsXG4gICAgICAgICAgICAgICAgSW52YWxpZEVsZW1lbnRDb29yZGluYXRlc0Vycm9yLFxuICAgICAgICAgICAgICAgIElNRU5vdEF2YWlsYWJsZUVycm9yLFxuICAgICAgICAgICAgICAgIElNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWRFcnJvcixcbiAgICAgICAgICAgICAgICBJbnZhbGlkU2VsZWN0b3JFcnJvcixcbiAgICAgICAgICAgICAgICBTZXNzaW9uTm90Q3JlYXRlZEVycm9yLFxuICAgICAgICAgICAgICAgIE1vdmVUYXJnZXRPdXRPZkJvdW5kc0Vycm9yLFxuICAgICAgICAgICAgICAgIE5vU3VjaEFsZXJ0RXJyb3IsXG4gICAgICAgICAgICAgICAgTm9TdWNoQ29udGV4dEVycm9yLFxuICAgICAgICAgICAgICAgIEludmFsaWRDb250ZXh0RXJyb3IsXG4gICAgICAgICAgICAgICAgTm9TdWNoRnJhbWVFcnJvcixcbiAgICAgICAgICAgICAgICBVbmFibGVUb0NhcHR1cmVTY3JlZW4sXG4gICAgICAgICAgICAgICAgVW5rbm93bk1ldGhvZEVycm9yLFxuICAgICAgICAgICAgICAgIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IsXG4gICAgICAgICAgICAgICAgUHJveHlSZXF1ZXN0RXJyb3J9O1xuXG4vLyBtYXAgb2YgZXJyb3IgY29kZSB0byBlcnJvciBjbGFzc1xuY29uc3QganNvbndwRXJyb3JDb2RlTWFwID0ge307XG5mb3IgKGxldCBFcnJvckNsYXNzIG9mIF8udmFsdWVzKGVycm9ycykpIHtcbiAgaWYgKEVycm9yQ2xhc3MuY29kZSkge1xuICAgIGpzb253cEVycm9yQ29kZU1hcFtFcnJvckNsYXNzLmNvZGUoKV0gPSBFcnJvckNsYXNzO1xuICB9XG59XG5cbmNvbnN0IHczY0Vycm9yQ29kZU1hcCA9IHt9O1xuZm9yIChsZXQgRXJyb3JDbGFzcyBvZiBfLnZhbHVlcyhlcnJvcnMpKSB7XG4gIGlmIChFcnJvckNsYXNzLmVycm9yKSB7XG4gICAgdzNjRXJyb3JDb2RlTWFwW0Vycm9yQ2xhc3MuZXJyb3IoKV0gPSBFcnJvckNsYXNzO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVW5rbm93bkVycm9yIChlcnIpIHtcbiAgcmV0dXJuICFlcnIuY29uc3RydWN0b3IubmFtZSB8fFxuICAgICAgICAgIV8udmFsdWVzKGVycm9ycykuZmluZChmdW5jdGlvbiBlcXVhbE5hbWVzIChlcnJvcikge1xuICAgICAgICAgICByZXR1cm4gZXJyb3IubmFtZSA9PT0gZXJyLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgICB9KTtcbn1cblxuZnVuY3Rpb24gaXNFcnJvclR5cGUgKGVyciwgdHlwZSkge1xuICAvLyBgbmFtZWAgcHJvcGVydHkgaXMgdGhlIGNvbnN0cnVjdG9yIG5hbWVcbiAgaWYgKHR5cGUubmFtZSA9PT0gUHJvdG9jb2xFcnJvci5uYW1lKSB7XG4gICAgLy8gYGpzb253cENvZGVgIGlzIGAwYCBvbiBzdWNjZXNzXG4gICAgcmV0dXJuICEhZXJyLmpzb253cENvZGU7XG4gIH0gZWxzZSBpZiAodHlwZS5uYW1lID09PSBQcm94eVJlcXVlc3RFcnJvci5uYW1lKSB7XG4gICAgLy8gYHN0YXR1c2AgaXMgYDBgIG9uIHN1Y2Nlc3NcbiAgICBpZiAoZXJyLmpzb253cCkge1xuICAgICAgcmV0dXJuICEhZXJyLmpzb253cC5zdGF0dXM7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChlcnIudzNjKSkge1xuICAgICAgcmV0dXJuIF8uaXNOdW1iZXIoZXJyLnczY1N0YXR1cykgJiYgZXJyLnczY1N0YXR1cyA+PSAzMDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBlcnIuY29uc3RydWN0b3IubmFtZSA9PT0gdHlwZS5uYW1lO1xufVxuXG4vKipcbiAqIFJldHJpZXZlIGFuIGVycm9yIGRlcml2ZWQgZnJvbSBNSlNPTldQIHN0YXR1c1xuICogQHBhcmFtIHtudW1iZXJ9IGNvZGUgSlNPTldQIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0ge3N0cmluZ3xPYmplY3R9IHZhbHVlIFRoZSBlcnJvciBtZXNzYWdlLCBvciBhbiBvYmplY3Qgd2l0aCBhIGBtZXNzYWdlYCBwcm9wZXJ0eVxuICogQHJldHVybiB7UHJvdG9jb2xFcnJvcn0gVGhlIGVycm9yIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHByb3ZpZGVkIEpTT05XUCBzdGF0dXMgY29kZVxuICovXG5mdW5jdGlvbiBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSAoY29kZSwgdmFsdWUgPSAnJykge1xuICAvLyBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgcHVsbCBtZXNzYWdlIGZyb20gaXQsIG90aGVyd2lzZSB1c2UgdGhlIHBsYWluXG4gIC8vIHZhbHVlLCBvciBkZWZhdWx0IHRvIGFuIGVtcHR5IHN0cmluZywgaWYgbnVsbFxuICBjb25zdCBtZXNzYWdlID0gKHZhbHVlIHx8IHt9KS5tZXNzYWdlIHx8IHZhbHVlIHx8ICcnO1xuICBpZiAoY29kZSAhPT0gVW5rbm93bkVycm9yLmNvZGUoKSAmJiBqc29ud3BFcnJvckNvZGVNYXBbY29kZV0pIHtcbiAgICBtanNvbndwTG9nLmRlYnVnKGBNYXRjaGVkIEpTT05XUCBlcnJvciBjb2RlICR7Y29kZX0gdG8gJHtqc29ud3BFcnJvckNvZGVNYXBbY29kZV0ubmFtZX1gKTtcbiAgICByZXR1cm4gbmV3IGpzb253cEVycm9yQ29kZU1hcFtjb2RlXShtZXNzYWdlKTtcbiAgfVxuICBtanNvbndwTG9nLmRlYnVnKGBNYXRjaGVkIEpTT05XUCBlcnJvciBjb2RlICR7Y29kZX0gdG8gVW5rbm93bkVycm9yYCk7XG4gIHJldHVybiBuZXcgVW5rbm93bkVycm9yKG1lc3NhZ2UpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlIGFuIGVycm9yIGRlcml2ZWQgZnJvbSBXM0MgSlNPTiBDb2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gY29kZSBXM0MgZXJyb3Igc3RyaW5nIChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jaGFuZGxpbmctZXJyb3JzIGBKU09OIEVycm9yIENvZGVgIGNvbHVtbilcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIHRoZSBlcnJvciBtZXNzYWdlXG4gKiBAcGFyYW0gez9zdHJpbmd9IHN0YWNrdHJhY2UgYW4gb3B0aW9uYWwgZXJyb3Igc3RhY2t0cmFjZVxuICogQHJldHVybiB7UHJvdG9jb2xFcnJvcn0gIFRoZSBlcnJvciB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgVzNDIGVycm9yIHN0cmluZ1xuICovXG5mdW5jdGlvbiBlcnJvckZyb21XM0NKc29uQ29kZSAoY29kZSwgbWVzc2FnZSwgc3RhY2t0cmFjZSA9IG51bGwpIHtcbiAgaWYgKGNvZGUgJiYgdzNjRXJyb3JDb2RlTWFwW2NvZGUudG9Mb3dlckNhc2UoKV0pIHtcbiAgICB3M2NMb2cuZGVidWcoYE1hdGNoZWQgVzNDIGVycm9yIGNvZGUgJyR7Y29kZX0nIHRvICR7dzNjRXJyb3JDb2RlTWFwW2NvZGUudG9Mb3dlckNhc2UoKV0ubmFtZX1gKTtcbiAgICBjb25zdCByZXN1bHRFcnJvciA9IG5ldyB3M2NFcnJvckNvZGVNYXBbY29kZS50b0xvd2VyQ2FzZSgpXShtZXNzYWdlKTtcbiAgICByZXN1bHRFcnJvci5zdGFja3RyYWNlID0gc3RhY2t0cmFjZTtcbiAgICByZXR1cm4gcmVzdWx0RXJyb3I7XG4gIH1cbiAgdzNjTG9nLmRlYnVnKGBNYXRjaGVkIFczQyBlcnJvciBjb2RlICcke2NvZGV9JyB0byBVbmtub3duRXJyb3JgKTtcbiAgY29uc3QgcmVzdWx0RXJyb3IgPSBuZXcgVW5rbm93bkVycm9yKG1lc3NhZ2UpO1xuICByZXN1bHRFcnJvci5zdGFja3RyYWNlID0gc3RhY2t0cmFjZTtcbiAgcmV0dXJuIHJlc3VsdEVycm9yO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXBwaXVtIGVycm9yIHRvIHByb3BlciBXM0MgSFRUUCByZXNwb25zZVxuICogQHBhcmFtIHtQcm90b2NvbEVycm9yfSBlcnIgVGhlIGVycm9yIHRoYXQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZFxuICovXG5mdW5jdGlvbiBnZXRSZXNwb25zZUZvclczQ0Vycm9yIChlcnIpIHtcbiAgbGV0IGh0dHBTdGF0dXM7XG5cbiAgLy8gVzNDIGRlZmluZWQgZXJyb3IgbWVzc2FnZSAoaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLWVycm9yLWNvZGUpXG4gIGxldCB3M2NFcnJvclN0cmluZztcblxuICBpZiAoIWVyci53M2NTdGF0dXMpIHtcbiAgICBlcnIgPSB1dGlsLmhhc1ZhbHVlKGVyci5zdGF0dXMpXG4gICAgICAvLyBJZiBpdCdzIGEgSlNPTldQIGVycm9yLCBmaW5kIGNvcnJlc3BvbmRpbmcgZXJyb3JcbiAgICAgID8gZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUoZXJyLnN0YXR1cywgZXJyLnZhbHVlKVxuICAgICAgOiBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIubWVzc2FnZSk7XG4gIH1cblxuICBpZiAoaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuQmFkUGFyYW1ldGVyc0Vycm9yKSkge1xuICAgIC8vIHJlc3BvbmQgd2l0aCBhIDQwMCBpZiB3ZSBoYXZlIGJhZCBwYXJhbWV0ZXJzXG4gICAgdzNjTG9nLmRlYnVnKGBCYWQgcGFyYW1ldGVyczogJHtlcnJ9YCk7XG4gICAgdzNjRXJyb3JTdHJpbmcgPSBCYWRQYXJhbWV0ZXJzRXJyb3IuZXJyb3IoKTtcbiAgfSBlbHNlIHtcbiAgICB3M2NFcnJvclN0cmluZyA9IGVyci5lcnJvcjtcbiAgfVxuXG4gIGh0dHBTdGF0dXMgPSBlcnIudzNjU3RhdHVzO1xuXG4gIGlmICghdzNjRXJyb3JTdHJpbmcpIHtcbiAgICB3M2NFcnJvclN0cmluZyA9IFVua25vd25FcnJvci5lcnJvcigpO1xuICB9XG5cbiAgbGV0IGh0dHBSZXNCb2R5ID0ge1xuICAgIHZhbHVlOiB7XG4gICAgICBlcnJvcjogdzNjRXJyb3JTdHJpbmcsXG4gICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFja3RyYWNlIHx8IGVyci5zdGFjayxcbiAgICB9XG4gIH07XG4gIHJldHVybiBbaHR0cFN0YXR1cywgaHR0cFJlc0JvZHldO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQXBwaXVtIGVycm9yIHRvIGEgcHJvcGVyIEpTT05XUCByZXNwb25zZVxuICogQHBhcmFtIHtQcm90b2NvbEVycm9yfSBlcnIgVGhlIGVycm9yIHRvIGJlIGNvbnZlcnRlZFxuICovXG5mdW5jdGlvbiBnZXRSZXNwb25zZUZvckpzb253cEVycm9yIChlcnIpIHtcbiAgaWYgKGlzVW5rbm93bkVycm9yKGVycikpIHtcbiAgICBlcnIgPSBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIpO1xuICB9XG4gIC8vIE1KU09OV1AgZXJyb3JzIGFyZSB1c3VhbGx5IDUwMCBzdGF0dXMgY29kZSBzbyBzZXQgaXQgdG8gdGhhdCBieSBkZWZhdWx0XG4gIGxldCBodHRwU3RhdHVzID0gSFRUUFN0YXR1c0NvZGVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgbGV0IGh0dHBSZXNCb2R5ID0ge1xuICAgIHN0YXR1czogZXJyLmpzb253cENvZGUsXG4gICAgdmFsdWU6IHtcbiAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlXG4gICAgfVxuICB9O1xuXG4gIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5CYWRQYXJhbWV0ZXJzRXJyb3IpKSB7XG4gICAgLy8gcmVzcG9uZCB3aXRoIGEgNDAwIGlmIHdlIGhhdmUgYmFkIHBhcmFtZXRlcnNcbiAgICBtanNvbndwTG9nLmRlYnVnKGBCYWQgcGFyYW1ldGVyczogJHtlcnJ9YCk7XG4gICAgaHR0cFN0YXR1cyA9IEhUVFBTdGF0dXNDb2Rlcy5CQURfUkVRVUVTVDtcbiAgICBodHRwUmVzQm9keSA9IGVyci5tZXNzYWdlO1xuICB9IGVsc2UgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IpIHx8XG4gICAgICAgICAgICAgaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcikpIHtcbiAgICAvLyByZXNwb25kIHdpdGggYSA1MDEgaWYgdGhlIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWRcbiAgICBodHRwU3RhdHVzID0gSFRUUFN0YXR1c0NvZGVzLk5PVF9JTVBMRU1FTlRFRDtcbiAgfSBlbHNlIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Ob1N1Y2hEcml2ZXJFcnJvcikpIHtcbiAgICAvLyByZXNwb25kIHdpdGggYSA0MDQgaWYgdGhlcmUgaXMgbm8gZHJpdmVyIGZvciB0aGUgc2Vzc2lvblxuICAgIGh0dHBTdGF0dXMgPSBIVFRQU3RhdHVzQ29kZXMuTk9UX0ZPVU5EO1xuICB9XG5cblxuICByZXR1cm4gW2h0dHBTdGF0dXMsIGh0dHBSZXNCb2R5XTtcbn1cblxuZXhwb3J0IHtcbiAgUHJvdG9jb2xFcnJvciwgZXJyb3JzLCBpc0Vycm9yVHlwZSwgaXNVbmtub3duRXJyb3IsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgZ2V0UmVzcG9uc2VGb3JXM0NFcnJvciwgZ2V0UmVzcG9uc2VGb3JKc29ud3BFcnJvcixcbn07XG4iXSwiZmlsZSI6ImxpYi9wcm90b2NvbC9lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -5,8 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
9
|
-
exports.formatStatus = formatStatus;
|
|
8
|
+
exports.JSONWP_SUCCESS_STATUS_CODE = void 0;
|
|
10
9
|
Object.defineProperty(exports, "MJSONWP_ELEMENT_KEY", {
|
|
11
10
|
enumerable: true,
|
|
12
11
|
get: function () {
|
|
@@ -19,7 +18,8 @@ Object.defineProperty(exports, "W3C_ELEMENT_KEY", {
|
|
|
19
18
|
return _constants.W3C_ELEMENT_KEY;
|
|
20
19
|
}
|
|
21
20
|
});
|
|
22
|
-
exports.
|
|
21
|
+
exports.formatResponseValue = formatResponseValue;
|
|
22
|
+
exports.formatStatus = formatStatus;
|
|
23
23
|
|
|
24
24
|
require("source-map-support/register");
|
|
25
25
|
|
|
@@ -3,28 +3,28 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "ALL_COMMANDS", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _routes.ALL_COMMANDS;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "CREATE_SESSION_COMMAND", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return _protocol.
|
|
15
|
+
return _protocol.CREATE_SESSION_COMMAND;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "
|
|
18
|
+
Object.defineProperty(exports, "DELETE_SESSION_COMMAND", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return _protocol.
|
|
21
|
+
return _protocol.DELETE_SESSION_COMMAND;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
-
Object.defineProperty(exports, "
|
|
24
|
+
Object.defineProperty(exports, "METHOD_MAP", {
|
|
25
25
|
enumerable: true,
|
|
26
26
|
get: function () {
|
|
27
|
-
return
|
|
27
|
+
return _routes.METHOD_MAP;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "NO_SESSION_ID_COMMANDS", {
|
|
@@ -33,22 +33,28 @@ Object.defineProperty(exports, "NO_SESSION_ID_COMMANDS", {
|
|
|
33
33
|
return _routes.NO_SESSION_ID_COMMANDS;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
-
Object.defineProperty(exports, "
|
|
36
|
+
Object.defineProperty(exports, "Protocol", {
|
|
37
37
|
enumerable: true,
|
|
38
38
|
get: function () {
|
|
39
|
-
return
|
|
39
|
+
return _protocol.Protocol;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
Object.defineProperty(exports, "
|
|
42
|
+
Object.defineProperty(exports, "determineProtocol", {
|
|
43
43
|
enumerable: true,
|
|
44
44
|
get: function () {
|
|
45
|
-
return
|
|
45
|
+
return _protocol.determineProtocol;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
-
Object.defineProperty(exports, "
|
|
48
|
+
Object.defineProperty(exports, "errorFromMJSONWPStatusCode", {
|
|
49
49
|
enumerable: true,
|
|
50
50
|
get: function () {
|
|
51
|
-
return
|
|
51
|
+
return _errors.errorFromMJSONWPStatusCode;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "errorFromW3CJsonCode", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _errors.errorFromW3CJsonCode;
|
|
52
58
|
}
|
|
53
59
|
});
|
|
54
60
|
Object.defineProperty(exports, "errors", {
|
|
@@ -63,16 +69,22 @@ Object.defineProperty(exports, "isErrorType", {
|
|
|
63
69
|
return _errors.isErrorType;
|
|
64
70
|
}
|
|
65
71
|
});
|
|
66
|
-
Object.defineProperty(exports, "
|
|
72
|
+
Object.defineProperty(exports, "isSessionCommand", {
|
|
67
73
|
enumerable: true,
|
|
68
74
|
get: function () {
|
|
69
|
-
return
|
|
75
|
+
return _protocol.isSessionCommand;
|
|
70
76
|
}
|
|
71
77
|
});
|
|
72
|
-
Object.defineProperty(exports, "
|
|
78
|
+
Object.defineProperty(exports, "routeConfiguringFunction", {
|
|
73
79
|
enumerable: true,
|
|
74
80
|
get: function () {
|
|
75
|
-
return
|
|
81
|
+
return _protocol.routeConfiguringFunction;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, "routeToCommandName", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () {
|
|
87
|
+
return _routes.routeToCommandName;
|
|
76
88
|
}
|
|
77
89
|
});
|
|
78
90
|
|
|
@@ -85,4 +97,4 @@ var _routes = require("./routes");
|
|
|
85
97
|
var _errors = require("./errors");require('source-map-support').install();
|
|
86
98
|
|
|
87
99
|
|
|
88
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wcm90b2NvbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUlBOztBQUlBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1haW5cblxuaW1wb3J0IHtcbiAgUHJvdG9jb2wsIGlzU2Vzc2lvbkNvbW1hbmQsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiwgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsIERFTEVURV9TRVNTSU9OX0NPTU1BTkQsXG59IGZyb20gJy4vcHJvdG9jb2wnO1xuaW1wb3J0IHtcbiAgTk9fU0VTU0lPTl9JRF9DT01NQU5EUywgQUxMX0NPTU1BTkRTLCBNRVRIT0RfTUFQLFxuICByb3V0ZVRvQ29tbWFuZE5hbWVcbn0gZnJvbSAnLi9yb3V0ZXMnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBpc0Vycm9yVHlwZSwgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJy4vZXJyb3JzJztcblxuZXhwb3J0IHtcbiAgUHJvdG9jb2wsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiwgZXJyb3JzLCBpc0Vycm9yVHlwZSxcbiAgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlLCBBTExfQ09NTUFORFMsIE1FVEhPRF9NQVAsXG4gIHJvdXRlVG9Db21tYW5kTmFtZSwgTk9fU0VTU0lPTl9JRF9DT01NQU5EUywgaXNTZXNzaW9uQ29tbWFuZCwgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsIERFTEVURV9TRVNTSU9OX0NPTU1BTkQsXG59O1xuIl0sImZpbGUiOiJsaWIvcHJvdG9jb2wvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|