@appium/base-driver 8.3.0 → 8.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/build/lib/basedriver/capabilities.d.ts +80 -0
  2. package/build/lib/basedriver/capabilities.d.ts.map +1 -0
  3. package/build/lib/basedriver/capabilities.js +12 -13
  4. package/build/lib/basedriver/commands/event.d.ts +9 -0
  5. package/build/lib/basedriver/commands/event.d.ts.map +1 -0
  6. package/build/lib/basedriver/commands/event.js +21 -23
  7. package/build/lib/basedriver/commands/find.d.ts +11 -0
  8. package/build/lib/basedriver/commands/find.d.ts.map +1 -0
  9. package/build/lib/basedriver/commands/find.js +42 -37
  10. package/build/lib/basedriver/commands/index.d.ts +8 -0
  11. package/build/lib/basedriver/commands/index.d.ts.map +1 -0
  12. package/build/lib/basedriver/commands/index.js +17 -16
  13. package/build/lib/basedriver/commands/log.d.ts +12 -0
  14. package/build/lib/basedriver/commands/log.d.ts.map +1 -0
  15. package/build/lib/basedriver/commands/log.js +23 -27
  16. package/build/lib/basedriver/commands/session.d.ts +11 -0
  17. package/build/lib/basedriver/commands/session.d.ts.map +1 -0
  18. package/build/lib/basedriver/commands/session.js +21 -149
  19. package/build/lib/basedriver/commands/settings.d.ts +10 -0
  20. package/build/lib/basedriver/commands/settings.d.ts.map +1 -0
  21. package/build/lib/basedriver/commands/settings.js +19 -19
  22. package/build/lib/basedriver/commands/timeout.d.ts +8 -0
  23. package/build/lib/basedriver/commands/timeout.d.ts.map +1 -0
  24. package/build/lib/basedriver/commands/timeout.js +118 -139
  25. package/build/lib/basedriver/core.d.ts +235 -0
  26. package/build/lib/basedriver/core.d.ts.map +1 -0
  27. package/build/lib/basedriver/core.js +283 -0
  28. package/build/lib/basedriver/desired-caps.d.ts +5 -0
  29. package/build/lib/basedriver/desired-caps.d.ts.map +1 -0
  30. package/build/lib/basedriver/desired-caps.js +2 -4
  31. package/build/lib/basedriver/device-settings.d.ts +32 -0
  32. package/build/lib/basedriver/device-settings.d.ts.map +1 -0
  33. package/build/lib/basedriver/device-settings.js +20 -14
  34. package/build/lib/basedriver/driver.d.ts +83 -0
  35. package/build/lib/basedriver/driver.d.ts.map +1 -0
  36. package/build/lib/basedriver/driver.js +101 -256
  37. package/build/lib/basedriver/helpers.d.ts +132 -0
  38. package/build/lib/basedriver/helpers.d.ts.map +1 -0
  39. package/build/lib/basedriver/helpers.js +16 -2
  40. package/build/lib/basedriver/logger.d.ts +3 -0
  41. package/build/lib/basedriver/logger.d.ts.map +1 -0
  42. package/build/lib/basedriver/logger.js +2 -4
  43. package/build/lib/constants.d.ts +9 -0
  44. package/build/lib/constants.d.ts.map +1 -0
  45. package/build/lib/constants.js +2 -4
  46. package/build/lib/express/crash.d.ts +3 -0
  47. package/build/lib/express/crash.d.ts.map +1 -0
  48. package/build/lib/express/crash.js +2 -4
  49. package/build/lib/express/express-logging.d.ts +3 -0
  50. package/build/lib/express/express-logging.d.ts.map +1 -0
  51. package/build/lib/express/express-logging.js +2 -4
  52. package/build/lib/express/idempotency.d.ts +2 -0
  53. package/build/lib/express/idempotency.d.ts.map +1 -0
  54. package/build/lib/express/idempotency.js +2 -4
  55. package/build/lib/express/logger.d.ts +3 -0
  56. package/build/lib/express/logger.d.ts.map +1 -0
  57. package/build/lib/express/logger.js +2 -4
  58. package/build/lib/express/middleware.d.ts +9 -0
  59. package/build/lib/express/middleware.d.ts.map +1 -0
  60. package/build/lib/express/middleware.js +2 -4
  61. package/build/lib/express/server.d.ts +10 -0
  62. package/build/lib/express/server.d.ts.map +1 -0
  63. package/build/lib/express/server.js +2 -4
  64. package/build/lib/express/static.d.ts +6 -0
  65. package/build/lib/express/static.d.ts.map +1 -0
  66. package/build/lib/express/static.js +2 -4
  67. package/build/lib/express/websocket.d.ts +64 -0
  68. package/build/lib/express/websocket.d.ts.map +1 -0
  69. package/build/lib/express/websocket.js +40 -41
  70. package/build/lib/helpers/capabilities.d.ts +13 -0
  71. package/build/lib/helpers/capabilities.d.ts.map +1 -0
  72. package/build/lib/helpers/capabilities.js +40 -2
  73. package/build/lib/index.d.ts +183 -0
  74. package/build/lib/index.d.ts.map +1 -0
  75. package/build/lib/index.js +41 -23
  76. package/build/lib/jsonwp-proxy/protocol-converter.d.ts +48 -0
  77. package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -0
  78. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
  79. package/build/lib/jsonwp-proxy/proxy.d.ts +41 -0
  80. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -0
  81. package/build/lib/jsonwp-proxy/proxy.js +25 -9
  82. package/build/lib/jsonwp-status/status.d.ts +159 -0
  83. package/build/lib/jsonwp-status/status.d.ts.map +1 -0
  84. package/build/lib/jsonwp-status/status.js +2 -4
  85. package/build/lib/protocol/errors.d.ts +310 -0
  86. package/build/lib/protocol/errors.d.ts.map +1 -0
  87. package/build/lib/protocol/errors.js +82 -5
  88. package/build/lib/protocol/helpers.d.ts +22 -0
  89. package/build/lib/protocol/helpers.d.ts.map +1 -0
  90. package/build/lib/protocol/helpers.js +2 -4
  91. package/build/lib/protocol/index.d.ts +16 -0
  92. package/build/lib/protocol/index.d.ts.map +1 -0
  93. package/build/lib/protocol/index.js +8 -10
  94. package/build/lib/protocol/protocol.d.ts +11 -0
  95. package/build/lib/protocol/protocol.d.ts.map +1 -0
  96. package/build/lib/protocol/protocol.js +3 -9
  97. package/build/lib/protocol/routes.d.ts +6 -0
  98. package/build/lib/protocol/routes.d.ts.map +1 -0
  99. package/build/lib/protocol/routes.js +18 -4
  100. package/build/lib/protocol/validators.d.ts +8 -0
  101. package/build/lib/protocol/validators.d.ts.map +1 -0
  102. package/build/lib/protocol/validators.js +2 -4
  103. package/build/test/basedriver/README.md +5 -0
  104. package/build/test/basedriver/driver-e2e-tests.js +2 -4
  105. package/build/test/basedriver/driver-tests.js +31 -6
  106. package/build/test/basedriver/index.js +2 -4
  107. package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
  108. package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
  109. package/build/test/e2e/basedriver/websockets.e2e.spec.js +87 -0
  110. package/build/test/e2e/express/server.e2e.spec.js +159 -0
  111. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
  112. package/build/test/e2e/protocol/fake-driver.js +163 -0
  113. package/build/test/e2e/protocol/helpers.js +25 -0
  114. package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
  115. package/build/test/helpers.js +2 -4
  116. package/build/test/unit/basedriver/capabilities.spec.js +672 -0
  117. package/build/test/unit/basedriver/capability.spec.js +353 -0
  118. package/build/test/unit/basedriver/commands/event.spec.js +110 -0
  119. package/build/test/unit/basedriver/commands/log.spec.js +92 -0
  120. package/build/test/unit/basedriver/driver.spec.js +15 -0
  121. package/build/test/unit/basedriver/helpers.spec.js +151 -0
  122. package/build/test/unit/basedriver/timeout.spec.js +135 -0
  123. package/build/test/unit/express/server.spec.js +155 -0
  124. package/build/test/unit/express/static.spec.js +26 -0
  125. package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
  126. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
  127. package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
  128. package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
  129. package/build/test/unit/jsonwp-status/status.spec.js +34 -0
  130. package/build/test/unit/protocol/errors.spec.js +390 -0
  131. package/build/test/unit/protocol/routes.spec.js +80 -0
  132. package/build/test/unit/protocol/validator.spec.js +149 -0
  133. package/build/tsconfig.tsbuildinfo +1 -0
  134. package/lib/basedriver/capabilities.js +49 -10
  135. package/lib/basedriver/commands/event.js +49 -31
  136. package/lib/basedriver/commands/find.js +108 -43
  137. package/lib/basedriver/commands/index.js +25 -19
  138. package/lib/basedriver/commands/log.js +60 -33
  139. package/lib/basedriver/commands/session.js +39 -141
  140. package/lib/basedriver/commands/settings.js +33 -13
  141. package/lib/basedriver/commands/timeout.js +153 -153
  142. package/lib/basedriver/core.js +497 -0
  143. package/lib/basedriver/desired-caps.js +1 -1
  144. package/lib/basedriver/device-settings.js +47 -12
  145. package/lib/basedriver/driver.js +272 -383
  146. package/lib/basedriver/helpers.js +18 -2
  147. package/lib/express/websocket.js +35 -32
  148. package/lib/helpers/capabilities.js +60 -1
  149. package/lib/index.js +16 -12
  150. package/lib/jsonwp-proxy/proxy.js +26 -6
  151. package/lib/protocol/errors.js +42 -42
  152. package/lib/protocol/index.js +4 -4
  153. package/lib/protocol/protocol.js +1 -3
  154. package/lib/protocol/routes.js +9 -0
  155. package/package.json +22 -14
  156. package/test/basedriver/README.md +5 -0
  157. package/test/basedriver/driver-e2e-tests.js +1 -1
  158. package/test/basedriver/driver-tests.js +31 -2
  159. package/build/test/basedriver/capabilities-specs.js +0 -674
  160. package/build/test/basedriver/capability-specs.js +0 -355
  161. package/build/test/basedriver/commands/event-specs.js +0 -112
  162. package/build/test/basedriver/commands/log-specs.js +0 -87
  163. package/build/test/basedriver/driver-e2e-specs.js +0 -17
  164. package/build/test/basedriver/driver-specs.js +0 -17
  165. package/build/test/basedriver/helpers-e2e-specs.js +0 -194
  166. package/build/test/basedriver/helpers-specs.js +0 -153
  167. package/build/test/basedriver/timeout-specs.js +0 -137
  168. package/build/test/basedriver/websockets-e2e-specs.js +0 -84
  169. package/build/test/express/server-e2e-specs.js +0 -161
  170. package/build/test/express/server-specs.js +0 -157
  171. package/build/test/express/static-specs.js +0 -28
  172. package/build/test/jsonwp-proxy/mock-request.js +0 -93
  173. package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
  174. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
  175. package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
  176. package/build/test/jsonwp-proxy/url-specs.js +0 -167
  177. package/build/test/jsonwp-status/status-specs.js +0 -36
  178. package/build/test/protocol/errors-specs.js +0 -388
  179. package/build/test/protocol/fake-driver.js +0 -165
  180. package/build/test/protocol/helpers.js +0 -27
  181. package/build/test/protocol/protocol-e2e-specs.js +0 -1188
  182. package/build/test/protocol/routes-specs.js +0 -82
  183. package/build/test/protocol/validator-specs.js +0 -151
  184. package/index.d.ts +0 -386
  185. package/test/basedriver/capabilities-specs.js +0 -537
  186. package/test/basedriver/capability-specs.js +0 -383
  187. package/test/basedriver/commands/event-specs.js +0 -74
  188. package/test/basedriver/commands/log-specs.js +0 -79
  189. package/test/basedriver/driver-e2e-specs.js +0 -8
  190. package/test/basedriver/driver-specs.js +0 -8
  191. package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
  192. package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
  193. package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
  194. package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
  195. package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
  196. package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
  197. package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
  198. package/test/basedriver/fixtures/custom-element-finder.js +0 -29
  199. package/test/basedriver/helpers-e2e-specs.js +0 -187
  200. package/test/basedriver/helpers-specs.js +0 -137
  201. package/test/basedriver/timeout-specs.js +0 -128
  202. package/test/basedriver/websockets-e2e-specs.js +0 -75
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DriverCore = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _support = require("@appium/support");
13
+
14
+ var _asyncLock = _interopRequireDefault(require("async-lock"));
15
+
16
+ var _events = require("events");
17
+
18
+ var _lodash = _interopRequireDefault(require("lodash"));
19
+
20
+ var _os = _interopRequireDefault(require("os"));
21
+
22
+ var _constants = require("../constants");
23
+
24
+ var _protocol = require("../protocol");
25
+
26
+ var _capabilities = require("./capabilities");
27
+
28
+ var _desiredCaps = require("./desired-caps");
29
+
30
+ var _deviceSettings = _interopRequireDefault(require("./device-settings"));
31
+
32
+ var _helpers = _interopRequireDefault(require("./helpers"));
33
+
34
+ const {
35
+ version: BASEDRIVER_VER
36
+ } = _support.fs.readPackageJsonFrom(__dirname);
37
+
38
+ const NEW_COMMAND_TIMEOUT_MS = 60 * 1000;
39
+ const ON_UNEXPECTED_SHUTDOWN_EVENT = 'onUnexpectedShutdown';
40
+
41
+ class DriverCore {
42
+ static baseVersion = BASEDRIVER_VER;
43
+ sessionId = null;
44
+ opts;
45
+ initialOpts;
46
+ caps;
47
+ originalCaps;
48
+ helpers = _helpers.default;
49
+ basePath = _constants.DEFAULT_BASE_PATH;
50
+ relaxedSecurityEnabled = false;
51
+ allowInsecure = [];
52
+ denyInsecure = [];
53
+ newCommandTimeoutMs = NEW_COMMAND_TIMEOUT_MS;
54
+ implicitWaitMs = 0;
55
+ locatorStrategies = [];
56
+ webLocatorStrategies = [];
57
+ managedDrivers = [];
58
+ noCommandTimer = null;
59
+ _eventHistory = {
60
+ commands: []
61
+ };
62
+ _constraints = _lodash.default.cloneDeep(_desiredCaps.desiredCapabilityConstraints);
63
+ eventEmitter = new _events.EventEmitter();
64
+ _log;
65
+ shutdownUnexpectedly = false;
66
+ shouldValidateCaps;
67
+ commandsQueueGuard = new _asyncLock.default();
68
+ settings = new _deviceSettings.default();
69
+
70
+ constructor(opts = {}, shouldValidateCaps = true) {
71
+ this._log = _support.logger.getLogger(_helpers.default.generateDriverLogPrefix(this));
72
+ this.opts = opts;
73
+ this.opts.tmpDir = this.opts.tmpDir || process.env.APPIUM_TMP_DIR || _os.default.tmpdir();
74
+ this.shouldValidateCaps = shouldValidateCaps;
75
+ this.initialOpts = _lodash.default.cloneDeep(this.opts);
76
+ this.sessionId = null;
77
+ }
78
+
79
+ get log() {
80
+ return this._log;
81
+ }
82
+
83
+ onUnexpectedShutdown(handler) {
84
+ this.eventEmitter.on(ON_UNEXPECTED_SHUTDOWN_EVENT, handler);
85
+ }
86
+
87
+ get driverData() {
88
+ return {};
89
+ }
90
+
91
+ get isCommandsQueueEnabled() {
92
+ return true;
93
+ }
94
+
95
+ get eventHistory() {
96
+ return _lodash.default.cloneDeep(this._eventHistory);
97
+ }
98
+
99
+ logEvent(eventName) {
100
+ if (eventName === 'commands') {
101
+ throw new Error('Cannot log commands directly');
102
+ }
103
+
104
+ if (typeof eventName !== 'string') {
105
+ throw new Error(`Invalid eventName ${eventName}`);
106
+ }
107
+
108
+ if (!this._eventHistory[eventName]) {
109
+ this._eventHistory[eventName] = [];
110
+ }
111
+
112
+ const ts = Date.now();
113
+ const logTime = new Date(ts).toTimeString();
114
+
115
+ this._eventHistory[eventName].push(ts);
116
+
117
+ this.log.debug(`Event '${eventName}' logged at ${ts} (${logTime})`);
118
+ }
119
+
120
+ async getStatus() {
121
+ return {};
122
+ }
123
+
124
+ set desiredCapConstraints(constraints) {
125
+ this._constraints = Object.assign(this._constraints, constraints);
126
+
127
+ for (const [, value] of _lodash.default.toPairs(this._constraints)) {
128
+ if (value && value.presence === true) {
129
+ value.presence = {
130
+ allowEmpty: false
131
+ };
132
+ }
133
+ }
134
+ }
135
+
136
+ get desiredCapConstraints() {
137
+ return this._constraints;
138
+ }
139
+
140
+ sessionExists(sessionId) {
141
+ if (!sessionId) return false;
142
+ return sessionId === this.sessionId;
143
+ }
144
+
145
+ driverForSession(sessionId) {
146
+ return this;
147
+ }
148
+
149
+ logExtraCaps(caps) {
150
+ let extraCaps = _lodash.default.difference(_lodash.default.keys(caps), _lodash.default.keys(this._constraints));
151
+
152
+ if (extraCaps.length) {
153
+ this.log.warn(`The following capabilities were provided, but are not ` + `recognized by Appium:`);
154
+
155
+ for (const cap of extraCaps) {
156
+ this.log.warn(` ${cap}`);
157
+ }
158
+ }
159
+ }
160
+
161
+ validateDesiredCaps(caps) {
162
+ if (!this.shouldValidateCaps) {
163
+ return true;
164
+ }
165
+
166
+ try {
167
+ (0, _capabilities.validateCaps)(caps, this._constraints);
168
+ } catch (e) {
169
+ this.log.errorAndThrow(new _protocol.errors.SessionNotCreatedError(`The desiredCapabilities object was not valid for the ` + `following reason(s): ${e.message}`));
170
+ }
171
+
172
+ this.logExtraCaps(caps);
173
+ return true;
174
+ }
175
+
176
+ isMjsonwpProtocol() {
177
+ return this.protocol === _constants.PROTOCOLS.MJSONWP;
178
+ }
179
+
180
+ isW3CProtocol() {
181
+ return this.protocol === _constants.PROTOCOLS.W3C;
182
+ }
183
+
184
+ setProtocolMJSONWP() {
185
+ this.protocol = _constants.PROTOCOLS.MJSONWP;
186
+ }
187
+
188
+ setProtocolW3C() {
189
+ this.protocol = _constants.PROTOCOLS.W3C;
190
+ }
191
+
192
+ isFeatureEnabled(name) {
193
+ if (this.denyInsecure && _lodash.default.includes(this.denyInsecure, name)) {
194
+ return false;
195
+ }
196
+
197
+ if (this.allowInsecure && _lodash.default.includes(this.allowInsecure, name)) {
198
+ return true;
199
+ }
200
+
201
+ if (this.relaxedSecurityEnabled) {
202
+ return true;
203
+ }
204
+
205
+ return false;
206
+ }
207
+
208
+ ensureFeatureEnabled(name) {
209
+ if (!this.isFeatureEnabled(name)) {
210
+ throw new Error(`Potentially insecure feature '${name}' has not been ` + `enabled. If you want to enable this feature and accept ` + `the security ramifications, please do so by following ` + `the documented instructions at https://github.com/appium` + `/appium/blob/master/docs/en/writing-running-appium/security.md`);
211
+ }
212
+ }
213
+
214
+ validateLocatorStrategy(strategy, webContext = false) {
215
+ let validStrategies = this.locatorStrategies;
216
+ this.log.debug(`Valid locator strategies for this request: ${validStrategies.join(', ')}`);
217
+
218
+ if (webContext) {
219
+ validStrategies = validStrategies.concat(this.webLocatorStrategies);
220
+ }
221
+
222
+ if (!_lodash.default.includes(validStrategies, strategy)) {
223
+ throw new _protocol.errors.InvalidSelectorError(`Locator Strategy '${strategy}' is not supported for this session`);
224
+ }
225
+ }
226
+
227
+ proxyActive(sessionId) {
228
+ return false;
229
+ }
230
+
231
+ getProxyAvoidList(sessionId) {
232
+ return [];
233
+ }
234
+
235
+ canProxy(sessionId) {
236
+ return false;
237
+ }
238
+
239
+ proxyRouteIsAvoided(sessionId, method, url, body) {
240
+ for (let avoidSchema of this.getProxyAvoidList(sessionId)) {
241
+ if (!_lodash.default.isArray(avoidSchema) || avoidSchema.length !== 2) {
242
+ throw new Error('Proxy avoidance must be a list of pairs');
243
+ }
244
+
245
+ let [avoidMethod, avoidPathRegex] = avoidSchema;
246
+
247
+ if (!_lodash.default.includes(['GET', 'POST', 'DELETE'], avoidMethod)) {
248
+ throw new Error(`Unrecognized proxy avoidance method '${avoidMethod}'`);
249
+ }
250
+
251
+ if (!_lodash.default.isRegExp(avoidPathRegex)) {
252
+ throw new Error('Proxy avoidance path must be a regular expression');
253
+ }
254
+
255
+ let normalizedUrl = url.replace(new RegExp(`^${_lodash.default.escapeRegExp(this.basePath)}`), '');
256
+
257
+ if (avoidMethod === method && avoidPathRegex.test(normalizedUrl)) {
258
+ return true;
259
+ }
260
+ }
261
+
262
+ return false;
263
+ }
264
+
265
+ addManagedDriver(driver) {
266
+ this.managedDrivers.push(driver);
267
+ }
268
+
269
+ getManagedDrivers() {
270
+ return this.managedDrivers;
271
+ }
272
+
273
+ async clearNewCommandTimeout() {
274
+ if (this.noCommandTimer) {
275
+ clearTimeout(this.noCommandTimer);
276
+ this.noCommandTimer = null;
277
+ }
278
+ }
279
+
280
+ }
281
+
282
+ exports.DriverCore = DriverCore;
283
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NvcmUuanMiXSwibmFtZXMiOlsidmVyc2lvbiIsIkJBU0VEUklWRVJfVkVSIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiTkVXX0NPTU1BTkRfVElNRU9VVF9NUyIsIk9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQiLCJEcml2ZXJDb3JlIiwiYmFzZVZlcnNpb24iLCJzZXNzaW9uSWQiLCJvcHRzIiwiaW5pdGlhbE9wdHMiLCJjYXBzIiwib3JpZ2luYWxDYXBzIiwiaGVscGVycyIsImJhc2VQYXRoIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJyZWxheGVkU2VjdXJpdHlFbmFibGVkIiwiYWxsb3dJbnNlY3VyZSIsImRlbnlJbnNlY3VyZSIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJpbXBsaWNpdFdhaXRNcyIsImxvY2F0b3JTdHJhdGVnaWVzIiwid2ViTG9jYXRvclN0cmF0ZWdpZXMiLCJtYW5hZ2VkRHJpdmVycyIsIm5vQ29tbWFuZFRpbWVyIiwiX2V2ZW50SGlzdG9yeSIsImNvbW1hbmRzIiwiX2NvbnN0cmFpbnRzIiwiXyIsImNsb25lRGVlcCIsImRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHMiLCJldmVudEVtaXR0ZXIiLCJFdmVudEVtaXR0ZXIiLCJfbG9nIiwic2h1dGRvd25VbmV4cGVjdGVkbHkiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJjb21tYW5kc1F1ZXVlR3VhcmQiLCJBc3luY0xvY2siLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiY29uc3RydWN0b3IiLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCIsInRtcERpciIsInByb2Nlc3MiLCJlbnYiLCJBUFBJVU1fVE1QX0RJUiIsIm9zIiwidG1wZGlyIiwibG9nIiwib25VbmV4cGVjdGVkU2h1dGRvd24iLCJoYW5kbGVyIiwib24iLCJkcml2ZXJEYXRhIiwiaXNDb21tYW5kc1F1ZXVlRW5hYmxlZCIsImV2ZW50SGlzdG9yeSIsImxvZ0V2ZW50IiwiZXZlbnROYW1lIiwiRXJyb3IiLCJ0cyIsIkRhdGUiLCJub3ciLCJsb2dUaW1lIiwidG9UaW1lU3RyaW5nIiwicHVzaCIsImRlYnVnIiwiZ2V0U3RhdHVzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiY29uc3RyYWludHMiLCJPYmplY3QiLCJhc3NpZ24iLCJ2YWx1ZSIsInRvUGFpcnMiLCJwcmVzZW5jZSIsImFsbG93RW1wdHkiLCJzZXNzaW9uRXhpc3RzIiwiZHJpdmVyRm9yU2Vzc2lvbiIsImxvZ0V4dHJhQ2FwcyIsImV4dHJhQ2FwcyIsImRpZmZlcmVuY2UiLCJrZXlzIiwibGVuZ3RoIiwid2FybiIsImNhcCIsInZhbGlkYXRlRGVzaXJlZENhcHMiLCJlIiwiZXJyb3JBbmRUaHJvdyIsImVycm9ycyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJtZXNzYWdlIiwiaXNNanNvbndwUHJvdG9jb2wiLCJwcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJpc1czQ1Byb3RvY29sIiwiVzNDIiwic2V0UHJvdG9jb2xNSlNPTldQIiwic2V0UHJvdG9jb2xXM0MiLCJpc0ZlYXR1cmVFbmFibGVkIiwibmFtZSIsImluY2x1ZGVzIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJ2YWxpZGF0ZUxvY2F0b3JTdHJhdGVneSIsInN0cmF0ZWd5Iiwid2ViQ29udGV4dCIsInZhbGlkU3RyYXRlZ2llcyIsImpvaW4iLCJjb25jYXQiLCJJbnZhbGlkU2VsZWN0b3JFcnJvciIsInByb3h5QWN0aXZlIiwiZ2V0UHJveHlBdm9pZExpc3QiLCJjYW5Qcm94eSIsInByb3h5Um91dGVJc0F2b2lkZWQiLCJtZXRob2QiLCJ1cmwiLCJib2R5IiwiYXZvaWRTY2hlbWEiLCJpc0FycmF5IiwiYXZvaWRNZXRob2QiLCJhdm9pZFBhdGhSZWdleCIsImlzUmVnRXhwIiwibm9ybWFsaXplZFVybCIsInJlcGxhY2UiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJ0ZXN0IiwiYWRkTWFuYWdlZERyaXZlciIsImRyaXZlciIsImdldE1hbmFnZWREcml2ZXJzIiwiY2xlYXJOZXdDb21tYW5kVGltZW91dCIsImNsZWFyVGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNO0FBQUNBLEVBQUFBLE9BQU8sRUFBRUM7QUFBVixJQUE0QkMsWUFBR0MsbUJBQUgsQ0FBdUJDLFNBQXZCLENBQWxDOztBQUVBLE1BQU1DLHNCQUFzQixHQUFHLEtBQUssSUFBcEM7QUFFQSxNQUFNQyw0QkFBNEIsR0FBRyxzQkFBckM7O0FBSUEsTUFBTUMsVUFBTixDQUFpQjtBQU1HLFNBQVhDLFdBQVcsR0FBR1AsY0FBSDtBQUtsQlEsRUFBQUEsU0FBUyxHQUFHLElBQUg7QUFLVEMsRUFBQUEsSUFBSTtBQUtKQyxFQUFBQSxXQUFXO0FBS1hDLEVBQUFBLElBQUk7QUFLSkMsRUFBQUEsWUFBWTtBQUVaQyxFQUFBQSxPQUFPLEdBQUdBLGdCQUFIO0FBVVBDLEVBQUFBLFFBQVEsR0FBR0MsNEJBQUg7QUFFUkMsRUFBQUEsc0JBQXNCLEdBQUcsS0FBSDtBQUd0QkMsRUFBQUEsYUFBYSxHQUFHLEVBQUg7QUFHYkMsRUFBQUEsWUFBWSxHQUFHLEVBQUg7QUFFWkMsRUFBQUEsbUJBQW1CLEdBQUdmLHNCQUFIO0FBRW5CZ0IsRUFBQUEsY0FBYyxHQUFHLENBQUg7QUFHZEMsRUFBQUEsaUJBQWlCLEdBQUcsRUFBSDtBQUdqQkMsRUFBQUEsb0JBQW9CLEdBQUcsRUFBSDtBQUdwQkMsRUFBQUEsY0FBYyxHQUFHLEVBQUg7QUFHZEMsRUFBQUEsY0FBYyxHQUFHLElBQUg7QUFHZEMsRUFBQUEsYUFBYSxHQUFHO0FBQUNDLElBQUFBLFFBQVEsRUFBRTtBQUFYLEdBQUg7QUFFYkMsRUFBQUEsWUFBWSxHQUFHQyxnQkFBRUMsU0FBRixDQUFZQyx5Q0FBWixDQUFIO0FB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Q0FBVyxDQUFDLEtBQUQsRUFBUSxNQUFSLEVBQWdCLFFBQWhCLENBQVgsRUFBc0NrQixXQUF0QyxDQUFMLEVBQXlEO0FBQ3ZELGNBQU0sSUFBSTVELEtBQUosQ0FBVyx3Q0FBdUM0RCxXQUFZLEdBQTlELENBQU47QUFDRDs7QUFDRCxVQUFJLENBQUMzRixnQkFBRTZGLFFBQUYsQ0FBV0QsY0FBWCxDQUFMLEVBQWlDO0FBQy9CLGNBQU0sSUFBSTdELEtBQUosQ0FBVSxtREFBVixDQUFOO0FBQ0Q7O0FBQ0QsVUFBSStELGFBQWEsR0FBR1AsR0FBRyxDQUFDUSxPQUFKLENBQ2xCLElBQUlDLE1BQUosQ0FBWSxJQUFHaEcsZ0JBQUVpRyxZQUFGLENBQWUsS0FBSy9HLFFBQXBCLENBQThCLEVBQTdDLENBRGtCLEVBRWxCLEVBRmtCLENBQXBCOztBQUlBLFVBQUl5RyxXQUFXLEtBQUtMLE1BQWhCLElBQTBCTSxjQUFjLENBQUNNLElBQWYsQ0FBb0JKLGFBQXBCLENBQTlCLEVBQWtFO0FBQ2hFLGVBQU8sSUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsV0FBTyxLQUFQO0FBQ0Q7O0FBTURLLEVBQUFBLGdCQUFnQixDQUFFQyxNQUFGLEVBQVU7QUFDeEIsU0FBS3pHLGNBQUwsQ0FBb0IwQyxJQUFwQixDQUF5QitELE1BQXpCO0FBQ0Q7O0FBRURDLEVBQUFBLGlCQUFpQixHQUFJO0FBQ25CLFdBQU8sS0FBSzFHLGNBQVo7QUFDRDs7QUFFMkIsUUFBdEIyRyxzQkFBc0IsR0FBSTtBQUM5QixRQUFJLEtBQUsxRyxjQUFULEVBQXlCO0FBQ3ZCMkcsTUFBQUEsWUFBWSxDQUFDLEtBQUszRyxjQUFOLENBQVo7QUFDQSxXQUFLQSxjQUFMLEdBQXNCLElBQXRCO0FBQ0Q7QUFDRjs7QUExY2MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG5cbmltcG9ydCB7IGZzLCBsb2dnZXIsIG5vZGUgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCB7IERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgdmFsaWRhdGVDYXBzIH0gZnJvbSAnLi9jYXBhYmlsaXRpZXMnO1xuaW1wb3J0IHsgZGVzaXJlZENhcGFiaWxpdHlDb25zdHJhaW50cyB9IGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCBEZXZpY2VTZXR0aW5ncyBmcm9tICcuL2RldmljZS1zZXR0aW5ncyc7XG5pbXBvcnQgaGVscGVycyBmcm9tICcuL2hlbHBlcnMnO1xuXG4vLyBmb3IgY29tcGF0IHdpdGggcnVubmluZyB0ZXN0cyB0cmFuc3BpbGVkIGFuZCBpbi1wbGFjZVxuY29uc3Qge3ZlcnNpb246IEJBU0VEUklWRVJfVkVSfSA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20oX19kaXJuYW1lKTtcblxuY29uc3QgTkVXX0NPTU1BTkRfVElNRU9VVF9NUyA9IDYwICogMTAwMDtcblxuY29uc3QgT05fVU5FWFBFQ1RFRF9TSFVURE9XTl9FVkVOVCA9ICdvblVuZXhwZWN0ZWRTaHV0ZG93bic7XG4vKipcbiAqIEBpbXBsZW1lbnRzIHtDb3JlfVxuICovXG5jbGFzcyBEcml2ZXJDb3JlIHtcblxuICAvKipcbiAgICogTWFrZSB0aGUgYmFzZWRyaXZlciB2ZXJzaW9uIGF2YWlsYWJsZSBzbyBmb3IgYW55IGRyaXZlciB3aGljaCBpbmhlcml0cyBmcm9tIHRoaXMgcGFja2FnZSwgd2VcbiAgICoga25vdyB3aGljaCB2ZXJzaW9uIG9mIGJhc2Vkcml2ZXIgaXQgaW5oZXJpdGVkIGZyb21cbiAgICovXG4gIHN0YXRpYyBiYXNlVmVyc2lvbiA9IEJBU0VEUklWRVJfVkVSO1xuXG4gIC8qKlxuICAqIEB0eXBlIHtzdHJpbmc/fVxuICAqL1xuICBzZXNzaW9uSWQgPSBudWxsO1xuXG4gIC8qKlxuICAqIEB0eXBlIHtEcml2ZXJPcHRzICYgQ2FwYWJpbGl0aWVzfVxuICAqL1xuICBvcHRzO1xuXG4gIC8qKlxuICAqIEB0eXBlIHtEcml2ZXJPcHRzfVxuICAqL1xuICBpbml0aWFsT3B0cztcblxuICAvKipcbiAgKiBAdHlwZSB7Q2FwYWJpbGl0aWVzfVxuICAqL1xuICBjYXBzO1xuXG4gIC8qKlxuICAqIEB0eXBlIHtXM0NDYXBhYmlsaXRpZXN9XG4gICovXG4gIG9yaWdpbmFsQ2FwcztcblxuICBoZWxwZXJzID0gaGVscGVycztcblxuICAvKipcbiAgKiBiYXNlUGF0aCBpcyB1c2VkIGZvciBzZXZlcmFsIHB1cnBvc2VzLCBmb3IgZXhhbXBsZSBpbiBzZXR0aW5nIHVwXG4gICogcHJveHlpbmcgdG8gb3RoZXIgZHJpdmVycywgc2luY2Ugd2UgbmVlZCB0byBrbm93IHdoYXQgdGhlIGJhc2UgcGF0aFxuICAqIG9mIGFueSBpbmNvbWluZyByZXF1ZXN0IG1pZ2h0IGxvb2sgbGlrZS4gV2Ugc2V0IGl0IHRvIHRoZSBkZWZhdWx0XG4gICogaW5pdGlhbGx5IGJ1dCBpdCBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIGFueSBhY3R1YWwgcHJvZ3JhbVxuICAqIGV4ZWN1dGlvbiBieSB0aGUgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCB3aGljaCBpcyBuZWNlc3NhcmlseSBydW4gYXNcbiAgKiB0aGUgZW50cnlwb2ludCBmb3IgYW55IEFwcGl1bSBzZXJ2ZXJcbiAgKi9cbiAgYmFzZVBhdGggPSBERUZBVUxUX0JBU0VfUEFUSDtcblxuICByZWxheGVkU2VjdXJpdHlFbmFibGVkID0gZmFsc2U7XG5cbiAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgYWxsb3dJbnNlY3VyZSA9IFtdO1xuXG4gIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gIGRlbnlJbnNlY3VyZSA9IFtdO1xuXG4gIG5ld0NvbW1hbmRUaW1lb3V0TXMgPSBORVdfQ09NTUFORF9USU1FT1VUX01TO1xuXG4gIGltcGxpY2l0V2FpdE1zID0gMDtcblxuICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICBsb2NhdG9yU3RyYXRlZ2llcyA9IFtdO1xuXG4gIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gIHdlYkxvY2F0b3JTdHJhdGVnaWVzID0gW107XG5cbiAgLyoqIEB0eXBlIHtEcml2ZXJbXX0gKi9cbiAgbWFuYWdlZERyaXZlcnMgPSBbXTtcblxuICAvKiogQHR5cGUge05vZGVKUy5UaW1lb3V0P30gKi9cbiAgbm9Db21tYW5kVGltZXIgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7RXZlbnRIaXN0b3J5fSAqL1xuICBfZXZlbnRIaXN0b3J5ID0ge2NvbW1hbmRzOiBbXX07XG5cbiAgX2NvbnN0cmFpbnRzID0gXy5jbG9uZURlZXAoZGVzaXJlZENhcGFiaWxpdHlDb25zdHJhaW50cyk7XG5cbiAgLy8gdXNlZCB0byBoYW5kbGUgZHJpdmVyIGV2ZW50c1xuICAvKiogQHR5cGUge05vZGVKUy5FdmVudEVtaXR0ZXJ9ICovXG4gIGV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgKiBAdHlwZSB7QXBwaXVtTG9nZ2VyfVxuICAqL1xuICBfbG9nO1xuXG4gIC8qKlxuICAqIEBwcm90ZWN0ZWRcbiAgKi9cbiAgc2h1dGRvd25VbmV4cGVjdGVkbHkgPSBmYWxzZTtcblxuICAvKipcbiAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgKiBAcHJvdGVjdGVkXG4gICovXG4gIHNob3VsZFZhbGlkYXRlQ2FwcztcblxuICAvKipcbiAgKiBAcHJvdGVjdGVkXG4gICovXG4gIGNvbW1hbmRzUXVldWVHdWFyZCA9IG5ldyBBc3luY0xvY2soKTtcblxuICAvKipcbiAgKiBzZXR0aW5ncyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIGJ5IGRyaXZlcnMgd2hpY2ggZXh0ZW5kIEJhc2VEcml2ZXIsIGJ1dFxuICAqIHdlIHNldCBpdCB0byBhbiBlbXB0eSBEZXZpY2VTZXR0aW5ncyBpbnN0YW5jZSBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZVxuICAqIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGFwcGxpZWQgZXZlbiBpZiBhbiBleHRlbmRpbmcgZHJpdmVyIGRvZXNuJ3QgdXRpbGl6ZVxuICAqIHRoZSBzZXR0aW5ncyBmdW5jdGlvbmFsaXR5IGl0c2VsZlxuICAqL1xuICBzZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncygpO1xuXG4gIGNvbnN0cnVjdG9yIChcbiAgICBvcHRzID0gLyoqIEB0eXBlIHtEcml2ZXJPcHRzfSAqLyAoe30pLFxuICAgIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUsXG4gICkge1xuICAgIHRoaXMuX2xvZyA9IGxvZ2dlci5nZXRMb2dnZXIoaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCh0aGlzKSk7XG5cbiAgICAvLyBzZXR1cCBzdGF0ZVxuICAgIHRoaXMub3B0cyA9IG9wdHM7XG5cbiAgICAvLyB1c2UgYSBjdXN0b20gdG1wIGRpciB0byBhdm9pZCBsb3NpbmcgZGF0YSBhbmQgYXBwIHdoZW4gY29tcHV0ZXIgaXNcbiAgICAvLyByZXN0YXJ0ZWRcbiAgICB0aGlzLm9wdHMudG1wRGlyID1cbiAgICAgIHRoaXMub3B0cy50bXBEaXIgfHwgcHJvY2Vzcy5lbnYuQVBQSVVNX1RNUF9ESVIgfHwgb3MudG1wZGlyKCk7XG5cbiAgICAvLyBiYXNlLWRyaXZlciBpbnRlcm5hbHNcbiAgICB0aGlzLnNob3VsZFZhbGlkYXRlQ2FwcyA9IHNob3VsZFZhbGlkYXRlQ2FwcztcblxuICAgIC8vIGtlZXBpbmcgdHJhY2sgb2YgaW5pdGlhbCBvcHRzXG4gICAgdGhpcy5pbml0aWFsT3B0cyA9IF8uY2xvbmVEZWVwKHRoaXMub3B0cyk7XG5cbiAgICB0aGlzLnNlc3Npb25JZCA9IG51bGw7XG4gIH1cblxuICBnZXQgbG9nICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nO1xuICB9XG5cbiAgLyoqXG4gICogU2V0IGEgY2FsbGJhY2sgaGFuZGxlciBpZiBuZWVkZWQgdG8gZXhlY3V0ZSBhIGN1c3RvbSBwaWVjZSBvZiBjb2RlXG4gICogd2hlbiB0aGUgZHJpdmVyIGlzIHNodXQgZG93biB1bmV4cGVjdGVkbHkuIE11bHRpcGxlIGNhbGxzIHRvIHRoaXMgbWV0aG9kXG4gICogd2lsbCBjYXVzZSB0aGUgaGFuZGxlciB0byBiZSBleGVjdXRlZCBtdXRpcGxlIHRpbWVzXG4gICpcbiAgKiBAcGFyYW0geyguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZH0gaGFuZGxlciBUaGUgY29kZSB0byBiZSBleGVjdXRlZCBvbiB1bmV4cGVjdGVkIHNodXRkb3duLlxuICAqIFRoZSBmdW5jdGlvbiBtYXkgYWNjZXB0IG9uZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhlIGFjdHVhbCBlcnJvciBpbnN0YW5jZSwgd2hpY2hcbiAgKiBjYXVzZWQgdGhlIGRyaXZlciB0byBzaHV0IGRvd24uXG4gICovXG4gIG9uVW5leHBlY3RlZFNodXRkb3duIChoYW5kbGVyKSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIub24oT05fVU5FWFBFQ1RFRF9TSFVURE9XTl9FVkVOVCwgaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgQXBwaXVtRHJpdmVyIHRvIHN0b3JlIHRoZSBkYXRhIG9mIHRoZVxuICAqIHNwZWNpZmljIGRyaXZlciBzZXNzaW9ucy4gVGhpcyBkYXRhIGNhbiBiZSBsYXRlciB1c2VkIHRvIGFkanVzdFxuICAqIHByb3BlcnRpZXMgZm9yIGRyaXZlciBpbnN0YW5jZXMgcnVubmluZyBpbiBwYXJhbGxlbC5cbiAgKiBPdmVycmlkZSBpdCBpbiBpbmhlcml0ZWQgZHJpdmVyIGNsYXNzZXMgaWYgbmVjZXNzYXJ5LlxuICAqXG4gICogQHJldHVybiB7UmVjb3JkPHN0cmluZyx1bmtub3duPn0gRHJpdmVyIHByb3BlcnRpZXMgbWFwcGluZ1xuICAqL1xuICBnZXQgZHJpdmVyRGF0YSAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICogVGhpcyBwcm9wZXJ0eSBjb250cm9scyB0aGUgd2F5IHsjZXhlY3V0ZUNvbW1hbmR9IG1ldGhvZFxuICAqIGhhbmRsZXMgbmV3IGRyaXZlciBjb21tYW5kcyByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnQuXG4gICogT3ZlcnJpZGUgaXQgZm9yIGluaGVyaXRlZCBjbGFzc2VzIG9ubHkgaW4gc3BlY2lhbCBjYXNlcy5cbiAgKlxuICAqIEByZXR1cm4ge2Jvb2xlYW59IElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB0cnVlIChkZWZhdWx0KSB0aGVuIGFsbCB0aGUgY29tbWFuZHNcbiAgKiAgIHJlY2VpdmVkIGJ5IHRoZSBwYXJ0aWN1bGFyIGRyaXZlciBpbnN0YW5jZSBhcmUgZ29pbmcgdG8gYmUgcHV0IGludG8gdGhlIHF1ZXVlLFxuICAqICAgc28gZWFjaCBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIG5vdCBiZSBleGVjdXRlZCB1bnRpbCB0aGUgcHJldmlvdXMgY29tbWFuZFxuICAqICAgZXhlY3V0aW9uIGlzIGNvbXBsZXRlZC4gRmFsc2UgdmFsdWUgZGlzYWJsZXMgdGhhdCBxdWV1ZSwgc28gZWFjaCBkcml2ZXIgY29tbWFuZFxuICAqICAgaXMgZXhlY3V0ZWQgaW5kZXBlbmRlbnRseSBhbmQgZG9lcyBub3Qgd2FpdCBmb3IgYW55dGhpbmcuXG4gICovXG4gIGdldCBpc0NvbW1hbmRzUXVldWVFbmFibGVkICgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qXG4gICogbWFrZSBldmVudEhpc3RvcnkgYSBwcm9wZXJ0eSBhbmQgcmV0dXJuIGEgY2xvbmVkIG9iamVjdCBzbyBhIGNvbnN1bWVyIGNhbid0XG4gICogaW5hZHZlcnRlbnRseSBjaGFuZ2UgZGF0YSBvdXRzaWRlIG9mIGxvZ0V2ZW50XG4gICovXG4gIGdldCBldmVudEhpc3RvcnkgKCkge1xuICAgIHJldHVybiBfLmNsb25lRGVlcCh0aGlzLl9ldmVudEhpc3RvcnkpO1xuICB9XG5cbiAgLyoqXG4gICogQVBJIG1ldGhvZCBmb3IgZHJpdmVyIGRldmVsb3BlcnMgdG8gbG9nIHRpbWluZ3MgZm9yIGltcG9ydGFudCBldmVudHNcbiAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gICovXG4gIGxvZ0V2ZW50IChldmVudE5hbWUpIHtcbiAgICBpZiAoZXZlbnROYW1lID09PSAnY29tbWFuZHMnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBsb2cgY29tbWFuZHMgZGlyZWN0bHknKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBldmVudE5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXZlbnROYW1lICR7ZXZlbnROYW1lfWApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2V2ZW50SGlzdG9yeVtldmVudE5hbWVdKSB7XG4gICAgICB0aGlzLl9ldmVudEhpc3RvcnlbZXZlbnROYW1lXSA9IFtdO1xuICAgIH1cbiAgICBjb25zdCB0cyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgbG9nVGltZSA9IG5ldyBEYXRlKHRzKS50b1RpbWVTdHJpbmcoKTtcbiAgICB0aGlzLl9ldmVudEhpc3RvcnlbZXZlbnROYW1lXS5wdXNoKHRzKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgRXZlbnQgJyR7ZXZlbnROYW1lfScgbG9nZ2VkIGF0ICR7dHN9ICgke2xvZ1RpbWV9KWApO1xuICB9XG5cbiAgLyoqXG4gICogT3ZlcnJpZGRlbiBpbiBhcHBpdW0gZHJpdmVyLCBidXQgaGVyZSBzbyB0aGF0IGluZGl2aWR1YWwgZHJpdmVycyBjYW4gYmVcbiAgKiB0ZXN0ZWQgd2l0aCBjbGllbnRzIHRoYXQgcG9sbFxuICAqL1xuICBhc3luYyBnZXRTdGF0dXMgKCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8vIHdlIG9ubHkgd2FudCBzdWJjbGFzc2VzIHRvIGV2ZXIgZXh0ZW5kIHRoZSBjb250cmFpbnRzXG4gIHNldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgKGNvbnN0cmFpbnRzKSB7XG4gICAgdGhpcy5fY29uc3RyYWludHMgPSBPYmplY3QuYXNzaWduKHRoaXMuX2NvbnN0cmFpbnRzLCBjb25zdHJhaW50cyk7XG4gICAgLy8gJ3ByZXNlbmNlJyBtZWFucyBkaWZmZXJlbnQgdGhpbmdzIGluIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgdmFsaWRhdG9yLFxuICAgIC8vIHdoZW4gd2Ugc2F5ICd0cnVlJyB3ZSBtZWFuIHRoYXQgaXQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGJlIGVtcHR5XG4gICAgZm9yIChjb25zdCBbLCB2YWx1ZV0gb2YgXy50b1BhaXJzKHRoaXMuX2NvbnN0cmFpbnRzKSkge1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnByZXNlbmNlID09PSB0cnVlKSB7XG4gICAgICAgIHZhbHVlLnByZXNlbmNlID0ge1xuICAgICAgICAgIGFsbG93RW1wdHk6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25zdHJhaW50cztcbiAgfVxuXG4gIC8qKlxuICAqIG1ldGhvZCByZXF1aXJlZCBieSBNSlNPTldQIGluIG9yZGVyIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IHNob3VsZFxuICAqIHJlc3BvbmQgd2l0aCBhbiBpbnZhbGlkIHNlc3Npb24gcmVzcG9uc2VcbiAgKiBAcGFyYW0ge3N0cmluZ30gW3Nlc3Npb25JZF1cbiAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgKi9cbiAgc2Vzc2lvbkV4aXN0cyAoc2Vzc2lvbklkKSB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHJldHVybiBmYWxzZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgIHJldHVybiBzZXNzaW9uSWQgPT09IHRoaXMuc2Vzc2lvbklkO1xuICB9XG5cbiAgLyoqXG4gICogbWV0aG9kIHJlcXVpcmVkIGJ5IE1KU09OV1AgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjb21tYW5kIHNob3VsZFxuICAqIGJlIHByb3hpZWQgZGlyZWN0bHkgdG8gdGhlIGRyaXZlclxuICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uSWRcbiAgKiBAcmV0dXJucyB7dGhpcyB8IGltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlcn1cbiAgKi9cbiAgZHJpdmVyRm9yU2Vzc2lvbiAoc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgKlxuICAqIEBwYXJhbSB7Q2FwYWJpbGl0aWVzfSBjYXBzXG4gICovXG4gIGxvZ0V4dHJhQ2FwcyAoY2Fwcykge1xuICAgIGxldCBleHRyYUNhcHMgPSBfLmRpZmZlcmVuY2UoXy5rZXlzKGNhcHMpLCBfLmtleXModGhpcy5fY29uc3RyYWludHMpKTtcbiAgICBpZiAoZXh0cmFDYXBzLmxlbmd0aCkge1xuICAgICAgdGhpcy5sb2cud2FybihcbiAgICAgICAgYFRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHdlcmUgcHJvdmlkZWQsIGJ1dCBhcmUgbm90IGAgK1xuICAgICAgICAgIGByZWNvZ25pemVkIGJ5IEFwcGl1bTpgLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgY2FwIG9mIGV4dHJhQ2Fwcykge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGAgICR7Y2FwfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAqXG4gICogQHBhcmFtIHtDYXBhYmlsaXRpZXN9IGNhcHNcbiAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgKi9cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIGlmICghdGhpcy5zaG91bGRWYWxpZGF0ZUNhcHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhcHMoY2FwcywgdGhpcy5fY29uc3RyYWludHMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coXG4gICAgICAgIG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihcbiAgICAgICAgICBgVGhlIGRlc2lyZWRDYXBhYmlsaXRpZXMgb2JqZWN0IHdhcyBub3QgdmFsaWQgZm9yIHRoZSBgICtcbiAgICAgICAgICAgIGBmb2xsb3dpbmcgcmVhc29uKHMpOiAke2UubWVzc2FnZX1gLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ0V4dHJhQ2FwcyhjYXBzKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNNanNvbndwUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLnByb3RvY29sID09PSBQUk9UT0NPTFMuTUpTT05XUDtcbiAgfVxuXG4gIGlzVzNDUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLnByb3RvY29sID09PSBQUk9UT0NPTFMuVzNDO1xuICB9XG5cbiAgc2V0UHJvdG9jb2xNSlNPTldQICgpIHtcbiAgICB0aGlzLnByb3RvY29sID0gUFJPVE9DT0xTLk1KU09OV1A7XG4gIH1cblxuICBzZXRQcm90b2NvbFczQyAoKSB7XG4gICAgdGhpcy5wcm90b2NvbCA9IFBST1RPQ09MUy5XM0M7XG4gIH1cblxuICAvKipcbiAgKiBDaGVjayB3aGV0aGVyIGEgZ2l2ZW4gZmVhdHVyZSBpcyBlbmFibGVkIHZpYSBpdHMgbmFtZVxuICAqXG4gICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBuYW1lIG9mIGZlYXR1cmUvY29tbWFuZFxuICAqXG4gICogQHJldHVybnMge0Jvb2xlYW59XG4gICovXG4gIGlzRmVhdHVyZUVuYWJsZWQgKG5hbWUpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGV4cGxpY2l0bHkgZGVuaWVkIHRoaXMgZmVhdHVyZSwgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5XG4gICAgaWYgKHRoaXMuZGVueUluc2VjdXJlICYmIF8uaW5jbHVkZXModGhpcy5kZW55SW5zZWN1cmUsIG5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaWYgd2Ugc3BlY2lmaWNhbGx5IGhhdmUgYWxsb3dlZCB0aGUgZmVhdHVyZSwgcmV0dXJuIHRydWVcbiAgICBpZiAodGhpcy5hbGxvd0luc2VjdXJlICYmIF8uaW5jbHVkZXModGhpcy5hbGxvd0luc2VjdXJlLCBuYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gb3RoZXJ3aXNlLCBpZiB3ZSd2ZSBnbG9iYWxseSBhbGxvd2VkIGluc2VjdXJlIGZlYXR1cmVzIGFuZCBub3QgZGVuaWVkXG4gICAgLy8gdGhpcyBvbmUsIHJldHVybiB0cnVlXG4gICAgaWYgKHRoaXMucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgaGF2ZW4ndCBhbGxvd2VkIGFueXRoaW5nIGluc2VjdXJlLCB0aGVuIHJlamVjdFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAqIEFzc2VydCB0aGF0IGEgZ2l2ZW4gZmVhdHVyZSBpcyBlbmFibGVkIGFuZCB0aHJvdyBhIGhlbHBmdWwgZXJyb3IgaWYgaXQnc1xuICAqIG5vdFxuICAqXG4gICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBuYW1lIG9mIGZlYXR1cmUvY29tbWFuZFxuICAqL1xuICBlbnN1cmVGZWF0dXJlRW5hYmxlZCAobmFtZSkge1xuICAgIGlmICghdGhpcy5pc0ZlYXR1cmVFbmFibGVkKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBQb3RlbnRpYWxseSBpbnNlY3VyZSBmZWF0dXJlICcke25hbWV9JyBoYXMgbm90IGJlZW4gYCArXG4gICAgICAgICAgYGVuYWJsZWQuIElmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGlzIGZlYXR1cmUgYW5kIGFjY2VwdCBgICtcbiAgICAgICAgICBgdGhlIHNlY3VyaXR5IHJhbWlmaWNhdGlvbnMsIHBsZWFzZSBkbyBzbyBieSBmb2xsb3dpbmcgYCArXG4gICAgICAgICAgYHRoZSBkb2N1bWVudGVkIGluc3RydWN0aW9ucyBhdCBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtYCArXG4gICAgICAgICAgYC9hcHBpdW0vYmxvYi9tYXN0ZXIvZG9jcy9lbi93cml0aW5nLXJ1bm5pbmctYXBwaXVtL3NlY3VyaXR5Lm1kYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICpcbiAgKiBAcGFyYW0ge3N0cmluZ30gc3RyYXRlZ3lcbiAgKiBAcGFyYW0ge2Jvb2xlYW59IFt3ZWJDb250ZXh0XVxuICAqL1xuICB2YWxpZGF0ZUxvY2F0b3JTdHJhdGVneSAoc3RyYXRlZ3ksIHdlYkNvbnRleHQgPSBmYWxzZSkge1xuICAgIGxldCB2YWxpZFN0cmF0ZWdpZXMgPSB0aGlzLmxvY2F0b3JTdHJhdGVnaWVzO1xuICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgYFZhbGlkIGxvY2F0b3Igc3RyYXRlZ2llcyBmb3IgdGhpcyByZXF1ZXN0OiAke3ZhbGlkU3RyYXRlZ2llcy5qb2luKFxuICAgICAgICAnLCAnLFxuICAgICAgKX1gLFxuICAgICk7XG5cbiAgICBpZiAod2ViQ29udGV4dCkge1xuICAgICAgdmFsaWRTdHJhdGVnaWVzID0gdmFsaWRTdHJhdGVnaWVzLmNvbmNhdCh0aGlzLndlYkxvY2F0b3JTdHJhdGVnaWVzKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaW5jbHVkZXModmFsaWRTdHJhdGVnaWVzLCBzdHJhdGVneSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoXG4gICAgICAgIGBMb2NhdG9yIFN0cmF0ZWd5ICcke3N0cmF0ZWd5fScgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBzZXNzaW9uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICpcbiAgKiBAcGFyYW0ge3N0cmluZ30gW3Nlc3Npb25JZF1cbiAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgKi9cbiAgcHJveHlBY3RpdmUgKHNlc3Npb25JZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAqXG4gICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25JZFxuICAqIEByZXR1cm5zIHtbc3RyaW5nLCBSZWdFeHBdW119XG4gICovXG4gIGdldFByb3h5QXZvaWRMaXN0IChzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgKlxuICAqIEBwYXJhbSB7c3RyaW5nfSBbc2Vzc2lvbklkXVxuICAqIEByZXR1cm5zIHtib29sZWFufVxuICAqL1xuICBjYW5Qcm94eSAoc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICogV2hldGhlciBhIGdpdmVuIGNvbW1hbmQgcm91dGUgKGV4cHJlc3NlZCBhcyBtZXRob2QgYW5kIHVybCkgc2hvdWxkIG5vdCBiZVxuICAqIHByb3hpZWQgYWNjb3JkaW5nIHRvIHRoaXMgZHJpdmVyXG4gICpcbiAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvbklkIC0gdGhlIGN1cnJlbnQgc2Vzc2lvbklkIChpbiBjYXNlIHRoZSBkcml2ZXIgcnVuc1xuICAqIG11bHRpcGxlIHNlc3Npb24gaWRzIGFuZCByZXF1aXJlcyBpdCkuIFRoaXMgaXMgbm90IHVzZWQgaW4gdGhpcyBtZXRob2QgYnV0XG4gICogc2hvdWxkIGJlIG1hZGUgYXZhaWxhYmxlIHRvIG92ZXJyaWRkZW4gbWV0aG9kcy5cbiAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkhUVFBNZXRob2R9IG1ldGhvZCAtIEhUVFAgbWV0aG9kIG9mIHRoZSByb3V0ZVxuICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSB1cmwgb2YgdGhlIHJvdXRlXG4gICogQHBhcmFtIHthbnl9IFtib2R5XSAtIHdlYmRyaXZlciByZXF1ZXN0IGJvZHlcbiAgKlxuICAqIEByZXR1cm5zIHtib29sZWFufSAtIHdoZXRoZXIgdGhlIHJvdXRlIHNob3VsZCBiZSBhdm9pZGVkXG4gICovXG4gIHByb3h5Um91dGVJc0F2b2lkZWQgKHNlc3Npb25JZCwgbWV0aG9kLCB1cmwsIGJvZHkpIHtcbiAgICBmb3IgKGxldCBhdm9pZFNjaGVtYSBvZiB0aGlzLmdldFByb3h5QXZvaWRMaXN0KHNlc3Npb25JZCkpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGF2b2lkU2NoZW1hKSB8fCBhdm9pZFNjaGVtYS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm94eSBhdm9pZGFuY2UgbXVzdCBiZSBhIGxpc3Qgb2YgcGFpcnMnKTtcbiAgICAgIH1cbiAgICAgIGxldCBbYXZvaWRNZXRob2QsIGF2b2lkUGF0aFJlZ2V4XSA9IGF2b2lkU2NoZW1hO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFsnR0VUJywgJ1BPU1QnLCAnREVMRVRFJ10sIGF2b2lkTWV0aG9kKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBwcm94eSBhdm9pZGFuY2UgbWV0aG9kICcke2F2b2lkTWV0aG9kfSdgKTtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc1JlZ0V4cChhdm9pZFBhdGhSZWdleCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm94eSBhdm9pZGFuY2UgcGF0aCBtdXN0IGJlIGEgcmVndWxhciBleHByZXNzaW9uJyk7XG4gICAgICB9XG4gICAgICBsZXQgbm9ybWFsaXplZFVybCA9IHVybC5yZXBsYWNlKFxuICAgICAgICBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLmJhc2VQYXRoKX1gKSxcbiAgICAgICAgJycsXG4gICAgICApO1xuICAgICAgaWYgKGF2b2lkTWV0aG9kID09PSBtZXRob2QgJiYgYXZvaWRQYXRoUmVnZXgudGVzdChub3JtYWxpemVkVXJsKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICpcbiAgKiBAcGFyYW0ge0RyaXZlcn0gZHJpdmVyXG4gICovXG4gIGFkZE1hbmFnZWREcml2ZXIgKGRyaXZlcikge1xuICAgIHRoaXMubWFuYWdlZERyaXZlcnMucHVzaChkcml2ZXIpO1xuICB9XG5cbiAgZ2V0TWFuYWdlZERyaXZlcnMgKCkge1xuICAgIHJldHVybiB0aGlzLm1hbmFnZWREcml2ZXJzO1xuICB9XG5cbiAgYXN5bmMgY2xlYXJOZXdDb21tYW5kVGltZW91dCAoKSB7XG4gICAgaWYgKHRoaXMubm9Db21tYW5kVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgIHRoaXMubm9Db21tYW5kVGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge0RyaXZlckNvcmV9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5DYXBhYmlsaXRpZXN9IENhcGFiaWxpdGllc1xuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlczQ0NhcGFiaWxpdGllc30gVzNDQ2FwYWJpbGl0aWVzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyfSBEcml2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Db3JlfSBDb3JlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyT3B0c30gRHJpdmVyT3B0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV2ZW50SGlzdG9yeX0gRXZlbnRIaXN0b3J5XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtTG9nZ2VyfSBBcHBpdW1Mb2dnZXJcbiAqL1xuIl19
@@ -0,0 +1,5 @@
1
+ /** @type {import('@appium/types').Constraints} */
2
+ export let desiredCapabilityConstraints: import('@appium/types').Constraints;
3
+ import validator from "validate.js";
4
+ export { validator };
5
+ //# sourceMappingURL=desired-caps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desired-caps.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/desired-caps.js"],"names":[],"mappings":"AAIA,kDAAkD;AAClD,yCADW,OAAO,eAAe,EAAE,WAAW,CAmD5C"}
@@ -169,7 +169,5 @@ _validate.default.promise = _bluebird.default;
169
169
 
170
170
  _validate.default.prettify = function prettify(val) {
171
171
  return val;
172
- };require('source-map-support').install();
173
-
174
-
175
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2Rlc2lyZWQtY2Fwcy5qcyJdLCJuYW1lcyI6WyJkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzIiwicGxhdGZvcm1OYW1lIiwicHJlc2VuY2UiLCJpc1N0cmluZyIsImRldmljZU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJuZXdDb21tYW5kVGltZW91dCIsImlzTnVtYmVyIiwiYXV0b21hdGlvbk5hbWUiLCJhdXRvTGF1bmNoIiwiaXNCb29sZWFuIiwidWRpZCIsIm9yaWVudGF0aW9uIiwiaW5jbHVzaW9uIiwiYXV0b1dlYnZpZXciLCJub1Jlc2V0IiwiZnVsbFJlc2V0IiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJldmVudFRpbWluZ3MiLCJwcmludFBhZ2VTb3VyY2VPbkZpbmRGYWlsdXJlIiwidmFsaWRhdG9yIiwidmFsaWRhdG9ycyIsInZhbHVlIiwiaXNOYU4iLCJsb2ciLCJ3YXJuIiwiaW5jbHVkZXMiLCJpc09iamVjdCIsImlzQXJyYXkiLCJBcnJheSIsImRlcHJlY2F0ZWQiLCJvcHRpb25zIiwia2V5IiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwib3B0aW9uIiwidG9Mb3dlckNhc2UiLCJ0b1N0cmluZyIsInByb21pc2UiLCJCIiwicHJldHRpZnkiLCJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsNEJBQTRCLEdBQUc7QUFDakNDLEVBQUFBLFlBQVksRUFBRTtBQUNaQyxJQUFBQSxRQUFRLEVBQUUsSUFERTtBQUVaQyxJQUFBQSxRQUFRLEVBQUU7QUFGRSxHQURtQjtBQUtqQ0MsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZELElBQUFBLFFBQVEsRUFBRTtBQURBLEdBTHFCO0FBUWpDRSxFQUFBQSxlQUFlLEVBQUU7QUFDZkYsSUFBQUEsUUFBUSxFQUFFO0FBREssR0FSZ0I7QUFXakNHLEVBQUFBLGlCQUFpQixFQUFFO0FBQ2pCQyxJQUFBQSxRQUFRLEVB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UUFBVCxDQUFtQkMsR0FBbkIsRUFBd0I7QUFDM0MsU0FBT0EsR0FBUDtBQUNELENBRkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAndmFsaWRhdGUuanMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5cbmxldCBkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzID0ge1xuICBwbGF0Zm9ybU5hbWU6IHtcbiAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgfSxcbiAgZGV2aWNlTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHBsYXRmb3JtVmVyc2lvbjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIG5ld0NvbW1hbmRUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXV0b21hdGlvbk5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhdXRvTGF1bmNoOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVkaWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBvcmllbnRhdGlvbjoge1xuICAgIGluY2x1c2lvbjogW1xuICAgICAgJ0xBTkRTQ0FQRScsXG4gICAgICAnUE9SVFJBSVQnXG4gICAgXVxuICB9LFxuICBhdXRvV2Vidmlldzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBub1Jlc2V0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGZ1bGxSZXNldDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBsYW5ndWFnZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxvY2FsZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGV2ZW50VGltaW5nczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBwcmludFBhZ2VTb3VyY2VPbkZpbmRGYWlsdXJlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG59O1xuXG52YWxpZGF0b3IudmFsaWRhdG9ycy5pc1N0cmluZyA9IGZ1bmN0aW9uIGlzU3RyaW5nICh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiAnbXVzdCBiZSBvZiB0eXBlIHN0cmluZyc7XG59O1xudmFsaWRhdG9yLnZhbGlkYXRvcnMuaXNOdW1iZXIgPSBmdW5jdGlvbiBpc051bWJlciAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBhbGxvdyBhIHN0cmluZyB2YWx1ZVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4odmFsdWUpKSB7XG4gICAgbG9nLndhcm4oJ051bWJlciBjYXBhYmlsaXR5IHBhc3NlZCBpbiBhcyBzdHJpbmcuIEZ1bmN0aW9uYWxpdHkgbWF5IGJlIGNvbXByb21pc2VkLicpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuICdtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJztcbn07XG52YWxpZGF0b3IudmFsaWRhdG9ycy5pc0Jvb2xlYW4gPSBmdW5jdGlvbiBpc0Jvb2xlYW4gKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gYWxsb3cgYSBzdHJpbmcgdmFsdWVcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgWyd0cnVlJywgJ2ZhbHNlJywgJyddLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiAnbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4nO1xufTtcbnZhbGlkYXRvci52YWxpZGF0b3JzLmlzT2JqZWN0ID0gZnVuY3Rpb24gaXNPYmplY3QgKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuICdtdXN0IGJlIG9mIHR5cGUgb2JqZWN0Jztcbn07XG52YWxpZGF0b3IudmFsaWRhdG9ycy5pc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheSAodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuICdtdXN0IGJlIG9mIHR5cGUgYXJyYXknO1xufTtcbnZhbGlkYXRvci52YWxpZGF0b3JzLmRlcHJlY2F0ZWQgPSBmdW5jdGlvbiBkZXByZWNhdGVkICh2YWx1ZSwgb3B0aW9ucywga2V5KSB7XG4gIGlmIChvcHRpb25zKSB7XG4gICAgbG9nLndhcm4oYCR7a2V5fSBpcyBhIGRlcHJlY2F0ZWQgY2FwYWJpbGl0eWApO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbnZhbGlkYXRvci52YWxpZGF0b3JzLmluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZSA9IGZ1bmN0aW9uIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZSAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICd1bnJlY29nbmlzZWQnO1xuICB9XG4gIGZvciAobGV0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbi50b0xvd2VyQ2FzZSgpID09PSB2YWx1ZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlfSBub3QgcGFydCBvZiAke29wdGlvbnMudG9TdHJpbmcoKX1gO1xufTtcblxudmFsaWRhdG9yLnByb21pc2UgPSBCO1xudmFsaWRhdG9yLnByZXR0aWZ5ID0gZnVuY3Rpb24gcHJldHRpZnkgKHZhbCkge1xuICByZXR1cm4gdmFsO1xufTtcblxuXG5leHBvcnQgeyBkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzLCB2YWxpZGF0b3IgfTtcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvZGVzaXJlZC1jYXBzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
172
+ };
173
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2Rlc2lyZWQtY2Fwcy5qcyJdLCJuYW1lcyI6WyJkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzIiwicGxhdGZvcm1OYW1lIiwicHJlc2VuY2UiLCJpc1N0cmluZyIsImRldmljZU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJuZXdDb21tYW5kVGltZW91dCIsImlzTnVtYmVyIiwiYXV0b21hdGlvbk5hbWUiLCJhdXRvTGF1bmNoIiwiaXNCb29sZWFuIiwidWRpZCIsIm9yaWVudGF0aW9uIiwiaW5jbHVzaW9uIiwiYXV0b1dlYnZpZXciLCJub1Jlc2V0IiwiZnVsbFJlc2V0IiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJldmVudFRpbWluZ3MiLCJwcmludFBhZ2VTb3VyY2VPbkZpbmRGYWlsdXJlIiwidmFsaWRhdG9yIiwidmFsaWRhdG9ycyIsInZhbHVlIiwiaXNOYU4iLCJsb2ciLCJ3YXJuIiwiaW5jbHVkZXMiLCJpc09iamVjdCIsImlzQXJyYXkiLCJBcnJheSIsImRlcHJlY2F0ZWQiLCJvcHRpb25zIiwia2V5IiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwib3B0aW9uIiwidG9Mb3dlckNhc2UiLCJ0b1N0cmluZyIsInByb21pc2UiLCJCIiwicHJldHRpZnkiLCJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsNEJBQTRCLEdBQUc7QUFDakNDLEVBQUFBLFlBQVksRUFBRTtBQUNaQyxJQUFBQSxRQUFRLEVBQUUsSUFERTtBQUVaQyxJQUFBQSxRQUFRLEVBQUU7QUFGRSxHQURtQjtBQUtqQ0MsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZELElBQUFBLFFBQVEsRUFBRTtBQURBLEdBTHFCO0FBUWpDRSxFQUFBQSxlQUFlLEVBQUU7QUFDZkYsSUFBQUEsUUFBUSxFQUFFO0FBREssR0FSZ0I7QUFXakNHLEVBQUFBLGlCQUFpQixFQUFFO0FBQ2pCQyxJQUFB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cUIsU0FBU0EsUUFBVCxDQUFtQkMsR0FBbkIsRUFBd0I7QUFDM0MsU0FBT0EsR0FBUDtBQUNELENBRkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAndmFsaWRhdGUuanMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNvbnN0cmFpbnRzfSAqL1xubGV0IGRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHMgPSB7XG4gIHBsYXRmb3JtTmFtZToge1xuICAgIHByZXNlbmNlOiB0cnVlLFxuICAgIGlzU3RyaW5nOiB0cnVlLFxuICB9LFxuICBkZXZpY2VOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcGxhdGZvcm1WZXJzaW9uOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbmV3Q29tbWFuZFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhdXRvbWF0aW9uTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGF1dG9MYXVuY2g6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdWRpZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIG9yaWVudGF0aW9uOiB7XG4gICAgaW5jbHVzaW9uOiBbXG4gICAgICAnTEFORFNDQVBFJyxcbiAgICAgICdQT1JUUkFJVCdcbiAgICBdXG4gIH0sXG4gIGF1dG9XZWJ2aWV3OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG5vUmVzZXQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZnVsbFJlc2V0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGxhbmd1YWdlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbG9jYWxlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZXZlbnRUaW1pbmdzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbn07XG5cbnZhbGlkYXRvci52YWxpZGF0b3JzLmlzU3RyaW5nID0gZnVuY3Rpb24gaXNTdHJpbmcgKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuICdtdXN0IGJlIG9mIHR5cGUgc3RyaW5nJztcbn07XG52YWxpZGF0b3IudmFsaWRhdG9ycy5pc051bWJlciA9IGZ1bmN0aW9uIGlzTnVtYmVyICh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIGFsbG93IGEgc3RyaW5nIHZhbHVlXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTih2YWx1ZSkpIHtcbiAgICBsb2cud2FybignTnVtYmVyIGNhcGFiaWxpdHkgcGFzc2VkIGluIGFzIHN0cmluZy4gRnVuY3Rpb25hbGl0eSBtYXkgYmUgY29tcHJvbWlzZWQuJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gJ211c3QgYmUgb2YgdHlwZSBudW1iZXInO1xufTtcbnZhbGlkYXRvci52YWxpZGF0b3JzLmlzQm9vbGVhbiA9IGZ1bmN0aW9uIGlzQm9vbGVhbiAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBhbGxvdyBhIHN0cmluZyB2YWx1ZVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBbJ3RydWUnLCAnZmFsc2UnLCAnJ10uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuICdtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbic7XG59O1xudmFsaWRhdG9yLnZhbGlkYXRvcnMuaXNPYmplY3QgPSBmdW5jdGlvbiBpc09iamVjdCAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gJ211c3QgYmUgb2YgdHlwZSBvYmplY3QnO1xufTtcbnZhbGlkYXRvci52YWxpZGF0b3JzLmlzQXJyYXkgPSBmdW5jdGlvbiBpc0FycmF5ICh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gJ211c3QgYmUgb2YgdHlwZSBhcnJheSc7XG59O1xudmFsaWRhdG9yLnZhbGlkYXRvcnMuZGVwcmVjYXRlZCA9IGZ1bmN0aW9uIGRlcHJlY2F0ZWQgKHZhbHVlLCBvcHRpb25zLCBrZXkpIHtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBsb2cud2FybihgJHtrZXl9IGlzIGEgZGVwcmVjYXRlZCBjYXBhYmlsaXR5YCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xudmFsaWRhdG9yLnZhbGlkYXRvcnMuaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlID0gZnVuY3Rpb24gaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlICh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gJ3VucmVjb2duaXNlZCc7XG4gIH1cbiAgZm9yIChsZXQgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9uLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYCR7dmFsdWV9IG5vdCBwYXJ0IG9mICR7b3B0aW9ucy50b1N0cmluZygpfWA7XG59O1xuXG52YWxpZGF0b3IucHJvbWlzZSA9IEI7XG52YWxpZGF0b3IucHJldHRpZnkgPSBmdW5jdGlvbiBwcmV0dGlmeSAodmFsKSB7XG4gIHJldHVybiB2YWw7XG59O1xuXG5cbmV4cG9ydCB7IGRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHMsIHZhbGlkYXRvciB9O1xuIl19
@@ -0,0 +1,32 @@
1
+ export default DeviceSettings;
2
+ export type IDeviceSettings<T> = import('@appium/types').DeviceSettings<T>;
3
+ /**
4
+ * @template {Record<string,unknown>} T
5
+ * @implements {IDeviceSettings<T>}
6
+ */
7
+ export class DeviceSettings<T extends Record<string, unknown>> implements IDeviceSettings<T> {
8
+ /**
9
+ * `onSettingsUpdate` is _required_ if settings will ever be updated; otherwise
10
+ * an error will occur at runtime.
11
+ * @param {T} [defaultSettings]
12
+ * @param {import('@appium/types').SettingsUpdateListener<T>} [onSettingsUpdate]
13
+ */
14
+ constructor(defaultSettings?: T | undefined, onSettingsUpdate?: import("@appium/types").SettingsUpdateListener<T> | undefined);
15
+ /**
16
+ * @protected
17
+ * @type {T}
18
+ */
19
+ protected _settings: T;
20
+ /**
21
+ * @protected
22
+ * @type {import('@appium/types').SettingsUpdateListener<T>|undefined}
23
+ */
24
+ protected _onSettingsUpdate: import('@appium/types').SettingsUpdateListener<T> | undefined;
25
+ /**
26
+ * calls updateSettings from implementing driver every time a setting is changed.
27
+ * @param {T} newSettings
28
+ */
29
+ update(newSettings: T): Promise<void>;
30
+ getSettings(): T;
31
+ }
32
+ //# sourceMappingURL=device-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-settings.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/device-settings.js"],"names":[],"mappings":";iCAmFa,OAAO,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;AA1EtD;;;GAGG;AACH,0FAFgC,CAAC;IAgB/B;;;;;OAKG;IACH,+HAGC;IArBD;;;OAGG;IACH,qBAFU,CAAC,CAED;IAEV;;;OAGG;IACH,6BAFU,OAAO,eAAe,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAC,SAAS,CAEnD;IAalB;;;OAGG;IACH,oBAFW,CAAC,iBA+BX;IAED,iBAEC;CACF"}
@@ -20,9 +20,13 @@ var _errors = require("../protocol/errors");
20
20
  const MAX_SETTINGS_SIZE = 20 * 1024 * 1024;
21
21
 
22
22
  class DeviceSettings {
23
- constructor(defaultSettings = {}, onSettingsUpdate = null) {
24
- this._settings = Object.assign({}, defaultSettings);
25
- this.onSettingsUpdate = onSettingsUpdate;
23
+ _settings;
24
+ _onSettingsUpdate;
25
+
26
+ constructor(defaultSettings, onSettingsUpdate) {
27
+ this._settings = { ...(defaultSettings !== null && defaultSettings !== void 0 ? defaultSettings : {})
28
+ };
29
+ this._onSettingsUpdate = onSettingsUpdate;
26
30
  }
27
31
 
28
32
  async update(newSettings) {
@@ -36,7 +40,15 @@ class DeviceSettings {
36
40
  throw new _errors.errors.InvalidArgumentError(`New settings cannot be applied, because the overall ` + `object size exceeds the allowed limit of ${_support.util.toReadableSizeString(MAX_SETTINGS_SIZE)}`);
37
41
  }
38
42
 
39
- for (const prop of _lodash.default.keys(newSettings)) {
43
+ if (!_lodash.default.isFunction(this._onSettingsUpdate)) {
44
+ _logger.default.errorAndThrow(`Unable to update settings; ` + `onSettingsUpdate method not found on '${this.constructor.name}'`);
45
+
46
+ return;
47
+ }
48
+
49
+ const props = _lodash.default.keys(newSettings);
50
+
51
+ for (const prop of props) {
40
52
  if (!_lodash.default.isUndefined(this._settings[prop])) {
41
53
  if (this._settings[prop] === newSettings[prop]) {
42
54
  _logger.default.debug(`The value of '${prop}' setting did not change. Skipping the update for it`);
@@ -45,12 +57,8 @@ class DeviceSettings {
45
57
  }
46
58
  }
47
59
 
48
- if (_lodash.default.isFunction(this.onSettingsUpdate)) {
49
- await this.onSettingsUpdate(prop, newSettings[prop], this._settings[prop]);
50
- this._settings[prop] = newSettings[prop];
51
- } else {
52
- _logger.default.errorAndThrow(`Unable to update settings; ` + `onSettingsUpdate method not found on '${this.constructor.name}'`);
53
- }
60
+ await this._onSettingsUpdate(prop, newSettings[prop], this._settings[prop]);
61
+ this._settings[prop] = newSettings[prop];
54
62
  }
55
63
  }
56
64
 
@@ -62,7 +70,5 @@ class DeviceSettings {
62
70
 
63
71
  exports.DeviceSettings = DeviceSettings;
64
72
  var _default = DeviceSettings;
65
- exports.default = _default;require('source-map-support').install();
66
-
67
-
68
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2RldmljZS1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJNQVhfU0VUVElOR1NfU0laRSIsIkRldmljZVNldHRpbmdzIiwiY29uc3RydWN0b3IiLCJkZWZhdWx0U2V0dGluZ3MiLCJvblNldHRpbmdzVXBkYXRlIiwiX3NldHRpbmdzIiwiT2JqZWN0IiwiYXNzaWduIiwidXBkYXRlIiwibmV3U2V0dGluZ3MiLCJfIiwiaXNQbGFpbk9iamVjdCIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5vZGUiLCJnZXRPYmplY3RTaXplIiwidXRpbCIsInRvUmVhZGFibGVTaXplU3RyaW5nIiwicHJvcCIsImtleXMiLCJpc1VuZGVmaW5lZCIsImxvZyIsImRlYnVnIiwiaXNGdW5jdGlvbiIsImVycm9yQW5kVGhyb3ciLCJuYW1lIiwiZ2V0U2V0dGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsS0FBSyxJQUFMLEdBQVksSUFBdEM7O0FBRUEsTUFBTUMsY0FBTixDQUFxQjtBQUVuQkMsRUFBQUEsV0FBVyxDQUFFQyxlQUFlLEdBQUcsRUFBcEIsRUFBd0JDLGdCQUFnQixHQUFHLElBQTNDLEVBQWlEO0FBQzFELFNBQUtDLFNBQUwsR0FBaUJDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JKLGVBQWxCLENBQWpCO0FBQ0EsU0FBS0MsZ0JBQUwsR0FBd0JBLGdCQUF4QjtBQUNEOztBQUdXLFFBQU5JLE1BQU0sQ0FBRUMsV0FBRixFQUFlO0FBQ3pCLFFBQUksQ0FBQ0MsZ0JBQUVDLGFBQUYsQ0FBZ0JGLFdBQWhCLENBQUwsRUFBbUM7QUFDakMsWUFBTSxJQUFJRyxlQUFPQyxvQkFBWCxDQUFpQyx3REFBRCxHQUNuQyxHQUFFQyxJQUFJLENBQUNDLFNBQUwsQ0FBZU4sV0FBZixDQUE0QixVQUQzQixDQUFOO0FBRUQ7O0FBQ0QsUUFBSU8sY0FBS0MsYUFBTCxDQUFtQixFQUFDLEdBQUcsS0FBS1osU0FBVDtBQUFvQixTQUFHSTtBQUF2QixLQUFuQixLQUEyRFQsaUJBQS9ELEVBQWtGO0FBQ2hGLFlBQU0sSUFBSVksZUFBT0Msb0JBQVgsQ0FBaUMsc0RBQUQsR0FDbkMsNENBQTJDSyxjQUFLQyxvQkFBTCxDQUEwQm5CLGlCQUExQixDQUE2QyxFQURyRixDQUFOO0FBRUQ7O0FBRUQsU0FBSyxNQUFNb0IsSUFBWCxJQUFtQlYsZ0JBQUVXLElBQUYsQ0FBT1osV0FBUCxDQUFuQixFQUF3QztBQUN0QyxVQUFJLENBQUNDLGdCQUFFWSxXQUFGLENBQWMsS0FBS2pCLFNBQUwsQ0FBZWUsSUFBZixDQUFkLENBQUwsRUFBMEM7QUFDeEMsWUFBSSxLQUFLZixTQUFMLENBQWVlLElBQWYsTUFBeUJYLFdBQVcsQ0FBQ1csSUFBRCxDQUF4QyxFQUFnRDtBQUM5Q0csMEJBQUlDLEtBQUosQ0FBVyxpQkFBZ0JKLElBQUssc0RBQWhDOztBQUNBO0FBQ0Q7QUFDRjs7QUFFRCxVQUFJVixnQkFBRWUsVUFBRixDQUFhLEtBQUtyQixnQkFBbEIsQ0FBSixFQUF5QztBQUN2QyxjQUFNLEtBQUtBLGdCQUFMLENBQXNCZ0IsSUFBdEIsRUFBNEJYLFdBQVcsQ0FBQ1csSUFBRCxDQUF2QyxFQUErQyxLQUFLZixTQUFMLENBQWVlLElBQWYsQ0FBL0MsQ0FBTjtBQUNBLGFBQUtmLFNBQUwsQ0FBZWUsSUFBZixJQUF1QlgsV0FBVyxDQUFDVyxJQUFELENBQWxDO0FBQ0QsT0FIRCxNQUdPO0FBQ0xHLHdCQUFJRyxhQUFKLENBQW1CLDZCQUFELEdBQ2YseUNBQXdDLEtBQUt4QixXQUFMLENBQWlCeUIsSUFBSyxHQURqRTtBQUVEO0FBQ0Y7QUFDRjs7QUFFREMsRUFBQUEsV0FBVyxHQUFJO0FBQ2IsV0FBTyxLQUFLdkIsU0FBWjtBQUNEOztBQXRDa0I7OztlQXlDTkosYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IG5vZGUsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcblxuY29uc3QgTUFYX1NFVFRJTkdTX1NJWkUgPSAyMCAqIDEwMjQgKiAxMDI0OyAvLyAyMCBNQlxuXG5jbGFzcyBEZXZpY2VTZXR0aW5ncyB7XG5cbiAgY29uc3RydWN0b3IgKGRlZmF1bHRTZXR0aW5ncyA9IHt9LCBvblNldHRpbmdzVXBkYXRlID0gbnVsbCkge1xuICAgIHRoaXMuX3NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFNldHRpbmdzKTtcbiAgICB0aGlzLm9uU2V0dGluZ3NVcGRhdGUgPSBvblNldHRpbmdzVXBkYXRlO1xuICB9XG5cbiAgLy8gY2FsbHMgdXBkYXRlU2V0dGluZ3MgZnJvbSBpbXBsZW1lbnRpbmcgZHJpdmVyIGV2ZXJ5IHRpbWUgYSBzZXR0aW5nIGlzIGNoYW5nZWQuXG4gIGFzeW5jIHVwZGF0ZSAobmV3U2V0dGluZ3MpIHtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChuZXdTZXR0aW5ncykpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFNldHRpbmdzIHVwZGF0ZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdmFsaWQgSlNPTi4gR290IGAgK1xuICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShuZXdTZXR0aW5ncyl9IGluc3RlYWRgKTtcbiAgICB9XG4gICAgaWYgKG5vZGUuZ2V0T2JqZWN0U2l6ZSh7Li4udGhpcy5fc2V0dGluZ3MsIC4uLm5ld1NldHRpbmdzfSkgPj0gTUFYX1NFVFRJTkdTX1NJWkUpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYE5ldyBzZXR0aW5ncyBjYW5ub3QgYmUgYXBwbGllZCwgYmVjYXVzZSB0aGUgb3ZlcmFsbCBgICtcbiAgICAgICAgYG9iamVjdCBzaXplIGV4Y2VlZHMgdGhlIGFsbG93ZWQgbGltaXQgb2YgJHt1dGlsLnRvUmVhZGFibGVTaXplU3RyaW5nKE1BWF9TRVRUSU5HU19TSVpFKX1gKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgXy5rZXlzKG5ld1NldHRpbmdzKSkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuX3NldHRpbmdzW3Byb3BdKSkge1xuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3NbcHJvcF0gPT09IG5ld1NldHRpbmdzW3Byb3BdKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBUaGUgdmFsdWUgb2YgJyR7cHJvcH0nIHNldHRpbmcgZGlkIG5vdCBjaGFuZ2UuIFNraXBwaW5nIHRoZSB1cGRhdGUgZm9yIGl0YCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHVwZGF0ZSBzZXR0aW5nIG9ubHkgd2hlbiB0aGVyZSBpcyB1cGRhdGVTZXR0aW5ncyBkZWZpbmVkLlxuICAgICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLm9uU2V0dGluZ3NVcGRhdGUpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25TZXR0aW5nc1VwZGF0ZShwcm9wLCBuZXdTZXR0aW5nc1twcm9wXSwgdGhpcy5fc2V0dGluZ3NbcHJvcF0pO1xuICAgICAgICB0aGlzLl9zZXR0aW5nc1twcm9wXSA9IG5ld1NldHRpbmdzW3Byb3BdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yQW5kVGhyb3coYFVuYWJsZSB0byB1cGRhdGUgc2V0dGluZ3M7IGAgK1xuICAgICAgICAgIGBvblNldHRpbmdzVXBkYXRlIG1ldGhvZCBub3QgZm91bmQgb24gJyR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRTZXR0aW5ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERldmljZVNldHRpbmdzO1xuZXhwb3J0IHsgRGV2aWNlU2V0dGluZ3MgfTtcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvZGV2aWNlLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
73
+ exports.default = _default;
74
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2RldmljZS1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJNQVhfU0VUVElOR1NfU0laRSIsIkRldmljZVNldHRpbmdzIiwiX3NldHRpbmdzIiwiX29uU2V0dGluZ3NVcGRhdGUiLCJjb25zdHJ1Y3RvciIsImRlZmF1bHRTZXR0aW5ncyIsIm9uU2V0dGluZ3NVcGRhdGUiLCJ1cGRhdGUiLCJuZXdTZXR0aW5ncyIsIl8iLCJpc1BsYWluT2JqZWN0IiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJKU09OIiwic3RyaW5naWZ5Iiwibm9kZSIsImdldE9iamVjdFNpemUiLCJ1dGlsIiwidG9SZWFkYWJsZVNpemVTdHJpbmciLCJpc0Z1bmN0aW9uIiwibG9nIiwiZXJyb3JBbmRUaHJvdyIsIm5hbWUiLCJwcm9wcyIsImtleXMiLCJwcm9wIiwiaXNVbmRlZmluZWQiLCJkZWJ1ZyIsImdldFNldHRpbmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLEtBQUssSUFBTCxHQUFZLElBQXRDOztBQU1BLE1BQU1DLGNBQU4sQ0FBcUI7QUFNbkJDLEVBQUFBLFNBQVM7QUFNVEMsRUFBQUEsaUJBQWlCOztBQVFqQkMsRUFBQUEsV0FBVyxDQUFFQyxlQUFGLEVBQW1CQyxnQkFBbkIsRUFBcUM7QUFDOUMsU0FBS0osU0FBTCxHQUFrQyxFQUFDLElBQUlHLGVBQUosYUFBSUEsZUFBSixjQUFJQSxlQUFKLEdBQXVCLEVBQXZCO0FBQUQsS0FBbEM7QUFDQSxTQUFLRixpQkFBTCxHQUF5QkcsZ0JBQXpCO0FBQ0Q7O0FBTVcsUUFBTkMsTUFBTSxDQUFFQyxXQUFGLEVBQWU7QUFDekIsUUFBSSxDQUFDQyxnQkFBRUMsYUFBRixDQUFnQkYsV0FBaEIsQ0FBTCxFQUFtQztBQUNqQyxZQUFNLElBQUlHLGVBQU9DLG9CQUFYLENBQWlDLHdEQUFELEdBQ25DLEdBQUVDLElBQUksQ0FBQ0MsU0FBTCxDQUFlTixXQUFmLENBQTRCLFVBRDNCLENBQU47QUFFRDs7QUFFRCxRQUFJTyxjQUFLQyxhQUFMLENBQW1CLEVBQUMsR0FBRyxLQUFLZCxTQUFUO0FBQW9CLFNBQUdNO0FBQXZCLEtBQW5CLEtBQTJEUixpQkFBL0QsRUFBa0Y7QUFDaEYsWUFBTSxJQUFJVyxlQUFPQyxvQkFBWCxDQUFpQyxzREFBRCxHQUNuQyw0Q0FBMkNLLGNBQUtDLG9CQUFMLENBQTBCbEIsaUJBQTFCLENBQTZDLEVBRHJGLENBQU47QUFFRDs7QUFFRCxRQUFJLENBQUNTLGdCQUFFVSxVQUFGLENBQWEsS0FBS2hCLGlCQUFsQixDQUFMLEVBQTJDO0FBQ3pDaUIsc0JBQUlDLGFBQUosQ0FBbUIsNkJBQUQsR0FDakIseUNBQXdDLEtBQUtqQixXQUFMLENBQWlCa0IsSUFBSyxHQUQvRDs7QUFFQTtBQUNEOztBQUVELFVBQU1DLEtBQUssR0FBdUNkLGdCQUFFZSxJQUFGLENBQU9oQixXQUFQLENBQWxEOztBQUNBLFNBQUssTUFBTWlCLElBQVgsSUFBbUJGLEtBQW5CLEVBQTBCO0FBQ3hCLFVBQUksQ0FBQ2QsZ0JBQUVpQixXQUFGLENBQWMsS0FBS3hCLFNBQUwsQ0FBZXVCLElBQWYsQ0FBZCxDQUFMLEVBQTBDO0FBQ3hDLFlBQUksS0FBS3ZCLFNBQUwsQ0FBZXVCLElBQWYsTUFBeUJqQixXQUFXLENBQUNpQixJQUFELENBQXhDLEVBQWdEO0FBQzlDTCwwQkFBSU8sS0FBSixDQUFXLGlCQUFnQkYsSUFBSyxzREFBaEM7O0FBQ0E7QUFDRDtBQUNGOztBQUVELFlBQU0sS0FBS3RCLGlCQUFMLENBQXVCc0IsSUFBdkIsRUFBNkJqQixXQUFXLENBQUNpQixJQUFELENBQXhDLEVBQWdELEtBQUt2QixTQUFMLENBQWV1QixJQUFmLENBQWhELENBQU47QUFDQSxXQUFLdkIsU0FBTCxDQUFldUIsSUFBZixJQUF1QmpCLFdBQVcsQ0FBQ2lCLElBQUQsQ0FBbEM7QUFDRDtBQUNGOztBQUVERyxFQUFBQSxXQUFXLEdBQUk7QUFDYixXQUFPLEtBQUsxQixTQUFaO0FBQ0Q7O0FBOURrQjs7O2VBaUVORCxjIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IG5vZGUsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcblxuY29uc3QgTUFYX1NFVFRJTkdTX1NJWkUgPSAyMCAqIDEwMjQgKiAxMDI0OyAvLyAyMCBNQlxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7UmVjb3JkPHN0cmluZyx1bmtub3duPn0gVFxuICogQGltcGxlbWVudHMge0lEZXZpY2VTZXR0aW5nczxUPn1cbiAqL1xuY2xhc3MgRGV2aWNlU2V0dGluZ3Mge1xuXG4gIC8qKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEB0eXBlIHtUfVxuICAgKi9cbiAgX3NldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5TZXR0aW5nc1VwZGF0ZUxpc3RlbmVyPFQ+fHVuZGVmaW5lZH1cbiAgICovXG4gIF9vblNldHRpbmdzVXBkYXRlO1xuXG4gIC8qKlxuICAgKiBgb25TZXR0aW5nc1VwZGF0ZWAgaXMgX3JlcXVpcmVkXyBpZiBzZXR0aW5ncyB3aWxsIGV2ZXIgYmUgdXBkYXRlZDsgb3RoZXJ3aXNlXG4gICAqIGFuIGVycm9yIHdpbGwgb2NjdXIgYXQgcnVudGltZS5cbiAgICogQHBhcmFtIHtUfSBbZGVmYXVsdFNldHRpbmdzXVxuICAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlNldHRpbmdzVXBkYXRlTGlzdGVuZXI8VD59IFtvblNldHRpbmdzVXBkYXRlXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGRlZmF1bHRTZXR0aW5ncywgb25TZXR0aW5nc1VwZGF0ZSkge1xuICAgIHRoaXMuX3NldHRpbmdzID0gLyoqIEB0eXBlIHtUfSAqLyh7Li4uKGRlZmF1bHRTZXR0aW5ncyA/PyB7fSl9KTtcbiAgICB0aGlzLl9vblNldHRpbmdzVXBkYXRlID0gb25TZXR0aW5nc1VwZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxscyB1cGRhdGVTZXR0aW5ncyBmcm9tIGltcGxlbWVudGluZyBkcml2ZXIgZXZlcnkgdGltZSBhIHNldHRpbmcgaXMgY2hhbmdlZC5cbiAgICogQHBhcmFtIHtUfSBuZXdTZXR0aW5nc1xuICAgKi9cbiAgYXN5bmMgdXBkYXRlIChuZXdTZXR0aW5ncykge1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KG5ld1NldHRpbmdzKSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgU2V0dGluZ3MgdXBkYXRlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB2YWxpZCBKU09OLiBHb3QgYCArXG4gICAgICAgIGAke0pTT04uc3RyaW5naWZ5KG5ld1NldHRpbmdzKX0gaW5zdGVhZGApO1xuICAgIH1cblxuICAgIGlmIChub2RlLmdldE9iamVjdFNpemUoey4uLnRoaXMuX3NldHRpbmdzLCAuLi5uZXdTZXR0aW5nc30pID49IE1BWF9TRVRUSU5HU19TSVpFKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBOZXcgc2V0dGluZ3MgY2Fubm90IGJlIGFwcGxpZWQsIGJlY2F1c2UgdGhlIG92ZXJhbGwgYCArXG4gICAgICAgIGBvYmplY3Qgc2l6ZSBleGNlZWRzIHRoZSBhbGxvd2VkIGxpbWl0IG9mICR7dXRpbC50b1JlYWRhYmxlU2l6ZVN0cmluZyhNQVhfU0VUVElOR1NfU0laRSl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzRnVuY3Rpb24odGhpcy5fb25TZXR0aW5nc1VwZGF0ZSkpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBVbmFibGUgdG8gdXBkYXRlIHNldHRpbmdzOyBgICtcbiAgICAgIGBvblNldHRpbmdzVXBkYXRlIG1ldGhvZCBub3QgZm91bmQgb24gJyR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IC8qKiBAdHlwZSB7KGtleW9mIFQgJiBzdHJpbmcpW119ICovKF8ua2V5cyhuZXdTZXR0aW5ncykpO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuX3NldHRpbmdzW3Byb3BdKSkge1xuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3NbcHJvcF0gPT09IG5ld1NldHRpbmdzW3Byb3BdKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBUaGUgdmFsdWUgb2YgJyR7cHJvcH0nIHNldHRpbmcgZGlkIG5vdCBjaGFuZ2UuIFNraXBwaW5nIHRoZSB1cGRhdGUgZm9yIGl0YCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHVwZGF0ZSBzZXR0aW5nIG9ubHkgd2hlbiB0aGVyZSBpcyB1cGRhdGVTZXR0aW5ncyBkZWZpbmVkLlxuICAgICAgYXdhaXQgdGhpcy5fb25TZXR0aW5nc1VwZGF0ZShwcm9wLCBuZXdTZXR0aW5nc1twcm9wXSwgdGhpcy5fc2V0dGluZ3NbcHJvcF0pO1xuICAgICAgdGhpcy5fc2V0dGluZ3NbcHJvcF0gPSBuZXdTZXR0aW5nc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICBnZXRTZXR0aW5ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERldmljZVNldHRpbmdzO1xuZXhwb3J0IHsgRGV2aWNlU2V0dGluZ3MgfTtcblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRldmljZVNldHRpbmdzPFQ+fSBJRGV2aWNlU2V0dGluZ3NcbiAqL1xuIl19
@@ -0,0 +1,83 @@
1
+ /**
2
+ * @implements {SessionHandler}
3
+ */
4
+ export class BaseDriverCore extends DriverCore implements SessionHandler {
5
+ /** @type {Record<string,any>|undefined} */
6
+ cliArgs: Record<string, any> | undefined;
7
+ /**
8
+ * @param {string} cmd
9
+ * @param {...any[]} args
10
+ * @returns {Promise<any>}
11
+ */
12
+ executeCommand(cmd: string, ...args: any[][]): Promise<any>;
13
+ /**
14
+ *
15
+ * @param {Error} err
16
+ */
17
+ startUnexpectedShutdown(err?: Error): Promise<void>;
18
+ startNewCommandTimeout(): Promise<void>;
19
+ /**
20
+ *
21
+ * @param {import('@appium/types').AppiumServer} server
22
+ * @param {string} host
23
+ * @param {number} port
24
+ * @param {string} path
25
+ */
26
+ assignServer(server: import('@appium/types').AppiumServer, host: string, port: number, path: string): void;
27
+ server: import("@appium/types").AppiumServer | undefined;
28
+ serverHost: string | undefined;
29
+ serverPort: number | undefined;
30
+ serverPath: string | undefined;
31
+ reset(): Promise<void>;
32
+ resetOnUnexpectedShutdown: (() => void) | undefined;
33
+ /**
34
+ *
35
+ * Historically the first two arguments were reserved for JSONWP capabilities.
36
+ * Appium 2 has dropped the support of these, so now we only accept capability
37
+ * objects in W3C format and thus allow any of the three arguments to represent
38
+ * the latter.
39
+ * @param {W3CCapabilities} w3cCapabilities1
40
+ * @param {W3CCapabilities} [w3cCapabilities2]
41
+ * @param {W3CCapabilities} [w3cCapabilities]
42
+ * @param {DriverData[]} [driverData]
43
+ * @returns {Promise<[string,object]>}
44
+ */
45
+ createSession(w3cCapabilities1: W3CCapabilities, w3cCapabilities2?: W3CCapabilities | undefined, w3cCapabilities?: W3CCapabilities | undefined, driverData?: import("@appium/types").DriverData[] | undefined): Promise<[string, object]>;
46
+ /**
47
+ *
48
+ * @param {string} [sessionId]
49
+ * @param {DriverData[]} [driverData]
50
+ * @returns {Promise<void>}
51
+ */
52
+ deleteSession(sessionId?: string | undefined, driverData?: import("@appium/types").DriverData[] | undefined): Promise<void>;
53
+ }
54
+ export default BaseDriver;
55
+ export type HTTPMethod = import('@appium/types').HTTPMethod;
56
+ export type Driver = import('@appium/types').Driver;
57
+ export type ExternalDriver = import('@appium/types').ExternalDriver;
58
+ export type Capabilities = import('@appium/types').Capabilities;
59
+ export type W3CCapabilities = import('@appium/types').W3CCapabilities;
60
+ export type DriverData = import('@appium/types').DriverData;
61
+ export type UpdateServerCallback = (app: import('express').Express, httpServer: import('@appium/types').AppiumServer) => import('type-fest').Promisable<void>;
62
+ /**
63
+ * This is used to extend {@linkcode BaseDriverCore } by the mixins and also external drivers.
64
+ */
65
+ export type BaseDriverBase<Proto = {}, Static = {}> = import('@appium/types').Class<BaseDriverCore & Proto, BaseDriverStatic & Static>;
66
+ /**
67
+ * Static properties of `BaseDriver` and optional properties for subclasses.
68
+ */
69
+ export type BaseDriverStatic<T extends import("@appium/types").ExternalDriver = import("@appium/types").ExternalDriver> = {
70
+ baseVersion: string;
71
+ updateServer?: UpdateServerCallback | undefined;
72
+ newMethodMap?: import("@appium/types").MethodMap<T> | undefined;
73
+ };
74
+ export type SessionHandler = import('@appium/types').SessionHandler<[string, object], void>;
75
+ import { DriverCore } from "./core";
76
+ declare const BaseDriver_base: import("./commands/session").SessionBase;
77
+ /**
78
+ * This ensures that all of the mixins correctly implement the interface described in {@linkcode Driver}.
79
+ * @implements {Driver}
80
+ */
81
+ export class BaseDriver extends BaseDriver_base implements Driver {
82
+ }
83
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/driver.js"],"names":[],"mappings":"AA0BA;;GAEG;AACH;IAEE,2CAA2C;IAC3C,SADW,OAAO,MAAM,EAAC,GAAG,CAAC,GAAC,SAAS,CAC/B;IAMR;;;;QAII;IACJ,oBAJY,MAAM,WACF,GAAG,EAAE,KACP,QAAQ,GAAG,CAAC,CA2EzB;IAED;;;QAGI;IACJ,8BAFY,KAAK,iBAgBhB;IAED,wCAmBC;IAED;;;;;;OAMG;IACH,qBALW,OAAO,eAAe,EAAE,YAAY,QACpC,MAAM,QACN,MAAM,QACN,MAAM,QAOhB;IAJC,yDAAoB;IACpB,+BAAsB;IACtB,+BAAsB;IACtB,+BAAsB;IAOxB,uBA+BC;IAfC,oDAAyC;IAiB3C;;;;;;;;;;;SAWK;IACL,gCANa,eAAe,iKAIb,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAmGtC;IAED;;;;;QAKI;IACJ,8GAFc,QAAQ,IAAI,CAAC,CAc1B;CACF;;yBAWY,OAAO,eAAe,EAAE,UAAU;qBAClC,OAAO,eAAe,EAAE,MAAM;6BAC9B,OAAO,eAAe,EAAE,cAAc;2BACtC,OAAO,eAAe,EAAE,YAAY;8BACpC,OAAO,eAAe,EAAE,eAAe;yBACvC,OAAO,eAAe,EAAE,UAAU;yCAMpC,OAAO,SAAS,EAAE,OAAO,cACzB,OAAO,eAAe,EAAE,YAAY,KAClC,OAAO,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC;;;;sDAOpC,OAAO,eAAe,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,EAAC,gBAAgB,GAAG,MAAM,CAAC;;;;;iBAO9E,MAAM;;;;6BAMP,OAAO,eAAe,EAAE,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAC,IAAI,CAAC;;;AA1C1E;;;GAGG;AACH;CAAiE"}