appium-remote-debugger 9.1.14 → 9.1.16

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 CHANGED
@@ -1,3 +1,17 @@
1
+ ## [9.1.16](https://github.com/appium/appium-remote-debugger/compare/v9.1.15...v9.1.16) (2023-06-07)
2
+
3
+
4
+ ### Miscellaneous Chores
5
+
6
+ * **deps-dev:** bump conventional-changelog-conventionalcommits ([#307](https://github.com/appium/appium-remote-debugger/issues/307)) ([3ece7d7](https://github.com/appium/appium-remote-debugger/commit/3ece7d740df9a675ae9d8f9861d9b881bb078342))
7
+
8
+ ## [9.1.15](https://github.com/appium/appium-remote-debugger/compare/v9.1.14...v9.1.15) (2023-05-18)
9
+
10
+
11
+ ### Miscellaneous Chores
12
+
13
+ * **deps:** bump @appium/support from 3.1.11 to 4.0.0 ([#303](https://github.com/appium/appium-remote-debugger/issues/303)) ([40cb4ec](https://github.com/appium/appium-remote-debugger/commit/40cb4ec15d72d879d97e1f3051341ed3c9386d41))
14
+
1
15
  ## [9.1.14](https://github.com/appium/appium-remote-debugger/compare/v9.1.13...v9.1.14) (2023-03-03)
2
16
 
3
17
 
@@ -52,4 +52,4 @@ async function getScriptForAtom(atom, args, frames = [], asyncCallBack = null) {
52
52
  }
53
53
  var _default = getAtom;
54
54
  exports.default = _default;
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIl91dGlscyIsIkFUT01TX0NBQ0hFIiwiZ2V0QXRvbSIsImF0b21OYW1lIiwiXyIsImhhcyIsImF0b21GaWxlTmFtZSIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0TW9kdWxlUm9vdCIsImZzIiwicmVhZEZpbGUiLCJlIiwiRXJyb3IiLCJ3cmFwU2NyaXB0Rm9yRnJhbWUiLCJzY3JpcHQiLCJmcmFtZSIsImxvZyIsImRlYnVnIiwiZWxGcm9tQ2FjaGUiLCJ0b1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRTY3JpcHRGb3JBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJhc3luY0NhbGxCYWNrIiwiYXRvbVNyYyIsImxlbmd0aCIsIm1hcCIsImpvaW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2F0b21zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZ2V0TW9kdWxlUm9vdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBBVE9NU19DQUNIRSA9IHt9O1xuXG5cbmFzeW5jIGZ1bmN0aW9uIGdldEF0b20gKGF0b21OYW1lKSB7XG4gIC8vIGNoZWNrIGlmIHdlIGhhdmUgYWxyZWFkeSBsb2FkZWQgYW5kIGNhY2hlZCB0aGlzIGF0b21cbiAgaWYgKCFfLmhhcyhBVE9NU19DQUNIRSwgYXRvbU5hbWUpKSB7XG4gICAgY29uc3QgYXRvbUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKGdldE1vZHVsZVJvb3QoKSwgJ2F0b21zJywgYCR7YXRvbU5hbWV9LmpzYCk7XG4gICAgdHJ5IHtcbiAgICAgIEFUT01TX0NBQ0hFW2F0b21OYW1lXSA9IGF3YWl0IGZzLnJlYWRGaWxlKGF0b21GaWxlTmFtZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBBdG9tICcke2F0b21OYW1lfScgZnJvbSBmaWxlICcke2F0b21GaWxlTmFtZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEFUT01TX0NBQ0hFW2F0b21OYW1lXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JhcFNjcmlwdEZvckZyYW1lIChzY3JpcHQsIGZyYW1lKSB7XG4gIGxvZy5kZWJ1ZyhgV3JhcHBpbmcgc2NyaXB0IGZvciBmcmFtZSAnJHtmcmFtZX0nYCk7XG4gIGNvbnN0IGVsRnJvbUNhY2hlID0gYXdhaXQgZ2V0QXRvbSgnZ2V0X2VsZW1lbnRfZnJvbV9jYWNoZScpO1xuICByZXR1cm4gYChmdW5jdGlvbiAod2luZG93KSB7IHZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDsgYCArXG4gICAgICAgICBgcmV0dXJuICgke3NjcmlwdH0pOyB9KSgoJHtlbEZyb21DYWNoZS50b1N0cmluZygndXRmOCcpfSkoJHtKU09OLnN0cmluZ2lmeShmcmFtZSl9KSlgO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRTY3JpcHRGb3JBdG9tIChhdG9tLCBhcmdzLCBmcmFtZXMgPSBbXSwgYXN5bmNDYWxsQmFjayA9IG51bGwpIHtcbiAgY29uc3QgYXRvbVNyYyA9IGF3YWl0IGdldEF0b20oYXRvbSk7XG4gIGxldCBzY3JpcHQ7XG4gIGlmIChmcmFtZXMubGVuZ3RoID4gMCkge1xuICAgIHNjcmlwdCA9IGF0b21TcmM7XG4gICAgZm9yIChjb25zdCBmcmFtZSBvZiBmcmFtZXMpIHtcbiAgICAgIHNjcmlwdCA9IGF3YWl0IHdyYXBTY3JpcHRGb3JGcmFtZShzY3JpcHQsIGZyYW1lKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbG9nLmRlYnVnKGBFeGVjdXRpbmcgJyR7YXRvbX0nIGF0b20gaW4gZGVmYXVsdCBjb250ZXh0YCk7XG4gICAgc2NyaXB0ID0gYCgke2F0b21TcmN9KWA7XG4gIH1cblxuICAvLyBhZGQgdGhlIGFyZ3VtZW50cywgYXMgc3RyaW5nc1xuICBhcmdzID0gYXJncy5tYXAoSlNPTi5zdHJpbmdpZnkpO1xuICBpZiAoYXN5bmNDYWxsQmFjaykge1xuICAgIHNjcmlwdCArPSBgKCR7YXJncy5qb2luKCcsJyl9LCAke2FzeW5jQ2FsbEJhY2t9LCB0cnVlKWA7XG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0ICs9IGAoJHthcmdzLmpvaW4oJywnKX0pYDtcbiAgfVxuXG4gIHJldHVybiBzY3JpcHQ7XG59XG5cbmV4cG9ydCB7IGdldEF0b20sIGdldFNjcmlwdEZvckF0b20gfTtcbmV4cG9ydCBkZWZhdWx0IGdldEF0b207XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxNQUFNTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBR3RCLGVBQWVDLE9BQU9BLENBQUVDLFFBQVEsRUFBRTtFQUVoQyxJQUFJLENBQUNDLGVBQUMsQ0FBQ0MsR0FBRyxDQUFDSixXQUFXLEVBQUVFLFFBQVEsQ0FBQyxFQUFFO0lBQ2pDLE1BQU1HLFlBQVksR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBQUMsb0JBQWEsR0FBRSxFQUFFLE9BQU8sRUFBRyxHQUFFTixRQUFTLEtBQUksQ0FBQztJQUM3RSxJQUFJO01BQ0ZGLFdBQVcsQ0FBQ0UsUUFBUSxDQUFDLEdBQUcsTUFBTU8sV0FBRSxDQUFDQyxRQUFRLENBQUNMLFlBQVksQ0FBQztJQUN6RCxDQUFDLENBQUMsT0FBT00sQ0FBQyxFQUFFO01BQ1YsTUFBTSxJQUFJQyxLQUFLLENBQUUsd0JBQXVCVixRQUFTLGdCQUFlRyxZQUFhLEdBQUUsQ0FBQztJQUNsRjtFQUNGO0VBRUEsT0FBT0wsV0FBVyxDQUFDRSxRQUFRLENBQUM7QUFDOUI7QUFFQSxlQUFlVyxrQkFBa0JBLENBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0VBQ2hEQyxlQUFHLENBQUNDLEtBQUssQ0FBRSw4QkFBNkJGLEtBQU0sR0FBRSxDQUFDO0VBQ2pELE1BQU1HLFdBQVcsR0FBRyxNQUFNakIsT0FBTyxDQUFDLHdCQUF3QixDQUFDO0VBQzNELE9BQVEsdURBQXNELEdBQ3RELFdBQVVhLE1BQU8sVUFBU0ksV0FBVyxDQUFDQyxRQUFRLENBQUMsTUFBTSxDQUFFLEtBQUlDLElBQUksQ0FBQ0MsU0FBUyxDQUFDTixLQUFLLENBQUUsSUFBRztBQUM5RjtBQUVBLGVBQWVPLGdCQUFnQkEsQ0FBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sR0FBRyxFQUFFLEVBQUVDLGFBQWEsR0FBRyxJQUFJLEVBQUU7RUFDOUUsTUFBTUMsT0FBTyxHQUFHLE1BQU0xQixPQUFPLENBQUNzQixJQUFJLENBQUM7RUFDbkMsSUFBSVQsTUFBTTtFQUNWLElBQUlXLE1BQU0sQ0FBQ0csTUFBTSxHQUFHLENBQUMsRUFBRTtJQUNyQmQsTUFBTSxHQUFHYSxPQUFPO0lBQ2hCLEtBQUssTUFBTVosS0FBSyxJQUFJVSxNQUFNLEVBQUU7TUFDMUJYLE1BQU0sR0FBRyxNQUFNRCxrQkFBa0IsQ0FBQ0MsTUFBTSxFQUFFQyxLQUFLLENBQUM7SUFDbEQ7RUFDRixDQUFDLE1BQU07SUFDTEMsZUFBRyxDQUFDQyxLQUFLLENBQUUsY0FBYU0sSUFBSywyQkFBMEIsQ0FBQztJQUN4RFQsTUFBTSxHQUFJLElBQUdhLE9BQVEsR0FBRTtFQUN6QjtFQUdBSCxJQUFJLEdBQUdBLElBQUksQ0FBQ0ssR0FBRyxDQUFDVCxJQUFJLENBQUNDLFNBQVMsQ0FBQztFQUMvQixJQUFJSyxhQUFhLEVBQUU7SUFDakJaLE1BQU0sSUFBSyxJQUFHVSxJQUFJLENBQUNNLElBQUksQ0FBQyxHQUFHLENBQUUsS0FBSUosYUFBYyxTQUFRO0VBQ3pELENBQUMsTUFBTTtJQUNMWixNQUFNLElBQUssSUFBR1UsSUFBSSxDQUFDTSxJQUFJLENBQUMsR0FBRyxDQUFFLEdBQUU7RUFDakM7RUFFQSxPQUFPaEIsTUFBTTtBQUNmO0FBQUMsSUFBQWlCLFFBQUEsR0FHYzlCLE9BQU87QUFBQStCLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIl91dGlscyIsIkFUT01TX0NBQ0hFIiwiZ2V0QXRvbSIsImF0b21OYW1lIiwiXyIsImhhcyIsImF0b21GaWxlTmFtZSIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0TW9kdWxlUm9vdCIsImZzIiwicmVhZEZpbGUiLCJlIiwiRXJyb3IiLCJ3cmFwU2NyaXB0Rm9yRnJhbWUiLCJzY3JpcHQiLCJmcmFtZSIsImxvZyIsImRlYnVnIiwiZWxGcm9tQ2FjaGUiLCJ0b1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRTY3JpcHRGb3JBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJhc3luY0NhbGxCYWNrIiwiYXRvbVNyYyIsImxlbmd0aCIsIm1hcCIsImpvaW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2F0b21zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZ2V0TW9kdWxlUm9vdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBBVE9NU19DQUNIRSA9IHt9O1xuXG5cbmFzeW5jIGZ1bmN0aW9uIGdldEF0b20gKGF0b21OYW1lKSB7XG4gIC8vIGNoZWNrIGlmIHdlIGhhdmUgYWxyZWFkeSBsb2FkZWQgYW5kIGNhY2hlZCB0aGlzIGF0b21cbiAgaWYgKCFfLmhhcyhBVE9NU19DQUNIRSwgYXRvbU5hbWUpKSB7XG4gICAgY29uc3QgYXRvbUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKGdldE1vZHVsZVJvb3QoKSwgJ2F0b21zJywgYCR7YXRvbU5hbWV9LmpzYCk7XG4gICAgdHJ5IHtcbiAgICAgIEFUT01TX0NBQ0hFW2F0b21OYW1lXSA9IGF3YWl0IGZzLnJlYWRGaWxlKGF0b21GaWxlTmFtZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBBdG9tICcke2F0b21OYW1lfScgZnJvbSBmaWxlICcke2F0b21GaWxlTmFtZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEFUT01TX0NBQ0hFW2F0b21OYW1lXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JhcFNjcmlwdEZvckZyYW1lIChzY3JpcHQsIGZyYW1lKSB7XG4gIGxvZy5kZWJ1ZyhgV3JhcHBpbmcgc2NyaXB0IGZvciBmcmFtZSAnJHtmcmFtZX0nYCk7XG4gIGNvbnN0IGVsRnJvbUNhY2hlID0gYXdhaXQgZ2V0QXRvbSgnZ2V0X2VsZW1lbnRfZnJvbV9jYWNoZScpO1xuICByZXR1cm4gYChmdW5jdGlvbiAod2luZG93KSB7IHZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDsgYCArXG4gICAgICAgICBgcmV0dXJuICgke3NjcmlwdH0pOyB9KSgoJHtlbEZyb21DYWNoZS50b1N0cmluZygndXRmOCcpfSkoJHtKU09OLnN0cmluZ2lmeShmcmFtZSl9KSlgO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRTY3JpcHRGb3JBdG9tIChhdG9tLCBhcmdzLCBmcmFtZXMgPSBbXSwgYXN5bmNDYWxsQmFjayA9IG51bGwpIHtcbiAgY29uc3QgYXRvbVNyYyA9IGF3YWl0IGdldEF0b20oYXRvbSk7XG4gIGxldCBzY3JpcHQ7XG4gIGlmIChmcmFtZXMubGVuZ3RoID4gMCkge1xuICAgIHNjcmlwdCA9IGF0b21TcmM7XG4gICAgZm9yIChjb25zdCBmcmFtZSBvZiBmcmFtZXMpIHtcbiAgICAgIHNjcmlwdCA9IGF3YWl0IHdyYXBTY3JpcHRGb3JGcmFtZShzY3JpcHQsIGZyYW1lKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbG9nLmRlYnVnKGBFeGVjdXRpbmcgJyR7YXRvbX0nIGF0b20gaW4gZGVmYXVsdCBjb250ZXh0YCk7XG4gICAgc2NyaXB0ID0gYCgke2F0b21TcmN9KWA7XG4gIH1cblxuICAvLyBhZGQgdGhlIGFyZ3VtZW50cywgYXMgc3RyaW5nc1xuICBhcmdzID0gYXJncy5tYXAoSlNPTi5zdHJpbmdpZnkpO1xuICBpZiAoYXN5bmNDYWxsQmFjaykge1xuICAgIHNjcmlwdCArPSBgKCR7YXJncy5qb2luKCcsJyl9LCAke2FzeW5jQ2FsbEJhY2t9LCB0cnVlKWA7XG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0ICs9IGAoJHthcmdzLmpvaW4oJywnKX0pYDtcbiAgfVxuXG4gIHJldHVybiBzY3JpcHQ7XG59XG5cbmV4cG9ydCB7IGdldEF0b20sIGdldFNjcmlwdEZvckF0b20gfTtcbmV4cG9ydCBkZWZhdWx0IGdldEF0b207XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxNQUFNTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBR3RCLGVBQWVDLE9BQU9BLENBQUVDLFFBQVEsRUFBRTtFQUVoQyxJQUFJLENBQUNDLGVBQUMsQ0FBQ0MsR0FBRyxDQUFDSixXQUFXLEVBQUVFLFFBQVEsQ0FBQyxFQUFFO0lBQ2pDLE1BQU1HLFlBQVksR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBQUMsb0JBQWEsRUFBQyxDQUFDLEVBQUUsT0FBTyxFQUFHLEdBQUVOLFFBQVMsS0FBSSxDQUFDO0lBQzdFLElBQUk7TUFDRkYsV0FBVyxDQUFDRSxRQUFRLENBQUMsR0FBRyxNQUFNTyxXQUFFLENBQUNDLFFBQVEsQ0FBQ0wsWUFBWSxDQUFDO0lBQ3pELENBQUMsQ0FBQyxPQUFPTSxDQUFDLEVBQUU7TUFDVixNQUFNLElBQUlDLEtBQUssQ0FBRSx3QkFBdUJWLFFBQVMsZ0JBQWVHLFlBQWEsR0FBRSxDQUFDO0lBQ2xGO0VBQ0Y7RUFFQSxPQUFPTCxXQUFXLENBQUNFLFFBQVEsQ0FBQztBQUM5QjtBQUVBLGVBQWVXLGtCQUFrQkEsQ0FBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUU7RUFDaERDLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLDhCQUE2QkYsS0FBTSxHQUFFLENBQUM7RUFDakQsTUFBTUcsV0FBVyxHQUFHLE1BQU1qQixPQUFPLENBQUMsd0JBQXdCLENBQUM7RUFDM0QsT0FBUSx1REFBc0QsR0FDdEQsV0FBVWEsTUFBTyxVQUFTSSxXQUFXLENBQUNDLFFBQVEsQ0FBQyxNQUFNLENBQUUsS0FBSUMsSUFBSSxDQUFDQyxTQUFTLENBQUNOLEtBQUssQ0FBRSxJQUFHO0FBQzlGO0FBRUEsZUFBZU8sZ0JBQWdCQSxDQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsTUFBTSxHQUFHLEVBQUUsRUFBRUMsYUFBYSxHQUFHLElBQUksRUFBRTtFQUM5RSxNQUFNQyxPQUFPLEdBQUcsTUFBTTFCLE9BQU8sQ0FBQ3NCLElBQUksQ0FBQztFQUNuQyxJQUFJVCxNQUFNO0VBQ1YsSUFBSVcsTUFBTSxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ3JCZCxNQUFNLEdBQUdhLE9BQU87SUFDaEIsS0FBSyxNQUFNWixLQUFLLElBQUlVLE1BQU0sRUFBRTtNQUMxQlgsTUFBTSxHQUFHLE1BQU1ELGtCQUFrQixDQUFDQyxNQUFNLEVBQUVDLEtBQUssQ0FBQztJQUNsRDtFQUNGLENBQUMsTUFBTTtJQUNMQyxlQUFHLENBQUNDLEtBQUssQ0FBRSxjQUFhTSxJQUFLLDJCQUEwQixDQUFDO0lBQ3hEVCxNQUFNLEdBQUksSUFBR2EsT0FBUSxHQUFFO0VBQ3pCO0VBR0FILElBQUksR0FBR0EsSUFBSSxDQUFDSyxHQUFHLENBQUNULElBQUksQ0FBQ0MsU0FBUyxDQUFDO0VBQy9CLElBQUlLLGFBQWEsRUFBRTtJQUNqQlosTUFBTSxJQUFLLElBQUdVLElBQUksQ0FBQ00sSUFBSSxDQUFDLEdBQUcsQ0FBRSxLQUFJSixhQUFjLFNBQVE7RUFDekQsQ0FBQyxNQUFNO0lBQ0xaLE1BQU0sSUFBSyxJQUFHVSxJQUFJLENBQUNNLElBQUksQ0FBQyxHQUFHLENBQUUsR0FBRTtFQUNqQztFQUVBLE9BQU9oQixNQUFNO0FBQ2Y7QUFBQyxJQUFBaUIsUUFBQSxHQUdjOUIsT0FBTztBQUFBK0IsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"atoms.js","names":["_support","require","_path","_interopRequireDefault","_lodash","_logger","_utils","ATOMS_CACHE","getAtom","atomName","_","has","atomFileName","path","resolve","getModuleRoot","fs","readFile","e","Error","wrapScriptForFrame","script","frame","log","debug","elFromCache","toString","JSON","stringify","getScriptForAtom","atom","args","frames","asyncCallBack","atomSrc","length","map","join","_default","exports","default"],"sources":["../../lib/atoms.js"],"sourcesContent":["import { fs } from '@appium/support';\nimport path from 'path';\nimport _ from 'lodash';\nimport log from './logger';\nimport { getModuleRoot } from './utils';\n\nconst ATOMS_CACHE = {};\n\n\nasync function getAtom (atomName) {\n // check if we have already loaded and cached this atom\n if (!_.has(ATOMS_CACHE, atomName)) {\n const atomFileName = path.resolve(getModuleRoot(), 'atoms', `${atomName}.js`);\n try {\n ATOMS_CACHE[atomName] = await fs.readFile(atomFileName);\n } catch (e) {\n throw new Error(`Unable to load Atom '${atomName}' from file '${atomFileName}'`);\n }\n }\n\n return ATOMS_CACHE[atomName];\n}\n\nasync function wrapScriptForFrame (script, frame) {\n log.debug(`Wrapping script for frame '${frame}'`);\n const elFromCache = await getAtom('get_element_from_cache');\n return `(function (window) { var document = window.document; ` +\n `return (${script}); })((${elFromCache.toString('utf8')})(${JSON.stringify(frame)}))`;\n}\n\nasync function getScriptForAtom (atom, args, frames = [], asyncCallBack = null) {\n const atomSrc = await getAtom(atom);\n let script;\n if (frames.length > 0) {\n script = atomSrc;\n for (const frame of frames) {\n script = await wrapScriptForFrame(script, frame);\n }\n } else {\n log.debug(`Executing '${atom}' atom in default context`);\n script = `(${atomSrc})`;\n }\n\n // add the arguments, as strings\n args = args.map(JSON.stringify);\n if (asyncCallBack) {\n script += `(${args.join(',')}, ${asyncCallBack}, true)`;\n } else {\n script += `(${args.join(',')})`;\n }\n\n return script;\n}\n\nexport { getAtom, getScriptForAtom };\nexport default getAtom;\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,MAAMM,WAAW,GAAG,CAAC,CAAC;AAGtB,eAAeC,OAAOA,CAAEC,QAAQ,EAAE;EAEhC,IAAI,CAACC,eAAC,CAACC,GAAG,CAACJ,WAAW,EAAEE,QAAQ,CAAC,EAAE;IACjC,MAAMG,YAAY,GAAGC,aAAI,CAACC,OAAO,CAAC,IAAAC,oBAAa,GAAE,EAAE,OAAO,EAAG,GAAEN,QAAS,KAAI,CAAC;IAC7E,IAAI;MACFF,WAAW,CAACE,QAAQ,CAAC,GAAG,MAAMO,WAAE,CAACC,QAAQ,CAACL,YAAY,CAAC;IACzD,CAAC,CAAC,OAAOM,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CAAE,wBAAuBV,QAAS,gBAAeG,YAAa,GAAE,CAAC;IAClF;EACF;EAEA,OAAOL,WAAW,CAACE,QAAQ,CAAC;AAC9B;AAEA,eAAeW,kBAAkBA,CAAEC,MAAM,EAAEC,KAAK,EAAE;EAChDC,eAAG,CAACC,KAAK,CAAE,8BAA6BF,KAAM,GAAE,CAAC;EACjD,MAAMG,WAAW,GAAG,MAAMjB,OAAO,CAAC,wBAAwB,CAAC;EAC3D,OAAQ,uDAAsD,GACtD,WAAUa,MAAO,UAASI,WAAW,CAACC,QAAQ,CAAC,MAAM,CAAE,KAAIC,IAAI,CAACC,SAAS,CAACN,KAAK,CAAE,IAAG;AAC9F;AAEA,eAAeO,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,GAAG,EAAE,EAAEC,aAAa,GAAG,IAAI,EAAE;EAC9E,MAAMC,OAAO,GAAG,MAAM1B,OAAO,CAACsB,IAAI,CAAC;EACnC,IAAIT,MAAM;EACV,IAAIW,MAAM,CAACG,MAAM,GAAG,CAAC,EAAE;IACrBd,MAAM,GAAGa,OAAO;IAChB,KAAK,MAAMZ,KAAK,IAAIU,MAAM,EAAE;MAC1BX,MAAM,GAAG,MAAMD,kBAAkB,CAACC,MAAM,EAAEC,KAAK,CAAC;IAClD;EACF,CAAC,MAAM;IACLC,eAAG,CAACC,KAAK,CAAE,cAAaM,IAAK,2BAA0B,CAAC;IACxDT,MAAM,GAAI,IAAGa,OAAQ,GAAE;EACzB;EAGAH,IAAI,GAAGA,IAAI,CAACK,GAAG,CAACT,IAAI,CAACC,SAAS,CAAC;EAC/B,IAAIK,aAAa,EAAE;IACjBZ,MAAM,IAAK,IAAGU,IAAI,CAACM,IAAI,CAAC,GAAG,CAAE,KAAIJ,aAAc,SAAQ;EACzD,CAAC,MAAM;IACLZ,MAAM,IAAK,IAAGU,IAAI,CAACM,IAAI,CAAC,GAAG,CAAE,GAAE;EACjC;EAEA,OAAOhB,MAAM;AACf;AAAC,IAAAiB,QAAA,GAGc9B,OAAO;AAAA+B,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"file":"atoms.js","names":["_support","require","_path","_interopRequireDefault","_lodash","_logger","_utils","ATOMS_CACHE","getAtom","atomName","_","has","atomFileName","path","resolve","getModuleRoot","fs","readFile","e","Error","wrapScriptForFrame","script","frame","log","debug","elFromCache","toString","JSON","stringify","getScriptForAtom","atom","args","frames","asyncCallBack","atomSrc","length","map","join","_default","exports","default"],"sources":["../../lib/atoms.js"],"sourcesContent":["import { fs } from '@appium/support';\nimport path from 'path';\nimport _ from 'lodash';\nimport log from './logger';\nimport { getModuleRoot } from './utils';\n\nconst ATOMS_CACHE = {};\n\n\nasync function getAtom (atomName) {\n // check if we have already loaded and cached this atom\n if (!_.has(ATOMS_CACHE, atomName)) {\n const atomFileName = path.resolve(getModuleRoot(), 'atoms', `${atomName}.js`);\n try {\n ATOMS_CACHE[atomName] = await fs.readFile(atomFileName);\n } catch (e) {\n throw new Error(`Unable to load Atom '${atomName}' from file '${atomFileName}'`);\n }\n }\n\n return ATOMS_CACHE[atomName];\n}\n\nasync function wrapScriptForFrame (script, frame) {\n log.debug(`Wrapping script for frame '${frame}'`);\n const elFromCache = await getAtom('get_element_from_cache');\n return `(function (window) { var document = window.document; ` +\n `return (${script}); })((${elFromCache.toString('utf8')})(${JSON.stringify(frame)}))`;\n}\n\nasync function getScriptForAtom (atom, args, frames = [], asyncCallBack = null) {\n const atomSrc = await getAtom(atom);\n let script;\n if (frames.length > 0) {\n script = atomSrc;\n for (const frame of frames) {\n script = await wrapScriptForFrame(script, frame);\n }\n } else {\n log.debug(`Executing '${atom}' atom in default context`);\n script = `(${atomSrc})`;\n }\n\n // add the arguments, as strings\n args = args.map(JSON.stringify);\n if (asyncCallBack) {\n script += `(${args.join(',')}, ${asyncCallBack}, true)`;\n } else {\n script += `(${args.join(',')})`;\n }\n\n return script;\n}\n\nexport { getAtom, getScriptForAtom };\nexport default getAtom;\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,MAAMM,WAAW,GAAG,CAAC,CAAC;AAGtB,eAAeC,OAAOA,CAAEC,QAAQ,EAAE;EAEhC,IAAI,CAACC,eAAC,CAACC,GAAG,CAACJ,WAAW,EAAEE,QAAQ,CAAC,EAAE;IACjC,MAAMG,YAAY,GAAGC,aAAI,CAACC,OAAO,CAAC,IAAAC,oBAAa,EAAC,CAAC,EAAE,OAAO,EAAG,GAAEN,QAAS,KAAI,CAAC;IAC7E,IAAI;MACFF,WAAW,CAACE,QAAQ,CAAC,GAAG,MAAMO,WAAE,CAACC,QAAQ,CAACL,YAAY,CAAC;IACzD,CAAC,CAAC,OAAOM,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CAAE,wBAAuBV,QAAS,gBAAeG,YAAa,GAAE,CAAC;IAClF;EACF;EAEA,OAAOL,WAAW,CAACE,QAAQ,CAAC;AAC9B;AAEA,eAAeW,kBAAkBA,CAAEC,MAAM,EAAEC,KAAK,EAAE;EAChDC,eAAG,CAACC,KAAK,CAAE,8BAA6BF,KAAM,GAAE,CAAC;EACjD,MAAMG,WAAW,GAAG,MAAMjB,OAAO,CAAC,wBAAwB,CAAC;EAC3D,OAAQ,uDAAsD,GACtD,WAAUa,MAAO,UAASI,WAAW,CAACC,QAAQ,CAAC,MAAM,CAAE,KAAIC,IAAI,CAACC,SAAS,CAACN,KAAK,CAAE,IAAG;AAC9F;AAEA,eAAeO,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,GAAG,EAAE,EAAEC,aAAa,GAAG,IAAI,EAAE;EAC9E,MAAMC,OAAO,GAAG,MAAM1B,OAAO,CAACsB,IAAI,CAAC;EACnC,IAAIT,MAAM;EACV,IAAIW,MAAM,CAACG,MAAM,GAAG,CAAC,EAAE;IACrBd,MAAM,GAAGa,OAAO;IAChB,KAAK,MAAMZ,KAAK,IAAIU,MAAM,EAAE;MAC1BX,MAAM,GAAG,MAAMD,kBAAkB,CAACC,MAAM,EAAEC,KAAK,CAAC;IAClD;EACF,CAAC,MAAM;IACLC,eAAG,CAACC,KAAK,CAAE,cAAaM,IAAK,2BAA0B,CAAC;IACxDT,MAAM,GAAI,IAAGa,OAAQ,GAAE;EACzB;EAGAH,IAAI,GAAGA,IAAI,CAACK,GAAG,CAACT,IAAI,CAACC,SAAS,CAAC;EAC/B,IAAIK,aAAa,EAAE;IACjBZ,MAAM,IAAK,IAAGU,IAAI,CAACM,IAAI,CAAC,GAAG,CAAE,KAAIJ,aAAc,SAAQ;EACzD,CAAC,MAAM;IACLZ,MAAM,IAAK,IAAGU,IAAI,CAACM,IAAI,CAAC,GAAG,CAAE,GAAE;EACjC;EAEA,OAAOhB,MAAM;AACf;AAAC,IAAAiB,QAAA,GAGc9B,OAAO;AAAA+B,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -229,4 +229,4 @@ var _default = {
229
229
  updateAppsWithDict
230
230
  };
231
231
  exports.default = _default;
232
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdXRpbHMiLCJfZXZlbnRzIiwiX3N1cHBvcnQiLCJfYXN5bmNib3giLCJfbG9kYXNoIiwiQVBQX0NPTk5FQ1RfVElNRU9VVF9NUyIsIkFQUF9DT05ORUNUX0lOVEVSVkFMX01TIiwiU0VMRUNUX0FQUF9SRVRSSUVTIiwiU0VMRUNUX0FQUF9SRVRSWV9TTEVFUF9NUyIsIlNBRkFSSV9CVU5ETEVfSUQiLCJCTEFOS19QQUdFX1VSTCIsInNldENvbm5lY3Rpb25LZXkiLCJsb2ciLCJkZWJ1ZyIsInJwY0NsaWVudCIsInNlbmQiLCJjb25uZWN0IiwidGltZW91dCIsInNldHVwIiwiaW5pdFJwY0NsaWVudCIsIm9uIiwiXyIsIm5vb3AiLCJvblBhZ2VDaGFuZ2UiLCJiaW5kIiwib25Db25uZWN0ZWRBcHBsaWNhdGlvbkxpc3QiLCJvbkFwcENvbm5lY3QiLCJvbkFwcERpc2Nvbm5lY3QiLCJvbkFwcFVwZGF0ZSIsIm9uQ29ubmVjdGVkRHJpdmVyTGlzdCIsIm9uQ3VycmVudFN0YXRlIiwiZnJhbWVEZXRhY2hlZCIsIndhaXRGb3JDb25kaXRpb24iLCJpc0VtcHR5IiwiYXBwRGljdCIsIndhaXRNcyIsImludGVydmFsIiwiZXJyIiwiZXJyb3IiLCJtZXNzYWdlIiwiZGlzY29ubmVjdCIsImVtaXQiLCJldmVudHMiLCJFVkVOVF9ESVNDT05ORUNUIiwidGVhcmRvd24iLCJzZWxlY3RBcHAiLCJjdXJyZW50VXJsIiwibWF4VHJpZXMiLCJpZ25vcmVBYm91dEJsYW5rVXJsIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJhcHBJZEtleSIsInBhZ2VEaWN0Iiwic2VhcmNoRm9yQXBwIiwiZXJyb3JBbmRUaHJvdyIsImxvZ0FwcGxpY2F0aW9uRGljdGlvbmFyeSIsInBhZ2VBcnJheSIsInBhZ2VBcnJheUZyb21EaWN0Iiwic2ltcGxlU3RyaW5naWZ5IiwiZnVsbFBhZ2VBcnJheSIsImFwcCIsImluZm8iLCJ0b1BhaXJzIiwiaXNBcnJheSIsImlzQWN0aXZlIiwiaWQiLCJyZXBsYWNlIiwicGFnZSIsInVybCIsImNsb25lIiwiYnVuZGxlSWQiLCJwdXNoIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJidW5kbGVJZHMiLCJpbmNsdWRlU2FmYXJpIiwiaXNTYWZhcmkiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwicmV0cnlJbnRlcnZhbCIsInJldHJ5Q291bnQiLCJwb3NzaWJsZUFwcElkcyIsImdldFBvc3NpYmxlRGVidWdnZXJBcHBLZXlzIiwiam9pbiIsImF0dGVtcHRlZEFwcElkS2V5IiwicmVzdWx0Iiwic2VhcmNoRm9yUGFnZSIsIkVycm9yIiwiaWduIiwiYXBwc0RpY3QiLCJ2YWx1ZXMiLCJwcm9taXNlIiwiZGljdCIsInNlbGVjdFBhZ2UiLCJwYWdlSWRLZXkiLCJza2lwUmVhZHlDaGVjayIsImNoZWNrUGFnZUlzUmVhZHkiLCJwYWdlVW5sb2FkIiwiYXBwcyIsImdldFZhbHVlU3RyaW5nIiwia2V5IiwidmFsdWUiLCJpc0Z1bmN0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsIkFycmF5IiwibGVuZ3RoIiwicHJlZml4IiwiayIsInYiLCJ2YWx1ZVN0cmluZyIsInVwZGF0ZUFwcHNXaXRoRGljdCIsImVudHJ5IiwiYXBwSW5mb0Zyb21EaWN0IiwiaXNVbmRlZmluZWQiLCJkZWZlcnJlZFByb21pc2UiLCJnZXREZWJ1Z2dlckFwcEtleSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWl4aW5zL2Nvbm5lY3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgYXBwSW5mb0Zyb21EaWN0LCBwYWdlQXJyYXlGcm9tRGljdCwgZ2V0RGVidWdnZXJBcHBLZXksXG4gICAgICAgICBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cywgc2ltcGxlU3RyaW5naWZ5LCBkZWZlcnJlZFByb21pc2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgZXZlbnRzIGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHRpbWluZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBBUFBfQ09OTkVDVF9USU1FT1VUX01TID0gMDtcbmNvbnN0IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TID0gMTAwO1xuY29uc3QgU0VMRUNUX0FQUF9SRVRSSUVTID0gMjA7XG5jb25zdCBTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TID0gNTAwO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEJMQU5LX1BBR0VfVVJMID0gJ2Fib3V0OmJsYW5rJztcblxuXG5hc3luYyBmdW5jdGlvbiBzZXRDb25uZWN0aW9uS2V5ICgpIHtcbiAgbG9nLmRlYnVnKCdTZW5kaW5nIGNvbm5lY3Rpb24ga2V5IHJlcXVlc3QnKTtcbiAgLy8gc2VuZCBidXQgb25seSB3YWl0IHRvIG1ha2Ugc3VyZSB0aGUgc29ja2V0IHdvcmtlZFxuICAvLyBhcyByZXNwb25zZSBmcm9tIFdlYiBJbnNwZWN0b3IgY2FuIHRha2UgYSBsb25nIHRpbWVcbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnc2V0Q29ubmVjdGlvbktleScsIHt9LCBmYWxzZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QgKHRpbWVvdXQgPSBBUFBfQ09OTkVDVF9USU1FT1VUX01TKSB7XG4gIHRoaXMuc2V0dXAoKTtcblxuICAvLyBpbml0aWFsaXplIHRoZSBycGMgY2xpZW50XG4gIHRoaXMuaW5pdFJwY0NsaWVudCgpO1xuXG4gIC8vIGxpc3RlbiBmb3IgYmFzaWMgZGVidWdnZXItbGV2ZWwgZXZlbnRzXG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX3JlcG9ydFNldHVwOicsIF8ubm9vcCk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsIHRoaXMub25QYWdlQ2hhbmdlLmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JywgdGhpcy5vbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgdGhpcy5vbkFwcENvbm5lY3QuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIHRoaXMub25BcHBEaXNjb25uZWN0LmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JywgdGhpcy5vbkFwcFVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLCB0aGlzLm9uQ29ubmVjdGVkRHJpdmVyTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOicsIHRoaXMub25DdXJyZW50U3RhdGUuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdQYWdlLmZyYW1lRGV0YWNoZWQnLCB0aGlzLmZyYW1lRGV0YWNoZWQuYmluZCh0aGlzKSk7XG5cbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuY29ubmVjdCgpO1xuXG4gIC8vIGdldCB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5zZXRDb25uZWN0aW9uS2V5KCk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFwcGxpY2F0aW9ucyB0byBiZSByZXBvcnRlZGApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiAhXy5pc0VtcHR5KHRoaXMuYXBwRGljdCksIHtcbiAgICAgICAgICB3YWl0TXM6IHRpbWVvdXQsXG4gICAgICAgICAgaW50ZXJ2YWw6IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cuZGVidWcoYFRpbWVkIG91dCB3YWl0aW5nIGZvciBhcHBsaWNhdGlvbnMgdG8gYmUgcmVwb3J0ZWRgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXBwRGljdCB8fCB7fTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBFcnJvciBzZXR0aW5nIGNvbm5lY3Rpb24ga2V5OiAke2Vyci5tZXNzYWdlfWApO1xuICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0ICgpIHtcbiAgaWYgKHRoaXMucnBjQ2xpZW50KSB7XG4gICAgYXdhaXQgdGhpcy5ycGNDbGllbnQuZGlzY29ubmVjdCgpO1xuICB9XG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfRElTQ09OTkVDVCwgdHJ1ZSk7XG4gIHRoaXMudGVhcmRvd24oKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VsZWN0QXBwIChjdXJyZW50VXJsID0gbnVsbCwgbWF4VHJpZXMgPSBTRUxFQ1RfQVBQX1JFVFJJRVMsIGlnbm9yZUFib3V0QmxhbmtVcmwgPSBmYWxzZSkge1xuICBjb25zdCBzaG91bGRDaGVja0ZvclRhcmdldCA9IHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB0aGlzLnJwY0NsaWVudC5zaG91bGRDaGVja0ZvclRhcmdldCA9IGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgbG9nLmRlYnVnKCdTZWxlY3RpbmcgYXBwbGljYXRpb24nKTtcbiAgICBpZiAoIXRoaXMuYXBwRGljdCB8fCBfLmlzRW1wdHkodGhpcy5hcHBEaWN0KSkge1xuICAgICAgbG9nLmRlYnVnKCdObyBhcHBsaWNhdGlvbnMgY3VycmVudGx5IGNvbm5lY3RlZC4nKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YXBwSWRLZXksIHBhZ2VEaWN0fSA9IGF3YWl0IHRoaXMuc2VhcmNoRm9yQXBwKGN1cnJlbnRVcmwsIG1heFRyaWVzLCBpZ25vcmVBYm91dEJsYW5rVXJsKTtcblxuICAgIC8vIGlmLCBhZnRlciBhbGwgdGhpcywgd2UgaGF2ZSBubyBkaWN0aW9uYXJ5LCB3ZSBoYXZlIGZhaWxlZFxuICAgIGlmICghYXBwSWRLZXkgfHwgIXBhZ2VEaWN0KSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGNvbm5lY3QgdG8gYSB2YWxpZCBhcHAgYWZ0ZXIgJHttYXhUcmllc30gdHJpZXMuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwSWRLZXkgIT09IGFwcElkS2V5KSB7XG4gICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIGFsdGVyZWQgYXBwIGlkLCB1cGRhdGluZyBmcm9tICcke3RoaXMuYXBwSWRLZXl9JyB0byAnJHthcHBJZEtleX0nYCk7XG4gICAgICB0aGlzLmFwcElkS2V5ID0gYXBwSWRLZXk7XG4gICAgfVxuXG4gICAgbG9nQXBwbGljYXRpb25EaWN0aW9uYXJ5KHRoaXMuYXBwRGljdCk7XG5cbiAgICAvLyB0cmFuc2xhdGUgdGhlIGRpY3Rpb25hcnkgaW50byBhIHVzZWZ1bCBmb3JtLCBhbmQgcmV0dXJuIHRvIHNlbmRlclxuICAgIGNvbnN0IHBhZ2VBcnJheSA9IF8uaXNFbXB0eSh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSlcbiAgICAgID8gcGFnZUFycmF5RnJvbURpY3QocGFnZURpY3QpXG4gICAgICA6IHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5O1xuICAgIGxvZy5kZWJ1ZyhgRmluYWxseSBzZWxlY3RpbmcgYXBwICR7dGhpcy5hcHBJZEtleX06ICR7c2ltcGxlU3RyaW5naWZ5KHBhZ2VBcnJheSl9YCk7XG5cbiAgICBsZXQgZnVsbFBhZ2VBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2FwcCwgaW5mb10gb2YgXy50b1BhaXJzKHRoaXMuYXBwRGljdCkpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGluZm8ucGFnZUFycmF5KSB8fCAhaW5mby5pc0FjdGl2ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkID0gYXBwLnJlcGxhY2UoJ1BJRDonLCAnJyk7XG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgaW5mby5wYWdlQXJyYXkpIHtcbiAgICAgICAgaWYgKCEoaWdub3JlQWJvdXRCbGFua1VybCAmJiBwYWdlLnVybCA9PT0gQkxBTktfUEFHRV9VUkwpKSB7XG4gICAgICAgICAgbGV0IHBhZ2VEaWN0ID0gXy5jbG9uZShwYWdlKTtcbiAgICAgICAgICBwYWdlRGljdC5pZCA9IGAke2lkfS4ke3BhZ2VEaWN0LmlkfWA7XG4gICAgICAgICAgcGFnZURpY3QuYnVuZGxlSWQgPSBpbmZvLmJ1bmRsZUlkO1xuICAgICAgICAgIGZ1bGxQYWdlQXJyYXkucHVzaChwYWdlRGljdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2cuZGVidWcoYFNlbGVjdGVkIGFwcCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIHJldHVybiBmdWxsUGFnZUFycmF5O1xuICB9IGZpbmFsbHkge1xuICAgIHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0ID0gc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoRm9yQXBwIChjdXJyZW50VXJsLCBtYXhUcmllcywgaWdub3JlQWJvdXRCbGFua1VybCkge1xuICBjb25zdCBidW5kbGVJZHMgPSB0aGlzLmluY2x1ZGVTYWZhcmkgJiYgIXRoaXMuaXNTYWZhcmlcbiAgICA/IFt0aGlzLmJ1bmRsZUlkLCAuLi50aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMsIFNBRkFSSV9CVU5ETEVfSURdXG4gICAgOiBbdGhpcy5idW5kbGVJZCwgLi4udGhpcy5hZGRpdGlvbmFsQnVuZGxlSWRzXTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChtYXhUcmllcywgU0VMRUNUX0FQUF9SRVRSWV9TTEVFUF9NUywgYXN5bmMgKHJldHJ5Q291bnQpID0+IHtcbiAgICAgIGxvZ0FwcGxpY2F0aW9uRGljdGlvbmFyeSh0aGlzLmFwcERpY3QpO1xuICAgICAgY29uc3QgcG9zc2libGVBcHBJZHMgPSBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyhidW5kbGVJZHMsIHRoaXMuYXBwRGljdCk7XG4gICAgICBsb2cuZGVidWcoYFRyeWluZyBvdXQgdGhlIHBvc3NpYmxlIGFwcCBpZHM6ICR7cG9zc2libGVBcHBJZHMuam9pbignLCAnKX0gKHRyeSAjJHtyZXRyeUNvdW50ICsgMX0gb2YgJHttYXhUcmllc30pYCk7XG4gICAgICBmb3IgKGNvbnN0IGF0dGVtcHRlZEFwcElkS2V5IG9mIHBvc3NpYmxlQXBwSWRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmFwcERpY3RbYXR0ZW1wdGVkQXBwSWRLZXldLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYFNraXBwaW5nIGFwcCAnJHthdHRlbXB0ZWRBcHBJZEtleX0nIGJlY2F1c2UgaXQgaXMgbm90IGFjdGl2ZWApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyBhcHAgJyR7YXR0ZW1wdGVkQXBwSWRLZXl9J2ApO1xuICAgICAgICAgIGNvbnN0IFthcHBJZEtleSwgcGFnZURpY3RdID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VsZWN0QXBwKGF0dGVtcHRlZEFwcElkS2V5LCB0aGlzLm9uQXBwQ29ubmVjdC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAvLyBpbiBpT1MgOC4yIHRoZSBjb25uZWN0IGxvZ2ljIGhhcHBlbnMsIGJ1dCB3aXRoIGFuIGVtcHR5IGRpY3Rpb25hcnlcbiAgICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhZ2VEaWN0KSkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKCdFbXB0eSBwYWdlIGRpY3Rpb25hcnkgcmVjZWl2ZWQuIFRyeWluZyBhZ2Fpbi4nKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHNhdmUgdGhlIHBhZ2UgYXJyYXkgZm9yIHRoaXMgYXBwXG4gICAgICAgICAgdGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgICAgICAgICAvLyBpZiB3ZSBhcmUgbG9va2luZyBmb3IgYSBwYXJ0aWN1bGFyIHVybCwgbWFrZSBzdXJlIHdlXG4gICAgICAgICAgLy8gaGF2ZSB0aGUgcmlnaHQgcGFnZS4gSWdub3JlIGVtcHR5IG9yIHVuZGVmaW5lZCB1cmxzLlxuICAgICAgICAgIC8vIElnbm9yZSBhYm91dDpibGFuayBpZiByZXF1ZXN0ZWQuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hGb3JQYWdlKHRoaXMuYXBwRGljdCwgY3VycmVudFVybCwgaWdub3JlQWJvdXRCbGFua1VybCk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudFVybCkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCBhcHAsIGJ1dCBleHBlY3RlZCB1cmwgKCcke2N1cnJlbnRVcmx9Jykgd2FzIG5vdCBmb3VuZC4gVHJ5aW5nIGFnYWluLmApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoJ1JlY2VpdmVkIGFwcCwgYnV0IG5vIG1hdGNoIHdhcyBmb3VuZC4gVHJ5aW5nIGFnYWluLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBFcnJvciBjaGVja2luZyBhcHBsaWNhdGlvbjogJyR7ZXJyLm1lc3NhZ2V9Jy4gUmV0cnlpbmcgY29ubmVjdGlvbmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXRyeUNvdW50Kys7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGFuIGFwcCB0byBzZWxlY3QnKTtcbiAgICB9LCAwKTtcbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBjb25uZWN0IHRvIGEgdmFsaWQgYXBwIGFmdGVyICR7bWF4VHJpZXN9IHRyaWVzLmApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlYXJjaEZvclBhZ2UgKGFwcHNEaWN0LCBjdXJyZW50VXJsID0gbnVsbCwgaWdub3JlQWJvdXRCbGFua1VybCA9IGZhbHNlKSB7XG4gIGZvciAoY29uc3QgYXBwRGljdCBvZiBfLnZhbHVlcyhhcHBzRGljdCkpIHtcbiAgICBpZiAoIWFwcERpY3QgfHwgIWFwcERpY3QuaXNBY3RpdmUgfHwgIWFwcERpY3QucGFnZUFycmF5IHx8IGFwcERpY3QucGFnZUFycmF5LnByb21pc2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGljdCBvZiBhcHBEaWN0LnBhZ2VBcnJheSkge1xuICAgICAgaWYgKCghaWdub3JlQWJvdXRCbGFua1VybCB8fCBkaWN0LnVybCAhPT0gQkxBTktfUEFHRV9VUkwpICYmXG4gICAgICAgICAgKCFjdXJyZW50VXJsIHx8IGRpY3QudXJsID09PSBjdXJyZW50VXJsIHx8IGRpY3QudXJsID09PSBgJHtjdXJyZW50VXJsfS9gKSkge1xuICAgICAgICByZXR1cm4geyBhcHBJZEtleTogYXBwRGljdC5pZCwgcGFnZURpY3Q6IGRpY3QgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbGVjdFBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXksIHNraXBSZWFkeUNoZWNrID0gZmFsc2UpIHtcbiAgdGhpcy5hcHBJZEtleSA9IGBQSUQ6JHthcHBJZEtleX1gO1xuICB0aGlzLnBhZ2VJZEtleSA9IHBhZ2VJZEtleTtcblxuICBsb2cuZGVidWcoYFNlbGVjdGluZyBwYWdlICcke3BhZ2VJZEtleX0nIG9uIGFwcCAnJHt0aGlzLmFwcElkS2V5fScgYW5kIGZvcndhcmRpbmcgc29ja2V0IHNldHVwYCk7XG5cbiAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcblxuICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZWxlY3RQYWdlKHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleSk7XG5cbiAgLy8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcmVhZHkgdG8gZ29cbiAgaWYgKCFza2lwUmVhZHlDaGVjayAmJiAhYXdhaXQgdGhpcy5jaGVja1BhZ2VJc1JlYWR5KCkpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2VVbmxvYWQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU2VsZWN0ZWQgcGFnZSBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xufVxuXG5mdW5jdGlvbiBsb2dBcHBsaWNhdGlvbkRpY3Rpb25hcnkgKGFwcHMpIHtcbiAgZnVuY3Rpb24gZ2V0VmFsdWVTdHJpbmcgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgcmV0dXJuICdbRnVuY3Rpb25dJztcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gJ3BhZ2VBcnJheScgJiYgIV8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgXCJXYWl0aW5nIGZvciBkYXRhXCJgO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG4gIGxvZy5kZWJ1ZygnQ3VycmVudCBhcHBsaWNhdGlvbnMgYXZhaWxhYmxlOicpO1xuICBmb3IgKGNvbnN0IFthcHAsIGluZm9dIG9mIF8udG9QYWlycyhhcHBzKSkge1xuICAgIGxvZy5kZWJ1ZyhgICAgIEFwcGxpY2F0aW9uOiBcIiR7YXBwfVwiYCk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKGluZm8pKSB7XG4gICAgICBpZiAoa2V5ID09PSAncGFnZUFycmF5JyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgbG9nLmRlYnVnKGAgICAgICAgICR7a2V5fTpgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgbGV0IHByZWZpeCA9ICctICc7XG4gICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgXy50b1BhaXJzKHBhZ2UpKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYCAgICAgICAgICAke3ByZWZpeH0ke2t9OiAke0pTT04uc3RyaW5naWZ5KHYpfWApO1xuICAgICAgICAgICAgcHJlZml4ID0gJyAgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gZ2V0VmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgICAgICAgICAke2tleX06ICR7dmFsdWVTdHJpbmd9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUFwcHNXaXRoRGljdCAoZGljdCkge1xuICAvLyBnZXQgdGhlIGRpY3Rpb25hcnkgZW50cnkgaW50byBhIG5pY2UgZm9ybSwgYW5kIGFkZCBpdCB0byB0aGVcbiAgLy8gYXBwbGljYXRpb24gZGljdGlvbmFyeVxuICB0aGlzLmFwcERpY3QgPSB0aGlzLmFwcERpY3QgfHwge307XG4gIGxldCBbaWQsIGVudHJ5XSA9IGFwcEluZm9Gcm9tRGljdChkaWN0KTtcbiAgaWYgKHRoaXMuYXBwRGljdFtpZF0pIHtcbiAgICAvLyBwcmVzZXJ2ZSB0aGUgcGFnZSBkaWN0aW9uYXJ5IGZvciB0aGlzIGVudHJ5XG4gICAgZW50cnkucGFnZUFycmF5ID0gdGhpcy5hcHBEaWN0W2lkXS5wYWdlQXJyYXk7XG4gIH1cbiAgdGhpcy5hcHBEaWN0W2lkXSA9IGVudHJ5O1xuXG4gIC8vIGFkZCBhIHByb21pc2UgdG8gZ2V0IHRoZSBwYWdlIGRpY3Rpb25hcnlcbiAgaWYgKF8uaXNVbmRlZmluZWQoZW50cnkucGFnZUFycmF5KSkge1xuICAgIGVudHJ5LnBhZ2VBcnJheSA9IGRlZmVycmVkUHJvbWlzZSgpO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGdldCB0aGUgYXBwIGlkIGZyb20gb3VyIGNvbm5lY3RlZCBhcHBzXG4gIGlmICghdGhpcy5hcHBJZEtleSkge1xuICAgIHRoaXMuYXBwSWRLZXkgPSBnZXREZWJ1Z2dlckFwcEtleSh0aGlzLmJ1bmRsZUlkLCB0aGlzLmFwcERpY3QpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHsgc2V0Q29ubmVjdGlvbktleSwgY29ubmVjdCwgZGlzY29ubmVjdCwgc2VsZWN0QXBwLCBzZWFyY2hGb3JBcHAsIHNlYXJjaEZvclBhZ2UsIHNlbGVj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
232
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdXRpbHMiLCJfZXZlbnRzIiwiX3N1cHBvcnQiLCJfYXN5bmNib3giLCJfbG9kYXNoIiwiQVBQX0NPTk5FQ1RfVElNRU9VVF9NUyIsIkFQUF9DT05ORUNUX0lOVEVSVkFMX01TIiwiU0VMRUNUX0FQUF9SRVRSSUVTIiwiU0VMRUNUX0FQUF9SRVRSWV9TTEVFUF9NUyIsIlNBRkFSSV9CVU5ETEVfSUQiLCJCTEFOS19QQUdFX1VSTCIsInNldENvbm5lY3Rpb25LZXkiLCJsb2ciLCJkZWJ1ZyIsInJwY0NsaWVudCIsInNlbmQiLCJjb25uZWN0IiwidGltZW91dCIsInNldHVwIiwiaW5pdFJwY0NsaWVudCIsIm9uIiwiXyIsIm5vb3AiLCJvblBhZ2VDaGFuZ2UiLCJiaW5kIiwib25Db25uZWN0ZWRBcHBsaWNhdGlvbkxpc3QiLCJvbkFwcENvbm5lY3QiLCJvbkFwcERpc2Nvbm5lY3QiLCJvbkFwcFVwZGF0ZSIsIm9uQ29ubmVjdGVkRHJpdmVyTGlzdCIsIm9uQ3VycmVudFN0YXRlIiwiZnJhbWVEZXRhY2hlZCIsIndhaXRGb3JDb25kaXRpb24iLCJpc0VtcHR5IiwiYXBwRGljdCIsIndhaXRNcyIsImludGVydmFsIiwiZXJyIiwiZXJyb3IiLCJtZXNzYWdlIiwiZGlzY29ubmVjdCIsImVtaXQiLCJldmVudHMiLCJFVkVOVF9ESVNDT05ORUNUIiwidGVhcmRvd24iLCJzZWxlY3RBcHAiLCJjdXJyZW50VXJsIiwibWF4VHJpZXMiLCJpZ25vcmVBYm91dEJsYW5rVXJsIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJhcHBJZEtleSIsInBhZ2VEaWN0Iiwic2VhcmNoRm9yQXBwIiwiZXJyb3JBbmRUaHJvdyIsImxvZ0FwcGxpY2F0aW9uRGljdGlvbmFyeSIsInBhZ2VBcnJheSIsInBhZ2VBcnJheUZyb21EaWN0Iiwic2ltcGxlU3RyaW5naWZ5IiwiZnVsbFBhZ2VBcnJheSIsImFwcCIsImluZm8iLCJ0b1BhaXJzIiwiaXNBcnJheSIsImlzQWN0aXZlIiwiaWQiLCJyZXBsYWNlIiwicGFnZSIsInVybCIsImNsb25lIiwiYnVuZGxlSWQiLCJwdXNoIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJidW5kbGVJZHMiLCJpbmNsdWRlU2FmYXJpIiwiaXNTYWZhcmkiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwicmV0cnlJbnRlcnZhbCIsInJldHJ5Q291bnQiLCJwb3NzaWJsZUFwcElkcyIsImdldFBvc3NpYmxlRGVidWdnZXJBcHBLZXlzIiwiam9pbiIsImF0dGVtcHRlZEFwcElkS2V5IiwicmVzdWx0Iiwic2VhcmNoRm9yUGFnZSIsIkVycm9yIiwiaWduIiwiYXBwc0RpY3QiLCJ2YWx1ZXMiLCJwcm9taXNlIiwiZGljdCIsInNlbGVjdFBhZ2UiLCJwYWdlSWRLZXkiLCJza2lwUmVhZHlDaGVjayIsImNoZWNrUGFnZUlzUmVhZHkiLCJwYWdlVW5sb2FkIiwiYXBwcyIsImdldFZhbHVlU3RyaW5nIiwia2V5IiwidmFsdWUiLCJpc0Z1bmN0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsIkFycmF5IiwibGVuZ3RoIiwicHJlZml4IiwiayIsInYiLCJ2YWx1ZVN0cmluZyIsInVwZGF0ZUFwcHNXaXRoRGljdCIsImVudHJ5IiwiYXBwSW5mb0Zyb21EaWN0IiwiaXNVbmRlZmluZWQiLCJkZWZlcnJlZFByb21pc2UiLCJnZXREZWJ1Z2dlckFwcEtleSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWl4aW5zL2Nvbm5lY3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgYXBwSW5mb0Zyb21EaWN0LCBwYWdlQXJyYXlGcm9tRGljdCwgZ2V0RGVidWdnZXJBcHBLZXksXG4gICAgICAgICBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cywgc2ltcGxlU3RyaW5naWZ5LCBkZWZlcnJlZFByb21pc2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgZXZlbnRzIGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHRpbWluZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBBUFBfQ09OTkVDVF9USU1FT1VUX01TID0gMDtcbmNvbnN0IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TID0gMTAwO1xuY29uc3QgU0VMRUNUX0FQUF9SRVRSSUVTID0gMjA7XG5jb25zdCBTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TID0gNTAwO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEJMQU5LX1BBR0VfVVJMID0gJ2Fib3V0OmJsYW5rJztcblxuXG5hc3luYyBmdW5jdGlvbiBzZXRDb25uZWN0aW9uS2V5ICgpIHtcbiAgbG9nLmRlYnVnKCdTZW5kaW5nIGNvbm5lY3Rpb24ga2V5IHJlcXVlc3QnKTtcbiAgLy8gc2VuZCBidXQgb25seSB3YWl0IHRvIG1ha2Ugc3VyZSB0aGUgc29ja2V0IHdvcmtlZFxuICAvLyBhcyByZXNwb25zZSBmcm9tIFdlYiBJbnNwZWN0b3IgY2FuIHRha2UgYSBsb25nIHRpbWVcbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnc2V0Q29ubmVjdGlvbktleScsIHt9LCBmYWxzZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QgKHRpbWVvdXQgPSBBUFBfQ09OTkVDVF9USU1FT1VUX01TKSB7XG4gIHRoaXMuc2V0dXAoKTtcblxuICAvLyBpbml0aWFsaXplIHRoZSBycGMgY2xpZW50XG4gIHRoaXMuaW5pdFJwY0NsaWVudCgpO1xuXG4gIC8vIGxpc3RlbiBmb3IgYmFzaWMgZGVidWdnZXItbGV2ZWwgZXZlbnRzXG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX3JlcG9ydFNldHVwOicsIF8ubm9vcCk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsIHRoaXMub25QYWdlQ2hhbmdlLmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JywgdGhpcy5vbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgdGhpcy5vbkFwcENvbm5lY3QuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIHRoaXMub25BcHBEaXNjb25uZWN0LmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JywgdGhpcy5vbkFwcFVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLCB0aGlzLm9uQ29ubmVjdGVkRHJpdmVyTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOicsIHRoaXMub25DdXJyZW50U3RhdGUuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdQYWdlLmZyYW1lRGV0YWNoZWQnLCB0aGlzLmZyYW1lRGV0YWNoZWQuYmluZCh0aGlzKSk7XG5cbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuY29ubmVjdCgpO1xuXG4gIC8vIGdldCB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5zZXRDb25uZWN0aW9uS2V5KCk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFwcGxpY2F0aW9ucyB0byBiZSByZXBvcnRlZGApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiAhXy5pc0VtcHR5KHRoaXMuYXBwRGljdCksIHtcbiAgICAgICAgICB3YWl0TXM6IHRpbWVvdXQsXG4gICAgICAgICAgaW50ZXJ2YWw6IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cuZGVidWcoYFRpbWVkIG91dCB3YWl0aW5nIGZvciBhcHBsaWNhdGlvbnMgdG8gYmUgcmVwb3J0ZWRgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXBwRGljdCB8fCB7fTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBFcnJvciBzZXR0aW5nIGNvbm5lY3Rpb24ga2V5OiAke2Vyci5tZXNzYWdlfWApO1xuICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0ICgpIHtcbiAgaWYgKHRoaXMucnBjQ2xpZW50KSB7XG4gICAgYXdhaXQgdGhpcy5ycGNDbGllbnQuZGlzY29ubmVjdCgpO1xuICB9XG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfRElTQ09OTkVDVCwgdHJ1ZSk7XG4gIHRoaXMudGVhcmRvd24oKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VsZWN0QXBwIChjdXJyZW50VXJsID0gbnVsbCwgbWF4VHJpZXMgPSBTRUxFQ1RfQVBQX1JFVFJJRVMsIGlnbm9yZUFib3V0QmxhbmtVcmwgPSBmYWxzZSkge1xuICBjb25zdCBzaG91bGRDaGVja0ZvclRhcmdldCA9IHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB0aGlzLnJwY0NsaWVudC5zaG91bGRDaGVja0ZvclRhcmdldCA9IGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgbG9nLmRlYnVnKCdTZWxlY3RpbmcgYXBwbGljYXRpb24nKTtcbiAgICBpZiAoIXRoaXMuYXBwRGljdCB8fCBfLmlzRW1wdHkodGhpcy5hcHBEaWN0KSkge1xuICAgICAgbG9nLmRlYnVnKCdObyBhcHBsaWNhdGlvbnMgY3VycmVudGx5IGNvbm5lY3RlZC4nKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YXBwSWRLZXksIHBhZ2VEaWN0fSA9IGF3YWl0IHRoaXMuc2VhcmNoRm9yQXBwKGN1cnJlbnRVcmwsIG1heFRyaWVzLCBpZ25vcmVBYm91dEJsYW5rVXJsKTtcblxuICAgIC8vIGlmLCBhZnRlciBhbGwgdGhpcywgd2UgaGF2ZSBubyBkaWN0aW9uYXJ5LCB3ZSBoYXZlIGZhaWxlZFxuICAgIGlmICghYXBwSWRLZXkgfHwgIXBhZ2VEaWN0KSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGNvbm5lY3QgdG8gYSB2YWxpZCBhcHAgYWZ0ZXIgJHttYXhUcmllc30gdHJpZXMuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwSWRLZXkgIT09IGFwcElkS2V5KSB7XG4gICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIGFsdGVyZWQgYXBwIGlkLCB1cGRhdGluZyBmcm9tICcke3RoaXMuYXBwSWRLZXl9JyB0byAnJHthcHBJZEtleX0nYCk7XG4gICAgICB0aGlzLmFwcElkS2V5ID0gYXBwSWRLZXk7XG4gICAgfVxuXG4gICAgbG9nQXBwbGljYXRpb25EaWN0aW9uYXJ5KHRoaXMuYXBwRGljdCk7XG5cbiAgICAvLyB0cmFuc2xhdGUgdGhlIGRpY3Rpb25hcnkgaW50byBhIHVzZWZ1bCBmb3JtLCBhbmQgcmV0dXJuIHRvIHNlbmRlclxuICAgIGNvbnN0IHBhZ2VBcnJheSA9IF8uaXNFbXB0eSh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSlcbiAgICAgID8gcGFnZUFycmF5RnJvbURpY3QocGFnZURpY3QpXG4gICAgICA6IHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5O1xuICAgIGxvZy5kZWJ1ZyhgRmluYWxseSBzZWxlY3RpbmcgYXBwICR7dGhpcy5hcHBJZEtleX06ICR7c2ltcGxlU3RyaW5naWZ5KHBhZ2VBcnJheSl9YCk7XG5cbiAgICBsZXQgZnVsbFBhZ2VBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2FwcCwgaW5mb10gb2YgXy50b1BhaXJzKHRoaXMuYXBwRGljdCkpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGluZm8ucGFnZUFycmF5KSB8fCAhaW5mby5pc0FjdGl2ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkID0gYXBwLnJlcGxhY2UoJ1BJRDonLCAnJyk7XG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgaW5mby5wYWdlQXJyYXkpIHtcbiAgICAgICAgaWYgKCEoaWdub3JlQWJvdXRCbGFua1VybCAmJiBwYWdlLnVybCA9PT0gQkxBTktfUEFHRV9VUkwpKSB7XG4gICAgICAgICAgbGV0IHBhZ2VEaWN0ID0gXy5jbG9uZShwYWdlKTtcbiAgICAgICAgICBwYWdlRGljdC5pZCA9IGAke2lkfS4ke3BhZ2VEaWN0LmlkfWA7XG4gICAgICAgICAgcGFnZURpY3QuYnVuZGxlSWQgPSBpbmZvLmJ1bmRsZUlkO1xuICAgICAgICAgIGZ1bGxQYWdlQXJyYXkucHVzaChwYWdlRGljdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2cuZGVidWcoYFNlbGVjdGVkIGFwcCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIHJldHVybiBmdWxsUGFnZUFycmF5O1xuICB9IGZpbmFsbHkge1xuICAgIHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0ID0gc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoRm9yQXBwIChjdXJyZW50VXJsLCBtYXhUcmllcywgaWdub3JlQWJvdXRCbGFua1VybCkge1xuICBjb25zdCBidW5kbGVJZHMgPSB0aGlzLmluY2x1ZGVTYWZhcmkgJiYgIXRoaXMuaXNTYWZhcmlcbiAgICA/IFt0aGlzLmJ1bmRsZUlkLCAuLi50aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMsIFNBRkFSSV9CVU5ETEVfSURdXG4gICAgOiBbdGhpcy5idW5kbGVJZCwgLi4udGhpcy5hZGRpdGlvbmFsQnVuZGxlSWRzXTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChtYXhUcmllcywgU0VMRUNUX0FQUF9SRVRSWV9TTEVFUF9NUywgYXN5bmMgKHJldHJ5Q291bnQpID0+IHtcbiAgICAgIGxvZ0FwcGxpY2F0aW9uRGljdGlvbmFyeSh0aGlzLmFwcERpY3QpO1xuICAgICAgY29uc3QgcG9zc2libGVBcHBJZHMgPSBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyhidW5kbGVJZHMsIHRoaXMuYXBwRGljdCk7XG4gICAgICBsb2cuZGVidWcoYFRyeWluZyBvdXQgdGhlIHBvc3NpYmxlIGFwcCBpZHM6ICR7cG9zc2libGVBcHBJZHMuam9pbignLCAnKX0gKHRyeSAjJHtyZXRyeUNvdW50ICsgMX0gb2YgJHttYXhUcmllc30pYCk7XG4gICAgICBmb3IgKGNvbnN0IGF0dGVtcHRlZEFwcElkS2V5IG9mIHBvc3NpYmxlQXBwSWRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmFwcERpY3RbYXR0ZW1wdGVkQXBwSWRLZXldLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYFNraXBwaW5nIGFwcCAnJHthdHRlbXB0ZWRBcHBJZEtleX0nIGJlY2F1c2UgaXQgaXMgbm90IGFjdGl2ZWApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyBhcHAgJyR7YXR0ZW1wdGVkQXBwSWRLZXl9J2ApO1xuICAgICAgICAgIGNvbnN0IFthcHBJZEtleSwgcGFnZURpY3RdID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VsZWN0QXBwKGF0dGVtcHRlZEFwcElkS2V5LCB0aGlzLm9uQXBwQ29ubmVjdC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAvLyBpbiBpT1MgOC4yIHRoZSBjb25uZWN0IGxvZ2ljIGhhcHBlbnMsIGJ1dCB3aXRoIGFuIGVtcHR5IGRpY3Rpb25hcnlcbiAgICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhZ2VEaWN0KSkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKCdFbXB0eSBwYWdlIGRpY3Rpb25hcnkgcmVjZWl2ZWQuIFRyeWluZyBhZ2Fpbi4nKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHNhdmUgdGhlIHBhZ2UgYXJyYXkgZm9yIHRoaXMgYXBwXG4gICAgICAgICAgdGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgICAgICAgICAvLyBpZiB3ZSBhcmUgbG9va2luZyBmb3IgYSBwYXJ0aWN1bGFyIHVybCwgbWFrZSBzdXJlIHdlXG4gICAgICAgICAgLy8gaGF2ZSB0aGUgcmlnaHQgcGFnZS4gSWdub3JlIGVtcHR5IG9yIHVuZGVmaW5lZCB1cmxzLlxuICAgICAgICAgIC8vIElnbm9yZSBhYm91dDpibGFuayBpZiByZXF1ZXN0ZWQuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hGb3JQYWdlKHRoaXMuYXBwRGljdCwgY3VycmVudFVybCwgaWdub3JlQWJvdXRCbGFua1VybCk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudFVybCkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCBhcHAsIGJ1dCBleHBlY3RlZCB1cmwgKCcke2N1cnJlbnRVcmx9Jykgd2FzIG5vdCBmb3VuZC4gVHJ5aW5nIGFnYWluLmApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoJ1JlY2VpdmVkIGFwcCwgYnV0IG5vIG1hdGNoIHdhcyBmb3VuZC4gVHJ5aW5nIGFnYWluLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBFcnJvciBjaGVja2luZyBhcHBsaWNhdGlvbjogJyR7ZXJyLm1lc3NhZ2V9Jy4gUmV0cnlpbmcgY29ubmVjdGlvbmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXRyeUNvdW50Kys7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGFuIGFwcCB0byBzZWxlY3QnKTtcbiAgICB9LCAwKTtcbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBjb25uZWN0IHRvIGEgdmFsaWQgYXBwIGFmdGVyICR7bWF4VHJpZXN9IHRyaWVzLmApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlYXJjaEZvclBhZ2UgKGFwcHNEaWN0LCBjdXJyZW50VXJsID0gbnVsbCwgaWdub3JlQWJvdXRCbGFua1VybCA9IGZhbHNlKSB7XG4gIGZvciAoY29uc3QgYXBwRGljdCBvZiBfLnZhbHVlcyhhcHBzRGljdCkpIHtcbiAgICBpZiAoIWFwcERpY3QgfHwgIWFwcERpY3QuaXNBY3RpdmUgfHwgIWFwcERpY3QucGFnZUFycmF5IHx8IGFwcERpY3QucGFnZUFycmF5LnByb21pc2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGljdCBvZiBhcHBEaWN0LnBhZ2VBcnJheSkge1xuICAgICAgaWYgKCghaWdub3JlQWJvdXRCbGFua1VybCB8fCBkaWN0LnVybCAhPT0gQkxBTktfUEFHRV9VUkwpICYmXG4gICAgICAgICAgKCFjdXJyZW50VXJsIHx8IGRpY3QudXJsID09PSBjdXJyZW50VXJsIHx8IGRpY3QudXJsID09PSBgJHtjdXJyZW50VXJsfS9gKSkge1xuICAgICAgICByZXR1cm4geyBhcHBJZEtleTogYXBwRGljdC5pZCwgcGFnZURpY3Q6IGRpY3QgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbGVjdFBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXksIHNraXBSZWFkeUNoZWNrID0gZmFsc2UpIHtcbiAgdGhpcy5hcHBJZEtleSA9IGBQSUQ6JHthcHBJZEtleX1gO1xuICB0aGlzLnBhZ2VJZEtleSA9IHBhZ2VJZEtleTtcblxuICBsb2cuZGVidWcoYFNlbGVjdGluZyBwYWdlICcke3BhZ2VJZEtleX0nIG9uIGFwcCAnJHt0aGlzLmFwcElkS2V5fScgYW5kIGZvcndhcmRpbmcgc29ja2V0IHNldHVwYCk7XG5cbiAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcblxuICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZWxlY3RQYWdlKHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleSk7XG5cbiAgLy8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcmVhZHkgdG8gZ29cbiAgaWYgKCFza2lwUmVhZHlDaGVjayAmJiAhYXdhaXQgdGhpcy5jaGVja1BhZ2VJc1JlYWR5KCkpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2VVbmxvYWQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU2VsZWN0ZWQgcGFnZSBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xufVxuXG5mdW5jdGlvbiBsb2dBcHBsaWNhdGlvbkRpY3Rpb25hcnkgKGFwcHMpIHtcbiAgZnVuY3Rpb24gZ2V0VmFsdWVTdHJpbmcgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgcmV0dXJuICdbRnVuY3Rpb25dJztcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gJ3BhZ2VBcnJheScgJiYgIV8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgXCJXYWl0aW5nIGZvciBkYXRhXCJgO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG4gIGxvZy5kZWJ1ZygnQ3VycmVudCBhcHBsaWNhdGlvbnMgYXZhaWxhYmxlOicpO1xuICBmb3IgKGNvbnN0IFthcHAsIGluZm9dIG9mIF8udG9QYWlycyhhcHBzKSkge1xuICAgIGxvZy5kZWJ1ZyhgICAgIEFwcGxpY2F0aW9uOiBcIiR7YXBwfVwiYCk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKGluZm8pKSB7XG4gICAgICBpZiAoa2V5ID09PSAncGFnZUFycmF5JyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgbG9nLmRlYnVnKGAgICAgICAgICR7a2V5fTpgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgbGV0IHByZWZpeCA9ICctICc7XG4gICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgXy50b1BhaXJzKHBhZ2UpKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYCAgICAgICAgICAke3ByZWZpeH0ke2t9OiAke0pTT04uc3RyaW5naWZ5KHYpfWApO1xuICAgICAgICAgICAgcHJlZml4ID0gJyAgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gZ2V0VmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgICAgICAgICAke2tleX06ICR7dmFsdWVTdHJpbmd9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUFwcHNXaXRoRGljdCAoZGljdCkge1xuICAvLyBnZXQgdGhlIGRpY3Rpb25hcnkgZW50cnkgaW50byBhIG5pY2UgZm9ybSwgYW5kIGFkZCBpdCB0byB0aGVcbiAgLy8gYXBwbGljYXRpb24gZGljdGlvbmFyeVxuICB0aGlzLmFwcERpY3QgPSB0aGlzLmFwcERpY3QgfHwge307XG4gIGxldCBbaWQsIGVudHJ5XSA9IGFwcEluZm9Gcm9tRGljdChkaWN0KTtcbiAgaWYgKHRoaXMuYXBwRGljdFtpZF0pIHtcbiAgICAvLyBwcmVzZXJ2ZSB0aGUgcGFnZSBkaWN0aW9uYXJ5IGZvciB0aGlzIGVudHJ5XG4gICAgZW50cnkucGFnZUFycmF5ID0gdGhpcy5hcHBEaWN0W2lkXS5wYWdlQXJyYXk7XG4gIH1cbiAgdGhpcy5hcHBEaWN0W2lkXSA9IGVudHJ5O1xuXG4gIC8vIGFkZCBhIHByb21pc2UgdG8gZ2V0IHRoZSBwYWdlIGRpY3Rpb25hcnlcbiAgaWYgKF8uaXNVbmRlZmluZWQoZW50cnkucGFnZUFycmF5KSkge1xuICAgIGVudHJ5LnBhZ2VBcnJheSA9IGRlZmVycmVkUHJvbWlzZSgpO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGdldCB0aGUgYXBwIGlkIGZyb20gb3VyIGNvbm5lY3RlZCBhcHBzXG4gIGlmICghdGhpcy5hcHBJZEtleSkge1xuICAgIHRoaXMuYXBwSWRLZXkgPSBnZXREZWJ1Z2dlckFwcEtleSh0aGlzLmJ1bmRsZUlkLCB0aGlzLmFwcERpY3QpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHsgc2V0Q29ubmVjdGlvbktleSwgY29ubmVjdCwgZGlzY29ubmVjdCwgc2VsZWN0QXBwLCBzZWFyY2hGb3JBcHAsIHNlYXJjaEZvclBhZ2UsIHNlbGVj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
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","names":["_logger","_interopRequireDefault","require","_utils","_events","_support","_asyncbox","_lodash","APP_CONNECT_TIMEOUT_MS","APP_CONNECT_INTERVAL_MS","SELECT_APP_RETRIES","SELECT_APP_RETRY_SLEEP_MS","SAFARI_BUNDLE_ID","BLANK_PAGE_URL","setConnectionKey","log","debug","rpcClient","send","connect","timeout","setup","initRpcClient","on","_","noop","onPageChange","bind","onConnectedApplicationList","onAppConnect","onAppDisconnect","onAppUpdate","onConnectedDriverList","onCurrentState","frameDetached","waitForCondition","isEmpty","appDict","waitMs","interval","err","error","message","disconnect","emit","events","EVENT_DISCONNECT","teardown","selectApp","currentUrl","maxTries","ignoreAboutBlankUrl","shouldCheckForTarget","timer","timing","Timer","start","appIdKey","pageDict","searchForApp","errorAndThrow","logApplicationDictionary","pageArray","pageArrayFromDict","simpleStringify","fullPageArray","app","info","toPairs","isArray","isActive","id","replace","page","url","clone","bundleId","push","getDuration","asMilliSeconds","toFixed","bundleIds","includeSafari","isSafari","additionalBundleIds","retryInterval","retryCount","possibleAppIds","getPossibleDebuggerAppKeys","join","attemptedAppIdKey","result","searchForPage","Error","ign","appsDict","values","promise","dict","selectPage","pageIdKey","skipReadyCheck","checkPageIsReady","pageUnload","apps","getValueString","key","value","isFunction","JSON","stringify","Array","length","prefix","k","v","valueString","updateAppsWithDict","entry","appInfoFromDict","isUndefined","deferredPromise","getDebuggerAppKey","_default","exports","default"],"sources":["../../../lib/mixins/connect.js"],"sourcesContent":["import log from '../logger';\nimport { appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,\n getPossibleDebuggerAppKeys, simpleStringify, deferredPromise } from '../utils';\nimport events from './events';\nimport { timing } from '@appium/support';\nimport { retryInterval, waitForCondition } from 'asyncbox';\nimport _ from 'lodash';\n\n\nconst APP_CONNECT_TIMEOUT_MS = 0;\nconst APP_CONNECT_INTERVAL_MS = 100;\nconst SELECT_APP_RETRIES = 20;\nconst SELECT_APP_RETRY_SLEEP_MS = 500;\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\nconst BLANK_PAGE_URL = 'about:blank';\n\n\nasync function setConnectionKey () {\n log.debug('Sending connection key request');\n // send but only wait to make sure the socket worked\n // as response from Web Inspector can take a long time\n await this.rpcClient.send('setConnectionKey', {}, false);\n}\n\nasync function connect (timeout = APP_CONNECT_TIMEOUT_MS) {\n this.setup();\n\n // initialize the rpc client\n this.initRpcClient();\n\n // listen for basic debugger-level events\n this.rpcClient.on('_rpc_reportSetup:', _.noop);\n this.rpcClient.on('_rpc_forwardGetListing:', this.onPageChange.bind(this));\n this.rpcClient.on('_rpc_reportConnectedApplicationList:', this.onConnectedApplicationList.bind(this));\n this.rpcClient.on('_rpc_applicationConnected:', this.onAppConnect.bind(this));\n this.rpcClient.on('_rpc_applicationDisconnected:', this.onAppDisconnect.bind(this));\n this.rpcClient.on('_rpc_applicationUpdated:', this.onAppUpdate.bind(this));\n this.rpcClient.on('_rpc_reportConnectedDriverList:', this.onConnectedDriverList.bind(this));\n this.rpcClient.on('_rpc_reportCurrentState:', this.onCurrentState.bind(this));\n this.rpcClient.on('Page.frameDetached', this.frameDetached.bind(this));\n\n await this.rpcClient.connect();\n\n // get the connection information about the app\n try {\n await this.setConnectionKey();\n if (timeout) {\n log.debug(`Waiting up to ${timeout}ms for applications to be reported`);\n try {\n await waitForCondition(() => !_.isEmpty(this.appDict), {\n waitMs: timeout,\n interval: APP_CONNECT_INTERVAL_MS,\n });\n } catch (err) {\n log.debug(`Timed out waiting for applications to be reported`);\n }\n }\n return this.appDict || {};\n } catch (err) {\n log.error(`Error setting connection key: ${err.message}`);\n await this.disconnect();\n throw err;\n }\n}\n\nasync function disconnect () {\n if (this.rpcClient) {\n await this.rpcClient.disconnect();\n }\n this.emit(events.EVENT_DISCONNECT, true);\n this.teardown();\n}\n\nasync function selectApp (currentUrl = null, maxTries = SELECT_APP_RETRIES, ignoreAboutBlankUrl = false) {\n const shouldCheckForTarget = this.rpcClient.shouldCheckForTarget;\n this.rpcClient.shouldCheckForTarget = false;\n try {\n const timer = new timing.Timer().start();\n log.debug('Selecting application');\n if (!this.appDict || _.isEmpty(this.appDict)) {\n log.debug('No applications currently connected.');\n return [];\n }\n\n const {appIdKey, pageDict} = await this.searchForApp(currentUrl, maxTries, ignoreAboutBlankUrl);\n\n // if, after all this, we have no dictionary, we have failed\n if (!appIdKey || !pageDict) {\n log.errorAndThrow(`Could not connect to a valid app after ${maxTries} tries.`);\n }\n\n if (this.appIdKey !== appIdKey) {\n log.debug(`Received altered app id, updating from '${this.appIdKey}' to '${appIdKey}'`);\n this.appIdKey = appIdKey;\n }\n\n logApplicationDictionary(this.appDict);\n\n // translate the dictionary into a useful form, and return to sender\n const pageArray = _.isEmpty(this.appDict[appIdKey].pageArray)\n ? pageArrayFromDict(pageDict)\n : this.appDict[appIdKey].pageArray;\n log.debug(`Finally selecting app ${this.appIdKey}: ${simpleStringify(pageArray)}`);\n\n let fullPageArray = [];\n for (const [app, info] of _.toPairs(this.appDict)) {\n if (!_.isArray(info.pageArray) || !info.isActive) {\n continue;\n }\n const id = app.replace('PID:', '');\n for (const page of info.pageArray) {\n if (!(ignoreAboutBlankUrl && page.url === BLANK_PAGE_URL)) {\n let pageDict = _.clone(page);\n pageDict.id = `${id}.${pageDict.id}`;\n pageDict.bundleId = info.bundleId;\n fullPageArray.push(pageDict);\n }\n }\n }\n\n log.debug(`Selected app after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n return fullPageArray;\n } finally {\n this.rpcClient.shouldCheckForTarget = shouldCheckForTarget;\n }\n}\n\nasync function searchForApp (currentUrl, maxTries, ignoreAboutBlankUrl) {\n const bundleIds = this.includeSafari && !this.isSafari\n ? [this.bundleId, ...this.additionalBundleIds, SAFARI_BUNDLE_ID]\n : [this.bundleId, ...this.additionalBundleIds];\n try {\n return await retryInterval(maxTries, SELECT_APP_RETRY_SLEEP_MS, async (retryCount) => {\n logApplicationDictionary(this.appDict);\n const possibleAppIds = getPossibleDebuggerAppKeys(bundleIds, this.appDict);\n log.debug(`Trying out the possible app ids: ${possibleAppIds.join(', ')} (try #${retryCount + 1} of ${maxTries})`);\n for (const attemptedAppIdKey of possibleAppIds) {\n try {\n if (!this.appDict[attemptedAppIdKey].isActive) {\n log.debug(`Skipping app '${attemptedAppIdKey}' because it is not active`);\n continue;\n }\n log.debug(`Attempting app '${attemptedAppIdKey}'`);\n const [appIdKey, pageDict] = await this.rpcClient.selectApp(attemptedAppIdKey, this.onAppConnect.bind(this));\n // in iOS 8.2 the connect logic happens, but with an empty dictionary\n // which leads to the remote debugger getting disconnected, and into a loop\n if (_.isEmpty(pageDict)) {\n log.debug('Empty page dictionary received. Trying again.');\n continue;\n }\n\n // save the page array for this app\n this.appDict[appIdKey].pageArray = pageArrayFromDict(pageDict);\n\n // if we are looking for a particular url, make sure we\n // have the right page. Ignore empty or undefined urls.\n // Ignore about:blank if requested.\n const result = this.searchForPage(this.appDict, currentUrl, ignoreAboutBlankUrl);\n if (result) {\n return result;\n }\n\n if (currentUrl) {\n log.debug(`Received app, but expected url ('${currentUrl}') was not found. Trying again.`);\n } else {\n log.debug('Received app, but no match was found. Trying again.');\n }\n } catch (err) {\n log.debug(`Error checking application: '${err.message}'. Retrying connection`);\n }\n }\n retryCount++;\n throw new Error('Failed to find an app to select');\n }, 0);\n } catch (ign) {\n log.errorAndThrow(`Could not connect to a valid app after ${maxTries} tries.`);\n }\n}\n\nfunction searchForPage (appsDict, currentUrl = null, ignoreAboutBlankUrl = false) {\n for (const appDict of _.values(appsDict)) {\n if (!appDict || !appDict.isActive || !appDict.pageArray || appDict.pageArray.promise) {\n continue;\n }\n\n for (const dict of appDict.pageArray) {\n if ((!ignoreAboutBlankUrl || dict.url !== BLANK_PAGE_URL) &&\n (!currentUrl || dict.url === currentUrl || dict.url === `${currentUrl}/`)) {\n return { appIdKey: appDict.id, pageDict: dict };\n }\n }\n }\n return null;\n}\n\nasync function selectPage (appIdKey, pageIdKey, skipReadyCheck = false) {\n this.appIdKey = `PID:${appIdKey}`;\n this.pageIdKey = pageIdKey;\n\n log.debug(`Selecting page '${pageIdKey}' on app '${this.appIdKey}' and forwarding socket setup`);\n\n const timer = new timing.Timer().start();\n\n await this.rpcClient.selectPage(this.appIdKey, pageIdKey);\n\n // make sure everything is ready to go\n if (!skipReadyCheck && !await this.checkPageIsReady()) {\n await this.pageUnload();\n }\n\n log.debug(`Selected page after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n}\n\nfunction logApplicationDictionary (apps) {\n function getValueString (key, value) {\n if (_.isFunction(value)) {\n return '[Function]';\n }\n if (key === 'pageArray' && !_.isArray(value)) {\n return `\"Waiting for data\"`;\n }\n return JSON.stringify(value);\n }\n log.debug('Current applications available:');\n for (const [app, info] of _.toPairs(apps)) {\n log.debug(` Application: \"${app}\"`);\n for (const [key, value] of _.toPairs(info)) {\n if (key === 'pageArray' && Array.isArray(value) && value.length) {\n log.debug(` ${key}:`);\n for (const page of value) {\n let prefix = '- ';\n for (const [k, v] of _.toPairs(page)) {\n log.debug(` ${prefix}${k}: ${JSON.stringify(v)}`);\n prefix = ' ';\n }\n }\n } else {\n const valueString = getValueString(key, value);\n log.debug(` ${key}: ${valueString}`);\n }\n }\n }\n}\n\nfunction updateAppsWithDict (dict) {\n // get the dictionary entry into a nice form, and add it to the\n // application dictionary\n this.appDict = this.appDict || {};\n let [id, entry] = appInfoFromDict(dict);\n if (this.appDict[id]) {\n // preserve the page dictionary for this entry\n entry.pageArray = this.appDict[id].pageArray;\n }\n this.appDict[id] = entry;\n\n // add a promise to get the page dictionary\n if (_.isUndefined(entry.pageArray)) {\n entry.pageArray = deferredPromise();\n }\n\n // try to get the app id from our connected apps\n if (!this.appIdKey) {\n this.appIdKey = getDebuggerAppKey(this.bundleId, this.appDict);\n }\n}\n\nexport default { setConnectionKey, connect, disconnect, selectApp, searchForApp, searchForPage, selectPage, updateAppsWithDict };\n"],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","names":["_logger","_interopRequireDefault","require","_utils","_events","_support","_asyncbox","_lodash","APP_CONNECT_TIMEOUT_MS","APP_CONNECT_INTERVAL_MS","SELECT_APP_RETRIES","SELECT_APP_RETRY_SLEEP_MS","SAFARI_BUNDLE_ID","BLANK_PAGE_URL","setConnectionKey","log","debug","rpcClient","send","connect","timeout","setup","initRpcClient","on","_","noop","onPageChange","bind","onConnectedApplicationList","onAppConnect","onAppDisconnect","onAppUpdate","onConnectedDriverList","onCurrentState","frameDetached","waitForCondition","isEmpty","appDict","waitMs","interval","err","error","message","disconnect","emit","events","EVENT_DISCONNECT","teardown","selectApp","currentUrl","maxTries","ignoreAboutBlankUrl","shouldCheckForTarget","timer","timing","Timer","start","appIdKey","pageDict","searchForApp","errorAndThrow","logApplicationDictionary","pageArray","pageArrayFromDict","simpleStringify","fullPageArray","app","info","toPairs","isArray","isActive","id","replace","page","url","clone","bundleId","push","getDuration","asMilliSeconds","toFixed","bundleIds","includeSafari","isSafari","additionalBundleIds","retryInterval","retryCount","possibleAppIds","getPossibleDebuggerAppKeys","join","attemptedAppIdKey","result","searchForPage","Error","ign","appsDict","values","promise","dict","selectPage","pageIdKey","skipReadyCheck","checkPageIsReady","pageUnload","apps","getValueString","key","value","isFunction","JSON","stringify","Array","length","prefix","k","v","valueString","updateAppsWithDict","entry","appInfoFromDict","isUndefined","deferredPromise","getDebuggerAppKey","_default","exports","default"],"sources":["../../../lib/mixins/connect.js"],"sourcesContent":["import log from '../logger';\nimport { appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,\n getPossibleDebuggerAppKeys, simpleStringify, deferredPromise } from '../utils';\nimport events from './events';\nimport { timing } from '@appium/support';\nimport { retryInterval, waitForCondition } from 'asyncbox';\nimport _ from 'lodash';\n\n\nconst APP_CONNECT_TIMEOUT_MS = 0;\nconst APP_CONNECT_INTERVAL_MS = 100;\nconst SELECT_APP_RETRIES = 20;\nconst SELECT_APP_RETRY_SLEEP_MS = 500;\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\nconst BLANK_PAGE_URL = 'about:blank';\n\n\nasync function setConnectionKey () {\n log.debug('Sending connection key request');\n // send but only wait to make sure the socket worked\n // as response from Web Inspector can take a long time\n await this.rpcClient.send('setConnectionKey', {}, false);\n}\n\nasync function connect (timeout = APP_CONNECT_TIMEOUT_MS) {\n this.setup();\n\n // initialize the rpc client\n this.initRpcClient();\n\n // listen for basic debugger-level events\n this.rpcClient.on('_rpc_reportSetup:', _.noop);\n this.rpcClient.on('_rpc_forwardGetListing:', this.onPageChange.bind(this));\n this.rpcClient.on('_rpc_reportConnectedApplicationList:', this.onConnectedApplicationList.bind(this));\n this.rpcClient.on('_rpc_applicationConnected:', this.onAppConnect.bind(this));\n this.rpcClient.on('_rpc_applicationDisconnected:', this.onAppDisconnect.bind(this));\n this.rpcClient.on('_rpc_applicationUpdated:', this.onAppUpdate.bind(this));\n this.rpcClient.on('_rpc_reportConnectedDriverList:', this.onConnectedDriverList.bind(this));\n this.rpcClient.on('_rpc_reportCurrentState:', this.onCurrentState.bind(this));\n this.rpcClient.on('Page.frameDetached', this.frameDetached.bind(this));\n\n await this.rpcClient.connect();\n\n // get the connection information about the app\n try {\n await this.setConnectionKey();\n if (timeout) {\n log.debug(`Waiting up to ${timeout}ms for applications to be reported`);\n try {\n await waitForCondition(() => !_.isEmpty(this.appDict), {\n waitMs: timeout,\n interval: APP_CONNECT_INTERVAL_MS,\n });\n } catch (err) {\n log.debug(`Timed out waiting for applications to be reported`);\n }\n }\n return this.appDict || {};\n } catch (err) {\n log.error(`Error setting connection key: ${err.message}`);\n await this.disconnect();\n throw err;\n }\n}\n\nasync function disconnect () {\n if (this.rpcClient) {\n await this.rpcClient.disconnect();\n }\n this.emit(events.EVENT_DISCONNECT, true);\n this.teardown();\n}\n\nasync function selectApp (currentUrl = null, maxTries = SELECT_APP_RETRIES, ignoreAboutBlankUrl = false) {\n const shouldCheckForTarget = this.rpcClient.shouldCheckForTarget;\n this.rpcClient.shouldCheckForTarget = false;\n try {\n const timer = new timing.Timer().start();\n log.debug('Selecting application');\n if (!this.appDict || _.isEmpty(this.appDict)) {\n log.debug('No applications currently connected.');\n return [];\n }\n\n const {appIdKey, pageDict} = await this.searchForApp(currentUrl, maxTries, ignoreAboutBlankUrl);\n\n // if, after all this, we have no dictionary, we have failed\n if (!appIdKey || !pageDict) {\n log.errorAndThrow(`Could not connect to a valid app after ${maxTries} tries.`);\n }\n\n if (this.appIdKey !== appIdKey) {\n log.debug(`Received altered app id, updating from '${this.appIdKey}' to '${appIdKey}'`);\n this.appIdKey = appIdKey;\n }\n\n logApplicationDictionary(this.appDict);\n\n // translate the dictionary into a useful form, and return to sender\n const pageArray = _.isEmpty(this.appDict[appIdKey].pageArray)\n ? pageArrayFromDict(pageDict)\n : this.appDict[appIdKey].pageArray;\n log.debug(`Finally selecting app ${this.appIdKey}: ${simpleStringify(pageArray)}`);\n\n let fullPageArray = [];\n for (const [app, info] of _.toPairs(this.appDict)) {\n if (!_.isArray(info.pageArray) || !info.isActive) {\n continue;\n }\n const id = app.replace('PID:', '');\n for (const page of info.pageArray) {\n if (!(ignoreAboutBlankUrl && page.url === BLANK_PAGE_URL)) {\n let pageDict = _.clone(page);\n pageDict.id = `${id}.${pageDict.id}`;\n pageDict.bundleId = info.bundleId;\n fullPageArray.push(pageDict);\n }\n }\n }\n\n log.debug(`Selected app after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n return fullPageArray;\n } finally {\n this.rpcClient.shouldCheckForTarget = shouldCheckForTarget;\n }\n}\n\nasync function searchForApp (currentUrl, maxTries, ignoreAboutBlankUrl) {\n const bundleIds = this.includeSafari && !this.isSafari\n ? [this.bundleId, ...this.additionalBundleIds, SAFARI_BUNDLE_ID]\n : [this.bundleId, ...this.additionalBundleIds];\n try {\n return await retryInterval(maxTries, SELECT_APP_RETRY_SLEEP_MS, async (retryCount) => {\n logApplicationDictionary(this.appDict);\n const possibleAppIds = getPossibleDebuggerAppKeys(bundleIds, this.appDict);\n log.debug(`Trying out the possible app ids: ${possibleAppIds.join(', ')} (try #${retryCount + 1} of ${maxTries})`);\n for (const attemptedAppIdKey of possibleAppIds) {\n try {\n if (!this.appDict[attemptedAppIdKey].isActive) {\n log.debug(`Skipping app '${attemptedAppIdKey}' because it is not active`);\n continue;\n }\n log.debug(`Attempting app '${attemptedAppIdKey}'`);\n const [appIdKey, pageDict] = await this.rpcClient.selectApp(attemptedAppIdKey, this.onAppConnect.bind(this));\n // in iOS 8.2 the connect logic happens, but with an empty dictionary\n // which leads to the remote debugger getting disconnected, and into a loop\n if (_.isEmpty(pageDict)) {\n log.debug('Empty page dictionary received. Trying again.');\n continue;\n }\n\n // save the page array for this app\n this.appDict[appIdKey].pageArray = pageArrayFromDict(pageDict);\n\n // if we are looking for a particular url, make sure we\n // have the right page. Ignore empty or undefined urls.\n // Ignore about:blank if requested.\n const result = this.searchForPage(this.appDict, currentUrl, ignoreAboutBlankUrl);\n if (result) {\n return result;\n }\n\n if (currentUrl) {\n log.debug(`Received app, but expected url ('${currentUrl}') was not found. Trying again.`);\n } else {\n log.debug('Received app, but no match was found. Trying again.');\n }\n } catch (err) {\n log.debug(`Error checking application: '${err.message}'. Retrying connection`);\n }\n }\n retryCount++;\n throw new Error('Failed to find an app to select');\n }, 0);\n } catch (ign) {\n log.errorAndThrow(`Could not connect to a valid app after ${maxTries} tries.`);\n }\n}\n\nfunction searchForPage (appsDict, currentUrl = null, ignoreAboutBlankUrl = false) {\n for (const appDict of _.values(appsDict)) {\n if (!appDict || !appDict.isActive || !appDict.pageArray || appDict.pageArray.promise) {\n continue;\n }\n\n for (const dict of appDict.pageArray) {\n if ((!ignoreAboutBlankUrl || dict.url !== BLANK_PAGE_URL) &&\n (!currentUrl || dict.url === currentUrl || dict.url === `${currentUrl}/`)) {\n return { appIdKey: appDict.id, pageDict: dict };\n }\n }\n }\n return null;\n}\n\nasync function selectPage (appIdKey, pageIdKey, skipReadyCheck = false) {\n this.appIdKey = `PID:${appIdKey}`;\n this.pageIdKey = pageIdKey;\n\n log.debug(`Selecting page '${pageIdKey}' on app '${this.appIdKey}' and forwarding socket setup`);\n\n const timer = new timing.Timer().start();\n\n await this.rpcClient.selectPage(this.appIdKey, pageIdKey);\n\n // make sure everything is ready to go\n if (!skipReadyCheck && !await this.checkPageIsReady()) {\n await this.pageUnload();\n }\n\n log.debug(`Selected page after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n}\n\nfunction logApplicationDictionary (apps) {\n function getValueString (key, value) {\n if (_.isFunction(value)) {\n return '[Function]';\n }\n if (key === 'pageArray' && !_.isArray(value)) {\n return `\"Waiting for data\"`;\n }\n return JSON.stringify(value);\n }\n log.debug('Current applications available:');\n for (const [app, info] of _.toPairs(apps)) {\n log.debug(` Application: \"${app}\"`);\n for (const [key, value] of _.toPairs(info)) {\n if (key === 'pageArray' && Array.isArray(value) && value.length) {\n log.debug(` ${key}:`);\n for (const page of value) {\n let prefix = '- ';\n for (const [k, v] of _.toPairs(page)) {\n log.debug(` ${prefix}${k}: ${JSON.stringify(v)}`);\n prefix = ' ';\n }\n }\n } else {\n const valueString = getValueString(key, value);\n log.debug(` ${key}: ${valueString}`);\n }\n }\n }\n}\n\nfunction updateAppsWithDict (dict) {\n // get the dictionary entry into a nice form, and add it to the\n // application dictionary\n this.appDict = this.appDict || {};\n let [id, entry] = appInfoFromDict(dict);\n if (this.appDict[id]) {\n // preserve the page dictionary for this entry\n entry.pageArray = this.appDict[id].pageArray;\n }\n this.appDict[id] = entry;\n\n // add a promise to get the page dictionary\n if (_.isUndefined(entry.pageArray)) {\n entry.pageArray = deferredPromise();\n }\n\n // try to get the app id from our connected apps\n if (!this.appIdKey) {\n this.appIdKey = getDebuggerAppKey(this.bundleId, this.appDict);\n }\n}\n\nexport default { setConnectionKey, connect, disconnect, selectApp, searchForApp, searchForPage, selectPage, updateAppsWithDict };\n"],"mappings":"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"}
@@ -139,4 +139,4 @@ var _default = {
139
139
  callFunction
140
140
  };
141
141
  exports.default = _default;
142
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmFzZURyaXZlciIsIl91dGlscyIsIl9hdG9tcyIsIl9zdXBwb3J0IiwiX2FzeW5jYm94IiwiX2xvZGFzaCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiZXhlY3V0ZUF0b20iLCJhdG9tIiwiYXJncyIsImZyYW1lcyIsInJwY0NsaWVudCIsImlzQ29ubmVjdGVkIiwiRXJyb3IiLCJsb2ciLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzY3JpcHQiLCJnZXRTY3JpcHRGb3JBdG9tIiwidmFsdWUiLCJleGVjdXRlIiwiXyIsInRydW5jYXRlIiwic2ltcGxlU3RyaW5naWZ5IiwibGVuZ3RoIiwiUkVTUE9OU0VfTE9HX0xFTkdUSCIsImV4ZWN1dGVBdG9tQXN5bmMiLCJldmFsdWF0ZSIsIm1ldGhvZCIsIm9wdHMiLCJzZW5kIiwiT2JqZWN0IiwiYXNzaWduIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJyZXR1cm5CeVZhbHVlIiwicHJvbWlzZU5hbWUiLCJ1dGlsIiwidXVpZFY0IiwicmVwbGFjZSIsIm9iaiIsImV4cHJlc3Npb24iLCJwcm9taXNlT2JqZWN0SWQiLCJyZXN1bHQiLCJvYmplY3RJZCIsImFzeW5jQ2FsbEJhY2siLCJyZXMiLCJzdWJjb21tYW5kVGltZW91dCIsImdlbmVyYXRlUHJldmlldyIsInNhdmVSZXN1bHQiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJyZXRyeVdhaXQiLCJ0aW1lb3V0IiwicmV0cmllcyIsInBhcnNlSW50IiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwicmV0cnlJbnRlcnZhbCIsImhhc1ZhbHVlIiwiZXJyb3JzIiwiVGltZW91dEVycm9yIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJpZ24iLCJjb252ZXJ0UmVzdWx0IiwiY29tbWFuZCIsIm92ZXJyaWRlIiwicGFnZUxvYWRpbmciLCJ3YWl0Rm9yRG9tIiwiaXNOaWwiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImdhcmJhZ2VDb2xsZWN0IiwiY2FsbEZ1bmN0aW9uIiwiZm4iLCJjaGVja1BhcmFtcyIsImZ1bmN0aW9uRGVjbGFyYXRpb24iLCJhcmd1bWVudHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL21peGlucy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgY29udmVydFJlc3VsdCwgUkVTUE9OU0VfTE9HX0xFTkdUSCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFNjcmlwdEZvckF0b20gfSBmcm9tICcuLi9hdG9tcyc7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLyogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHdlYmtpdCB0byByZXR1cm4gYSByZXNwb25zZSBiZWZvcmUgdGltaW5nIG91dCAqL1xuY29uc3QgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG4vKipcbiAqIEV4ZWN1dGUgYSBTZWxlbml1bSBhdG9tIGluIFNhZmFyaVxuICogQHBhcmFtIHtzdHJpbmd9IGF0b20gTmFtZSBvZiBTZWxlbml1bSBhdG9tIChzZWUgYXRvbXMvIGRpcmVjdG9yeSlcbiAqIEBwYXJhbSB7QXJyYXk8Kj59IGFyZ3MgQXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYXRvbVxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmcmFtZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSByZXN1bHQgcmVjZWl2ZWQgZnJvbSB0aGUgYXRvbVxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQXRvbSAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIGlmICghdGhpcy5ycGNDbGllbnQuaXNDb25uZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW90ZSBkZWJ1Z2dlciBpcyBub3QgY29ubmVjdGVkJyk7XG4gIH1cblxuICBsb2cuZGVidWcoYEV4ZWN1dGluZyBhdG9tICcke2F0b219JyB3aXRoICdhcmdzPSR7SlNPTi5zdHJpbmdpZnkoYXJncyl9OyBmcmFtZXM9JHtmcmFtZXN9J2ApO1xuICBjb25zdCBzY3JpcHQgPSBhd2FpdCBnZXRTY3JpcHRGb3JBdG9tKGF0b20sIGFyZ3MsIGZyYW1lcyk7XG4gIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5leGVjdXRlKHNjcmlwdCwgdHJ1ZSk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgcmVzdWx0IGZvciBhdG9tICcke2F0b219JyBleGVjdXRpb246ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkodmFsdWUpLCB7bGVuZ3RoOiBSRVNQT05TRV9MT0dfTEVOR1RIfSl9YCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUF0b21Bc3luYyAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIC8vIGhlbHBlciB0byBzZW5kIGRpcmVjdGx5IHRvIHRoZSB3ZWIgaW5zcGVjdG9yXG4gIGNvbnN0IGV2YWx1YXRlID0gYXN5bmMgKG1ldGhvZCwgb3B0cykgPT4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZChtZXRob2QsIE9iamVjdC5hc3NpZ24oe1xuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgcmV0dXJuQnlWYWx1ZTogZmFsc2UsXG4gIH0sIG9wdHMpKTtcblxuICAvLyBmaXJzdCBjcmVhdGUgYSBQcm9taXNlIG9uIHRoZSBwYWdlLCBzYXZpbmcgdGhlIHJlc29sdmUvcmVqZWN0IGZ1bmN0aW9uc1xuICAvLyBhcyBwcm9wZXJ0aWVzXG4gIGNvbnN0IHByb21pc2VOYW1lID0gYGFwcGl1bUFzeW5jRXhlY3V0ZVByb21pc2Uke3V0aWwudXVpZFY0KCkucmVwbGFjZSgvLS9nLCAnJyl9YDtcbiAgY29uc3Qgc2NyaXB0ID1cbiAgICBgdmFyIHJlcywgcmVqO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlcyA9IHJlc29sdmU7XG4gICAgICByZWogPSByZWplY3Q7XG4gICAgfSk7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlc29sdmUgPSByZXM7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlamVjdCA9IHJlajtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX07YDtcbiAgY29uc3Qgb2JqID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgZXhwcmVzc2lvbjogc2NyaXB0LFxuICB9KTtcbiAgY29uc3QgcHJvbWlzZU9iamVjdElkID0gb2JqLnJlc3VsdC5vYmplY3RJZDtcblxuICAvLyBleGVjdXRlIHRoZSBhdG9tLCBjYWxsaW5nIGJhY2sgdG8gdGhlIHJlc29sdmUgZnVuY3Rpb25cbiAgY29uc3QgYXN5bmNDYWxsQmFjayA9XG4gICAgYGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZXNvbHZlKHJlcyk7XG4gICAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZSA9IHJlcztcbiAgICB9YDtcbiAgYXdhaXQgdGhpcy5leGVjdXRlKGF3YWl0IGdldFNjcmlwdEZvckF0b20oYXRvbSwgYXJncywgZnJhbWVzLCBhc3luY0NhbGxCYWNrKSk7XG5cbiAgLy8gd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gYmUgcmVzb2x2ZWRcbiAgbGV0IHJlcztcbiAgY29uc3Qgc3ViY29tbWFuZFRpbWVvdXQgPSAxMDAwOyAvLyB0aW1lb3V0IG9uIGluZGl2aWR1YWwgY29tbWFuZHNcbiAgdHJ5IHtcbiAgICByZXMgPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5hd2FpdFByb21pc2UnLCB7XG4gICAgICBwcm9taXNlT2JqZWN0SWQsXG4gICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgZ2VuZXJhdGVQcmV2aWV3OiB0cnVlLFxuICAgICAgc2F2ZVJlc3VsdDogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCFlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1J1bnRpbWUuYXdhaXRQcm9taXNlJyB3YXMgbm90IGZvdW5kYCkpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgLy8gYXdhaXRQcm9taXNlIGlzIG5vdCBhbHdheXMgYXZhaWxhYmxlLCBzbyBzaW11bGF0ZSBpdCB3aXRoIHBvbGxcbiAgICBjb25zdCByZXRyeVdhaXQgPSAxMDA7XG4gICAgY29uc3QgdGltZW91dCA9IChhcmdzLmxlbmd0aCA+PSAzKSA/IGFyZ3NbMl0gOiBSUENfUkVTUE9OU0VfVElNRU9VVF9NUztcbiAgICAvLyBpZiB0aGUgdGltZW91dCBtYXRoIHR1cm5zIHVwIDAgcmV0cmllcywgbWFrZSBzdXJlIGl0IGhhcHBlbnMgb25jZVxuICAgIGNvbnN0IHJldHJpZXMgPSBwYXJzZUludCh0aW1lb3V0IC8gcmV0cnlXYWl0LCAxMCkgfHwgMTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFzeW5jIGV4ZWN1dGUgdG8gZmluaXNoYCk7XG4gICAgcmVzID0gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCByZXRyeVdhaXQsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHRoZSBhdG9tIF93aWxsXyByZXR1cm4sIGVpdGhlciBiZWNhdXNlIGl0IGZpbmlzaGVkIG9yIGFuIGVycm9yXG4gICAgICAvLyBpbmNsdWRpbmcgYSB0aW1lb3V0IGVycm9yXG4gICAgICBjb25zdCBoYXNWYWx1ZSA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICBleHByZXNzaW9uOiBgd2luZG93Lmhhc093blByb3BlcnR5KCcke3Byb21pc2VOYW1lfVZhbHVlJyk7YCxcbiAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIC8vIHdlIG9ubHkgcHV0IHRoZSBwcm9wZXJ0eSBvbiBgd2luZG93YCB3aGVuIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsXG4gICAgICAgIC8vIHNvIGlmIGl0IGlzIHRoZXJlLCBldmVyeXRoaW5nIGlzIGRvbmVcbiAgICAgICAgcmV0dXJuIGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICAgIGV4cHJlc3Npb246IGB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZTtgLFxuICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gdGhyb3cgYSBUaW1lb3V0RXJyb3IsIG9yIGVsc2UgaXQgbmVlZHMgdG8gYmUgY2F1Z2h0IGFuZCByZS10aHJvd25cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVGltZW91dEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXN5bmNocm9ub3VzIHNjcmlwdCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByZXN1bHQgYWZ0ZXIgJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXMnKSk7YCk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBwcm9taXNlXG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtgZGVsZXRlIHdpbmRvdy4ke3Byb21pc2VOYW1lfTtgLCBbbnVsbCwgbnVsbF0sIHN1YmNvbW1hbmRUaW1lb3V0XSwgZnJhbWVzKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoY29tbWFuZCwgb3ZlcnJpZGUpIHtcbiAgLy8gaWYgdGhlIHBhZ2UgaXMgbm90IGxvYWRlZCB5ZXQsIHdhaXQgZm9yIGl0XG4gIGlmICh0aGlzLnBhZ2VMb2FkaW5nICYmICFvdmVycmlkZSkge1xuICAgIGxvZy5kZWJ1ZygnVHJ5aW5nIHRvIGV4ZWN1dGUgYnV0IHBhZ2UgaXMgbm90IGxvYWRlZC4nKTtcbiAgICBhd2FpdCB0aGlzLndhaXRGb3JEb20oKTtcbiAgfVxuXG4gIGlmIChfLmlzTmlsKHRoaXMuYXBwSWRLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBhcmFtZXRlcjogYXBwSWRLZXkuIElzIHRoZSB0YXJnZXQgd2ViIGFwcGxpY2F0aW9uIHN0aWxsIGFsaXZlPycpO1xuICB9XG4gIGlmIChfLmlzTmlsKHRoaXMucGFnZUlkS2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHBhZ2VJZEtleS4gSXMgdGhlIHRhcmdldCB3ZWIgcGFnZSBzdGlsbCBhbGl2ZT8nKTtcbiAgfVxuXG4gIGlmICh0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlKSB7XG4gICAgYXdhaXQgdGhpcy5nYXJiYWdlQ29sbGVjdCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBTZW5kaW5nIGphdmFzY3JpcHQgY29tbWFuZDogJyR7Xy50cnVuY2F0ZShjb21tYW5kLCB7bGVuZ3RoOiA1MH0pfSdgKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICBleHByZXNzaW9uOiBjb21tYW5kLFxuICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uIChvYmplY3RJZCwgZm4sIGFyZ3MpIHtcbiAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG5cbiAgaWYgKHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUpIHtcbiAgICBhd2FpdCB0aGlzLmdhcmJhZ2VDb2xsZWN0KCk7XG4gIH1cblxuICBsb2cuZGVidWcoJ0NhbGxpbmcgamF2YXNjcmlwdCBmdW5jdGlvbicpO1xuICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdSdW50aW1lLmNhbGxGdW5jdGlvbk9uJywge1xuICAgIG9iamVjdElkLFxuICAgIGZ1bmN0aW9uRGVjbGFyYXRpb246IGZuLFxuICAgIGFyZ3VtZW50czogYXJncyxcbiAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cblxuZXhwb3J0IGRlZmF1bHQgeyBleGVjdXRlQXRvbSwgZXhlY3V0ZUF0b21Bc3luYywgZXhlY3V0ZSwgY2FsbEZ1bmN0aW9uIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0Es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
142
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmFzZURyaXZlciIsIl91dGlscyIsIl9hdG9tcyIsIl9zdXBwb3J0IiwiX2FzeW5jYm94IiwiX2xvZGFzaCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiZXhlY3V0ZUF0b20iLCJhdG9tIiwiYXJncyIsImZyYW1lcyIsInJwY0NsaWVudCIsImlzQ29ubmVjdGVkIiwiRXJyb3IiLCJsb2ciLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzY3JpcHQiLCJnZXRTY3JpcHRGb3JBdG9tIiwidmFsdWUiLCJleGVjdXRlIiwiXyIsInRydW5jYXRlIiwic2ltcGxlU3RyaW5naWZ5IiwibGVuZ3RoIiwiUkVTUE9OU0VfTE9HX0xFTkdUSCIsImV4ZWN1dGVBdG9tQXN5bmMiLCJldmFsdWF0ZSIsIm1ldGhvZCIsIm9wdHMiLCJzZW5kIiwiT2JqZWN0IiwiYXNzaWduIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJyZXR1cm5CeVZhbHVlIiwicHJvbWlzZU5hbWUiLCJ1dGlsIiwidXVpZFY0IiwicmVwbGFjZSIsIm9iaiIsImV4cHJlc3Npb24iLCJwcm9taXNlT2JqZWN0SWQiLCJyZXN1bHQiLCJvYmplY3RJZCIsImFzeW5jQ2FsbEJhY2siLCJyZXMiLCJzdWJjb21tYW5kVGltZW91dCIsImdlbmVyYXRlUHJldmlldyIsInNhdmVSZXN1bHQiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJyZXRyeVdhaXQiLCJ0aW1lb3V0IiwicmV0cmllcyIsInBhcnNlSW50IiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwicmV0cnlJbnRlcnZhbCIsImhhc1ZhbHVlIiwiZXJyb3JzIiwiVGltZW91dEVycm9yIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJpZ24iLCJjb252ZXJ0UmVzdWx0IiwiY29tbWFuZCIsIm92ZXJyaWRlIiwicGFnZUxvYWRpbmciLCJ3YWl0Rm9yRG9tIiwiaXNOaWwiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImdhcmJhZ2VDb2xsZWN0IiwiY2FsbEZ1bmN0aW9uIiwiZm4iLCJjaGVja1BhcmFtcyIsImZ1bmN0aW9uRGVjbGFyYXRpb24iLCJhcmd1bWVudHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL21peGlucy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgY29udmVydFJlc3VsdCwgUkVTUE9OU0VfTE9HX0xFTkdUSCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFNjcmlwdEZvckF0b20gfSBmcm9tICcuLi9hdG9tcyc7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLyogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHdlYmtpdCB0byByZXR1cm4gYSByZXNwb25zZSBiZWZvcmUgdGltaW5nIG91dCAqL1xuY29uc3QgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG4vKipcbiAqIEV4ZWN1dGUgYSBTZWxlbml1bSBhdG9tIGluIFNhZmFyaVxuICogQHBhcmFtIHtzdHJpbmd9IGF0b20gTmFtZSBvZiBTZWxlbml1bSBhdG9tIChzZWUgYXRvbXMvIGRpcmVjdG9yeSlcbiAqIEBwYXJhbSB7QXJyYXk8Kj59IGFyZ3MgQXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYXRvbVxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmcmFtZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSByZXN1bHQgcmVjZWl2ZWQgZnJvbSB0aGUgYXRvbVxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQXRvbSAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIGlmICghdGhpcy5ycGNDbGllbnQuaXNDb25uZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW90ZSBkZWJ1Z2dlciBpcyBub3QgY29ubmVjdGVkJyk7XG4gIH1cblxuICBsb2cuZGVidWcoYEV4ZWN1dGluZyBhdG9tICcke2F0b219JyB3aXRoICdhcmdzPSR7SlNPTi5zdHJpbmdpZnkoYXJncyl9OyBmcmFtZXM9JHtmcmFtZXN9J2ApO1xuICBjb25zdCBzY3JpcHQgPSBhd2FpdCBnZXRTY3JpcHRGb3JBdG9tKGF0b20sIGFyZ3MsIGZyYW1lcyk7XG4gIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5leGVjdXRlKHNjcmlwdCwgdHJ1ZSk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgcmVzdWx0IGZvciBhdG9tICcke2F0b219JyBleGVjdXRpb246ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkodmFsdWUpLCB7bGVuZ3RoOiBSRVNQT05TRV9MT0dfTEVOR1RIfSl9YCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUF0b21Bc3luYyAoYXRvbSwgYXJncywgZnJhbWVzKSB7XG4gIC8vIGhlbHBlciB0byBzZW5kIGRpcmVjdGx5IHRvIHRoZSB3ZWIgaW5zcGVjdG9yXG4gIGNvbnN0IGV2YWx1YXRlID0gYXN5bmMgKG1ldGhvZCwgb3B0cykgPT4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZChtZXRob2QsIE9iamVjdC5hc3NpZ24oe1xuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgcmV0dXJuQnlWYWx1ZTogZmFsc2UsXG4gIH0sIG9wdHMpKTtcblxuICAvLyBmaXJzdCBjcmVhdGUgYSBQcm9taXNlIG9uIHRoZSBwYWdlLCBzYXZpbmcgdGhlIHJlc29sdmUvcmVqZWN0IGZ1bmN0aW9uc1xuICAvLyBhcyBwcm9wZXJ0aWVzXG4gIGNvbnN0IHByb21pc2VOYW1lID0gYGFwcGl1bUFzeW5jRXhlY3V0ZVByb21pc2Uke3V0aWwudXVpZFY0KCkucmVwbGFjZSgvLS9nLCAnJyl9YDtcbiAgY29uc3Qgc2NyaXB0ID1cbiAgICBgdmFyIHJlcywgcmVqO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlcyA9IHJlc29sdmU7XG4gICAgICByZWogPSByZWplY3Q7XG4gICAgfSk7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlc29sdmUgPSByZXM7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlamVjdCA9IHJlajtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX07YDtcbiAgY29uc3Qgb2JqID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgZXhwcmVzc2lvbjogc2NyaXB0LFxuICB9KTtcbiAgY29uc3QgcHJvbWlzZU9iamVjdElkID0gb2JqLnJlc3VsdC5vYmplY3RJZDtcblxuICAvLyBleGVjdXRlIHRoZSBhdG9tLCBjYWxsaW5nIGJhY2sgdG8gdGhlIHJlc29sdmUgZnVuY3Rpb25cbiAgY29uc3QgYXN5bmNDYWxsQmFjayA9XG4gICAgYGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZXNvbHZlKHJlcyk7XG4gICAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZSA9IHJlcztcbiAgICB9YDtcbiAgYXdhaXQgdGhpcy5leGVjdXRlKGF3YWl0IGdldFNjcmlwdEZvckF0b20oYXRvbSwgYXJncywgZnJhbWVzLCBhc3luY0NhbGxCYWNrKSk7XG5cbiAgLy8gd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gYmUgcmVzb2x2ZWRcbiAgbGV0IHJlcztcbiAgY29uc3Qgc3ViY29tbWFuZFRpbWVvdXQgPSAxMDAwOyAvLyB0aW1lb3V0IG9uIGluZGl2aWR1YWwgY29tbWFuZHNcbiAgdHJ5IHtcbiAgICByZXMgPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5hd2FpdFByb21pc2UnLCB7XG4gICAgICBwcm9taXNlT2JqZWN0SWQsXG4gICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgZ2VuZXJhdGVQcmV2aWV3OiB0cnVlLFxuICAgICAgc2F2ZVJlc3VsdDogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCFlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1J1bnRpbWUuYXdhaXRQcm9taXNlJyB3YXMgbm90IGZvdW5kYCkpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgLy8gYXdhaXRQcm9taXNlIGlzIG5vdCBhbHdheXMgYXZhaWxhYmxlLCBzbyBzaW11bGF0ZSBpdCB3aXRoIHBvbGxcbiAgICBjb25zdCByZXRyeVdhaXQgPSAxMDA7XG4gICAgY29uc3QgdGltZW91dCA9IChhcmdzLmxlbmd0aCA+PSAzKSA/IGFyZ3NbMl0gOiBSUENfUkVTUE9OU0VfVElNRU9VVF9NUztcbiAgICAvLyBpZiB0aGUgdGltZW91dCBtYXRoIHR1cm5zIHVwIDAgcmV0cmllcywgbWFrZSBzdXJlIGl0IGhhcHBlbnMgb25jZVxuICAgIGNvbnN0IHJldHJpZXMgPSBwYXJzZUludCh0aW1lb3V0IC8gcmV0cnlXYWl0LCAxMCkgfHwgMTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFzeW5jIGV4ZWN1dGUgdG8gZmluaXNoYCk7XG4gICAgcmVzID0gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCByZXRyeVdhaXQsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIHRoZSBhdG9tIF93aWxsXyByZXR1cm4sIGVpdGhlciBiZWNhdXNlIGl0IGZpbmlzaGVkIG9yIGFuIGVycm9yXG4gICAgICAvLyBpbmNsdWRpbmcgYSB0aW1lb3V0IGVycm9yXG4gICAgICBjb25zdCBoYXNWYWx1ZSA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICBleHByZXNzaW9uOiBgd2luZG93Lmhhc093blByb3BlcnR5KCcke3Byb21pc2VOYW1lfVZhbHVlJyk7YCxcbiAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIC8vIHdlIG9ubHkgcHV0IHRoZSBwcm9wZXJ0eSBvbiBgd2luZG93YCB3aGVuIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsXG4gICAgICAgIC8vIHNvIGlmIGl0IGlzIHRoZXJlLCBldmVyeXRoaW5nIGlzIGRvbmVcbiAgICAgICAgcmV0dXJuIGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgICAgICAgIGV4cHJlc3Npb246IGB3aW5kb3cuJHtwcm9taXNlTmFtZX1WYWx1ZTtgLFxuICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gdGhyb3cgYSBUaW1lb3V0RXJyb3IsIG9yIGVsc2UgaXQgbmVlZHMgdG8gYmUgY2F1Z2h0IGFuZCByZS10aHJvd25cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVGltZW91dEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXN5bmNocm9ub3VzIHNjcmlwdCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByZXN1bHQgYWZ0ZXIgJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXMnKSk7YCk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBwcm9taXNlXG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtgZGVsZXRlIHdpbmRvdy4ke3Byb21pc2VOYW1lfTtgLCBbbnVsbCwgbnVsbF0sIHN1YmNvbW1hbmRUaW1lb3V0XSwgZnJhbWVzKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoY29tbWFuZCwgb3ZlcnJpZGUpIHtcbiAgLy8gaWYgdGhlIHBhZ2UgaXMgbm90IGxvYWRlZCB5ZXQsIHdhaXQgZm9yIGl0XG4gIGlmICh0aGlzLnBhZ2VMb2FkaW5nICYmICFvdmVycmlkZSkge1xuICAgIGxvZy5kZWJ1ZygnVHJ5aW5nIHRvIGV4ZWN1dGUgYnV0IHBhZ2UgaXMgbm90IGxvYWRlZC4nKTtcbiAgICBhd2FpdCB0aGlzLndhaXRGb3JEb20oKTtcbiAgfVxuXG4gIGlmIChfLmlzTmlsKHRoaXMuYXBwSWRLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBhcmFtZXRlcjogYXBwSWRLZXkuIElzIHRoZSB0YXJnZXQgd2ViIGFwcGxpY2F0aW9uIHN0aWxsIGFsaXZlPycpO1xuICB9XG4gIGlmIChfLmlzTmlsKHRoaXMucGFnZUlkS2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHBhZ2VJZEtleS4gSXMgdGhlIHRhcmdldCB3ZWIgcGFnZSBzdGlsbCBhbGl2ZT8nKTtcbiAgfVxuXG4gIGlmICh0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlKSB7XG4gICAgYXdhaXQgdGhpcy5nYXJiYWdlQ29sbGVjdCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBTZW5kaW5nIGphdmFzY3JpcHQgY29tbWFuZDogJyR7Xy50cnVuY2F0ZShjb21tYW5kLCB7bGVuZ3RoOiA1MH0pfSdgKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICBleHByZXNzaW9uOiBjb21tYW5kLFxuICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uIChvYmplY3RJZCwgZm4sIGFyZ3MpIHtcbiAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG5cbiAgaWYgKHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUpIHtcbiAgICBhd2FpdCB0aGlzLmdhcmJhZ2VDb2xsZWN0KCk7XG4gIH1cblxuICBsb2cuZGVidWcoJ0NhbGxpbmcgamF2YXNjcmlwdCBmdW5jdGlvbicpO1xuICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdSdW50aW1lLmNhbGxGdW5jdGlvbk9uJywge1xuICAgIG9iamVjdElkLFxuICAgIGZ1bmN0aW9uRGVjbGFyYXRpb246IGZuLFxuICAgIGFyZ3VtZW50czogYXJncyxcbiAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cblxuZXhwb3J0IGRlZmF1bHQgeyBleGVjdXRlQXRvbSwgZXhlY3V0ZUF0b21Bc3luYywgZXhlY3V0ZSwgY2FsbEZ1bmN0aW9uIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0Es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
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","names":["_logger","_interopRequireDefault","require","_baseDriver","_utils","_atoms","_support","_asyncbox","_lodash","RPC_RESPONSE_TIMEOUT_MS","executeAtom","atom","args","frames","rpcClient","isConnected","Error","log","debug","JSON","stringify","script","getScriptForAtom","value","execute","_","truncate","simpleStringify","length","RESPONSE_LOG_LENGTH","executeAtomAsync","evaluate","method","opts","send","Object","assign","appIdKey","pageIdKey","returnByValue","promiseName","util","uuidV4","replace","obj","expression","promiseObjectId","result","objectId","asyncCallBack","res","subcommandTimeout","generatePreview","saveResult","err","message","includes","retryWait","timeout","retries","parseInt","timer","timing","Timer","start","retryInterval","hasValue","errors","TimeoutError","getDuration","asMilliSeconds","toFixed","ign","convertResult","command","override","pageLoading","waitForDom","isNil","garbageCollectOnExecute","garbageCollect","callFunction","fn","checkParams","functionDeclaration","arguments","_default","exports","default"],"sources":["../../../lib/mixins/execute.js"],"sourcesContent":["import log from '../logger';\nimport { errors } from '@appium/base-driver';\nimport { checkParams, simpleStringify, convertResult, RESPONSE_LOG_LENGTH } from '../utils';\nimport { getScriptForAtom } from '../atoms';\nimport { util, timing } from '@appium/support';\nimport { retryInterval } from 'asyncbox';\nimport _ from 'lodash';\n\n\n/* How many milliseconds to wait for webkit to return a response before timing out */\nconst RPC_RESPONSE_TIMEOUT_MS = 5000;\n\n/**\n * Execute a Selenium atom in Safari\n * @param {string} atom Name of Selenium atom (see atoms/ directory)\n * @param {Array<*>} args Arguments passed to the atom\n * @param {Array<string>} frames\n * @returns {string} The result received from the atom\n */\nasync function executeAtom (atom, args, frames) {\n if (!this.rpcClient.isConnected) {\n throw new Error('Remote debugger is not connected');\n }\n\n log.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);\n const script = await getScriptForAtom(atom, args, frames);\n const value = await this.execute(script, true);\n log.debug(`Received result for atom '${atom}' execution: ${_.truncate(simpleStringify(value), {length: RESPONSE_LOG_LENGTH})}`);\n return value;\n}\n\nasync function executeAtomAsync (atom, args, frames) {\n // helper to send directly to the web inspector\n const evaluate = async (method, opts) => await this.rpcClient.send(method, Object.assign({\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n returnByValue: false,\n }, opts));\n\n // first create a Promise on the page, saving the resolve/reject functions\n // as properties\n const promiseName = `appiumAsyncExecutePromise${util.uuidV4().replace(/-/g, '')}`;\n const script =\n `var res, rej;\n window.${promiseName} = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n window.${promiseName}.resolve = res;\n window.${promiseName}.reject = rej;\n window.${promiseName};`;\n const obj = await evaluate('Runtime.evaluate', {\n expression: script,\n });\n const promiseObjectId = obj.result.objectId;\n\n // execute the atom, calling back to the resolve function\n const asyncCallBack =\n `function (res) {\n window.${promiseName}.resolve(res);\n window.${promiseName}Value = res;\n }`;\n await this.execute(await getScriptForAtom(atom, args, frames, asyncCallBack));\n\n // wait for the promise to be resolved\n let res;\n const subcommandTimeout = 1000; // timeout on individual commands\n try {\n res = await evaluate('Runtime.awaitPromise', {\n promiseObjectId,\n returnByValue: true,\n generatePreview: true,\n saveResult: true,\n });\n } catch (err) {\n if (!err.message.includes(`'Runtime.awaitPromise' was not found`)) {\n throw err;\n }\n // awaitPromise is not always available, so simulate it with poll\n const retryWait = 100;\n const timeout = (args.length >= 3) ? args[2] : RPC_RESPONSE_TIMEOUT_MS;\n // if the timeout math turns up 0 retries, make sure it happens once\n const retries = parseInt(timeout / retryWait, 10) || 1;\n const timer = new timing.Timer().start();\n log.debug(`Waiting up to ${timeout}ms for async execute to finish`);\n res = await retryInterval(retries, retryWait, async () => {\n // the atom _will_ return, either because it finished or an error\n // including a timeout error\n const hasValue = await evaluate('Runtime.evaluate', {\n expression: `window.hasOwnProperty('${promiseName}Value');`,\n returnByValue: true,\n });\n if (hasValue) {\n // we only put the property on `window` when the callback is called,\n // so if it is there, everything is done\n return await evaluate('Runtime.evaluate', {\n expression: `window.${promiseName}Value;`,\n returnByValue: true,\n });\n }\n // throw a TimeoutError, or else it needs to be caught and re-thrown\n throw new errors.TimeoutError(`Timed out waiting for asynchronous script ` +\n `result after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms'));`);\n });\n } finally {\n try {\n // try to get rid of the promise\n await this.executeAtom('execute_script', [`delete window.${promiseName};`, [null, null], subcommandTimeout], frames);\n } catch (ign) {}\n }\n return convertResult(res);\n}\n\nasync function execute (command, override) {\n // if the page is not loaded yet, wait for it\n if (this.pageLoading && !override) {\n log.debug('Trying to execute but page is not loaded.');\n await this.waitForDom();\n }\n\n if (_.isNil(this.appIdKey)) {\n throw new Error('Missing parameter: appIdKey. Is the target web application still alive?');\n }\n if (_.isNil(this.pageIdKey)) {\n throw new Error('Missing parameter: pageIdKey. Is the target web page still alive?');\n }\n\n if (this.garbageCollectOnExecute) {\n await this.garbageCollect();\n }\n\n log.debug(`Sending javascript command: '${_.truncate(command, {length: 50})}'`);\n const res = await this.rpcClient.send('Runtime.evaluate', {\n expression: command,\n returnByValue: true,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n return convertResult(res);\n}\n\nasync function callFunction (objectId, fn, args) {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n\n if (this.garbageCollectOnExecute) {\n await this.garbageCollect();\n }\n\n log.debug('Calling javascript function');\n const res = await this.rpcClient.send('Runtime.callFunctionOn', {\n objectId,\n functionDeclaration: fn,\n arguments: args,\n returnByValue: true,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n return convertResult(res);\n}\n\n\nexport default { executeAtom, executeAtomAsync, execute, callFunction };\n"],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","names":["_logger","_interopRequireDefault","require","_baseDriver","_utils","_atoms","_support","_asyncbox","_lodash","RPC_RESPONSE_TIMEOUT_MS","executeAtom","atom","args","frames","rpcClient","isConnected","Error","log","debug","JSON","stringify","script","getScriptForAtom","value","execute","_","truncate","simpleStringify","length","RESPONSE_LOG_LENGTH","executeAtomAsync","evaluate","method","opts","send","Object","assign","appIdKey","pageIdKey","returnByValue","promiseName","util","uuidV4","replace","obj","expression","promiseObjectId","result","objectId","asyncCallBack","res","subcommandTimeout","generatePreview","saveResult","err","message","includes","retryWait","timeout","retries","parseInt","timer","timing","Timer","start","retryInterval","hasValue","errors","TimeoutError","getDuration","asMilliSeconds","toFixed","ign","convertResult","command","override","pageLoading","waitForDom","isNil","garbageCollectOnExecute","garbageCollect","callFunction","fn","checkParams","functionDeclaration","arguments","_default","exports","default"],"sources":["../../../lib/mixins/execute.js"],"sourcesContent":["import log from '../logger';\nimport { errors } from '@appium/base-driver';\nimport { checkParams, simpleStringify, convertResult, RESPONSE_LOG_LENGTH } from '../utils';\nimport { getScriptForAtom } from '../atoms';\nimport { util, timing } from '@appium/support';\nimport { retryInterval } from 'asyncbox';\nimport _ from 'lodash';\n\n\n/* How many milliseconds to wait for webkit to return a response before timing out */\nconst RPC_RESPONSE_TIMEOUT_MS = 5000;\n\n/**\n * Execute a Selenium atom in Safari\n * @param {string} atom Name of Selenium atom (see atoms/ directory)\n * @param {Array<*>} args Arguments passed to the atom\n * @param {Array<string>} frames\n * @returns {string} The result received from the atom\n */\nasync function executeAtom (atom, args, frames) {\n if (!this.rpcClient.isConnected) {\n throw new Error('Remote debugger is not connected');\n }\n\n log.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);\n const script = await getScriptForAtom(atom, args, frames);\n const value = await this.execute(script, true);\n log.debug(`Received result for atom '${atom}' execution: ${_.truncate(simpleStringify(value), {length: RESPONSE_LOG_LENGTH})}`);\n return value;\n}\n\nasync function executeAtomAsync (atom, args, frames) {\n // helper to send directly to the web inspector\n const evaluate = async (method, opts) => await this.rpcClient.send(method, Object.assign({\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n returnByValue: false,\n }, opts));\n\n // first create a Promise on the page, saving the resolve/reject functions\n // as properties\n const promiseName = `appiumAsyncExecutePromise${util.uuidV4().replace(/-/g, '')}`;\n const script =\n `var res, rej;\n window.${promiseName} = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n window.${promiseName}.resolve = res;\n window.${promiseName}.reject = rej;\n window.${promiseName};`;\n const obj = await evaluate('Runtime.evaluate', {\n expression: script,\n });\n const promiseObjectId = obj.result.objectId;\n\n // execute the atom, calling back to the resolve function\n const asyncCallBack =\n `function (res) {\n window.${promiseName}.resolve(res);\n window.${promiseName}Value = res;\n }`;\n await this.execute(await getScriptForAtom(atom, args, frames, asyncCallBack));\n\n // wait for the promise to be resolved\n let res;\n const subcommandTimeout = 1000; // timeout on individual commands\n try {\n res = await evaluate('Runtime.awaitPromise', {\n promiseObjectId,\n returnByValue: true,\n generatePreview: true,\n saveResult: true,\n });\n } catch (err) {\n if (!err.message.includes(`'Runtime.awaitPromise' was not found`)) {\n throw err;\n }\n // awaitPromise is not always available, so simulate it with poll\n const retryWait = 100;\n const timeout = (args.length >= 3) ? args[2] : RPC_RESPONSE_TIMEOUT_MS;\n // if the timeout math turns up 0 retries, make sure it happens once\n const retries = parseInt(timeout / retryWait, 10) || 1;\n const timer = new timing.Timer().start();\n log.debug(`Waiting up to ${timeout}ms for async execute to finish`);\n res = await retryInterval(retries, retryWait, async () => {\n // the atom _will_ return, either because it finished or an error\n // including a timeout error\n const hasValue = await evaluate('Runtime.evaluate', {\n expression: `window.hasOwnProperty('${promiseName}Value');`,\n returnByValue: true,\n });\n if (hasValue) {\n // we only put the property on `window` when the callback is called,\n // so if it is there, everything is done\n return await evaluate('Runtime.evaluate', {\n expression: `window.${promiseName}Value;`,\n returnByValue: true,\n });\n }\n // throw a TimeoutError, or else it needs to be caught and re-thrown\n throw new errors.TimeoutError(`Timed out waiting for asynchronous script ` +\n `result after ${timer.getDuration().asMilliSeconds.toFixed(0)}ms'));`);\n });\n } finally {\n try {\n // try to get rid of the promise\n await this.executeAtom('execute_script', [`delete window.${promiseName};`, [null, null], subcommandTimeout], frames);\n } catch (ign) {}\n }\n return convertResult(res);\n}\n\nasync function execute (command, override) {\n // if the page is not loaded yet, wait for it\n if (this.pageLoading && !override) {\n log.debug('Trying to execute but page is not loaded.');\n await this.waitForDom();\n }\n\n if (_.isNil(this.appIdKey)) {\n throw new Error('Missing parameter: appIdKey. Is the target web application still alive?');\n }\n if (_.isNil(this.pageIdKey)) {\n throw new Error('Missing parameter: pageIdKey. Is the target web page still alive?');\n }\n\n if (this.garbageCollectOnExecute) {\n await this.garbageCollect();\n }\n\n log.debug(`Sending javascript command: '${_.truncate(command, {length: 50})}'`);\n const res = await this.rpcClient.send('Runtime.evaluate', {\n expression: command,\n returnByValue: true,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n return convertResult(res);\n}\n\nasync function callFunction (objectId, fn, args) {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n\n if (this.garbageCollectOnExecute) {\n await this.garbageCollect();\n }\n\n log.debug('Calling javascript function');\n const res = await this.rpcClient.send('Runtime.callFunctionOn', {\n objectId,\n functionDeclaration: fn,\n arguments: args,\n returnByValue: true,\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n\n return convertResult(res);\n}\n\n\nexport default { executeAtom, executeAtomAsync, execute, callFunction };\n"],"mappings":"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"}
@@ -22,4 +22,4 @@ const mixins = Object.assign({}, _connect.default, _events.default, _execute.def
22
22
  exports.mixins = mixins;
23
23
  var _default = mixins;
24
24
  exports.default = _default;
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ubmVjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2V2ZW50cyIsIl9leGVjdXRlIiwiX25hdmlnYXRlIiwiX21lc3NhZ2VIYW5kbGVycyIsIm1peGlucyIsIk9iamVjdCIsImFzc2lnbiIsImNvbm5lY3QiLCJldmVudHMiLCJleGVjdXRlIiwibmF2aWdhdGUiLCJtZXNzYWdlSGFuZGxlcnMiLCJleHBvcnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL21peGlucy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29ubmVjdCBmcm9tICcuL2Nvbm5lY3QnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgZXhlY3V0ZSBmcm9tICcuL2V4ZWN1dGUnO1xuaW1wb3J0IG5hdmlnYXRlIGZyb20gJy4vbmF2aWdhdGUnO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGVycyBmcm9tICcuL21lc3NhZ2UtaGFuZGxlcnMnO1xuXG5cbmNvbnN0IG1peGlucyA9IE9iamVjdC5hc3NpZ24oe30sXG4gIGNvbm5lY3QsIGV2ZW50cywgZXhlY3V0ZSwgbmF2aWdhdGUsIG1lc3NhZ2VIYW5kbGVyc1xuKTtcblxuXG5leHBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9O1xuZXhwb3J0IGRlZmF1bHQgbWl4aW5zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsTUFBTUssTUFBTSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDN0JDLGdCQUFPLEVBQUVDLGVBQU0sRUFBRUMsZ0JBQU8sRUFBRUMsaUJBQVEsRUFBRUMsd0JBQWUsQ0FDcEQ7QUFBQ0MsT0FBQSxDQUFBUixNQUFBLEdBQUFBLE1BQUE7QUFBQSxJQUFBUyxRQUFBLEdBSWFULE1BQU07QUFBQVEsT0FBQSxDQUFBRSxPQUFBLEdBQUFELFFBQUEifQ==
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ubmVjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2V2ZW50cyIsIl9leGVjdXRlIiwiX25hdmlnYXRlIiwiX21lc3NhZ2VIYW5kbGVycyIsIm1peGlucyIsIk9iamVjdCIsImFzc2lnbiIsImNvbm5lY3QiLCJldmVudHMiLCJleGVjdXRlIiwibmF2aWdhdGUiLCJtZXNzYWdlSGFuZGxlcnMiLCJleHBvcnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL21peGlucy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29ubmVjdCBmcm9tICcuL2Nvbm5lY3QnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgZXhlY3V0ZSBmcm9tICcuL2V4ZWN1dGUnO1xuaW1wb3J0IG5hdmlnYXRlIGZyb20gJy4vbmF2aWdhdGUnO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGVycyBmcm9tICcuL21lc3NhZ2UtaGFuZGxlcnMnO1xuXG5cbmNvbnN0IG1peGlucyA9IE9iamVjdC5hc3NpZ24oe30sXG4gIGNvbm5lY3QsIGV2ZW50cywgZXhlY3V0ZSwgbmF2aWdhdGUsIG1lc3NhZ2VIYW5kbGVyc1xuKTtcblxuXG5leHBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9O1xuZXhwb3J0IGRlZmF1bHQgbWl4aW5zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsTUFBTUssTUFBTSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDN0JDLGdCQUFPLEVBQUVDLGVBQU0sRUFBRUMsZ0JBQU8sRUFBRUMsaUJBQVEsRUFBRUMsd0JBQ3RDLENBQUM7QUFBQ0MsT0FBQSxDQUFBUixNQUFBLEdBQUFBLE1BQUE7QUFBQSxJQUFBUyxRQUFBLEdBSWFULE1BQU07QUFBQVEsT0FBQSxDQUFBRSxPQUFBLEdBQUFELFFBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_connect","_interopRequireDefault","require","_events","_execute","_navigate","_messageHandlers","mixins","Object","assign","connect","events","execute","navigate","messageHandlers","exports","_default","default"],"sources":["../../../lib/mixins/index.js"],"sourcesContent":["import connect from './connect';\nimport events from './events';\nimport execute from './execute';\nimport navigate from './navigate';\nimport messageHandlers from './message-handlers';\n\n\nconst mixins = Object.assign({},\n connect, events, execute, navigate, messageHandlers\n);\n\n\nexport { mixins, events };\nexport default mixins;\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,SAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,gBAAA,GAAAL,sBAAA,CAAAC,OAAA;AAGA,MAAMK,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAC7BC,gBAAO,EAAEC,eAAM,EAAEC,gBAAO,EAAEC,iBAAQ,EAAEC,wBAAe,CACpD;AAACC,OAAA,CAAAR,MAAA,GAAAA,MAAA;AAAA,IAAAS,QAAA,GAIaT,MAAM;AAAAQ,OAAA,CAAAE,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"file":"index.js","names":["_connect","_interopRequireDefault","require","_events","_execute","_navigate","_messageHandlers","mixins","Object","assign","connect","events","execute","navigate","messageHandlers","exports","_default","default"],"sources":["../../../lib/mixins/index.js"],"sourcesContent":["import connect from './connect';\nimport events from './events';\nimport execute from './execute';\nimport navigate from './navigate';\nimport messageHandlers from './message-handlers';\n\n\nconst mixins = Object.assign({},\n connect, events, execute, navigate, messageHandlers\n);\n\n\nexport { mixins, events };\nexport default mixins;\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,SAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,gBAAA,GAAAL,sBAAA,CAAAC,OAAA;AAGA,MAAMK,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAC7BC,gBAAO,EAAEC,eAAM,EAAEC,gBAAO,EAAEC,iBAAQ,EAAEC,wBACtC,CAAC;AAACC,OAAA,CAAAR,MAAA,GAAAA,MAAA;AAAA,IAAAS,QAAA,GAIaT,MAAM;AAAAQ,OAAA,CAAAE,OAAA,GAAAD,QAAA"}
@@ -115,4 +115,4 @@ const messageHandlers = {
115
115
  };
116
116
  var _default = messageHandlers;
117
117
  exports.default = _default;
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXZlbnRzIiwiX3V0aWxzIiwiX2xvZGFzaCIsIm9uUGFnZUNoYW5nZSIsImVyciIsImFwcElkS2V5IiwicGFnZURpY3QiLCJfIiwiaXNFbXB0eSIsInBhZ2VBcnJheSIsInBhZ2VBcnJheUZyb21EaWN0IiwidXNlQXBwRGljdExvY2siLCJkb25lIiwiYXBwRGljdCIsInJlc29sdmUiLCJpc0VxdWFsIiwibG9nIiwiZGVidWciLCJfbmF2aWdhdGluZ1RvUGFnZSIsInNpbXBsZVN0cmluZ2lmeSIsImVtaXQiLCJldmVudHMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsInJlcGxhY2UiLCJvbkFwcENvbm5lY3QiLCJkaWN0IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwidXBkYXRlQXBwc1dpdGhEaWN0Iiwib25BcHBEaXNjb25uZWN0IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJidW5kbGVJZCIsImNvbm5lY3RlZCIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJvbkFwcFVwZGF0ZSIsIm9uQ29ubmVjdGVkRHJpdmVyTGlzdCIsImRyaXZlcnMiLCJjb25uZWN0ZWREcml2ZXJzIiwiV0lSRHJpdmVyRGljdGlvbmFyeUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbkN1cnJlbnRTdGF0ZSIsInN0YXRlIiwiY3VycmVudFN0YXRlIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsIm9uQ29ubmVjdGVkQXBwbGljYXRpb25MaXN0IiwiYXBwcyIsImtleXMiLCJqb2luIiwibmV3RGljdCIsInZhbHVlcyIsImlkIiwiZW50cnkiLCJhcHBJbmZvRnJvbURpY3QiLCJza2lwcGVkQXBwcyIsImluY2x1ZGVzIiwibmFtZSIsImRlZmF1bHRzIiwibWVzc2FnZUhhbmRsZXJzIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9taXhpbnMvbWVzc2FnZS1oYW5kbGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgZXZlbnRzIGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHBhZ2VBcnJheUZyb21EaWN0LCBnZXREZWJ1Z2dlckFwcEtleSwgc2ltcGxlU3RyaW5naWZ5LCBhcHBJbmZvRnJvbURpY3QgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8qXG4gKiBHZW5lcmljIGNhbGxiYWNrcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpZmVjeWNsZSBvZiB0aGUgUmVtb3RlIERlYnVnZ2VyLlxuICogVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgcHJvdG90eXBlLlxuICovXG5cbmFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAoZXJyLCBhcHBJZEtleSwgcGFnZURpY3QpIHtcbiAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgYXdhaXQgdGhpcy51c2VBcHBEaWN0TG9jaygoZG9uZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBzYXZlIHRoZSBwYWdlIGRpY3QgZm9yIHRoaXMgYXBwXG4gICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XSkge1xuICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkucmVzb2x2ZSkge1xuICAgICAgICAgICAgLy8gcGFnZURpY3QgaXMgYSBwZW5kaW5nIHByb21pc2UsIHNvIHJlc29sdmVcbiAgICAgICAgICAgIHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5LnJlc29sdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZS1leGlzdGluZyBwYWdlRGljdFxuICAgICAgICAgICAgaWYgKF8uaXNFcXVhbCh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSwgcGFnZUFycmF5KSkge1xuICAgICAgICAgICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIHBhZ2UgY2hhbmdlIG5vdGljZSBmb3IgYXBwICcke2FwcElkS2V5fScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgYnV0IHRoZSBsaXN0aW5nIGhhcyBub3QgY2hhbmdlZC4gSWdub3JpbmcuYCk7XG4gICAgICAgICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIHBhZ2UgZGljdGlvbmFyeVxuICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSA9IHBhZ2VBcnJheTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UpIHtcbiAgICAvLyBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIHNvIHJlcG9ydGluZyBhIHBhZ2UgY2hhbmdlIHdpbGwgY2F1c2UgcHJvYmxlbXNcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoYFBhZ2UgY2hhbmdlZDogJHtzaW1wbGVTdHJpbmdpZnkocGFnZURpY3QsIHRydWUpfWApO1xuXG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfUEFHRV9DSEFOR0UsIHtcbiAgICBhcHBJZEtleTogYXBwSWRLZXkucmVwbGFjZSgnUElEOicsICcnKSxcbiAgICBwYWdlQXJyYXksXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcENvbm5lY3QgKGVyciwgZGljdCkge1xuICBjb25zdCBhcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBsb2cuZGVidWcoYE5vdGlmaWVkIHRoYXQgbmV3IGFwcGxpY2F0aW9uICcke2FwcElkS2V5fScgaGFzIGNvbm5lY3RlZGApO1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlQXBwc1dpdGhEaWN0KGRpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gb25BcHBEaXNjb25uZWN0IChlcnIsIGRpY3QpIHtcbiAgY29uc3QgYXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgbG9nLmRlYnVnKGBBcHBsaWNhdGlvbiAnJHthcHBJZEtleX0nIGRpc2Nvbm5lY3RlZC4gUmVtb3ZpbmcgZnJvbSBhcHAgZGljdGlvbmFyeS5gKTtcbiAgbG9nLmRlYnVnKGBDdXJyZW50IGFwcCBpcyAnJHt0aGlzLmFwcElkS2V5fSdgKTtcblxuICAvLyBnZXQgcmlkIG9mIHRoZSBlbnRyeSBpbiBvdXIgYXBwIGRpY3Rpb25hcnksXG4gIC8vIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBhdmFpbGFibGVcbiAgZGVsZXRlIHRoaXMuYXBwRGljdFthcHBJZEtleV07XG5cbiAgLy8gaWYgdGhlIGRpc2Nvbm5lY3RlZCBhcHAgaXMgdGhlIG9uZSB3ZSBhcmUgY29ubmVjdGVkIHRvLCB0cnkgdG8gZmluZCBhbm90aGVyXG4gIGlmICh0aGlzLmFwcElkS2V5ID09PSBhcHBJZEtleSkge1xuICAgIGxvZy5kZWJ1ZyhgTm8gbG9uZ2VyIGhhdmUgYXBwIGlkLiBBdHRlbXB0aW5nIHRvIGZpbmQgbmV3IG9uZS5gKTtcbiAgICB0aGlzLmFwcElkS2V5ID0gZ2V0RGVidWdnZXJBcHBLZXkodGhpcy5idW5kbGVJZCwgdGhpcy5hcHBEaWN0KTtcbiAgfVxuXG4gIGlmICghdGhpcy5hcHBEaWN0KSB7XG4gICAgLy8gdGhpcyBtZWFucyB3ZSBubyBsb25nZXIgaGF2ZSBhbnkgYXBwcy4gd2hhdCB0aGUgd2hhdD9cbiAgICBsb2cuZGVidWcoJ01haW4gYXBwIGRpc2Nvbm5lY3RlZC4gRGlzY29ubmVjdGluZyBhbHRvZ2V0aGVyLicpO1xuICAgIHRoaXMuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KGV2ZW50cy5FVkVOVF9ESVNDT05ORUNULCB0cnVlKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcFVwZGF0ZSAoZXJyLCBkaWN0KSB7XG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy51cGRhdGVBcHBzV2l0aERpY3QoZGljdCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNvbm5lY3RlZERyaXZlckxpc3QgKGVyciwgZHJpdmVycykge1xuICB0aGlzLmNvbm5lY3RlZERyaXZlcnMgPSBkcml2ZXJzLldJUkRyaXZlckRpY3Rpb25hcnlLZXk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGRyaXZlciBsaXN0OiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29ubmVjdGVkRHJpdmVycyl9YCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VycmVudFN0YXRlIChlcnIsIHN0YXRlKSB7XG4gIHRoaXMuY3VycmVudFN0YXRlID0gc3RhdGUuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleTtcbiAgLy8gVGhpcyBzdGF0ZSBjaGFuZ2VzIHdoZW4gJ1JlbW90ZSBBdXRvbWF0aW9uJyBpbiAnU2V0dGluZ3MgYXBwJyA+ICdTYWZhcmknID4gJ0FkdmFuY2VkJyA+ICdSZW1vdGUgQXV0b21hdGlvbicgY2hhbmdlc1xuICAvLyBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlIG9yIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlOb3RBdmFpbGFibGVcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCBjb25uZWN0ZWQgYXV0b21hdGlvbiBhdmFpbGFiaWxpdHkgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50U3RhdGUpfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCAoZXJyLCBhcHBzKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGFwcGxpY2F0aW9ucyBsaXN0OiAke18ua2V5cyhhcHBzKS5qb2luKCcsICcpfWApO1xuXG4gIC8vIHRyYW5zbGF0ZSB0aGUgcmVjZWl2ZWQgaW5mb3JtYXRpb24gaW50byBhbiBlYXNpZXItdG8tbWFuYWdlXG4gIC8vIGhhc2ggd2l0aCBhcHAgaWQgYXMga2V5LCBhbmQgYXBwIGluZm8gYXMgdmFsdWVcbiAgbGV0IG5ld0RpY3QgPSB7fTtcbiAgZm9yIChjb25zdCBkaWN0IG9mIF8udmFsdWVzKGFwcHMpKSB7XG4gICAgY29uc3QgW2lkLCBlbnRyeV0gPSBhcHBJbmZvRnJvbURpY3QoZGljdCk7XG4gICAgaWYgKHRoaXMuc2tpcHBlZEFwcHMuaW5jbHVkZXMoZW50cnkubmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBuZXdEaWN0W2lkXSA9IGVudHJ5O1xuICB9XG4gIC8vIHVwZGF0ZSB0aGUgb2JqZWN0J3MgbGlzdCBvZiBhcHBzXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLmFwcERpY3QsIG5ld0RpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgbWVzc2FnZUhhbmRsZXJzID0ge1xuICBvblBhZ2VDaGFuZ2UsXG4gIG9uQXBwQ29ubmVjdCxcbiAgb25BcHBEaXNjb25uZWN0LFxuICBvbkFwcFVwZGF0ZSxcbiAgb25Db25uZWN0ZWREcml2ZXJMaXN0LFxuICBvbkN1cnJlbnRTdGF0ZSxcbiAgb25Db25uZWN0ZWRBcHBsaWNhdGlvbkxpc3QsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXNzYWdlSGFuZGxlcnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBUUEsZUFBZUksWUFBWUEsQ0FBRUMsR0FBRyxFQUFFQyxRQUFRLEVBQUVDLFFBQVEsRUFBRTtFQUNwRCxJQUFJQyxlQUFDLENBQUNDLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEVBQUU7SUFDdkI7RUFDRjtFQUVBLE1BQU1HLFNBQVMsR0FBRyxJQUFBQyx3QkFBaUIsRUFBQ0osUUFBUSxDQUFDO0VBRTdDLE1BQU0sSUFBSSxDQUFDSyxjQUFjLENBQUVDLElBQUksSUFBSztJQUNsQyxJQUFJO01BRUYsSUFBSSxJQUFJLENBQUNDLE9BQU8sQ0FBQ1IsUUFBUSxDQUFDLEVBQUU7UUFDMUIsSUFBSSxJQUFJLENBQUNRLE9BQU8sQ0FBQ1IsUUFBUSxDQUFDLENBQUNJLFNBQVMsRUFBRTtVQUNwQyxJQUFJLElBQUksQ0FBQ0ksT0FBTyxDQUFDUixRQUFRLENBQUMsQ0FBQ0ksU0FBUyxDQUFDSyxPQUFPLEVBQUU7WUFFNUMsSUFBSSxDQUFDRCxPQUFPLENBQUNSLFFBQVEsQ0FBQyxDQUFDSSxTQUFTLENBQUNLLE9BQU8sRUFBRTtVQUM1QyxDQUFDLE1BQU07WUFFTCxJQUFJUCxlQUFDLENBQUNRLE9BQU8sQ0FBQyxJQUFJLENBQUNGLE9BQU8sQ0FBQ1IsUUFBUSxDQUFDLENBQUNJLFNBQVMsRUFBRUEsU0FBUyxDQUFDLEVBQUU7Y0FDMURPLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLHdDQUF1Q1osUUFBUyxJQUFHLEdBQ25ELDRDQUEyQyxDQUFDO2NBQ3ZELE9BQU9PLElBQUksRUFBRTtZQUNmO1VBQ0Y7UUFDRjtRQUVBLElBQUksQ0FBQ0MsT0FBTyxDQUFDUixRQUFRLENBQUMsQ0FBQ0ksU0FBUyxHQUFHQSxTQUFTO01BQzlDO0lBQ0YsQ0FBQyxTQUFTO01BQ1JHLElBQUksRUFBRTtJQUNSO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFBSSxJQUFJLENBQUNNLGlCQUFpQixFQUFFO0lBRTFCO0VBQ0Y7RUFFQUYsZUFBRyxDQUFDQyxLQUFLLENBQUUsaUJBQWdCLElBQUFFLHNCQUFlLEVBQUNiLFFBQVEsRUFBRSxJQUFJLENBQUUsRUFBQyxDQUFDO0VBRTdELElBQUksQ0FBQ2MsSUFBSSxDQUFDQyxlQUFNLENBQUNDLGlCQUFpQixFQUFFO0lBQ2xDakIsUUFBUSxFQUFFQSxRQUFRLENBQUNrQixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUN0Q2Q7RUFDRixDQUFDLENBQUM7QUFDSjtBQUVBLGVBQWVlLFlBQVlBLENBQUVwQixHQUFHLEVBQUVxQixJQUFJLEVBQUU7RUFDdEMsTUFBTXBCLFFBQVEsR0FBR29CLElBQUksQ0FBQ0MsMkJBQTJCO0VBQ2pEVixlQUFHLENBQUNDLEtBQUssQ0FBRSxrQ0FBaUNaLFFBQVMsaUJBQWdCLENBQUM7RUFDdEUsTUFBTSxJQUFJLENBQUNNLGNBQWMsQ0FBRUMsSUFBSSxJQUFLO0lBQ2xDLElBQUk7TUFDRixJQUFJLENBQUNlLGtCQUFrQixDQUFDRixJQUFJLENBQUM7SUFDL0IsQ0FBQyxTQUFTO01BQ1JiLElBQUksRUFBRTtJQUNSO0VBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxTQUFTZ0IsZUFBZUEsQ0FBRXhCLEdBQUcsRUFBRXFCLElBQUksRUFBRTtFQUNuQyxNQUFNcEIsUUFBUSxHQUFHb0IsSUFBSSxDQUFDQywyQkFBMkI7RUFDakRWLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLGdCQUFlWixRQUFTLCtDQUE4QyxDQUFDO0VBQ2xGVyxlQUFHLENBQUNDLEtBQUssQ0FBRSxtQkFBa0IsSUFBSSxDQUFDWixRQUFTLEdBQUUsQ0FBQztFQUk5QyxPQUFPLElBQUksQ0FBQ1EsT0FBTyxDQUFDUixRQUFRLENBQUM7RUFHN0IsSUFBSSxJQUFJLENBQUNBLFFBQVEsS0FBS0EsUUFBUSxFQUFFO0lBQzlCVyxlQUFHLENBQUNDLEtBQUssQ0FBRSxvREFBbUQsQ0FBQztJQUMvRCxJQUFJLENBQUNaLFFBQVEsR0FBRyxJQUFBd0Isd0JBQWlCLEVBQUMsSUFBSSxDQUFDQyxRQUFRLEVBQUUsSUFBSSxDQUFDakIsT0FBTyxDQUFDO0VBQ2hFO0VBRUEsSUFBSSxDQUFDLElBQUksQ0FBQ0EsT0FBTyxFQUFFO0lBRWpCRyxlQUFHLENBQUNDLEtBQUssQ0FBQyxrREFBa0QsQ0FBQztJQUM3RCxJQUFJLENBQUNjLFNBQVMsR0FBRyxLQUFLO0lBQ3RCLElBQUksQ0FBQ1gsSUFBSSxDQUFDQyxlQUFNLENBQUNXLGdCQUFnQixFQUFFLElBQUksQ0FBQztFQUMxQztBQUNGO0FBRUEsZUFBZUMsV0FBV0EsQ0FBRTdCLEdBQUcsRUFBRXFCLElBQUksRUFBRTtFQUNyQyxNQUFNLElBQUksQ0FBQ2QsY0FBYyxDQUFFQyxJQUFJLElBQUs7SUFDbEMsSUFBSTtNQUNGLElBQUksQ0FBQ2Usa0JBQWtCLENBQUNGLElBQUksQ0FBQztJQUMvQixDQUFDLFNBQVM7TUFDUmIsSUFBSSxFQUFFO0lBQ1I7RUFDRixDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNzQixxQkFBcUJBLENBQUU5QixHQUFHLEVBQUUrQixPQUFPLEVBQUU7RUFDNUMsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR0QsT0FBTyxDQUFDRSxzQkFBc0I7RUFDdERyQixlQUFHLENBQUNDLEtBQUssQ0FBRSxtQ0FBa0NxQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUNILGdCQUFnQixDQUFFLEVBQUMsQ0FBQztBQUN2RjtBQUVBLFNBQVNJLGNBQWNBLENBQUVwQyxHQUFHLEVBQUVxQyxLQUFLLEVBQUU7RUFDbkMsSUFBSSxDQUFDQyxZQUFZLEdBQUdELEtBQUssQ0FBQ0UsNEJBQTRCO0VBR3REM0IsZUFBRyxDQUFDQyxLQUFLLENBQUUscURBQW9EcUIsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDRyxZQUFZLENBQUUsRUFBQyxDQUFDO0FBQ3JHO0FBRUEsZUFBZUUsMEJBQTBCQSxDQUFFeEMsR0FBRyxFQUFFeUMsSUFBSSxFQUFFO0VBQ3BEN0IsZUFBRyxDQUFDQyxLQUFLLENBQUUseUNBQXdDVixlQUFDLENBQUN1QyxJQUFJLENBQUNELElBQUksQ0FBQyxDQUFDRSxJQUFJLENBQUMsSUFBSSxDQUFFLEVBQUMsQ0FBQztFQUk3RSxJQUFJQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBQ2hCLEtBQUssTUFBTXZCLElBQUksSUFBSWxCLGVBQUMsQ0FBQzBDLE1BQU0sQ0FBQ0osSUFBSSxDQUFDLEVBQUU7SUFDakMsTUFBTSxDQUFDSyxFQUFFLEVBQUVDLEtBQUssQ0FBQyxHQUFHLElBQUFDLHNCQUFlLEVBQUMzQixJQUFJLENBQUM7SUFDekMsSUFBSSxJQUFJLENBQUM0QixXQUFXLENBQUNDLFFBQVEsQ0FBQ0gsS0FBSyxDQUFDSSxJQUFJLENBQUMsRUFBRTtNQUN6QztJQUNGO0lBQ0FQLE9BQU8sQ0FBQ0UsRUFBRSxDQUFDLEdBQUdDLEtBQUs7RUFDckI7RUFFQSxNQUFNLElBQUksQ0FBQ3hDLGNBQWMsQ0FBRUMsSUFBSSxJQUFLO0lBQ2xDLElBQUk7TUFDRkwsZUFBQyxDQUFDaUQsUUFBUSxDQUFDLElBQUksQ0FBQzNDLE9BQU8sRUFBRW1DLE9BQU8sQ0FBQztJQUNuQyxDQUFDLFNBQVM7TUFDUnBDLElBQUksRUFBRTtJQUNSO0VBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxNQUFNNkMsZUFBZSxHQUFHO0VBQ3RCdEQsWUFBWTtFQUNacUIsWUFBWTtFQUNaSSxlQUFlO0VBQ2ZLLFdBQVc7RUFDWEMscUJBQXFCO0VBQ3JCTSxjQUFjO0VBQ2RJO0FBQ0YsQ0FBQztBQUFDLElBQUFjLFFBQUEsR0FFYUQsZUFBZTtBQUFBRSxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQSJ9
118
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXZlbnRzIiwiX3V0aWxzIiwiX2xvZGFzaCIsIm9uUGFnZUNoYW5nZSIsImVyciIsImFwcElkS2V5IiwicGFnZURpY3QiLCJfIiwiaXNFbXB0eSIsInBhZ2VBcnJheSIsInBhZ2VBcnJheUZyb21EaWN0IiwidXNlQXBwRGljdExvY2siLCJkb25lIiwiYXBwRGljdCIsInJlc29sdmUiLCJpc0VxdWFsIiwibG9nIiwiZGVidWciLCJfbmF2aWdhdGluZ1RvUGFnZSIsInNpbXBsZVN0cmluZ2lmeSIsImVtaXQiLCJldmVudHMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsInJlcGxhY2UiLCJvbkFwcENvbm5lY3QiLCJkaWN0IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwidXBkYXRlQXBwc1dpdGhEaWN0Iiwib25BcHBEaXNjb25uZWN0IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJidW5kbGVJZCIsImNvbm5lY3RlZCIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJvbkFwcFVwZGF0ZSIsIm9uQ29ubmVjdGVkRHJpdmVyTGlzdCIsImRyaXZlcnMiLCJjb25uZWN0ZWREcml2ZXJzIiwiV0lSRHJpdmVyRGljdGlvbmFyeUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbkN1cnJlbnRTdGF0ZSIsInN0YXRlIiwiY3VycmVudFN0YXRlIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsIm9uQ29ubmVjdGVkQXBwbGljYXRpb25MaXN0IiwiYXBwcyIsImtleXMiLCJqb2luIiwibmV3RGljdCIsInZhbHVlcyIsImlkIiwiZW50cnkiLCJhcHBJbmZvRnJvbURpY3QiLCJza2lwcGVkQXBwcyIsImluY2x1ZGVzIiwibmFtZSIsImRlZmF1bHRzIiwibWVzc2FnZUhhbmRsZXJzIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9taXhpbnMvbWVzc2FnZS1oYW5kbGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgZXZlbnRzIGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IHBhZ2VBcnJheUZyb21EaWN0LCBnZXREZWJ1Z2dlckFwcEtleSwgc2ltcGxlU3RyaW5naWZ5LCBhcHBJbmZvRnJvbURpY3QgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8qXG4gKiBHZW5lcmljIGNhbGxiYWNrcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpZmVjeWNsZSBvZiB0aGUgUmVtb3RlIERlYnVnZ2VyLlxuICogVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgcHJvdG90eXBlLlxuICovXG5cbmFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAoZXJyLCBhcHBJZEtleSwgcGFnZURpY3QpIHtcbiAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgYXdhaXQgdGhpcy51c2VBcHBEaWN0TG9jaygoZG9uZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBzYXZlIHRoZSBwYWdlIGRpY3QgZm9yIHRoaXMgYXBwXG4gICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XSkge1xuICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkucmVzb2x2ZSkge1xuICAgICAgICAgICAgLy8gcGFnZURpY3QgaXMgYSBwZW5kaW5nIHByb21pc2UsIHNvIHJlc29sdmVcbiAgICAgICAgICAgIHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5LnJlc29sdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZS1leGlzdGluZyBwYWdlRGljdFxuICAgICAgICAgICAgaWYgKF8uaXNFcXVhbCh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSwgcGFnZUFycmF5KSkge1xuICAgICAgICAgICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIHBhZ2UgY2hhbmdlIG5vdGljZSBmb3IgYXBwICcke2FwcElkS2V5fScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgYnV0IHRoZSBsaXN0aW5nIGhhcyBub3QgY2hhbmdlZC4gSWdub3JpbmcuYCk7XG4gICAgICAgICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIHBhZ2UgZGljdGlvbmFyeVxuICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSA9IHBhZ2VBcnJheTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UpIHtcbiAgICAvLyBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIHNvIHJlcG9ydGluZyBhIHBhZ2UgY2hhbmdlIHdpbGwgY2F1c2UgcHJvYmxlbXNcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoYFBhZ2UgY2hhbmdlZDogJHtzaW1wbGVTdHJpbmdpZnkocGFnZURpY3QsIHRydWUpfWApO1xuXG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfUEFHRV9DSEFOR0UsIHtcbiAgICBhcHBJZEtleTogYXBwSWRLZXkucmVwbGFjZSgnUElEOicsICcnKSxcbiAgICBwYWdlQXJyYXksXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcENvbm5lY3QgKGVyciwgZGljdCkge1xuICBjb25zdCBhcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBsb2cuZGVidWcoYE5vdGlmaWVkIHRoYXQgbmV3IGFwcGxpY2F0aW9uICcke2FwcElkS2V5fScgaGFzIGNvbm5lY3RlZGApO1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlQXBwc1dpdGhEaWN0KGRpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gb25BcHBEaXNjb25uZWN0IChlcnIsIGRpY3QpIHtcbiAgY29uc3QgYXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgbG9nLmRlYnVnKGBBcHBsaWNhdGlvbiAnJHthcHBJZEtleX0nIGRpc2Nvbm5lY3RlZC4gUmVtb3ZpbmcgZnJvbSBhcHAgZGljdGlvbmFyeS5gKTtcbiAgbG9nLmRlYnVnKGBDdXJyZW50IGFwcCBpcyAnJHt0aGlzLmFwcElkS2V5fSdgKTtcblxuICAvLyBnZXQgcmlkIG9mIHRoZSBlbnRyeSBpbiBvdXIgYXBwIGRpY3Rpb25hcnksXG4gIC8vIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBhdmFpbGFibGVcbiAgZGVsZXRlIHRoaXMuYXBwRGljdFthcHBJZEtleV07XG5cbiAgLy8gaWYgdGhlIGRpc2Nvbm5lY3RlZCBhcHAgaXMgdGhlIG9uZSB3ZSBhcmUgY29ubmVjdGVkIHRvLCB0cnkgdG8gZmluZCBhbm90aGVyXG4gIGlmICh0aGlzLmFwcElkS2V5ID09PSBhcHBJZEtleSkge1xuICAgIGxvZy5kZWJ1ZyhgTm8gbG9uZ2VyIGhhdmUgYXBwIGlkLiBBdHRlbXB0aW5nIHRvIGZpbmQgbmV3IG9uZS5gKTtcbiAgICB0aGlzLmFwcElkS2V5ID0gZ2V0RGVidWdnZXJBcHBLZXkodGhpcy5idW5kbGVJZCwgdGhpcy5hcHBEaWN0KTtcbiAgfVxuXG4gIGlmICghdGhpcy5hcHBEaWN0KSB7XG4gICAgLy8gdGhpcyBtZWFucyB3ZSBubyBsb25nZXIgaGF2ZSBhbnkgYXBwcy4gd2hhdCB0aGUgd2hhdD9cbiAgICBsb2cuZGVidWcoJ01haW4gYXBwIGRpc2Nvbm5lY3RlZC4gRGlzY29ubmVjdGluZyBhbHRvZ2V0aGVyLicpO1xuICAgIHRoaXMuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KGV2ZW50cy5FVkVOVF9ESVNDT05ORUNULCB0cnVlKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBvbkFwcFVwZGF0ZSAoZXJyLCBkaWN0KSB7XG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy51cGRhdGVBcHBzV2l0aERpY3QoZGljdCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNvbm5lY3RlZERyaXZlckxpc3QgKGVyciwgZHJpdmVycykge1xuICB0aGlzLmNvbm5lY3RlZERyaXZlcnMgPSBkcml2ZXJzLldJUkRyaXZlckRpY3Rpb25hcnlLZXk7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGRyaXZlciBsaXN0OiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29ubmVjdGVkRHJpdmVycyl9YCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VycmVudFN0YXRlIChlcnIsIHN0YXRlKSB7XG4gIHRoaXMuY3VycmVudFN0YXRlID0gc3RhdGUuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleTtcbiAgLy8gVGhpcyBzdGF0ZSBjaGFuZ2VzIHdoZW4gJ1JlbW90ZSBBdXRvbWF0aW9uJyBpbiAnU2V0dGluZ3MgYXBwJyA+ICdTYWZhcmknID4gJ0FkdmFuY2VkJyA+ICdSZW1vdGUgQXV0b21hdGlvbicgY2hhbmdlc1xuICAvLyBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlIG9yIFdJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlOb3RBdmFpbGFibGVcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCBjb25uZWN0ZWQgYXV0b21hdGlvbiBhdmFpbGFiaWxpdHkgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50U3RhdGUpfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCAoZXJyLCBhcHBzKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGFwcGxpY2F0aW9ucyBsaXN0OiAke18ua2V5cyhhcHBzKS5qb2luKCcsICcpfWApO1xuXG4gIC8vIHRyYW5zbGF0ZSB0aGUgcmVjZWl2ZWQgaW5mb3JtYXRpb24gaW50byBhbiBlYXNpZXItdG8tbWFuYWdlXG4gIC8vIGhhc2ggd2l0aCBhcHAgaWQgYXMga2V5LCBhbmQgYXBwIGluZm8gYXMgdmFsdWVcbiAgbGV0IG5ld0RpY3QgPSB7fTtcbiAgZm9yIChjb25zdCBkaWN0IG9mIF8udmFsdWVzKGFwcHMpKSB7XG4gICAgY29uc3QgW2lkLCBlbnRyeV0gPSBhcHBJbmZvRnJvbURpY3QoZGljdCk7XG4gICAgaWYgKHRoaXMuc2tpcHBlZEFwcHMuaW5jbHVkZXMoZW50cnkubmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBuZXdEaWN0W2lkXSA9IGVudHJ5O1xuICB9XG4gIC8vIHVwZGF0ZSB0aGUgb2JqZWN0J3MgbGlzdCBvZiBhcHBzXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLmFwcERpY3QsIG5ld0RpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgbWVzc2FnZUhhbmRsZXJzID0ge1xuICBvblBhZ2VDaGFuZ2UsXG4gIG9uQXBwQ29ubmVjdCxcbiAgb25BcHBEaXNjb25uZWN0LFxuICBvbkFwcFVwZGF0ZSxcbiAgb25Db25uZWN0ZWREcml2ZXJMaXN0LFxuICBvbkN1cnJlbnRTdGF0ZSxcbiAgb25Db25uZWN0ZWRB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
@@ -1 +1 @@
1
- {"version":3,"file":"message-handlers.js","names":["_logger","_interopRequireDefault","require","_events","_utils","_lodash","onPageChange","err","appIdKey","pageDict","_","isEmpty","pageArray","pageArrayFromDict","useAppDictLock","done","appDict","resolve","isEqual","log","debug","_navigatingToPage","simpleStringify","emit","events","EVENT_PAGE_CHANGE","replace","onAppConnect","dict","WIRApplicationIdentifierKey","updateAppsWithDict","onAppDisconnect","getDebuggerAppKey","bundleId","connected","EVENT_DISCONNECT","onAppUpdate","onConnectedDriverList","drivers","connectedDrivers","WIRDriverDictionaryKey","JSON","stringify","onCurrentState","state","currentState","WIRAutomationAvailabilityKey","onConnectedApplicationList","apps","keys","join","newDict","values","id","entry","appInfoFromDict","skippedApps","includes","name","defaults","messageHandlers","_default","exports","default"],"sources":["../../../lib/mixins/message-handlers.js"],"sourcesContent":["import log from '../logger';\nimport events from './events';\nimport { pageArrayFromDict, getDebuggerAppKey, simpleStringify, appInfoFromDict } from '../utils';\nimport _ from 'lodash';\n\n\n/*\n * Generic callbacks used throughout the lifecycle of the Remote Debugger.\n * These will be added to the prototype.\n */\n\nasync function onPageChange (err, appIdKey, pageDict) {\n if (_.isEmpty(pageDict)) {\n return;\n }\n\n const pageArray = pageArrayFromDict(pageDict);\n\n await this.useAppDictLock((done) => {\n try {\n // save the page dict for this app\n if (this.appDict[appIdKey]) {\n if (this.appDict[appIdKey].pageArray) {\n if (this.appDict[appIdKey].pageArray.resolve) {\n // pageDict is a pending promise, so resolve\n this.appDict[appIdKey].pageArray.resolve();\n } else {\n // we have a pre-existing pageDict\n if (_.isEqual(this.appDict[appIdKey].pageArray, pageArray)) {\n log.debug(`Received page change notice for app '${appIdKey}' ` +\n `but the listing has not changed. Ignoring.`);\n return done();\n }\n }\n }\n // keep track of the page dictionary\n this.appDict[appIdKey].pageArray = pageArray;\n }\n } finally {\n done();\n }\n });\n\n if (this._navigatingToPage) {\n // in the middle of navigating, so reporting a page change will cause problems\n return;\n }\n\n log.debug(`Page changed: ${simpleStringify(pageDict, true)}`);\n\n this.emit(events.EVENT_PAGE_CHANGE, {\n appIdKey: appIdKey.replace('PID:', ''),\n pageArray,\n });\n}\n\nasync function onAppConnect (err, dict) {\n const appIdKey = dict.WIRApplicationIdentifierKey;\n log.debug(`Notified that new application '${appIdKey}' has connected`);\n await this.useAppDictLock((done) => {\n try {\n this.updateAppsWithDict(dict);\n } finally {\n done();\n }\n });\n}\n\nfunction onAppDisconnect (err, dict) {\n const appIdKey = dict.WIRApplicationIdentifierKey;\n log.debug(`Application '${appIdKey}' disconnected. Removing from app dictionary.`);\n log.debug(`Current app is '${this.appIdKey}'`);\n\n // get rid of the entry in our app dictionary,\n // since it is no longer available\n delete this.appDict[appIdKey];\n\n // if the disconnected app is the one we are connected to, try to find another\n if (this.appIdKey === appIdKey) {\n log.debug(`No longer have app id. Attempting to find new one.`);\n this.appIdKey = getDebuggerAppKey(this.bundleId, this.appDict);\n }\n\n if (!this.appDict) {\n // this means we no longer have any apps. what the what?\n log.debug('Main app disconnected. Disconnecting altogether.');\n this.connected = false;\n this.emit(events.EVENT_DISCONNECT, true);\n }\n}\n\nasync function onAppUpdate (err, dict) {\n await this.useAppDictLock((done) => {\n try {\n this.updateAppsWithDict(dict);\n } finally {\n done();\n }\n });\n}\n\nfunction onConnectedDriverList (err, drivers) {\n this.connectedDrivers = drivers.WIRDriverDictionaryKey;\n log.debug(`Received connected driver list: ${JSON.stringify(this.connectedDrivers)}`);\n}\n\nfunction onCurrentState (err, state) {\n this.currentState = state.WIRAutomationAvailabilityKey;\n // This state changes when 'Remote Automation' in 'Settings app' > 'Safari' > 'Advanced' > 'Remote Automation' changes\n // WIRAutomationAvailabilityAvailable or WIRAutomationAvailabilityNotAvailable\n log.debug(`Received connected automation availability state: ${JSON.stringify(this.currentState)}`);\n}\n\nasync function onConnectedApplicationList (err, apps) {\n log.debug(`Received connected applications list: ${_.keys(apps).join(', ')}`);\n\n // translate the received information into an easier-to-manage\n // hash with app id as key, and app info as value\n let newDict = {};\n for (const dict of _.values(apps)) {\n const [id, entry] = appInfoFromDict(dict);\n if (this.skippedApps.includes(entry.name)) {\n continue;\n }\n newDict[id] = entry;\n }\n // update the object's list of apps\n await this.useAppDictLock((done) => {\n try {\n _.defaults(this.appDict, newDict);\n } finally {\n done();\n }\n });\n}\n\nconst messageHandlers = {\n onPageChange,\n onAppConnect,\n onAppDisconnect,\n onAppUpdate,\n onConnectedDriverList,\n onCurrentState,\n onConnectedApplicationList,\n};\n\nexport default messageHandlers;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAQA,eAAeI,YAAYA,CAAEC,GAAG,EAAEC,QAAQ,EAAEC,QAAQ,EAAE;EACpD,IAAIC,eAAC,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAE;IACvB;EACF;EAEA,MAAMG,SAAS,GAAG,IAAAC,wBAAiB,EAACJ,QAAQ,CAAC;EAE7C,MAAM,IAAI,CAACK,cAAc,CAAEC,IAAI,IAAK;IAClC,IAAI;MAEF,IAAI,IAAI,CAACC,OAAO,CAACR,QAAQ,CAAC,EAAE;QAC1B,IAAI,IAAI,CAACQ,OAAO,CAACR,QAAQ,CAAC,CAACI,SAAS,EAAE;UACpC,IAAI,IAAI,CAACI,OAAO,CAACR,QAAQ,CAAC,CAACI,SAAS,CAACK,OAAO,EAAE;YAE5C,IAAI,CAACD,OAAO,CAACR,QAAQ,CAAC,CAACI,SAAS,CAACK,OAAO,EAAE;UAC5C,CAAC,MAAM;YAEL,IAAIP,eAAC,CAACQ,OAAO,CAAC,IAAI,CAACF,OAAO,CAACR,QAAQ,CAAC,CAACI,SAAS,EAAEA,SAAS,CAAC,EAAE;cAC1DO,eAAG,CAACC,KAAK,CAAE,wCAAuCZ,QAAS,IAAG,GACnD,4CAA2C,CAAC;cACvD,OAAOO,IAAI,EAAE;YACf;UACF;QACF;QAEA,IAAI,CAACC,OAAO,CAACR,QAAQ,CAAC,CAACI,SAAS,GAAGA,SAAS;MAC9C;IACF,CAAC,SAAS;MACRG,IAAI,EAAE;IACR;EACF,CAAC,CAAC;EAEF,IAAI,IAAI,CAACM,iBAAiB,EAAE;IAE1B;EACF;EAEAF,eAAG,CAACC,KAAK,CAAE,iBAAgB,IAAAE,sBAAe,EAACb,QAAQ,EAAE,IAAI,CAAE,EAAC,CAAC;EAE7D,IAAI,CAACc,IAAI,CAACC,eAAM,CAACC,iBAAiB,EAAE;IAClCjB,QAAQ,EAAEA,QAAQ,CAACkB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACtCd;EACF,CAAC,CAAC;AACJ;AAEA,eAAee,YAAYA,CAAEpB,GAAG,EAAEqB,IAAI,EAAE;EACtC,MAAMpB,QAAQ,GAAGoB,IAAI,CAACC,2BAA2B;EACjDV,eAAG,CAACC,KAAK,CAAE,kCAAiCZ,QAAS,iBAAgB,CAAC;EACtE,MAAM,IAAI,CAACM,cAAc,CAAEC,IAAI,IAAK;IAClC,IAAI;MACF,IAAI,CAACe,kBAAkB,CAACF,IAAI,CAAC;IAC/B,CAAC,SAAS;MACRb,IAAI,EAAE;IACR;EACF,CAAC,CAAC;AACJ;AAEA,SAASgB,eAAeA,CAAExB,GAAG,EAAEqB,IAAI,EAAE;EACnC,MAAMpB,QAAQ,GAAGoB,IAAI,CAACC,2BAA2B;EACjDV,eAAG,CAACC,KAAK,CAAE,gBAAeZ,QAAS,+CAA8C,CAAC;EAClFW,eAAG,CAACC,KAAK,CAAE,mBAAkB,IAAI,CAACZ,QAAS,GAAE,CAAC;EAI9C,OAAO,IAAI,CAACQ,OAAO,CAACR,QAAQ,CAAC;EAG7B,IAAI,IAAI,CAACA,QAAQ,KAAKA,QAAQ,EAAE;IAC9BW,eAAG,CAACC,KAAK,CAAE,oDAAmD,CAAC;IAC/D,IAAI,CAACZ,QAAQ,GAAG,IAAAwB,wBAAiB,EAAC,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACjB,OAAO,CAAC;EAChE;EAEA,IAAI,CAAC,IAAI,CAACA,OAAO,EAAE;IAEjBG,eAAG,CAACC,KAAK,CAAC,kDAAkD,CAAC;IAC7D,IAAI,CAACc,SAAS,GAAG,KAAK;IACtB,IAAI,CAACX,IAAI,CAACC,eAAM,CAACW,gBAAgB,EAAE,IAAI,CAAC;EAC1C;AACF;AAEA,eAAeC,WAAWA,CAAE7B,GAAG,EAAEqB,IAAI,EAAE;EACrC,MAAM,IAAI,CAACd,cAAc,CAAEC,IAAI,IAAK;IAClC,IAAI;MACF,IAAI,CAACe,kBAAkB,CAACF,IAAI,CAAC;IAC/B,CAAC,SAAS;MACRb,IAAI,EAAE;IACR;EACF,CAAC,CAAC;AACJ;AAEA,SAASsB,qBAAqBA,CAAE9B,GAAG,EAAE+B,OAAO,EAAE;EAC5C,IAAI,CAACC,gBAAgB,GAAGD,OAAO,CAACE,sBAAsB;EACtDrB,eAAG,CAACC,KAAK,CAAE,mCAAkCqB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACH,gBAAgB,CAAE,EAAC,CAAC;AACvF;AAEA,SAASI,cAAcA,CAAEpC,GAAG,EAAEqC,KAAK,EAAE;EACnC,IAAI,CAACC,YAAY,GAAGD,KAAK,CAACE,4BAA4B;EAGtD3B,eAAG,CAACC,KAAK,CAAE,qDAAoDqB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACG,YAAY,CAAE,EAAC,CAAC;AACrG;AAEA,eAAeE,0BAA0BA,CAAExC,GAAG,EAAEyC,IAAI,EAAE;EACpD7B,eAAG,CAACC,KAAK,CAAE,yCAAwCV,eAAC,CAACuC,IAAI,CAACD,IAAI,CAAC,CAACE,IAAI,CAAC,IAAI,CAAE,EAAC,CAAC;EAI7E,IAAIC,OAAO,GAAG,CAAC,CAAC;EAChB,KAAK,MAAMvB,IAAI,IAAIlB,eAAC,CAAC0C,MAAM,CAACJ,IAAI,CAAC,EAAE;IACjC,MAAM,CAACK,EAAE,EAAEC,KAAK,CAAC,GAAG,IAAAC,sBAAe,EAAC3B,IAAI,CAAC;IACzC,IAAI,IAAI,CAAC4B,WAAW,CAACC,QAAQ,CAACH,KAAK,CAACI,IAAI,CAAC,EAAE;MACzC;IACF;IACAP,OAAO,CAACE,EAAE,CAAC,GAAGC,KAAK;EACrB;EAEA,MAAM,IAAI,CAACxC,cAAc,CAAEC,IAAI,IAAK;IAClC,IAAI;MACFL,eAAC,CAACiD,QAAQ,CAAC,IAAI,CAAC3C,OAAO,EAAEmC,OAAO,CAAC;IACnC,CAAC,SAAS;MACRpC,IAAI,EAAE;IACR;EACF,CAAC,CAAC;AACJ;AAEA,MAAM6C,eAAe,GAAG;EACtBtD,YAAY;EACZqB,YAAY;EACZI,eAAe;EACfK,WAAW;EACXC,qBAAqB;EACrBM,cAAc;EACdI;AACF,CAAC;AAAC,IAAAc,QAAA,GAEaD,eAAe;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"file":"message-handlers.js","names":["_logger","_interopRequireDefault","require","_events","_utils","_lodash","onPageChange","err","appIdKey","pageDict","_","isEmpty","pageArray","pageArrayFromDict","useAppDictLock","done","appDict","resolve","isEqual","log","debug","_navigatingToPage","simpleStringify","emit","events","EVENT_PAGE_CHANGE","replace","onAppConnect","dict","WIRApplicationIdentifierKey","updateAppsWithDict","onAppDisconnect","getDebuggerAppKey","bundleId","connected","EVENT_DISCONNECT","onAppUpdate","onConnectedDriverList","drivers","connectedDrivers","WIRDriverDictionaryKey","JSON","stringify","onCurrentState","state","currentState","WIRAutomationAvailabilityKey","onConnectedApplicationList","apps","keys","join","newDict","values","id","entry","appInfoFromDict","skippedApps","includes","name","defaults","messageHandlers","_default","exports","default"],"sources":["../../../lib/mixins/message-handlers.js"],"sourcesContent":["import log from '../logger';\nimport events from './events';\nimport { pageArrayFromDict, getDebuggerAppKey, simpleStringify, appInfoFromDict } from '../utils';\nimport _ from 'lodash';\n\n\n/*\n * Generic callbacks used throughout the lifecycle of the Remote Debugger.\n * These will be added to the prototype.\n */\n\nasync function onPageChange (err, appIdKey, pageDict) {\n if (_.isEmpty(pageDict)) {\n return;\n }\n\n const pageArray = pageArrayFromDict(pageDict);\n\n await this.useAppDictLock((done) => {\n try {\n // save the page dict for this app\n if (this.appDict[appIdKey]) {\n if (this.appDict[appIdKey].pageArray) {\n if (this.appDict[appIdKey].pageArray.resolve) {\n // pageDict is a pending promise, so resolve\n this.appDict[appIdKey].pageArray.resolve();\n } else {\n // we have a pre-existing pageDict\n if (_.isEqual(this.appDict[appIdKey].pageArray, pageArray)) {\n log.debug(`Received page change notice for app '${appIdKey}' ` +\n `but the listing has not changed. Ignoring.`);\n return done();\n }\n }\n }\n // keep track of the page dictionary\n this.appDict[appIdKey].pageArray = pageArray;\n }\n } finally {\n done();\n }\n });\n\n if (this._navigatingToPage) {\n // in the middle of navigating, so reporting a page change will cause problems\n return;\n }\n\n log.debug(`Page changed: ${simpleStringify(pageDict, true)}`);\n\n this.emit(events.EVENT_PAGE_CHANGE, {\n appIdKey: appIdKey.replace('PID:', ''),\n pageArray,\n });\n}\n\nasync function onAppConnect (err, dict) {\n const appIdKey = dict.WIRApplicationIdentifierKey;\n log.debug(`Notified that new application '${appIdKey}' has connected`);\n await this.useAppDictLock((done) => {\n try {\n this.updateAppsWithDict(dict);\n } finally {\n done();\n }\n });\n}\n\nfunction onAppDisconnect (err, dict) {\n const appIdKey = dict.WIRApplicationIdentifierKey;\n log.debug(`Application '${appIdKey}' disconnected. Removing from app dictionary.`);\n log.debug(`Current app is '${this.appIdKey}'`);\n\n // get rid of the entry in our app dictionary,\n // since it is no longer available\n delete this.appDict[appIdKey];\n\n // if the disconnected app is the one we are connected to, try to find another\n if (this.appIdKey === appIdKey) {\n log.debug(`No longer have app id. Attempting to find new one.`);\n this.appIdKey = getDebuggerAppKey(this.bundleId, this.appDict);\n }\n\n if (!this.appDict) {\n // this means we no longer have any apps. what the what?\n log.debug('Main app disconnected. Disconnecting altogether.');\n this.connected = false;\n this.emit(events.EVENT_DISCONNECT, true);\n }\n}\n\nasync function onAppUpdate (err, dict) {\n await this.useAppDictLock((done) => {\n try {\n this.updateAppsWithDict(dict);\n } finally {\n done();\n }\n });\n}\n\nfunction onConnectedDriverList (err, drivers) {\n this.connectedDrivers = drivers.WIRDriverDictionaryKey;\n log.debug(`Received connected driver list: ${JSON.stringify(this.connectedDrivers)}`);\n}\n\nfunction onCurrentState (err, state) {\n this.currentState = state.WIRAutomationAvailabilityKey;\n // This state changes when 'Remote Automation' in 'Settings app' > 'Safari' > 'Advanced' > 'Remote Automation' changes\n // WIRAutomationAvailabilityAvailable or WIRAutomationAvailabilityNotAvailable\n log.debug(`Received connected automation availability state: ${JSON.stringify(this.currentState)}`);\n}\n\nasync function onConnectedApplicationList (err, apps) {\n log.debug(`Received connected applications list: ${_.keys(apps).join(', ')}`);\n\n // translate the received information into an easier-to-manage\n // hash with app id as key, and app info as value\n let newDict = {};\n for (const dict of _.values(apps)) {\n const [id, entry] = appInfoFromDict(dict);\n if (this.skippedApps.includes(entry.name)) {\n continue;\n }\n newDict[id] = entry;\n }\n // update the object's list of apps\n await this.useAppDictLock((done) => {\n try {\n _.defaults(this.appDict, newDict);\n } finally {\n done();\n }\n });\n}\n\nconst messageHandlers = {\n onPageChange,\n onAppConnect,\n onAppDisconnect,\n onAppUpdate,\n onConnectedDriverList,\n onCurrentState,\n onConnectedApplicationList,\n};\n\nexport default messageHandlers;\n"],"mappings":"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"}