appium-remote-debugger 9.1.3 → 9.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/build/index.js +1 -6
- package/build/lib/atoms.js +1 -22
- package/build/lib/atoms.js.map +1 -0
- package/build/lib/logger.js +1 -5
- package/build/lib/logger.js.map +1 -0
- package/build/lib/mixins/connect.js +5 -69
- package/build/lib/mixins/connect.js.map +1 -0
- package/build/lib/mixins/events.js +1 -3
- package/build/lib/mixins/events.js.map +1 -0
- package/build/lib/mixins/execute.js +3 -34
- package/build/lib/mixins/execute.js.map +1 -0
- package/build/lib/mixins/index.js +1 -9
- package/build/lib/mixins/index.js.map +1 -0
- package/build/lib/mixins/message-handlers.js +1 -33
- package/build/lib/mixins/message-handlers.js.map +1 -0
- package/build/lib/mixins/navigate.js +4 -52
- package/build/lib/mixins/navigate.js.map +1 -0
- package/build/lib/protocol/index.js +20 -7
- package/build/lib/protocol/index.js.map +1 -0
- package/build/lib/remote-debugger-real-device.js +1 -9
- package/build/lib/remote-debugger-real-device.js.map +1 -0
- package/build/lib/remote-debugger.js +2 -61
- package/build/lib/remote-debugger.js.map +1 -0
- package/build/lib/rpc/index.js +1 -5
- package/build/lib/rpc/index.js.map +1 -0
- package/build/lib/rpc/remote-messages.js +5 -28
- package/build/lib/rpc/remote-messages.js.map +1 -0
- package/build/lib/rpc/rpc-client-real-device.js +1 -16
- package/build/lib/rpc/rpc-client-real-device.js.map +1 -0
- package/build/lib/rpc/rpc-client-simulator.js +4 -30
- package/build/lib/rpc/rpc-client-simulator.js.map +1 -0
- package/build/lib/rpc/rpc-client.js +13 -109
- package/build/lib/rpc/rpc-client.js.map +1 -0
- package/build/lib/rpc/rpc-message-handler.js +1 -52
- package/build/lib/rpc/rpc-message-handler.js.map +1 -0
- package/build/lib/utils.js +9 -44
- package/build/lib/utils.js.map +1 -0
- package/package.json +4 -3
|
@@ -1,54 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.RemoteDebugger = exports.RPC_RESPONSE_TIMEOUT_MS = exports.REMOTE_DEBUGGER_PORT = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _events = require("events");
|
|
13
|
-
|
|
14
10
|
var _logger = _interopRequireDefault(require("./logger"));
|
|
15
|
-
|
|
16
11
|
var _rpc = require("./rpc");
|
|
17
|
-
|
|
18
12
|
var _utils = require("./utils");
|
|
19
|
-
|
|
20
13
|
var _mixins = require("./mixins");
|
|
21
|
-
|
|
22
14
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
23
|
-
|
|
24
15
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
25
|
-
|
|
26
16
|
var _path = _interopRequireDefault(require("path"));
|
|
27
|
-
|
|
28
17
|
var _asyncLock = _interopRequireDefault(require("async-lock"));
|
|
29
|
-
|
|
30
18
|
let VERSION;
|
|
31
|
-
|
|
32
19
|
try {
|
|
33
20
|
VERSION = require(_path.default.resolve(__dirname, '..', '..', 'package.json')).version;
|
|
34
21
|
} catch (ign) {}
|
|
35
|
-
|
|
36
22
|
const REMOTE_DEBUGGER_PORT = 27753;
|
|
37
23
|
exports.REMOTE_DEBUGGER_PORT = REMOTE_DEBUGGER_PORT;
|
|
38
24
|
const SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';
|
|
25
|
+
|
|
39
26
|
const RPC_RESPONSE_TIMEOUT_MS = 5000;
|
|
40
27
|
exports.RPC_RESPONSE_TIMEOUT_MS = RPC_RESPONSE_TIMEOUT_MS;
|
|
41
28
|
const PAGE_READY_TIMEOUT = 5000;
|
|
42
29
|
const GARBAGE_COLLECT_TIMEOUT = 5000;
|
|
43
|
-
|
|
44
30
|
class RemoteDebugger extends _events.EventEmitter {
|
|
45
31
|
constructor(opts = {}) {
|
|
46
32
|
super();
|
|
47
|
-
|
|
48
33
|
if (VERSION) {
|
|
49
34
|
_logger.default.info(`Remote Debugger version ${VERSION}`);
|
|
50
35
|
}
|
|
51
|
-
|
|
52
36
|
const {
|
|
53
37
|
bundleId,
|
|
54
38
|
additionalBundleIds = [],
|
|
@@ -77,9 +61,7 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
77
61
|
this.includeSafari = includeSafari;
|
|
78
62
|
this.useNewSafari = useNewSafari;
|
|
79
63
|
this.pageLoadMs = pageLoadMs;
|
|
80
|
-
|
|
81
64
|
_logger.default.debug(`useNewSafari --> ${this.useNewSafari}`);
|
|
82
|
-
|
|
83
65
|
this.garbageCollectOnExecute = garbageCollectOnExecute;
|
|
84
66
|
this.host = host;
|
|
85
67
|
this.port = port;
|
|
@@ -89,15 +71,12 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
89
71
|
this.logAllCommunication = _lodash.default.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;
|
|
90
72
|
this.logAllCommunicationHexDump = logAllCommunicationHexDump;
|
|
91
73
|
this.socketChunkSize = socketChunkSize;
|
|
92
|
-
|
|
93
74
|
if (_lodash.default.isInteger(webInspectorMaxFrameLength)) {
|
|
94
75
|
this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
|
|
95
76
|
}
|
|
96
|
-
|
|
97
77
|
this.fullPageInitialization = fullPageInitialization;
|
|
98
78
|
this._lock = new _asyncLock.default();
|
|
99
79
|
}
|
|
100
|
-
|
|
101
80
|
setup() {
|
|
102
81
|
this.appDict = {};
|
|
103
82
|
this.appIdKey = null;
|
|
@@ -108,10 +87,8 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
108
87
|
this.rpcClient = null;
|
|
109
88
|
this._clientEventListeners = {};
|
|
110
89
|
}
|
|
111
|
-
|
|
112
90
|
teardown() {
|
|
113
91
|
_logger.default.debug('Cleaning up listeners');
|
|
114
|
-
|
|
115
92
|
this.appDict = {};
|
|
116
93
|
this.appIdKey = null;
|
|
117
94
|
this.pageIdKey = null;
|
|
@@ -120,7 +97,6 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
120
97
|
this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);
|
|
121
98
|
this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);
|
|
122
99
|
}
|
|
123
|
-
|
|
124
100
|
initRpcClient() {
|
|
125
101
|
this.rpcClient = new _rpc.RpcClientSimulator({
|
|
126
102
|
bundleId: this.bundleId,
|
|
@@ -136,32 +112,25 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
136
112
|
webInspectorMaxFrameLength: this.webInspectorMaxFrameLength
|
|
137
113
|
});
|
|
138
114
|
}
|
|
139
|
-
|
|
140
115
|
get isConnected() {
|
|
141
116
|
var _this$rpcClient;
|
|
142
|
-
|
|
143
117
|
return !!((_this$rpcClient = this.rpcClient) !== null && _this$rpcClient !== void 0 && _this$rpcClient.isConnected);
|
|
144
118
|
}
|
|
145
|
-
|
|
146
119
|
async launchSafari() {
|
|
147
120
|
await this.rpcClient.send('launchApplication', {
|
|
148
121
|
bundleId: SAFARI_BUNDLE_ID
|
|
149
122
|
});
|
|
150
123
|
}
|
|
151
|
-
|
|
152
124
|
async startTimeline(fn) {
|
|
153
125
|
_logger.default.debug('Starting to record the timeline');
|
|
154
|
-
|
|
155
126
|
this.rpcClient.on('Timeline.eventRecorded', fn);
|
|
156
127
|
return await this.rpcClient.send('startTimeline', {
|
|
157
128
|
appIdKey: this.appIdKey,
|
|
158
129
|
pageIdKey: this.pageIdKey
|
|
159
130
|
});
|
|
160
131
|
}
|
|
161
|
-
|
|
162
132
|
async stopTimeline() {
|
|
163
133
|
_logger.default.debug('Stopping to record the timeline');
|
|
164
|
-
|
|
165
134
|
await this.rpcClient.send('Timeline.stop', {
|
|
166
135
|
appIdKey: this.appIdKey,
|
|
167
136
|
pageIdKey: this.pageIdKey
|
|
@@ -170,65 +139,48 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
170
139
|
|
|
171
140
|
addClientEventListener(eventName, listener) {
|
|
172
141
|
this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];
|
|
173
|
-
|
|
174
142
|
this._clientEventListeners[eventName].push(listener);
|
|
175
|
-
|
|
176
143
|
this.rpcClient.on(eventName, listener);
|
|
177
144
|
}
|
|
178
|
-
|
|
179
145
|
removeClientEventListener(eventName) {
|
|
180
146
|
for (const listener of this._clientEventListeners[eventName] || []) {
|
|
181
147
|
this.rpcClient.off(eventName, listener);
|
|
182
148
|
}
|
|
183
149
|
}
|
|
184
|
-
|
|
185
150
|
startConsole(listener) {
|
|
186
151
|
_logger.default.debug('Starting to listen for JavaScript console');
|
|
187
|
-
|
|
188
152
|
this.addClientEventListener('Console.messageAdded', listener);
|
|
189
153
|
this.addClientEventListener('Console.messageRepeatCountUpdated', listener);
|
|
190
154
|
}
|
|
191
|
-
|
|
192
155
|
stopConsole() {
|
|
193
156
|
_logger.default.debug('Stopping to listen for JavaScript console');
|
|
194
|
-
|
|
195
157
|
this.removeClientEventListener('Console.messageAdded');
|
|
196
158
|
this.removeClientEventListener('Console.messageRepeatCountUpdated');
|
|
197
159
|
}
|
|
198
|
-
|
|
199
160
|
startNetwork(listener) {
|
|
200
161
|
_logger.default.debug('Starting to listen for network events');
|
|
201
|
-
|
|
202
162
|
this.addClientEventListener('NetworkEvent', listener);
|
|
203
163
|
}
|
|
204
|
-
|
|
205
164
|
stopNetwork() {
|
|
206
165
|
_logger.default.debug('Stopping to listen for network events');
|
|
207
|
-
|
|
208
166
|
this.removeClientEventListener('NetworkEvent');
|
|
209
167
|
}
|
|
210
|
-
|
|
211
168
|
set allowNavigationWithoutReload(allow) {
|
|
212
169
|
this._allowNavigationWithoutReload = allow;
|
|
213
170
|
}
|
|
214
|
-
|
|
215
171
|
get allowNavigationWithoutReload() {
|
|
216
172
|
return this._allowNavigationWithoutReload;
|
|
217
173
|
}
|
|
218
|
-
|
|
219
174
|
async getCookies(urls) {
|
|
220
175
|
_logger.default.debug('Getting cookies');
|
|
221
|
-
|
|
222
176
|
return await this.rpcClient.send('Page.getCookies', {
|
|
223
177
|
appIdKey: this.appIdKey,
|
|
224
178
|
pageIdKey: this.pageIdKey,
|
|
225
179
|
urls
|
|
226
180
|
});
|
|
227
181
|
}
|
|
228
|
-
|
|
229
182
|
async deleteCookie(cookieName, url) {
|
|
230
183
|
_logger.default.debug(`Deleting cookie '${cookieName}' on '${url}'`);
|
|
231
|
-
|
|
232
184
|
return await this.rpcClient.send('Page.deleteCookie', {
|
|
233
185
|
appIdKey: this.appIdKey,
|
|
234
186
|
pageIdKey: this.pageIdKey,
|
|
@@ -236,10 +188,8 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
236
188
|
url
|
|
237
189
|
});
|
|
238
190
|
}
|
|
239
|
-
|
|
240
191
|
async garbageCollect(timeoutMs = GARBAGE_COLLECT_TIMEOUT) {
|
|
241
192
|
_logger.default.debug(`Garbage collecting with ${timeoutMs}ms timeout`);
|
|
242
|
-
|
|
243
193
|
try {
|
|
244
194
|
(0, _utils.checkParams)({
|
|
245
195
|
appIdKey: this.appIdKey,
|
|
@@ -247,10 +197,8 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
247
197
|
});
|
|
248
198
|
} catch (err) {
|
|
249
199
|
_logger.default.debug(`Unable to collect garbage at this time`);
|
|
250
|
-
|
|
251
200
|
return;
|
|
252
201
|
}
|
|
253
|
-
|
|
254
202
|
await _bluebird.default.resolve(this.rpcClient.send('Heap.gc', {
|
|
255
203
|
appIdKey: this.appIdKey,
|
|
256
204
|
pageIdKey: this.pageIdKey
|
|
@@ -264,27 +212,20 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
264
212
|
}
|
|
265
213
|
});
|
|
266
214
|
}
|
|
267
|
-
|
|
268
215
|
async useAppDictLock(fn) {
|
|
269
216
|
return await this._lock.acquire('appDict', fn);
|
|
270
217
|
}
|
|
271
|
-
|
|
272
218
|
get skippedApps() {
|
|
273
219
|
return this._skippedApps || [];
|
|
274
220
|
}
|
|
275
|
-
|
|
276
221
|
}
|
|
277
|
-
|
|
278
222
|
exports.RemoteDebugger = RemoteDebugger;
|
|
279
|
-
|
|
280
223
|
for (const [name, fn] of _lodash.default.toPairs(_mixins.mixins)) {
|
|
281
224
|
RemoteDebugger.prototype[name] = fn;
|
|
282
225
|
}
|
|
283
|
-
|
|
284
226
|
for (const [name, event] of _lodash.default.toPairs(_mixins.events)) {
|
|
285
227
|
RemoteDebugger[name] = event;
|
|
286
228
|
}
|
|
287
|
-
|
|
288
229
|
var _default = RemoteDebugger;
|
|
289
230
|
exports.default = _default;
|
|
290
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwidmVyc2lvbiIsImlnbiIsIlJFTU9URV9ERUJVR0dFUl9QT1JUIiwiU0FGQVJJX0JVTkRMRV9JRCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiUEFHRV9SRUFEWV9USU1FT1VUIiwiR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQiLCJSZW1vdGVEZWJ1Z2dlciIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsImxvZyIsImluZm8iLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJ1c2VOZXdTYWZhcmkiLCJwYWdlTG9hZE1zIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwicGFnZVJlYWR5VGltZW91dCIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImxvZ0Z1bGxSZXNwb25zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImRlYnVnIiwiXyIsImlzTmlsIiwiaXNJbnRlZ2VyIiwiX2xvY2siLCJBc3luY0xvY2siLCJzZXR1cCIsImFwcERpY3QiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInBhZ2VMb2FkaW5nIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwicnBjQ2xpZW50IiwiX2NsaWVudEV2ZW50TGlzdGVuZXJzIiwidGVhcmRvd24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJpbml0UnBjQ2xpZW50IiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwibWVzc2FnZVByb3h5IiwiaXNDb25uZWN0ZWQiLCJsYXVuY2hTYWZhcmkiLCJzZW5kIiwic3RhcnRUaW1lbGluZSIsImZuIiwib24iLCJzdG9wVGltZWxpbmUiLCJhZGRDbGllbnRFdmVudExpc3RlbmVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJwdXNoIiwicmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciIsIm9mZiIsInN0YXJ0Q29uc29sZSIsInN0b3BDb25zb2xlIiwic3RhcnROZXR3b3JrIiwic3RvcE5ldHdvcmsiLCJhbGxvdyIsIl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiZ2V0Q29va2llcyIsInVybHMiLCJkZWxldGVDb29raWUiLCJjb29raWVOYW1lIiwidXJsIiwiZ2FyYmFnZUNvbGxlY3QiLCJ0aW1lb3V0TXMiLCJjaGVja1BhcmFtcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVtb3RlLWRlYnVnZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFNpbXVsYXRvciB9IGZyb20gJy4vcnBjJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9IGZyb20gJy4vbWl4aW5zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5cblxubGV0IFZFUlNJT047XG50cnkge1xuICBWRVJTSU9OID0gcmVxdWlyZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJykpLnZlcnNpb247XG59IGNhdGNoIChpZ24pIHt9XG5cbmNvbnN0IFJFTU9URV9ERUJVR0dFUl9QT1JUID0gMjc3NTM7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbmNvbnN0IFBBR0VfUkVBRFlfVElNRU9VVCA9IDUwMDA7XG5cbmNvbnN0IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUID0gNTAwMDtcblxuXG5jbGFzcyBSZW1vdGVEZWJ1Z2dlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvcHRzIGhhc2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqICAgLSBidW5kbGVJZCAtIGlkIG9mIHRoZSBhcHAgYmVpbmcgY29ubmVjdGVkIHRvXG4gICAqICAgLSBhZGRpdGlvbmFsQnVuZGxlSWRzIC0gYXJyYXkgb2YgcG9zc2libGUgYnVuZGxlIGlkcyB0aGF0IHRoZSBpbnNwZWN0b3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCByZXR1cm5cbiAgICogICAtIHBsYXRmb3JtVmVyc2lvbiAtIHZlcnNpb24gb2YgaU9TXG4gICAqICAgLSB1c2VOZXdTYWZhcmkgLSBmb3Igd2ViIGluc3BlY3Rvciwgd2hldGhlciB0aGlzIGlzIGEgbmV3IFNhZmFyaSBpbnN0YW5jZVxuICAgKiAgIC0gcGFnZUxvYWRNcyAtIHRoZSB0aW1lLCBpbiBtcywgdGhhdCBzaG91bGQgYmUgd2FpdGVkIGZvciBwYWdlIGxvYWRpbmdcbiAgICogICAtIGhvc3QgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyJ3MgaG9zdCBhZGRyZXNzXG4gICAqICAgLSBwb3J0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlciBwb3J0IHRocm91Z2ggd2hpY2ggdG8gY29tbXVuaWNhdGVcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb24gLSBsb2cgcGxpc3RzIHNlbnQgYW5kIHJlY2VpdmVkIGZyb20gV2ViIEluc3BlY3RvclxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgLSBsb2cgY29tbXVuaWNhdGlvbiBmcm9tIFdlYiBJbnNwZWN0b3IgYXMgaGV4IGR1bXBcbiAgICogICAtIHNvY2tldENodW5rU2l6ZSAtIHNpemUsIGluIGJ5dGVzLCBvZiBjaHVua3Mgb2YgZGF0YSBzZW50IHRvIFdlYiBJbnNwZWN0b3IgKHJlYWwgZGV2aWNlIG9ubHkpXG4gICAqICAgLSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCAtIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGV2aWNlIGNvbW11bmljYXRpb24gcHJvdG9jb2xcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKFZFUlNJT04pIHtcbiAgICAgIGxvZy5pbmZvKGBSZW1vdGUgRGVidWdnZXIgdmVyc2lvbiAke1ZFUlNJT059YCk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBhZGRpdGlvbmFsQnVuZGxlSWRzID0gW10sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaSA9IHRydWUsXG4gICAgICBpbmNsdWRlU2FmYXJpID0gZmFsc2UsXG4gICAgICB1c2VOZXdTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHBhZ2VMb2FkTXMsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCA9IFJFTU9URV9ERUJVR0dFUl9QT1JULFxuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIHBhZ2VSZWFkeVRpbWVvdXQgPSBQQUdFX1JFQURZX1RJTUVPVVQsXG4gICAgICByZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBmYWxzZSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgaWYgKF8uaXNJbnRlZ2VyKHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoKSkge1xuICAgICAgdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCA9IHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9sb2NrID0gbmV3IEFzeW5jTG9jaygpO1xuICB9XG5cbiAgc2V0dXAgKCkge1xuICAgIC8vIGFwcCBoYW5kbGluZyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlID0gZmFsc2U7XG4gICAgdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLnJwY0NsaWVudCA9IG51bGw7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIHRlYXJkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFuaW5nIHVwIGxpc3RlbmVycycpO1xuXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcblxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFKTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhSZW1vdGVEZWJ1Z2dlci5FVkVOVF9ESVNDT05ORUNUKTtcbiAgfVxuXG4gIGluaXRScGNDbGllbnQgKCkge1xuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFNpbXVsYXRvcih7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uOiB0aGlzLmZ1bGxQYWdlSW5pdGlhbGl6YXRpb24sXG4gICAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdzdGFydFRpbWVsaW5lJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFRpbWVsaW5lICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIHJlY29yZCB0aGUgdGltZWxpbmUnKTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdG9wJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogS2VlcCB0cmFjayBvZiB0aGUgY2xpZW50IGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBhZGRDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSA9IHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW107XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB0aGlzLnJwY0NsaWVudC5vbihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgKHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW10pKSB7XG4gICAgICB0aGlzLnJwY0NsaWVudC5vZmYoZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDb25zb2xlIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJywgbGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcENvbnNvbGUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0TmV0d29yayAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BOZXR3b3JrICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcpO1xuICB9XG5cbiAgc2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93KSB7XG4gICAgdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgZ2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29va2llcyAodXJscykge1xuICAgIGxvZy5kZWJ1ZygnR2V0dGluZyBjb29raWVzJyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZ2V0Q29va2llcycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHVybHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUsIHVybCkge1xuICAgIGxvZy5kZWJ1ZyhgRGVsZXRpbmcgY29va2llICcke2Nvb2tpZU5hbWV9JyBvbiAnJHt1cmx9J2ApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmRlbGV0ZUNvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZU5hbWUsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnYXJiYWdlQ29sbGVjdCAodGltZW91dE1zID0gR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQpIHtcbiAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGluZyB3aXRoICR7dGltZW91dE1zfW1zIHRpbWVvdXRgKTtcbiAgICB0cnkge1xuICAgICAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2UgYXQgdGhpcyB0aW1lYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgQi5yZXNvbHZlKHRoaXMucnBjQ2xpZW50LnNlbmQoJ0hlYXAuZ2MnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSkpLnRpbWVvdXQodGltZW91dE1zKVxuICAgIC50aGVuKGZ1bmN0aW9uIGdjU3VjY2VzcyAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gc3VjY2Vzc2Z1bGApO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIGdjRXJyb3IgKGVycikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuVGltZW91dEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tc2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXNlQXBwRGljdExvY2sgKGZuKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2xvY2suYWNxdWlyZSgnYXBwRGljdCcsIGZuKTtcbiAgfVxuXG4gIGdldCBza2lwcGVkQXBwcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBwZWRBcHBzIHx8IFtdO1xuICB9XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWl4aW5zKSkge1xuICBSZW1vdGVEZWJ1Z2dlci5wcm90b3R5cGVbbmFtZV0gPSBmbjtcbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZXZlbnRdIG9mIF8udG9QYWlycyhldmVudHMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyW25hbWVdID0gZXZlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbW90ZURlYnVnZ2VyO1xuZXhwb3J0IHtcbiAgUmVtb3RlRGVidWdnZXIsIFJFTU9URV9ERUJVR0dFUl9QT1JULCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsT0FBSjs7QUFDQSxJQUFJO0VBQ0ZBLE9BQU8sR0FBR0MsT0FBTyxDQUFDQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxjQUFwQyxDQUFELENBQVAsQ0FBNkRDLE9BQXZFO0FBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWSxDQUFFOztBQUVoQixNQUFNQyxvQkFBb0IsR0FBRyxLQUE3Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx3QkFBekI7QUFHQSxNQUFNQyx1QkFBdUIsR0FBRyxJQUFoQzs7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxJQUEzQjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHLElBQWhDOztBQUdBLE1BQU1DLGNBQU4sU0FBNkJDLG9CQUE3QixDQUEw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
|
|
231
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwidmVyc2lvbiIsImlnbiIsIlJFTU9URV9ERUJVR0dFUl9QT1JUIiwiU0FGQVJJX0JVTkRMRV9JRCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiUEFHRV9SRUFEWV9USU1FT1VUIiwiR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQiLCJSZW1vdGVEZWJ1Z2dlciIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsImxvZyIsImluZm8iLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJ1c2VOZXdTYWZhcmkiLCJwYWdlTG9hZE1zIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwicGFnZVJlYWR5VGltZW91dCIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImxvZ0Z1bGxSZXNwb25zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImRlYnVnIiwiXyIsImlzTmlsIiwiaXNJbnRlZ2VyIiwiX2xvY2siLCJBc3luY0xvY2siLCJzZXR1cCIsImFwcERpY3QiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInBhZ2VMb2FkaW5nIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwicnBjQ2xpZW50IiwiX2NsaWVudEV2ZW50TGlzdGVuZXJzIiwidGVhcmRvd24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJpbml0UnBjQ2xpZW50IiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwibWVzc2FnZVByb3h5IiwiaXNDb25uZWN0ZWQiLCJsYXVuY2hTYWZhcmkiLCJzZW5kIiwic3RhcnRUaW1lbGluZSIsImZuIiwib24iLCJzdG9wVGltZWxpbmUiLCJhZGRDbGllbnRFdmVudExpc3RlbmVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJwdXNoIiwicmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciIsIm9mZiIsInN0YXJ0Q29uc29sZSIsInN0b3BDb25zb2xlIiwic3RhcnROZXR3b3JrIiwic3RvcE5ldHdvcmsiLCJhbGxvdyIsIl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiZ2V0Q29va2llcyIsInVybHMiLCJkZWxldGVDb29raWUiLCJjb29raWVOYW1lIiwidXJsIiwiZ2FyYmFnZUNvbGxlY3QiLCJ0aW1lb3V0TXMiLCJjaGVja1BhcmFtcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVtb3RlLWRlYnVnZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFNpbXVsYXRvciB9IGZyb20gJy4vcnBjJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9IGZyb20gJy4vbWl4aW5zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5cblxubGV0IFZFUlNJT047XG50cnkge1xuICBWRVJTSU9OID0gcmVxdWlyZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJykpLnZlcnNpb247XG59IGNhdGNoIChpZ24pIHt9XG5cbmNvbnN0IFJFTU9URV9ERUJVR0dFUl9QT1JUID0gMjc3NTM7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbmNvbnN0IFBBR0VfUkVBRFlfVElNRU9VVCA9IDUwMDA7XG5cbmNvbnN0IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUID0gNTAwMDtcblxuXG5jbGFzcyBSZW1vdGVEZWJ1Z2dlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvcHRzIGhhc2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqICAgLSBidW5kbGVJZCAtIGlkIG9mIHRoZSBhcHAgYmVpbmcgY29ubmVjdGVkIHRvXG4gICAqICAgLSBhZGRpdGlvbmFsQnVuZGxlSWRzIC0gYXJyYXkgb2YgcG9zc2libGUgYnVuZGxlIGlkcyB0aGF0IHRoZSBpbnNwZWN0b3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCByZXR1cm5cbiAgICogICAtIHBsYXRmb3JtVmVyc2lvbiAtIHZlcnNpb24gb2YgaU9TXG4gICAqICAgLSB1c2VOZXdTYWZhcmkgLSBmb3Igd2ViIGluc3BlY3Rvciwgd2hldGhlciB0aGlzIGlzIGEgbmV3IFNhZmFyaSBpbnN0YW5jZVxuICAgKiAgIC0gcGFnZUxvYWRNcyAtIHRoZSB0aW1lLCBpbiBtcywgdGhhdCBzaG91bGQgYmUgd2FpdGVkIGZvciBwYWdlIGxvYWRpbmdcbiAgICogICAtIGhvc3QgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyJ3MgaG9zdCBhZGRyZXNzXG4gICAqICAgLSBwb3J0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlciBwb3J0IHRocm91Z2ggd2hpY2ggdG8gY29tbXVuaWNhdGVcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb24gLSBsb2cgcGxpc3RzIHNlbnQgYW5kIHJlY2VpdmVkIGZyb20gV2ViIEluc3BlY3RvclxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgLSBsb2cgY29tbXVuaWNhdGlvbiBmcm9tIFdlYiBJbnNwZWN0b3IgYXMgaGV4IGR1bXBcbiAgICogICAtIHNvY2tldENodW5rU2l6ZSAtIHNpemUsIGluIGJ5dGVzLCBvZiBjaHVua3Mgb2YgZGF0YSBzZW50IHRvIFdlYiBJbnNwZWN0b3IgKHJlYWwgZGV2aWNlIG9ubHkpXG4gICAqICAgLSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCAtIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGV2aWNlIGNvbW11bmljYXRpb24gcHJvdG9jb2xcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKFZFUlNJT04pIHtcbiAgICAgIGxvZy5pbmZvKGBSZW1vdGUgRGVidWdnZXIgdmVyc2lvbiAke1ZFUlNJT059YCk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBhZGRpdGlvbmFsQnVuZGxlSWRzID0gW10sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaSA9IHRydWUsXG4gICAgICBpbmNsdWRlU2FmYXJpID0gZmFsc2UsXG4gICAgICB1c2VOZXdTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHBhZ2VMb2FkTXMsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCA9IFJFTU9URV9ERUJVR0dFUl9QT1JULFxuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIHBhZ2VSZWFkeVRpbWVvdXQgPSBQQUdFX1JFQURZX1RJTUVPVVQsXG4gICAgICByZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBmYWxzZSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgaWYgKF8uaXNJbnRlZ2VyKHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoKSkge1xuICAgICAgdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCA9IHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9sb2NrID0gbmV3IEFzeW5jTG9jaygpO1xuICB9XG5cbiAgc2V0dXAgKCkge1xuICAgIC8vIGFwcCBoYW5kbGluZyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlID0gZmFsc2U7XG4gICAgdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLnJwY0NsaWVudCA9IG51bGw7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIHRlYXJkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFuaW5nIHVwIGxpc3RlbmVycycpO1xuXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcblxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFKTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhSZW1vdGVEZWJ1Z2dlci5FVkVOVF9ESVNDT05ORUNUKTtcbiAgfVxuXG4gIGluaXRScGNDbGllbnQgKCkge1xuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFNpbXVsYXRvcih7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uOiB0aGlzLmZ1bGxQYWdlSW5pdGlhbGl6YXRpb24sXG4gICAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdzdGFydFRpbWVsaW5lJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFRpbWVsaW5lICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIHJlY29yZCB0aGUgdGltZWxpbmUnKTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdG9wJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogS2VlcCB0cmFjayBvZiB0aGUgY2xpZW50IGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBhZGRDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSA9IHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW107XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB0aGlzLnJwY0NsaWVudC5vbihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgKHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW10pKSB7XG4gICAgICB0aGlzLnJwY0NsaWVudC5vZmYoZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDb25zb2xlIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJywgbGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcENvbnNvbGUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0TmV0d29yayAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BOZXR3b3JrICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcpO1xuICB9XG5cbiAgc2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93KSB7XG4gICAgdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgZ2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29va2llcyAodXJscykge1xuICAgIGxvZy5kZWJ1ZygnR2V0dGluZyBjb29raWVzJyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZ2V0Q29va2llcycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHVybHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUsIHVybCkge1xuICAgIGxvZy5kZWJ1ZyhgRGVsZXRpbmcgY29va2llICcke2Nvb2tpZU5hbWV9JyBvbiAnJHt1cmx9J2ApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmRlbGV0ZUNvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZU5hbWUsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnYXJiYWdlQ29sbGVjdCAodGltZW91dE1zID0gR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQpIHtcbiAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGluZyB3aXRoICR7dGltZW91dE1zfW1zIHRpbWVvdXRgKTtcbiAgICB0cnkge1xuICAgICAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2UgYXQgdGhpcyB0aW1lYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgQi5yZXNvbHZlKHRoaXMucnBjQ2xpZW50LnNlbmQoJ0hlYXAuZ2MnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSkpLnRpbWVvdXQodGltZW91dE1zKVxuICAgIC50aGVuKGZ1bmN0aW9uIGdjU3VjY2VzcyAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gc3VjY2Vzc2Z1bGApO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIGdjRXJyb3IgKGVycikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuVGltZW91dEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tc2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXNlQXBwRGljdExvY2sgKGZuKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2xvY2suYWNxdWlyZSgnYXBwRGljdCcsIGZuKTtcbiAgfVxuXG4gIGdldCBza2lwcGVkQXBwcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBwZWRBcHBzIHx8IFtdO1xuICB9XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWl4aW5zKSkge1xuICBSZW1vdGVEZWJ1Z2dlci5wcm90b3R5cGVbbmFtZV0gPSBmbjtcbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZXZlbnRdIG9mIF8udG9QYWlycyhldmVudHMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyW25hbWVdID0gZXZlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbW90ZURlYnVnZ2VyO1xuZXhwb3J0IHtcbiAgUmVtb3RlRGVidWdnZXIsIFJFTU9URV9ERUJVR0dFUl9QT1JULCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0EsSUFBSUEsT0FBTztBQUNYLElBQUk7RUFDRkEsT0FBTyxHQUFHQyxPQUFPLENBQUNDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDQyxPQUFPO0FBQ2hGLENBQUMsQ0FBQyxPQUFPQyxHQUFHLEVBQUUsQ0FBQztBQUVmLE1BQU1DLG9CQUFvQixHQUFHLEtBQUs7QUFBQztBQUNuQyxNQUFNQyxnQkFBZ0IsR0FBRyx3QkFBd0I7O0FBR2pELE1BQU1DLHVCQUF1QixHQUFHLElBQUk7QUFBQztBQUVyQyxNQUFNQyxrQkFBa0IsR0FBRyxJQUFJO0FBRS9CLE1BQU1DLHVCQUF1QixHQUFHLElBQUk7QUFHcEMsTUFBTUMsY0FBYyxTQUFTQyxvQkFBWSxDQUFDO0VBaUJ4Q0MsV0FBVyxD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-debugger.js","names":["VERSION","require","path","resolve","__dirname","version","ign","REMOTE_DEBUGGER_PORT","SAFARI_BUNDLE_ID","RPC_RESPONSE_TIMEOUT_MS","PAGE_READY_TIMEOUT","GARBAGE_COLLECT_TIMEOUT","RemoteDebugger","EventEmitter","constructor","opts","log","info","bundleId","additionalBundleIds","platformVersion","isSafari","includeSafari","useNewSafari","pageLoadMs","host","port","socketPath","pageReadyTimeout","remoteDebugProxy","garbageCollectOnExecute","logFullResponse","logAllCommunication","logAllCommunicationHexDump","webInspectorMaxFrameLength","socketChunkSize","fullPageInitialization","debug","_","isNil","isInteger","_lock","AsyncLock","setup","appDict","appIdKey","pageIdKey","pageLoading","_navigatingToPage","allowNavigationWithoutReload","rpcClient","_clientEventListeners","teardown","removeAllListeners","EVENT_PAGE_CHANGE","EVENT_DISCONNECT","initRpcClient","RpcClientSimulator","messageProxy","isConnected","launchSafari","send","startTimeline","fn","on","stopTimeline","addClientEventListener","eventName","listener","push","removeClientEventListener","off","startConsole","stopConsole","startNetwork","stopNetwork","allow","_allowNavigationWithoutReload","getCookies","urls","deleteCookie","cookieName","url","garbageCollect","timeoutMs","checkParams","err","B","timeout","then","gcSuccess","catch","gcError","TimeoutError","message","useAppDictLock","acquire","skippedApps","_skippedApps","name","toPairs","mixins","prototype","event","events"],"sources":["../../lib/remote-debugger.js"],"sourcesContent":["import { EventEmitter } from 'events';\nimport log from './logger';\nimport { RpcClientSimulator } from './rpc';\nimport { checkParams } from './utils';\nimport { mixins, events } from './mixins';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport path from 'path';\nimport AsyncLock from 'async-lock';\n\n\nlet VERSION;\ntry {\n VERSION = require(path.resolve(__dirname, '..', '..', 'package.json')).version;\n} catch (ign) {}\n\nconst REMOTE_DEBUGGER_PORT = 27753;\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\n\n/* How many milliseconds to wait for webkit to return a response before timing out */\nconst RPC_RESPONSE_TIMEOUT_MS = 5000;\n\nconst PAGE_READY_TIMEOUT = 5000;\n\nconst GARBAGE_COLLECT_TIMEOUT = 5000;\n\n\nclass RemoteDebugger extends EventEmitter {\n /*\n * The constructor takes an opts hash with the following properties:\n * - bundleId - id of the app being connected to\n * - additionalBundleIds - array of possible bundle ids that the inspector\n * could return\n * - platformVersion - version of iOS\n * - useNewSafari - for web inspector, whether this is a new Safari instance\n * - pageLoadMs - the time, in ms, that should be waited for page loading\n * - host - the remote debugger's host address\n * - port - the remote debugger port through which to communicate\n * - logAllCommunication - log plists sent and received from Web Inspector\n * - logAllCommunicationHexDump - log communication from Web Inspector as hex dump\n * - socketChunkSize - size, in bytes, of chunks of data sent to Web Inspector (real device only)\n * - webInspectorMaxFrameLength - The maximum size in bytes of a single data frame\n * in the device communication protocol\n */\n constructor (opts = {}) {\n super();\n\n if (VERSION) {\n log.info(`Remote Debugger version ${VERSION}`);\n }\n\n const {\n bundleId,\n additionalBundleIds = [],\n platformVersion,\n isSafari = true,\n includeSafari = false,\n useNewSafari = false,\n pageLoadMs,\n host,\n port = REMOTE_DEBUGGER_PORT,\n socketPath,\n pageReadyTimeout = PAGE_READY_TIMEOUT,\n remoteDebugProxy,\n garbageCollectOnExecute = false,\n logFullResponse = false,\n logAllCommunication = false,\n logAllCommunicationHexDump = false,\n webInspectorMaxFrameLength,\n socketChunkSize,\n fullPageInitialization,\n } = opts;\n\n this.bundleId = bundleId;\n this.additionalBundleIds = additionalBundleIds;\n this.platformVersion = platformVersion;\n this.isSafari = isSafari;\n this.includeSafari = includeSafari;\n this.useNewSafari = useNewSafari;\n this.pageLoadMs = pageLoadMs;\n log.debug(`useNewSafari --> ${this.useNewSafari}`);\n\n this.garbageCollectOnExecute = garbageCollectOnExecute;\n\n this.host = host;\n this.port = port;\n this.socketPath = socketPath;\n this.remoteDebugProxy = remoteDebugProxy;\n this.pageReadyTimeout = pageReadyTimeout;\n\n this.logAllCommunication = _.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;\n this.logAllCommunicationHexDump = logAllCommunicationHexDump;\n this.socketChunkSize = socketChunkSize;\n\n if (_.isInteger(webInspectorMaxFrameLength)) {\n this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;\n }\n\n this.fullPageInitialization = fullPageInitialization;\n\n this._lock = new AsyncLock();\n }\n\n setup () {\n // app handling configuration\n this.appDict = {};\n this.appIdKey = null;\n this.pageIdKey = null;\n this.pageLoading = false;\n this._navigatingToPage = false;\n this.allowNavigationWithoutReload = false;\n\n this.rpcClient = null;\n this._clientEventListeners = {};\n }\n\n teardown () {\n log.debug('Cleaning up listeners');\n\n this.appDict = {};\n this.appIdKey = null;\n this.pageIdKey = null;\n this.pageLoading = false;\n\n this.rpcClient = null;\n\n this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);\n this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);\n }\n\n initRpcClient () {\n this.rpcClient = new RpcClientSimulator({\n bundleId: this.bundleId,\n platformVersion: this.platformVersion,\n isSafari: this.isSafari,\n host: this.host,\n port: this.port,\n socketPath: this.socketPath,\n messageProxy: this.remoteDebugProxy,\n logAllCommunication: this.logAllCommunication,\n logAllCommunicationHexDump: this.logAllCommunicationHexDump,\n fullPageInitialization: this.fullPageInitialization,\n webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,\n });\n }\n\n get isConnected () {\n return !!this.rpcClient?.isConnected;\n }\n\n async launchSafari () {\n await this.rpcClient.send('launchApplication', {\n bundleId: SAFARI_BUNDLE_ID\n });\n }\n\n async startTimeline (fn) {\n log.debug('Starting to record the timeline');\n this.rpcClient.on('Timeline.eventRecorded', fn);\n return await this.rpcClient.send('startTimeline', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n }\n\n async stopTimeline () {\n log.debug('Stopping to record the timeline');\n await this.rpcClient.send('Timeline.stop', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n }\n\n /*\n * Keep track of the client event listeners so they can be removed\n */\n addClientEventListener (eventName, listener) {\n this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];\n this._clientEventListeners[eventName].push(listener);\n this.rpcClient.on(eventName, listener);\n }\n\n removeClientEventListener (eventName) {\n for (const listener of (this._clientEventListeners[eventName] || [])) {\n this.rpcClient.off(eventName, listener);\n }\n }\n\n startConsole (listener) {\n log.debug('Starting to listen for JavaScript console');\n this.addClientEventListener('Console.messageAdded', listener);\n this.addClientEventListener('Console.messageRepeatCountUpdated', listener);\n }\n\n stopConsole () {\n log.debug('Stopping to listen for JavaScript console');\n this.removeClientEventListener('Console.messageAdded');\n this.removeClientEventListener('Console.messageRepeatCountUpdated');\n }\n\n startNetwork (listener) {\n log.debug('Starting to listen for network events');\n this.addClientEventListener('NetworkEvent', listener);\n }\n\n stopNetwork () {\n log.debug('Stopping to listen for network events');\n this.removeClientEventListener('NetworkEvent');\n }\n\n set allowNavigationWithoutReload (allow) {\n this._allowNavigationWithoutReload = allow;\n }\n\n get allowNavigationWithoutReload () {\n return this._allowNavigationWithoutReload;\n }\n\n async getCookies (urls) {\n log.debug('Getting cookies');\n return await this.rpcClient.send('Page.getCookies', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n urls,\n });\n }\n\n async deleteCookie (cookieName, url) {\n log.debug(`Deleting cookie '${cookieName}' on '${url}'`);\n return await this.rpcClient.send('Page.deleteCookie', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n cookieName,\n url,\n });\n }\n\n async garbageCollect (timeoutMs = GARBAGE_COLLECT_TIMEOUT) {\n log.debug(`Garbage collecting with ${timeoutMs}ms timeout`);\n try {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n } catch (err) {\n log.debug(`Unable to collect garbage at this time`);\n return;\n }\n\n await B.resolve(this.rpcClient.send('Heap.gc', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n })).timeout(timeoutMs)\n .then(function gcSuccess () { // eslint-disable-line promise/prefer-await-to-then\n log.debug(`Garbage collection successful`);\n }).catch(function gcError (err) { // eslint-disable-line promise/prefer-await-to-callbacks\n if (err instanceof B.TimeoutError) {\n log.debug(`Garbage collection timed out after ${timeoutMs}ms`);\n } else {\n log.debug(`Unable to collect garbage: ${err.message}`);\n }\n });\n }\n\n async useAppDictLock (fn) {\n return await this._lock.acquire('appDict', fn);\n }\n\n get skippedApps () {\n return this._skippedApps || [];\n }\n}\n\nfor (const [name, fn] of _.toPairs(mixins)) {\n RemoteDebugger.prototype[name] = fn;\n}\n\nfor (const [name, event] of _.toPairs(events)) {\n RemoteDebugger[name] = event;\n}\n\nexport default RemoteDebugger;\nexport {\n RemoteDebugger, REMOTE_DEBUGGER_PORT, RPC_RESPONSE_TIMEOUT_MS,\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,IAAIA,OAAO;AACX,IAAI;EACFA,OAAO,GAAGC,OAAO,CAACC,aAAI,CAACC,OAAO,CAACC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAACC,OAAO;AAChF,CAAC,CAAC,OAAOC,GAAG,EAAE,CAAC;AAEf,MAAMC,oBAAoB,GAAG,KAAK;AAAC;AACnC,MAAMC,gBAAgB,GAAG,wBAAwB;;AAGjD,MAAMC,uBAAuB,GAAG,IAAI;AAAC;AAErC,MAAMC,kBAAkB,GAAG,IAAI;AAE/B,MAAMC,uBAAuB,GAAG,IAAI;AAGpC,MAAMC,cAAc,SAASC,oBAAY,CAAC;EAiBxCC,WAAW,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IACtB,KAAK,EAAE;IAEP,IAAIf,OAAO,EAAE;MACXgB,eAAG,CAACC,IAAI,CAAE,2BAA0BjB,OAAQ,EAAC,CAAC;IAChD;IAEA,MAAM;MACJkB,QAAQ;MACRC,mBAAmB,GAAG,EAAE;MACxBC,eAAe;MACfC,QAAQ,GAAG,IAAI;MACfC,aAAa,GAAG,KAAK;MACrBC,YAAY,GAAG,KAAK;MACpBC,UAAU;MACVC,IAAI;MACJC,IAAI,GAAGnB,oBAAoB;MAC3BoB,UAAU;MACVC,gBAAgB,GAAGlB,kBAAkB;MACrCmB,gBAAgB;MAChBC,uBAAuB,GAAG,KAAK;MAC/BC,eAAe,GAAG,KAAK;MACvBC,mBAAmB,GAAG,KAAK;MAC3BC,0BAA0B,GAAG,KAAK;MAClCC,0BAA0B;MAC1BC,eAAe;MACfC;IACF,CAAC,GAAGrB,IAAI;IAER,IAAI,CAACG,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5BR,eAAG,CAACqB,KAAK,CAAE,oBAAmB,IAAI,CAACd,YAAa,EAAC,CAAC;IAElD,IAAI,CAACO,uBAAuB,GAAGA,uBAAuB;IAEtD,IAAI,CAACL,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACE,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;IAExC,IAAI,CAACI,mBAAmB,GAAGM,eAAC,CAACC,KAAK,CAACP,mBAAmB,CAAC,GAAG,CAAC,CAACD,eAAe,GAAG,CAAC,CAACC,mBAAmB;IACnG,IAAI,CAACC,0BAA0B,GAAGA,0BAA0B;IAC5D,IAAI,CAACE,eAAe,GAAGA,eAAe;IAEtC,IAAIG,eAAC,CAACE,SAAS,CAACN,0BAA0B,CAAC,EAAE;MAC3C,IAAI,CAACA,0BAA0B,GAAGA,0BAA0B;IAC9D;IAEA,IAAI,CAACE,sBAAsB,GAAGA,sBAAsB;IAEpD,IAAI,CAACK,KAAK,GAAG,IAAIC,kBAAS,EAAE;EAC9B;EAEAC,KAAK,GAAI;IAEP,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,iBAAiB,GAAG,KAAK;IAC9B,IAAI,CAACC,4BAA4B,GAAG,KAAK;IAEzC,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,qBAAqB,GAAG,CAAC,CAAC;EACjC;EAEAC,QAAQ,GAAI;IACVpC,eAAG,CAACqB,KAAK,CAAC,uBAAuB,CAAC;IAElC,IAAI,CAACO,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,WAAW,GAAG,KAAK;IAExB,IAAI,CAACG,SAAS,GAAG,IAAI;IAErB,IAAI,CAACG,kBAAkB,CAACzC,cAAc,CAAC0C,iBAAiB,CAAC;IACzD,IAAI,CAACD,kBAAkB,CAACzC,cAAc,CAAC2C,gBAAgB,CAAC;EAC1D;EAEAC,aAAa,GAAI;IACf,IAAI,CAACN,SAAS,GAAG,IAAIO,uBAAkB,CAAC;MACtCvC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBE,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBI,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3B+B,YAAY,EAAE,IAAI,CAAC7B,gBAAgB;MACnCG,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;MAC7CC,0BAA0B,EAAE,IAAI,CAACA,0BAA0B;MAC3DG,sBAAsB,EAAE,IAAI,CAACA,sBAAsB;MACnDF,0BAA0B,EAAE,IAAI,CAACA;IACnC,CAAC,CAAC;EACJ;EAEA,IAAIyB,WAAW,GAAI;IAAA;IACjB,OAAO,CAAC,qBAAC,IAAI,CAACT,SAAS,4CAAd,gBAAgBS,WAAW;EACtC;EAEA,MAAMC,YAAY,GAAI;IACpB,MAAM,IAAI,CAACV,SAAS,CAACW,IAAI,CAAC,mBAAmB,EAAE;MAC7C3C,QAAQ,EAAEV;IACZ,CAAC,CAAC;EACJ;EAEA,MAAMsD,aAAa,CAAEC,EAAE,EAAE;IACvB/C,eAAG,CAACqB,KAAK,CAAC,iCAAiC,CAAC;IAC5C,IAAI,CAACa,SAAS,CAACc,EAAE,CAAC,wBAAwB,EAAED,EAAE,CAAC;IAC/C,OAAO,MAAM,IAAI,CAACb,SAAS,CAACW,IAAI,CAAC,eAAe,EAAE;MAChDhB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACJ;EAEA,MAAMmB,YAAY,GAAI;IACpBjD,eAAG,CAACqB,KAAK,CAAC,iCAAiC,CAAC;IAC5C,MAAM,IAAI,CAACa,SAAS,CAACW,IAAI,CAAC,eAAe,EAAE;MACzChB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACJ;;EAKAoB,sBAAsB,CAAEC,SAAS,EAAEC,QAAQ,EAAE;IAC3C,IAAI,CAACjB,qBAAqB,CAACgB,SAAS,CAAC,GAAG,IAAI,CAAChB,qBAAqB,CAACgB,SAAS,CAAC,IAAI,EAAE;IACnF,IAAI,CAAChB,qBAAqB,CAACgB,SAAS,CAAC,CAACE,IAAI,CAACD,QAAQ,CAAC;IACpD,IAAI,CAAClB,SAAS,CAACc,EAAE,CAACG,SAAS,EAAEC,QAAQ,CAAC;EACxC;EAEAE,yBAAyB,CAAEH,SAAS,EAAE;IACpC,KAAK,MAAMC,QAAQ,IAAK,IAAI,CAACjB,qBAAqB,CAACgB,SAAS,CAAC,IAAI,EAAE,EAAG;MACpE,IAAI,CAACjB,SAAS,CAACqB,GAAG,CAACJ,SAAS,EAAEC,QAAQ,CAAC;IACzC;EACF;EAEAI,YAAY,CAAEJ,QAAQ,EAAE;IACtBpD,eAAG,CAACqB,KAAK,CAAC,2CAA2C,CAAC;IACtD,IAAI,CAAC6B,sBAAsB,CAAC,sBAAsB,EAAEE,QAAQ,CAAC;IAC7D,IAAI,CAACF,sBAAsB,CAAC,mCAAmC,EAAEE,QAAQ,CAAC;EAC5E;EAEAK,WAAW,GAAI;IACbzD,eAAG,CAACqB,KAAK,CAAC,2CAA2C,CAAC;IACtD,IAAI,CAACiC,yBAAyB,CAAC,sBAAsB,CAAC;IACtD,IAAI,CAACA,yBAAyB,CAAC,mCAAmC,CAAC;EACrE;EAEAI,YAAY,CAAEN,QAAQ,EAAE;IACtBpD,eAAG,CAACqB,KAAK,CAAC,uCAAuC,CAAC;IAClD,IAAI,CAAC6B,sBAAsB,CAAC,cAAc,EAAEE,QAAQ,CAAC;EACvD;EAEAO,WAAW,GAAI;IACb3D,eAAG,CAACqB,KAAK,CAAC,uCAAuC,CAAC;IAClD,IAAI,CAACiC,yBAAyB,CAAC,cAAc,CAAC;EAChD;EAEA,IAAIrB,4BAA4B,CAAE2B,KAAK,EAAE;IACvC,IAAI,CAACC,6BAA6B,GAAGD,KAAK;EAC5C;EAEA,IAAI3B,4BAA4B,GAAI;IAClC,OAAO,IAAI,CAAC4B,6BAA6B;EAC3C;EAEA,MAAMC,UAAU,CAAEC,IAAI,EAAE;IACtB/D,eAAG,CAACqB,KAAK,CAAC,iBAAiB,CAAC;IAC5B,OAAO,MAAM,IAAI,CAACa,SAAS,CAACW,IAAI,CAAC,iBAAiB,EAAE;MAClDhB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBiC;IACF,CAAC,CAAC;EACJ;EAEA,MAAMC,YAAY,CAAEC,UAAU,EAAEC,GAAG,EAAE;IACnClE,eAAG,CAACqB,KAAK,CAAE,oBAAmB4C,UAAW,SAAQC,GAAI,GAAE,CAAC;IACxD,OAAO,MAAM,IAAI,CAAChC,SAAS,CAACW,IAAI,CAAC,mBAAmB,EAAE;MACpDhB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBmC,UAAU;MACVC;IACF,CAAC,CAAC;EACJ;EAEA,MAAMC,cAAc,CAAEC,SAAS,GAAGzE,uBAAuB,EAAE;IACzDK,eAAG,CAACqB,KAAK,CAAE,2BAA0B+C,SAAU,YAAW,CAAC;IAC3D,IAAI;MACF,IAAAC,kBAAW,EAAC;QAACxC,QAAQ,EAAE,IAAI,CAACA,QAAQ;QAAEC,SAAS,EAAE,IAAI,CAACA;MAAS,CAAC,CAAC;IACnE,CAAC,CAAC,OAAOwC,GAAG,EAAE;MACZtE,eAAG,CAACqB,KAAK,CAAE,wCAAuC,CAAC;MACnD;IACF;IAEA,MAAMkD,iBAAC,CAACpF,OAAO,CAAC,IAAI,CAAC+C,SAAS,CAACW,IAAI,CAAC,SAAS,EAAE;MAC7ChB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC,CAAC,CAAC0C,OAAO,CAACJ,SAAS,CAAC,CACrBK,IAAI,CAAC,SAASC,SAAS,GAAI;MAC1B1E,eAAG,CAACqB,KAAK,CAAE,+BAA8B,CAAC;IAC5C,CAAC,CAAC,CAACsD,KAAK,CAAC,SAASC,OAAO,CAAEN,GAAG,EAAE;MAC9B,IAAIA,GAAG,YAAYC,iBAAC,CAACM,YAAY,EAAE;QACjC7E,eAAG,CAACqB,KAAK,CAAE,sCAAqC+C,SAAU,IAAG,CAAC;MAChE,CAAC,MAAM;QACLpE,eAAG,CAACqB,KAAK,CAAE,8BAA6BiD,GAAG,CAACQ,OAAQ,EAAC,CAAC;MACxD;IACF,CAAC,CAAC;EACJ;EAEA,MAAMC,cAAc,CAAEhC,EAAE,EAAE;IACxB,OAAO,MAAM,IAAI,CAACtB,KAAK,CAACuD,OAAO,CAAC,SAAS,EAAEjC,EAAE,CAAC;EAChD;EAEA,IAAIkC,WAAW,GAAI;IACjB,OAAO,IAAI,CAACC,YAAY,IAAI,EAAE;EAChC;AACF;AAAC;AAED,KAAK,MAAM,CAACC,IAAI,EAAEpC,EAAE,CAAC,IAAIzB,eAAC,CAAC8D,OAAO,CAACC,cAAM,CAAC,EAAE;EAC1CzF,cAAc,CAAC0F,SAAS,CAACH,IAAI,CAAC,GAAGpC,EAAE;AACrC;AAEA,KAAK,MAAM,CAACoC,IAAI,EAAEI,KAAK,CAAC,IAAIjE,eAAC,CAAC8D,OAAO,CAACI,cAAM,CAAC,EAAE;EAC7C5F,cAAc,CAACuF,IAAI,CAAC,GAAGI,KAAK;AAC9B;AAAC,eAEc3F,cAAc;AAAA"}
|
package/build/lib/rpc/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -17,10 +16,7 @@ Object.defineProperty(exports, "RpcClientSimulator", {
|
|
|
17
16
|
return _rpcClientSimulator.default;
|
|
18
17
|
}
|
|
19
18
|
});
|
|
20
|
-
|
|
21
19
|
require("source-map-support/register");
|
|
22
|
-
|
|
23
20
|
var _rpcClientSimulator = _interopRequireDefault(require("./rpc-client-simulator"));
|
|
24
|
-
|
|
25
21
|
var _rpcClientRealDevice = _interopRequireDefault(require("./rpc-client-real-device"));
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUnBjQ2xpZW50U2ltdWxhdG9yIGZyb20gJy4vcnBjLWNsaWVudC1zaW11bGF0b3InO1xuaW1wb3J0IFJwY0NsaWVudFJlYWxEZXZpY2UgZnJvbSAnLi9ycGMtY2xpZW50LXJlYWwtZGV2aWNlJztcblxuXG5leHBvcnQgeyBScGNDbGllbnRTaW11bGF0b3IsIFJwY0NsaWVudFJlYWxEZXZpY2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../lib/rpc/index.js"],"sourcesContent":["import RpcClientSimulator from './rpc-client-simulator';\nimport RpcClientRealDevice from './rpc-client-real-device';\n\n\nexport { RpcClientSimulator, RpcClientRealDevice };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AACA"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.RemoteMessages = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _protocol = _interopRequireDefault(require("../protocol"));
|
|
15
|
-
|
|
16
11
|
const OBJECT_GROUP = 'console';
|
|
17
12
|
const MINIMAL_COMMAND = 'getMinimalCommand';
|
|
18
13
|
const FULL_COMMAND = 'getFullCommand';
|
|
19
14
|
const DIRECT_COMMAND = 'getDirectCommand';
|
|
15
|
+
|
|
20
16
|
const COMMANDS = {
|
|
21
17
|
'Page.getCookies': FULL_COMMAND,
|
|
22
18
|
'Page.navigate': FULL_COMMAND,
|
|
@@ -27,16 +23,13 @@ const COMMANDS = {
|
|
|
27
23
|
'Timeline.start': FULL_COMMAND,
|
|
28
24
|
'Timeline.stop': FULL_COMMAND
|
|
29
25
|
};
|
|
30
|
-
|
|
31
26
|
class RemoteMessages {
|
|
32
27
|
constructor(isTargetBased = false) {
|
|
33
28
|
this.isTargetBased = isTargetBased;
|
|
34
29
|
}
|
|
35
|
-
|
|
36
30
|
set isTargetBased(isTargetBased) {
|
|
37
31
|
this._isTargetBased = isTargetBased;
|
|
38
32
|
}
|
|
39
|
-
|
|
40
33
|
get isTargetBased() {
|
|
41
34
|
return this._isTargetBased;
|
|
42
35
|
}
|
|
@@ -49,7 +42,6 @@ class RemoteMessages {
|
|
|
49
42
|
__selector: '_rpc_reportIdentifier:'
|
|
50
43
|
};
|
|
51
44
|
}
|
|
52
|
-
|
|
53
45
|
connectToApp(connId, appIdKey) {
|
|
54
46
|
return {
|
|
55
47
|
__argument: {
|
|
@@ -59,7 +51,6 @@ class RemoteMessages {
|
|
|
59
51
|
__selector: '_rpc_forwardGetListing:'
|
|
60
52
|
};
|
|
61
53
|
}
|
|
62
|
-
|
|
63
54
|
setSenderKey(connId, senderId, appIdKey, pageIdKey) {
|
|
64
55
|
return {
|
|
65
56
|
__argument: {
|
|
@@ -72,7 +63,6 @@ class RemoteMessages {
|
|
|
72
63
|
__selector: '_rpc_forwardSocketSetup:'
|
|
73
64
|
};
|
|
74
65
|
}
|
|
75
|
-
|
|
76
66
|
indicateWebView(connId, appIdKey, pageIdKey, enabled) {
|
|
77
67
|
return {
|
|
78
68
|
__argument: {
|
|
@@ -84,7 +74,6 @@ class RemoteMessages {
|
|
|
84
74
|
__selector: '_rpc_forwardIndicateWebView:'
|
|
85
75
|
};
|
|
86
76
|
}
|
|
87
|
-
|
|
88
77
|
launchApplication(bundleId) {
|
|
89
78
|
return {
|
|
90
79
|
__argument: {
|
|
@@ -93,7 +82,6 @@ class RemoteMessages {
|
|
|
93
82
|
__selector: '_rpc_requestApplicationLaunch:'
|
|
94
83
|
};
|
|
95
84
|
}
|
|
96
|
-
|
|
97
85
|
getFullCommand(opts = {}) {
|
|
98
86
|
const {
|
|
99
87
|
method,
|
|
@@ -105,9 +93,9 @@ class RemoteMessages {
|
|
|
105
93
|
targetId,
|
|
106
94
|
id
|
|
107
95
|
} = opts;
|
|
96
|
+
|
|
108
97
|
let realMethod;
|
|
109
98
|
let realParams;
|
|
110
|
-
|
|
111
99
|
if (this.isTargetBased) {
|
|
112
100
|
realMethod = 'Target.sendMessageToTarget';
|
|
113
101
|
realParams = {
|
|
@@ -134,7 +122,6 @@ class RemoteMessages {
|
|
|
134
122
|
emulateUserGesture: false
|
|
135
123
|
}, params);
|
|
136
124
|
}
|
|
137
|
-
|
|
138
125
|
const plist = {
|
|
139
126
|
__argument: {
|
|
140
127
|
WIRSocketDataKey: {
|
|
@@ -150,7 +137,6 @@ class RemoteMessages {
|
|
|
150
137
|
};
|
|
151
138
|
return _lodash.default.omitBy(plist, _lodash.default.isNil);
|
|
152
139
|
}
|
|
153
|
-
|
|
154
140
|
getMinimalCommand(opts = {}) {
|
|
155
141
|
const {
|
|
156
142
|
method,
|
|
@@ -164,7 +150,6 @@ class RemoteMessages {
|
|
|
164
150
|
} = opts;
|
|
165
151
|
let realMethod = method;
|
|
166
152
|
let realParams = params;
|
|
167
|
-
|
|
168
153
|
if (this.isTargetBased) {
|
|
169
154
|
realMethod = 'Target.sendMessageToTarget';
|
|
170
155
|
realParams = {
|
|
@@ -176,7 +161,6 @@ class RemoteMessages {
|
|
|
176
161
|
})
|
|
177
162
|
};
|
|
178
163
|
}
|
|
179
|
-
|
|
180
164
|
const plist = {
|
|
181
165
|
__argument: {
|
|
182
166
|
WIRSocketDataKey: {
|
|
@@ -192,7 +176,6 @@ class RemoteMessages {
|
|
|
192
176
|
};
|
|
193
177
|
return _lodash.default.omitBy(plist, _lodash.default.isNil);
|
|
194
178
|
}
|
|
195
|
-
|
|
196
179
|
getDirectCommand(opts = {}) {
|
|
197
180
|
const {
|
|
198
181
|
method,
|
|
@@ -219,7 +202,6 @@ class RemoteMessages {
|
|
|
219
202
|
};
|
|
220
203
|
return _lodash.default.omitBy(plist, _lodash.default.isNil);
|
|
221
204
|
}
|
|
222
|
-
|
|
223
205
|
getRemoteCommand(command, opts) {
|
|
224
206
|
const {
|
|
225
207
|
id,
|
|
@@ -233,22 +215,19 @@ class RemoteMessages {
|
|
|
233
215
|
switch (command) {
|
|
234
216
|
case 'setConnectionKey':
|
|
235
217
|
return this.setConnectionKey(connId);
|
|
236
|
-
|
|
237
218
|
case 'indicateWebView':
|
|
238
219
|
return this.indicateWebView(connId, appIdKey, pageIdKey, opts.enabled);
|
|
239
|
-
|
|
240
220
|
case 'connectToApp':
|
|
241
221
|
return this.connectToApp(connId, appIdKey);
|
|
242
|
-
|
|
243
222
|
case 'setSenderKey':
|
|
244
223
|
return this.setSenderKey(connId, senderId, appIdKey, pageIdKey);
|
|
245
|
-
|
|
246
224
|
case 'launchApplication':
|
|
247
225
|
return this.launchApplication(opts.bundleId);
|
|
248
226
|
}
|
|
249
227
|
|
|
250
228
|
const builderFunction = COMMANDS[command] || MINIMAL_COMMAND;
|
|
251
|
-
return this[builderFunction]({
|
|
229
|
+
return this[builderFunction]({
|
|
230
|
+
...(0, _protocol.default)(id, command, opts),
|
|
252
231
|
connId,
|
|
253
232
|
appIdKey,
|
|
254
233
|
senderId,
|
|
@@ -256,10 +235,8 @@ class RemoteMessages {
|
|
|
256
235
|
targetId
|
|
257
236
|
});
|
|
258
237
|
}
|
|
259
|
-
|
|
260
238
|
}
|
|
261
|
-
|
|
262
239
|
exports.RemoteMessages = RemoteMessages;
|
|
263
240
|
var _default = RemoteMessages;
|
|
264
241
|
exports.default = _default;
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQkpFQ1RfR1JPVVAiLCJNSU5JTUFMX0NPTU1BTkQiLCJGVUxMX0NPTU1BTkQiLCJESVJFQ1RfQ09NTUFORCIsIkNPTU1BTkRTIiwiUmVtb3RlTWVzc2FnZXMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsInNldENvbm5lY3Rpb25LZXkiLCJjb25uSWQiLCJfX2FyZ3VtZW50IiwiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiLCJfX3NlbGVjdG9yIiwiY29ubmVjdFRvQXBwIiwiYXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJzZXRTZW5kZXJLZXkiLCJzZW5kZXJJZCIsInBhZ2VJZEtleSIsIldJUlNlbmRlcktleSIsIldJUlBhZ2VJZGVudGlmaWVyS2V5IiwiV0lSQXV0b21hdGljYWxseVBhdXNlIiwiaW5kaWNhdGVXZWJWaWV3IiwiZW5hYmxlZCIsIldJUkluZGljYXRlRW5hYmxlZEtleSIsIl8iLCJpc05pbCIsImxhdW5jaEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJnZXRGdWxsQ29tbWFuZCIsIm9wdHMiLCJtZXRob2QiLCJwYXJhbXMiLCJ0YXJnZXRJZCIsImlkIiwicmVhbE1ldGhvZCIsInJlYWxQYXJhbXMiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9iamVjdCIsImFzc2lnbiIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZW11bGF0ZVVzZXJHZXN0dXJlIiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9taXRCeSIsImdldE1pbmltYWxDb21tYW5kIiwiZ2V0RGlyZWN0Q29tbWFuZCIsImdldFJlbW90ZUNvbW1hbmQiLCJjb21tYW5kIiwiYnVpbGRlckZ1bmN0aW9uIiwiZ2V0UHJvdG9jb2xDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9yZW1vdGUtbWVzc2FnZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXRQcm90b2NvbENvbW1hbmQgZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5cbmNvbnN0IE9CSkVDVF9HUk9VUCA9ICdjb25zb2xlJztcblxuY29uc3QgTUlOSU1BTF9DT01NQU5EID0gJ2dldE1pbmltYWxDb21tYW5kJztcbmNvbnN0IEZVTExfQ09NTUFORCA9ICdnZXRGdWxsQ29tbWFuZCc7XG5jb25zdCBESVJFQ1RfQ09NTUFORCA9ICdnZXREaXJlY3RDb21tYW5kJztcblxuLy8gbWFwcGluZyBvZiBjb21tYW5kcyB0byB0aGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGNvbW1hbmRcbi8vIGRlZmF1bHRzIHRvIGBnZXRNaW5pbWFsQ29tbWFuZGAsIHNvIG5vIG5lZWQgdG8gaGF2ZSB0aG9zZSBsaXN0ZWQgaGVyZVxuY29uc3QgQ09NTUFORFMgPSB7XG4gICdQYWdlLmdldENvb2tpZXMnOiBGVUxMX0NPTU1BTkQsXG4gICdQYWdlLm5hdmlnYXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdSdW50aW1lLmF3YWl0UHJvbWlzZSc6IEZVTExfQ09NTUFORCxcbiAgJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nOiBGVUxMX0NPTU1BTkQsXG4gICdSdW50aW1lLmV2YWx1YXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdUYXJnZXQuZXhpc3RzJzogRElSRUNUX0NPTU1BTkQsXG5cbiAgJ1RpbWVsaW5lLnN0YXJ0JzogRlVMTF9DT01NQU5ELFxuICAnVGltZWxpbmUuc3RvcCc6IEZVTExfQ09NTUFORCxcbn07XG5cbmNsYXNzIFJlbW90ZU1lc3NhZ2VzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgLypcbiAgICogQ29ubmVjdGlvbiBmdW5jdGlvbnNcbiAgICovXG5cbiAgc2V0Q29ubmVjdGlvbktleSAoY29ubklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZFxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5XG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICAgIH07XG4gIH1cblxuICBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJTZW5kZXJLZXk6IHNlbmRlcklkLFxuICAgICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgICBXSVJBdXRvbWF0aWNhbGx5UGF1c2U6IGZhbHNlXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgICB9O1xuICB9XG5cbiAgaW5kaWNhdGVXZWJWaWV3IChjb25uSWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGVuYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNOaWwoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleVxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRJbmRpY2F0ZVdlYlZpZXc6J1xuICAgIH07XG4gIH1cblxuICBsYXVuY2hBcHBsaWNhdGlvbiAoYnVuZGxlSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXk6IGJ1bmRsZUlkXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfcmVxdWVzdEFwcGxpY2F0aW9uTGF1bmNoOidcbiAgICB9O1xuICB9XG5cbiAgZ2V0RnVsbENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGNvbm5JZCxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLyogVGhlIFdlYiBJbnNwZWN0b3IgaGFzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIGluLCBhc1xuICAgICAqIHNlZW4gd2hlbiBkdW1waW5nIHdoYXQgU2FmYXJpIGlzIGRvaW5nIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIGl0LiBNb3N0XG4gICAgICogYXJlIGtlcHQgYXMgdGhleSBhcmUgc2V0IGZvciBTYWZhcmkuIFRoZSBleGNlcHRpb24gaXMgYGVtdWxhdGVVc2VyR2VzdHVyZWBcbiAgICAgKiB3aGljaCwgb24gaU9TIDEzKywgYnJlYWtzIHBvcHVwIGJsb2NraW5nIChpLmUuLCBldmVuIHdpdGggdGhlIHBvcHVwXG4gICAgICogYmxvY2tpbmcgc2V0dGluZyBvbiwgbmV3IHdpbmRvd3MgYXJlIG9wZW5hYmxlIGJvdGggZnJvbSBsaW5rcyBhbmQgZnJvbVxuICAgICAqIEphdmFTY3JpcHQpLlxuICAgICAqL1xuXG4gICAgbGV0IHJlYWxNZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgb2JqZWN0R3JvdXA6IE9CSkVDVF9HUk9VUCxcbiAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgICAgICBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVSZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sIHBhcmFtcylcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVhbFBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvYmplY3RHcm91cDogT0JKRUNUX0dST1VQLFxuICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgIGVtdWxhdGVVc2VyR2VzdHVyZTogZmFsc2UsXG4gICAgICB9LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgbWV0aG9kOiByZWFsTWV0aG9kLFxuICAgICAgICAgIHBhcmFtczogcmVhbFBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonLFxuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldE1pbmltYWxDb21tYW5kIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7bWV0aG9kLCBwYXJhbXMsIGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIHRhcmdldElkLCBpZH0gPSBvcHRzO1xuXG4gICAgbGV0IHJlYWxNZXRob2QgPSBtZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGlzdCA9IHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSU29ja2V0RGF0YUtleToge1xuICAgICAgICAgIG1ldGhvZDogcmVhbE1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IHJlYWxQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXksXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldERhdGE6J1xuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldERpcmVjdENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHttZXRob2QsIHBhcmFtcywgY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgaWR9ID0gb3B0cztcblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonXG4gICAgfTtcbiAgICByZXR1cm4gXy5vbWl0QnkocGxpc3QsIF8uaXNOaWwpO1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY29ubklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBzZW5kZXJJZCxcbiAgICAgIHBhZ2VJZEtleSxcbiAgICAgIHRhcmdldElkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gZGVhbCB3aXRoIFNhZmFyaSBXZWIgSW5zcGVjdG9yIGNvbW1hbmRzXG4gICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICBjYXNlICdzZXRDb25uZWN0aW9uS2V5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29ubmVjdGlvbktleShjb25uSWQpO1xuICAgICAgY2FzZSAnaW5kaWNhdGVXZWJWaWV3JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNhdGVXZWJWaWV3KGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgb3B0cy5lbmFibGVkKTtcbiAgICAgIGNhc2UgJ2Nvbm5lY3RUb0FwcCc6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb0FwcChjb25uSWQsIGFwcElkS2V5KTtcbiAgICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbmRlcktleShjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIGNhc2UgJ2xhdW5jaEFwcGxpY2F0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoQXBwbGljYXRpb24ob3B0cy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIFdlYktpdCBjb21tYW5kc1xuICAgIGNvbnN0IGJ1aWxkZXJGdW5jdGlvbiA9IENPTU1BTkRTW2NvbW1hbmRdIHx8IE1JTklNQUxfQ09NTUFORDtcbiAgICByZXR1cm4gdGhpc1tidWlsZGVyRnVuY3Rpb25dKHtcbiAgICAgIC4uLmdldFByb3RvY29sQ29tbWFuZChpZCwgY29tbWFuZCwgb3B0cyksXG4gICAgICBjb25uSWQsXG4gICAgICBhcHBJZEtleSxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgcGFnZUlkS2V5LFxuICAgICAgdGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUmVtb3RlTWVzc2FnZXMgfTtcbmV4cG9ydCBkZWZhdWx0IFJlbW90ZU1lc3NhZ2VzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLFlBQVksR0FBRyxTQUFyQjtBQUVBLE1BQU1DLGVBQWUsR0FBRyxtQkFBeEI7QUFDQSxNQUFNQyxZQUFZLEdBQUcsZ0JBQXJCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGtCQUF2QjtBQUlBLE1BQU1DLFFBQVEsR0FBRztFQUNmLG1CQUFtQkYsWUFESjtFQUVmLGlCQUFpQkEsWUFGRjtFQUlmLHdCQUF3QkEsWUFKVDtFQUtmLDBCQUEwQkEsWUFMWDtFQU1mLG9CQUFvQkEsWUFOTDtFQVFmLGlCQUFpQkMsY0FSRjtFQVVmLGtCQUFrQkQsWUFWSDtFQVdmLGlCQUFpQkE7QUFYRixDQUFqQjs7QUFjQSxNQUFNRyxjQUFOLENBQXFCO0VBQ25CQyxXQUFXLENBQUVDLGFBQWEsR0FBRyxLQUFsQixFQUF5QjtJQUNsQyxLQUFLQSxhQUFMLEdBQXFCQSxhQUFyQjtFQUNEOztFQUVn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
|
|
242
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQkpFQ1RfR1JPVVAiLCJNSU5JTUFMX0NPTU1BTkQiLCJGVUxMX0NPTU1BTkQiLCJESVJFQ1RfQ09NTUFORCIsIkNPTU1BTkRTIiwiUmVtb3RlTWVzc2FnZXMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsInNldENvbm5lY3Rpb25LZXkiLCJjb25uSWQiLCJfX2FyZ3VtZW50IiwiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiLCJfX3NlbGVjdG9yIiwiY29ubmVjdFRvQXBwIiwiYXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJzZXRTZW5kZXJLZXkiLCJzZW5kZXJJZCIsInBhZ2VJZEtleSIsIldJUlNlbmRlcktleSIsIldJUlBhZ2VJZGVudGlmaWVyS2V5IiwiV0lSQXV0b21hdGljYWxseVBhdXNlIiwiaW5kaWNhdGVXZWJWaWV3IiwiZW5hYmxlZCIsIldJUkluZGljYXRlRW5hYmxlZEtleSIsIl8iLCJpc05pbCIsImxhdW5jaEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJnZXRGdWxsQ29tbWFuZCIsIm9wdHMiLCJtZXRob2QiLCJwYXJhbXMiLCJ0YXJnZXRJZCIsImlkIiwicmVhbE1ldGhvZCIsInJlYWxQYXJhbXMiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9iamVjdCIsImFzc2lnbiIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZW11bGF0ZVVzZXJHZXN0dXJlIiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9taXRCeSIsImdldE1pbmltYWxDb21tYW5kIiwiZ2V0RGlyZWN0Q29tbWFuZCIsImdldFJlbW90ZUNvbW1hbmQiLCJjb21tYW5kIiwiYnVpbGRlckZ1bmN0aW9uIiwiZ2V0UHJvdG9jb2xDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9yZW1vdGUtbWVzc2FnZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXRQcm90b2NvbENvbW1hbmQgZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5cbmNvbnN0IE9CSkVDVF9HUk9VUCA9ICdjb25zb2xlJztcblxuY29uc3QgTUlOSU1BTF9DT01NQU5EID0gJ2dldE1pbmltYWxDb21tYW5kJztcbmNvbnN0IEZVTExfQ09NTUFORCA9ICdnZXRGdWxsQ29tbWFuZCc7XG5jb25zdCBESVJFQ1RfQ09NTUFORCA9ICdnZXREaXJlY3RDb21tYW5kJztcblxuLy8gbWFwcGluZyBvZiBjb21tYW5kcyB0byB0aGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGNvbW1hbmRcbi8vIGRlZmF1bHRzIHRvIGBnZXRNaW5pbWFsQ29tbWFuZGAsIHNvIG5vIG5lZWQgdG8gaGF2ZSB0aG9zZSBsaXN0ZWQgaGVyZVxuY29uc3QgQ09NTUFORFMgPSB7XG4gICdQYWdlLmdldENvb2tpZXMnOiBGVUxMX0NPTU1BTkQsXG4gICdQYWdlLm5hdmlnYXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdSdW50aW1lLmF3YWl0UHJvbWlzZSc6IEZVTExfQ09NTUFORCxcbiAgJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nOiBGVUxMX0NPTU1BTkQsXG4gICdSdW50aW1lLmV2YWx1YXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdUYXJnZXQuZXhpc3RzJzogRElSRUNUX0NPTU1BTkQsXG5cbiAgJ1RpbWVsaW5lLnN0YXJ0JzogRlVMTF9DT01NQU5ELFxuICAnVGltZWxpbmUuc3RvcCc6IEZVTExfQ09NTUFORCxcbn07XG5cbmNsYXNzIFJlbW90ZU1lc3NhZ2VzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgLypcbiAgICogQ29ubmVjdGlvbiBmdW5jdGlvbnNcbiAgICovXG5cbiAgc2V0Q29ubmVjdGlvbktleSAoY29ubklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZFxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5XG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICAgIH07XG4gIH1cblxuICBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJTZW5kZXJLZXk6IHNlbmRlcklkLFxuICAgICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgICBXSVJBdXRvbWF0aWNhbGx5UGF1c2U6IGZhbHNlXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgICB9O1xuICB9XG5cbiAgaW5kaWNhdGVXZWJWaWV3IChjb25uSWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGVuYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNOaWwoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleVxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRJbmRpY2F0ZVdlYlZpZXc6J1xuICAgIH07XG4gIH1cblxuICBsYXVuY2hBcHBsaWNhdGlvbiAoYnVuZGxlSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXk6IGJ1bmRsZUlkXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfcmVxdWVzdEFwcGxpY2F0aW9uTGF1bmNoOidcbiAgICB9O1xuICB9XG5cbiAgZ2V0RnVsbENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGNvbm5JZCxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLyogVGhlIFdlYiBJbnNwZWN0b3IgaGFzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIGluLCBhc1xuICAgICAqIHNlZW4gd2hlbiBkdW1waW5nIHdoYXQgU2FmYXJpIGlzIGRvaW5nIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIGl0LiBNb3N0XG4gICAgICogYXJlIGtlcHQgYXMgdGhleSBhcmUgc2V0IGZvciBTYWZhcmkuIFRoZSBleGNlcHRpb24gaXMgYGVtdWxhdGVVc2VyR2VzdHVyZWBcbiAgICAgKiB3aGljaCwgb24gaU9TIDEzKywgYnJlYWtzIHBvcHVwIGJsb2NraW5nIChpLmUuLCBldmVuIHdpdGggdGhlIHBvcHVwXG4gICAgICogYmxvY2tpbmcgc2V0dGluZyBvbiwgbmV3IHdpbmRvd3MgYXJlIG9wZW5hYmxlIGJvdGggZnJvbSBsaW5rcyBhbmQgZnJvbVxuICAgICAqIEphdmFTY3JpcHQpLlxuICAgICAqL1xuXG4gICAgbGV0IHJlYWxNZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgb2JqZWN0R3JvdXA6IE9CSkVDVF9HUk9VUCxcbiAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgICAgICBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVSZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sIHBhcmFtcylcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVhbFBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvYmplY3RHcm91cDogT0JKRUNUX0dST1VQLFxuICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgIGVtdWxhdGVVc2VyR2VzdHVyZTogZmFsc2UsXG4gICAgICB9LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgbWV0aG9kOiByZWFsTWV0aG9kLFxuICAgICAgICAgIHBhcmFtczogcmVhbFBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonLFxuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldE1pbmltYWxDb21tYW5kIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7bWV0aG9kLCBwYXJhbXMsIGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIHRhcmdldElkLCBpZH0gPSBvcHRzO1xuXG4gICAgbGV0IHJlYWxNZXRob2QgPSBtZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGlzdCA9IHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSU29ja2V0RGF0YUtleToge1xuICAgICAgICAgIG1ldGhvZDogcmVhbE1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IHJlYWxQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXksXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldERhdGE6J1xuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldERpcmVjdENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHttZXRob2QsIHBhcmFtcywgY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgaWR9ID0gb3B0cztcblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonXG4gICAgfTtcbiAgICByZXR1cm4gXy5vbWl0QnkocGxpc3QsIF8uaXNOaWwpO1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY29ubklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBzZW5kZXJJZCxcbiAgICAgIHBhZ2VJZEtleSxcbiAgICAgIHRhcmdldElkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gZGVhbCB3aXRoIFNhZmFyaSBXZWIgSW5zcGVjdG9yIGNvbW1hbmRzXG4gICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICBjYXNlICdzZXRDb25uZWN0aW9uS2V5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29ubmVjdGlvbktleShjb25uSWQpO1xuICAgICAgY2FzZSAnaW5kaWNhdGVXZWJWaWV3JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNhdGVXZWJWaWV3KGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgb3B0cy5lbmFibGVkKTtcbiAgICAgIGNhc2UgJ2Nvbm5lY3RUb0FwcCc6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb0FwcChjb25uSWQsIGFwcElkS2V5KTtcbiAgICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbmRlcktleShjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIGNhc2UgJ2xhdW5jaEFwcGxpY2F0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoQXBwbGljYXRpb24ob3B0cy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIFdlYktpdCBjb21tYW5kc1xuICAgIGNvbnN0IGJ1aWxkZXJGdW5jdGlvbiA9IENPTU1BTkRTW2NvbW1hbmRdIHx8IE1JTklNQUxfQ09NTUFORDtcbiAgICByZXR1cm4gdGhpc1tidWlsZGVyRnVuY3Rpb25dKHtcbiAgICAgIC4uLmdldFByb3RvY29sQ29tbWFuZChpZCwgY29tbWFuZCwgb3B0cyksXG4gICAgICBjb25uSWQsXG4gICAgICBhcHBJZEtleSxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgcGFnZUlkS2V5LFxuICAgICAgdGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUmVtb3RlTWVzc2FnZXMgfTtcbmV4cG9ydCBkZWZhdWx0IFJlbW90ZU1lc3NhZ2VzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFHQSxNQUFNQSxZQUFZLEdBQUcsU0FBUztBQUU5QixNQUFNQyxlQUFlLEdBQUcsbUJBQW1CO0FBQzNDLE1BQU1DLFlBQVksR0FBRyxnQkFBZ0I7QUFDckMsTUFBTUMsY0FBYyxHQUFHLGtCQUFrQjs7QUFJekMsTUFBTUMsUUFBUSxHQUFHO0VBQ2YsaUJBQWlCLEVBQUVGLFlBQVk7RUFDL0IsZUFBZSxFQUFFQSxZQUFZO0VBRTdCLHNCQUFzQixFQUFFQSxZQUFZO0VBQ3BDLHdCQUF3QixFQUFFQSxZQUFZO0VBQ3RDLGtCQUFrQixFQUFFQSxZQUFZO0VBRWhDLGVBQWUsRUFBRUMsY0FBYztFQUUvQixnQkFBZ0IsRUFBRUQsWUFBWTtFQUM5QixlQUFlLEVBQUVBO0FBQ25CLENBQUM7QUFFRCxNQUFNRyxjQUFjLENBQUM7RUFDbkJDLFdBQVcsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNs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
|