New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

meteor-desktop-plugin-test-suite

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

meteor-desktop-plugin-test-suite - npm Package Compare versions

Comparing version 0.0.13 to 0.0.15

8

dist/suite.js

@@ -123,3 +123,3 @@ 'use strict';

* @param {Object} app - the app ref from Spectron
* @param {Array} args - array of arguments to pass to ipc.send
* @param {...*} args - array of arguments to pass to ipc.send
* @returns {Promise}

@@ -148,3 +148,3 @@ */

* @param {string} event - event from your module
* @param {Array} args - array of arguments to pass to ipc.send
* @param {...*} args - array of arguments to pass to ipc.send
* @returns {Promise}

@@ -258,3 +258,3 @@ */

* @param {string} event - event from your module
* @param {Array} args - array of arguments to pass to ipc.send
* @param {...*} args - array of arguments to pass to ipc.send
* @return {Promise}

@@ -355,2 +355,2 @@ */

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWl0ZS5qcyJdLCJuYW1lcyI6WyJnZXRFbGVjdHJvblBhdGgiLCJjcmVhdGVUZXN0QXBwIiwic2VuZElwYyIsInNlbmRJcGNTeW5jIiwic2VuZCIsInNlbmRJcGNBbmRXYWl0Rm9yUmVzcG9uc2UiLCJmaXJlRXZlbnRzQnVzRXZlbnQiLCJmaXJlRXZlbnRzQnVzRXZlbnRBbmRXYWl0Rm9yQW5vdGhlciIsImNvbnN0cnVjdFBsdWdpbiIsIndhaXRGb3JJcGMiLCJ3YWl0Rm9yRXZlbnRzQnVzRXZlbnQiLCJmZXRjaCIsImVsZWN0cm9uUGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJnZXROcG0iLCJleGVjUmVzdWx0IiwidmVyc2lvbiIsInZlcnNpb24zIiwibnBtIiwid2hpY2giLCJleGVjIiwic2lsZW50IiwiY29kZSIsInN0ZG91dCIsInNhdGlzZmllcyIsImluc3RhbGxQYXRoIiwicGx1Z2luTmFtZSIsInJtIiwibWtkaXIiLCJjcCIsInBhY2thZ2VKc29uIiwiaW5kZXhKcyIsIndyaXRlRmlsZVN5bmMiLCJyZWFkRmlsZVN5bmMiLCJyZXBsYWNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjd2QiLCJzdGRpbyIsIm9uIiwiYXBwIiwiYXJncyIsImVsZWN0cm9uIiwiaXBjUmVuZGVyZXIiLCJhcHBseSIsInNlbmRTeW5jIiwibW9kdWxlIiwiZXZlbnQiLCJ1bnNoaWZ0IiwiZXZlbnRUb1NlbmQiLCJldmVudFRvTGlzdGVuRm9yIiwiZXZlbnRBcmdzIiwiY2xpZW50IiwiZXhlY3V0ZUFzeW5jIiwiJHJlcXVpcmVOYW1lIiwiJGV2ZW50VG9TZW5kIiwiJGV2ZW50QXJncyIsIiRldmVudFRvTGlzdGVuRm9yIiwiZG9uZSIsImlwYyIsIndpbmRvdyIsIm9uY2UiLCJldmVudENhbGxiYWNrIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJhcGkiLCJyZXF1aXJlTmFtZSIsImV2ZW50VG9GaXJlIiwidGhlbiIsIiRldmVudFRvTGlzdGVuVG8iLCJmZXRjaENhbGxDb3VudGVyIiwicmVqZWN0IiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImZldGNoSWQiLCJyZXN1bHQiLCJ2YWx1ZSIsImNhdGNoIiwiZSIsIkxvZ2dlciIsImNvbnN0cnVjdG9yIiwic2hvdyIsInNob3dFcnJvcnMiLCJsb2dnZXJzIiwiZ2V0IiwiaW5mbyIsImxvZyIsInZlcmJvc2UiLCJkZWJ1ZyIsIndhcm4iLCJlcnJvciIsImdldExvZ2dlckZvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7OztRQVVnQkEsZSxHQUFBQSxlO1FBb0RBQyxhLEdBQUFBLGE7UUErQkFDLE8sR0FBQUEsTztRQUdBQyxXLEdBQUFBLFc7UUFhQUMsSSxHQUFBQSxJO1FBYUFDLHlCLEdBQUFBLHlCO1FBb0JBQyxrQixHQUFBQSxrQjtRQVlBQyxtQyxHQUFBQSxtQztRQVlBQyxlLEdBQUFBLGU7UUFXQUMsVSxHQUFBQSxVO1FBV0FDLHFCLEdBQUFBLHFCO1FBaUJBQyxLLEdBQUFBLEs7O0FBNU1oQjs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTs7O0FBR08sU0FBU1gsZUFBVCxHQUEyQjtBQUM5QixRQUFJWSxlQUFlLGVBQUtDLElBQUwsQ0FBVUMsU0FBVixFQUFxQixJQUFyQixFQUEyQixJQUEzQixFQUFpQyxNQUFqQyxFQUF5QyxVQUF6QyxDQUFuQjtBQUNBLFFBQUlDLFFBQVFDLFFBQVIsS0FBcUIsT0FBekIsRUFBa0NKLGdCQUFnQixNQUFoQjtBQUNsQyxXQUFPQSxZQUFQO0FBQ0g7O0FBRUQ7Ozs7QUFoQkE7QUFvQkEsU0FBU0ssTUFBVCxHQUFrQjtBQUNkLFFBQUlDLFVBQUo7QUFDQSxRQUFJQyxPQUFKO0FBQ0EsUUFBSUMsUUFBSjtBQUNBLFFBQUlDLEdBQUo7QUFDQSxRQUFJLGtCQUFNQyxLQUFOLENBQVksS0FBWixDQUFKLEVBQXdCO0FBQ3BCSixxQkFBYSxrQkFBTUssSUFB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Y2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItc3ByZWFkLCBuby1jb25zb2xlICovXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzaGVsbCBmcm9tICdzaGVsbGpzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgc3Bhd24gZnJvbSAnY3Jvc3Mtc3Bhd24nO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG4vKipcbiAqIFJldHVybnMgcGF0aCB0byBlbGVjdHJvbiBiaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVjdHJvblBhdGgoKSB7XG4gICAgbGV0IGVsZWN0cm9uUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuYmluJywgJ2VsZWN0cm9uJyk7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIGVsZWN0cm9uUGF0aCArPSAnLmNtZCc7XG4gICAgcmV0dXJuIGVsZWN0cm9uUGF0aDtcbn1cblxuLyoqXG4gKiBMb29rcyBmb3IgbnBtLlxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGdldE5wbSgpIHtcbiAgICBsZXQgZXhlY1Jlc3VsdDtcbiAgICBsZXQgdmVyc2lvbjtcbiAgICBsZXQgdmVyc2lvbjM7XG4gICAgbGV0IG5wbTtcbiAgICBpZiAoc2hlbGwud2hpY2goJ25wbScpKSB7XG4gICAgICAgIGV4ZWNSZXN1bHQgPSBzaGVsbC5leGVjKCducG0gLS12ZXJzaW9uJywgeyBzaWxlbnQ6IHRydWUgfSk7XG4gICAgICAgIGlmIChleGVjUmVzdWx0LmNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHZlcnNpb24gPSBleGVjUmVzdWx0LnN0ZG91dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICE9PSBudWxsICYmIHNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgJz49IDMuMC4wJykpIHtcbiAgICAgICAgbnBtID0gJ25wbSc7XG4gICAgfVxuXG4gICAgaWYgKCFucG0pIHtcbiAgICAgICAgaWYgKHNoZWxsLndoaWNoKCducG0zJykpIHtcbiAgICAgICAgICAgIGV4ZWNSZXN1bHQgPSBzaGVsbC5leGVjKCducG0zIC0tdmVyc2lvbicsIHsgc2lsZW50OiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKGV4ZWNSZXN1bHQuY29kZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHZlcnNpb24zID0gZXhlY1Jlc3VsdC5zdGRvdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyc2lvbjMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG5wbSA9ICducG0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbnBtID0gJ25wbTMnO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBucG07XG59XG5cbmNvbnN0IG5wbSA9IGdldE5wbSgpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZXN0IGFwcCB3aXRoIHRoZSBwbHVnaW4gaW5jbHVkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbGxQYXRoIC0gcGF0aCBhdCB3aGljaCB0byBpbnN0YWxsIHRoZSBhcHBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbHVnaW5OYW1lICAtIG5hbWUgb2YgdGhlIG5wbSBwYWNrYWdlIChwbHVnaW4pIHlvdSBhcmUgdGVzdGluZ1xuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXN0QXBwKGluc3RhbGxQYXRoLCBwbHVnaW5OYW1lKSB7XG4gICAgc2hlbGwucm0oJy1yZicsIGluc3RhbGxQYXRoKTtcbiAgICBzaGVsbC5ta2RpcihpbnN0YWxsUGF0aCk7XG4gICAgc2hlbGwuY3AoJy1yZicsIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdhcHAnLCAnKicpLCBpbnN0YWxsUGF0aCk7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBwYXRoLmpvaW4oaW5zdGFsbFBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgICBjb25zdCBpbmRleEpzID0gcGF0aC5qb2luKGluc3RhbGxQYXRoLCAnaW5kZXguanMnKTtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIHBhY2thZ2VKc29uLFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGFja2FnZUpzb24sICdVVEYtOCcpLnJlcGxhY2UoJ3twbHVnaW59JywgcGx1Z2luTmFtZSlcbiAgICApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoaW5kZXhKcywgZnMucmVhZEZpbGVTeW5jKGluZGV4SnMsICdVVEYtOCcpLnJlcGxhY2UoJ3twbHVnaW59JywgcGx1Z2luTmFtZSkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNwYXduKG5wbSwgWydpbnN0YWxsJ10sIHtcbiAgICAgICAgICAgIGN3ZDogcGF0aC5qb2luKHBhdGgucmVzb2x2ZShpbnN0YWxsUGF0aCkpLFxuICAgICAgICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgICAgICB9KS5vbignZXhpdCcsICgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gSVBDIG1lc3NhZ2UgdG8gdGhlIG1haW4gcHJvY2Vzcy5cbiAqICFXb3JrcyBvbmx5IHdoZW4geW91IGRvIG5vdCBoYXZlIGFuIGlwY1JlbmRlcmVyIGluaXRpYXRlZCBpbiB0aGUgYXBwIVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgLSB0aGUgYXBwIHJlZiBmcm9tIFNwZWN0cm9uXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIC0gYXJyYXkgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gaXBjLnNlbmRcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZElwYyhhcHAsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXBwLmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmQuYXBwbHkoYXBwLmVsZWN0cm9uLmlwY1JlbmRlcmVyLCBhcmdzKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZW5kSXBjU3luYyhhcHAsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXBwLmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jLmFwcGx5KGFwcC5lbGVjdHJvbi5pcGNSZW5kZXJlciwgYXJncyk7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gSVBDIGV2ZW50IHRvIHlvdXIgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgICAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBtb2R1bGUgbmFtZSB5b3VyIHBsdWdpbiBpcyByZWdpc3RlcmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50ICAtIGV2ZW50IGZyb20geW91ciBtb2R1bGVcbiAqIEBwYXJhbSB7QXJyYXl9ICBhcmdzICAgLSBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFzcyB0byBpcGMuc2VuZFxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kKGFwcCwgbW9kdWxlLCBldmVudCwgLi4uYXJncykge1xuICAgIGFyZ3MudW5zaGlmdChgJHttb2R1bGV9X18ke2V2ZW50fWApO1xuICAgIHJldHVybiBhcHAuZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZC5hcHBseShhcHAuZWxlY3Ryb24uaXBjUmVuZGVyZXIsIGFyZ3MpO1xufVxuXG4vKipcbiAqIFNlbmRzIGFuIElQQyBldmVudCBhbmQgd2FpdHMgZm9yIGFuIGFub3RoZXIgSVBDIGV2ZW50IHRvIGNvbWUuXG4gKiBAcGFyYW0ge09iamVjdH0gYXBwICAgICAgICAgICAgICAtIGFwcCByZWYgZnJvbSBTcGVjdHJvblxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9TZW5kICAgICAgLSBuYW1lIG9mIHRoZSBpcGMgZXZlbnQgdG8gc2VuZFxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9MaXN0ZW5Gb3IgLSBpcGMgZXZlbnQgdG8gbGlzdGVuIGZvclxuICogQHBhcmFtIHsuLi4qfSAgIGV2ZW50QXJncyAgICAgICAgLSBhcmd1bWVudHMgdG8gcGFzcyB3aXRoIHRoZSBldmVudFxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kSXBjQW5kV2FpdEZvclJlc3BvbnNlKGFwcCwgZXZlbnRUb1NlbmQsIGV2ZW50VG9MaXN0ZW5Gb3IsIC4uLmV2ZW50QXJncykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgcmV0dXJuIGFwcC5jbGllbnQuZXhlY3V0ZUFzeW5jKGZ1bmN0aW9uICgkcmVxdWlyZU5hbWUsICRldmVudFRvU2VuZCwgJGV2ZW50QXJncywgJGV2ZW50VG9MaXN0ZW5Gb3IsIGRvbmUpIHtcbiAgICAgICAgY29uc3QgaXBjID0gd2luZG93WyRyZXF1aXJlTmFtZV0oJ2VsZWN0cm9uJykuaXBjUmVuZGVyZXI7XG4gICAgICAgIGlwYy5vbmNlKCRldmVudFRvTGlzdGVuRm9yLCBmdW5jdGlvbiBldmVudENhbGxiYWNrKCkge1xuICAgICAgICAgICAgZG9uZShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRldmVudEFyZ3MudW5zaGlmdCgkZXZlbnRUb1NlbmQpO1xuICAgICAgICBpcGMuc2VuZC5hcHBseShpcGMsICRldmVudEFyZ3MpO1xuICAgIH0sIGFwcC5hcGkucmVxdWlyZU5hbWUsIGV2ZW50VG9TZW5kLCBldmVudEFyZ3MsIGV2ZW50VG9MaXN0ZW5Gb3IpO1xuICAgIC8qIGVzbGludC1lbmFibGUgKi9cbn1cblxuLyoqXG4gKiBGaXJlcyBhbiBldmVudCBvbiB0aGUgZXZlbnRzIGJ1cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgICAgICAgICAtIGFwcCByZWYgZnJvbSBTcGVjdHJvblxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9GaXJlIC0gbmFtZSBvZiB0aGUgZXZlbnQgdG8gZmlyZVxuICogQHBhcmFtIHsuLi4qfSAgIGV2ZW50QXJncyAgIC0gYXJndW1lbnRzIHRvIHBhc3Mgd2l0aCB0aGUgZXZlbnRcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZUV2ZW50c0J1c0V2ZW50KGFwcCwgZXZlbnRUb0ZpcmUsIC4uLmV2ZW50QXJncykge1xuICAgIHJldHVybiBzZW5kSXBjU3luYyhhcHAsICdmaXJlRXZlbnRzQnVzRXZlbnQnLCBldmVudFRvRmlyZSwgLi4uZXZlbnRBcmdzKTtcbn1cblxuLyoqXG4gKiBGaXJlcyBhbiBldmVudCBvbiB0aGUgZXZlbnRzIGJ1cyBhbmQgdGhlbiB3YWl0cyBmb3IgYW4gYW5vdGhlciBldmVudCB0byBiZSBlbWl0dGVkLlxuICogQHBhcmFtIHtPYmplY3R9IGFwcCAgICAgICAgICAgICAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFRvRmlyZSAgICAgIC0gbmFtZSBvZiB0aGUgZXZlbnQgdG8gZmlyZVxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9MaXN0ZW5Gb3IgLSBldmVudCB0byBsaXN0ZW4gZm9yIG9uIHRoZSBldmVudHMgYnVzXG4gKiBAcGFyYW0gey4uLip9ICAgZXZlbnRBcmdzICAgICAgICAtIGFyZ3VtZW50cyB0byBwYXNzIHdpdGggdGhlIGV2ZW50XG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZUV2ZW50c0J1c0V2ZW50QW5kV2FpdEZvckFub3RoZXIoXG4gICAgYXBwLCBldmVudFRvRmlyZSwgZXZlbnRUb0xpc3RlbkZvciwgLi4uZXZlbnRBcmdzXG4pIHtcbiAgICByZXR1cm4gc2VuZElwY1N5bmMoYXBwLCAnbGlzdGVuVG9FdmVudE9uRXZlbnRCdXMnLCBldmVudFRvTGlzdGVuRm9yKVxuICAgICAgICAudGhlbigoKSA9PiBzZW5kSXBjQW5kV2FpdEZvclJlc3BvbnNlKGFwcCwgJ2ZpcmVFdmVudHNCdXNFdmVudCcsIGBldmVudHNCdXNFdmVudF8ke2V2ZW50VG9MaXN0ZW5Gb3J9YCwgZXZlbnRUb0ZpcmUsIC4uLmV2ZW50QXJncykpO1xufVxuXG4vKipcbiAqIEluc3RhbnRpYXRlcyB5b3VyIHBsdWdpbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7Li4uKn0gIGFyZ3MgLSBhcmdzIHRvIHlvdXIgcGx1Z2luIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RQbHVnaW4oYXBwLCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIHNlbmRJcGNTeW5jKGFwcCwgJ2NvbnN0cnVjdFBsdWdpbicsIC4uLmFyZ3MpO1xufVxuXG5cbi8qKlxuICogV2FpdCBmb3IgYSBzcGVjaWZpZWQgaXBjIGV2ZW50LlxuICogQHBhcmFtIHtPYmplY3R9IGFwcCAgICAgICAgICAgICAtIGFwcCByZWYgZnJvbSBTcGVjdHJvblxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9MaXN0ZW5Gb3IgLSBuYW1lIG9mIHRoZSBldmVudCB0byBsaXN0ZW4gZm9yXG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvcklwYyhhcHAsIGV2ZW50VG9MaXN0ZW5Gb3IpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIHJldHVybiBhcHAuY2xpZW50LmV4ZWN1dGVBc3luYyhmdW5jdGlvbiAoJHJlcXVpcmVOYW1lLCAkZXZlbnRUb0xpc3RlblRvLCBkb25lKSB7XG4gICAgICAgIGNvbnN0IGlwYyA9IHdpbmRvd1skcmVxdWlyZU5hbWVdKCdlbGVjdHJvbicpLmlwY1JlbmRlcmVyO1xuICAgICAgICBpcGMub25jZSgkZXZlbnRUb0xpc3RlblRvLCBmdW5jdGlvbiBldmVudENhbGxiYWNrKCkge1xuICAgICAgICAgICAgZG9uZShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICAgICAgfSk7XG4gICAgfSwgYXBwLmFwaS5yZXF1aXJlTmFtZSwgZXZlbnRUb0xpc3RlbkZvcik7XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvckV2ZW50c0J1c0V2ZW50KGFwcCwgZXZlbnRUb0xpc3RlbkZvcikge1xuICAgIHJldHVybiBzZW5kSXBjU3luYyhhcHAsICdsaXN0ZW5Ub0V2ZW50T25FdmVudEJ1cycsIGV2ZW50VG9MaXN0ZW5Gb3IpLnRoZW4oXG4gICAgICAgICgpID0+IHdhaXRGb3JJcGMoYXBwLCBgZXZlbnRCdXNFdmVudF8ke2V2ZW50VG9MaXN0ZW5Gb3J9YClcbiAgICApO1xufVxuXG5cbmxldCBmZXRjaENhbGxDb3VudGVyID0gMDtcblxuLyoqXG4gKiBGZXRjaGVzIHNvbWUgZGF0YSBmcm9tIG1haW4gcHJvY2VzcyBieSBzZW5kaW5nIGFuIElQQyBldmVudCBhbmQgd2FpdGluZyBmb3IgYSByZXNwb25zZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgICAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBtb2R1bGUgbmFtZSB5b3VyIHBsdWdpbiBpcyByZWdpc3RlcmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50ICAtIGV2ZW50IGZyb20geW91ciBtb2R1bGVcbiAqIEBwYXJhbSB7QXJyYXl9ICBhcmdzICAgLSBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFzcyB0byBpcGMuc2VuZFxuICogQHJldHVybiB7UHJvbWlzZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGFwcCwgbW9kdWxlLCBldmVudCwgLi4uYXJncykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGlmIChmZXRjaENhbGxDb3VudGVyID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgZmV0Y2hDYWxsQ291bnRlciA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZmV0Y2hDYWxsQ291bnRlciArPSAxO1xuICAgICAgICBjb25zdCBmZXRjaElkID0gZmV0Y2hDYWxsQ291bnRlcjtcbiAgICAgICAgc2VuZElwY0FuZFdhaXRGb3JSZXNwb25zZShhcHAsXG4gICAgICAgICAgICBgJHttb2R1bGV9X18ke2V2ZW50fWAsXG4gICAgICAgICAgICBgJHttb2R1bGV9X18ke2V2ZW50fV9fX3Jlc3BvbnNlYCxcbiAgICAgICAgICAgIGZldGNoSWQsIC4uLmFyZ3MpXG4gICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlWzFdID09PSBmZXRjaElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoJ3dyb25nIGZldGNoSWQgaW4gdGhlIGlwYyByZXNwb25zZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHJlamVjdChlKSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICAgIGNvbnN0cnVjdG9yKHNob3csIHNob3dFcnJvcnMpIHtcbiAgICAgICAgdGhpcy5zaG93ID0gc2hvdztcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzID0gc2hvd0Vycm9ycztcbiAgICAgICAgdGhpcy5sb2dnZXJzID0ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiBuZXcgTG9nZ2VyKHNob3csIHNob3dFcnJvcnMpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW5mbyguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmVyYm9zZSguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVidWcoLi4uYXJncykge1xuICAgICAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdhcm4oLi4uYXJncykge1xuICAgICAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvciguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cgfHwgdGhpcy5zaG93RXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TG9nZ2VyRm9yKCkge1xuICAgICAgICByZXR1cm4gbmV3IExvZ2dlcih0aGlzLnNob3csIHRoaXMuc2hvd0Vycm9ycyk7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRFbGVjdHJvblBhdGgsXG4gICAgY29uc3RydWN0UGx1Z2luLFxuICAgIHNlbmRJcGMsXG4gICAgc2VuZElwY1N5bmMsXG4gICAgY3JlYXRlVGVzdEFwcCxcbiAgICBzZW5kLFxuICAgIGZpcmVFdmVudHNCdXNFdmVudCxcbiAgICBmaXJlRXZlbnRzQnVzRXZlbnRBbmRXYWl0Rm9yQW5vdGhlcixcbiAgICB3YWl0Rm9ySXBjLFxuICAgIHdhaXRGb3JFdmVudHNCdXNFdmVudCxcbiAgICBmZXRjaCxcbiAgICBzZW5kSXBjQW5kV2FpdEZvclJlc3BvbnNlLFxuICAgIExvZ2dlclxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWl0ZS5qcyJdLCJuYW1lcyI6WyJnZXRFbGVjdHJvblBhdGgiLCJjcmVhdGVUZXN0QXBwIiwic2VuZElwYyIsInNlbmRJcGNTeW5jIiwic2VuZCIsInNlbmRJcGNBbmRXYWl0Rm9yUmVzcG9uc2UiLCJmaXJlRXZlbnRzQnVzRXZlbnQiLCJmaXJlRXZlbnRzQnVzRXZlbnRBbmRXYWl0Rm9yQW5vdGhlciIsImNvbnN0cnVjdFBsdWdpbiIsIndhaXRGb3JJcGMiLCJ3YWl0Rm9yRXZlbnRzQnVzRXZlbnQiLCJmZXRjaCIsImVsZWN0cm9uUGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJnZXROcG0iLCJleGVjUmVzdWx0IiwidmVyc2lvbiIsInZlcnNpb24zIiwibnBtIiwid2hpY2giLCJleGVjIiwic2lsZW50IiwiY29kZSIsInN0ZG91dCIsInNhdGlzZmllcyIsImluc3RhbGxQYXRoIiwicGx1Z2luTmFtZSIsInJtIiwibWtkaXIiLCJjcCIsInBhY2thZ2VKc29uIiwiaW5kZXhKcyIsIndyaXRlRmlsZVN5bmMiLCJyZWFkRmlsZVN5bmMiLCJyZXBsYWNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjd2QiLCJzdGRpbyIsIm9uIiwiYXBwIiwiYXJncyIsImVsZWN0cm9uIiwiaXBjUmVuZGVyZXIiLCJhcHBseSIsInNlbmRTeW5jIiwibW9kdWxlIiwiZXZlbnQiLCJ1bnNoaWZ0IiwiZXZlbnRUb1NlbmQiLCJldmVudFRvTGlzdGVuRm9yIiwiZXZlbnRBcmdzIiwiY2xpZW50IiwiZXhlY3V0ZUFzeW5jIiwiJHJlcXVpcmVOYW1lIiwiJGV2ZW50VG9TZW5kIiwiJGV2ZW50QXJncyIsIiRldmVudFRvTGlzdGVuRm9yIiwiZG9uZSIsImlwYyIsIndpbmRvdyIsIm9uY2UiLCJldmVudENhbGxiYWNrIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJhcGkiLCJyZXF1aXJlTmFtZSIsImV2ZW50VG9GaXJlIiwidGhlbiIsIiRldmVudFRvTGlzdGVuVG8iLCJmZXRjaENhbGxDb3VudGVyIiwicmVqZWN0IiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImZldGNoSWQiLCJyZXN1bHQiLCJ2YWx1ZSIsImNhdGNoIiwiZSIsIkxvZ2dlciIsImNvbnN0cnVjdG9yIiwic2hvdyIsInNob3dFcnJvcnMiLCJsb2dnZXJzIiwiZ2V0IiwiaW5mbyIsImxvZyIsInZlcmJvc2UiLCJkZWJ1ZyIsIndhcm4iLCJlcnJvciIsImdldExvZ2dlckZvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7OztRQVVnQkEsZSxHQUFBQSxlO1FBb0RBQyxhLEdBQUFBLGE7UUErQkFDLE8sR0FBQUEsTztRQUdBQyxXLEdBQUFBLFc7UUFhQUMsSSxHQUFBQSxJO1FBYUFDLHlCLEdBQUFBLHlCO1FBb0JBQyxrQixHQUFBQSxrQjtRQVlBQyxtQyxHQUFBQSxtQztRQVlBQyxlLEdBQUFBLGU7UUFXQUMsVSxHQUFBQSxVO1FBV0FDLHFCLEdBQUFBLHFCO1FBaUJBQyxLLEdBQUFBLEs7O0FBNU1oQjs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTs7O0FBR08sU0FBU1gsZUFBVCxHQUEyQjtBQUM5QixRQUFJWSxlQUFlLGVBQUtDLElBQUwsQ0FBVUMsU0FBVixFQUFxQixJQUFyQixFQUEyQixJQUEzQixFQUFpQyxNQUFqQyxFQUF5QyxVQUF6QyxDQUFuQjtBQUNBLFFBQUlDLFFBQVFDLFFBQVIsS0FBcUIsT0FBekIsRUFBa0NKLGdCQUFnQixNQUFoQjtBQUNsQyxXQUFPQSxZQUFQO0FBQ0g7O0FBRUQ7Ozs7QUFoQkE7QUFvQkEsU0FBU0ssTUFBVCxHQUFrQjtBQUNkLFFBQUlDLFVBQUo7QUFDQSxRQUFJQyxPQUFKO0FBQ0EsUUFBSUMsUUFBSjtBQUNBLFFBQUlDLEdBQUo7QUFDQSxRQUFJLGtCQUFNQyxLQUFOLENBQVksS0FBWixDQUFKLEVBQXdCO0FBQ3BCSixxQkFBYSxrQkFBTUssSUFBTixDQUFXLGVBQVgsRUFBNEIsRUFBRUMsUUFBUSxJQUFWLEVBQTVCLENBQWI7QUFDQSxZQUFJTixXQUFXTyxJQUFYLEtBQW9CLENBQXhCLEVBQTJCO0FBQ3ZCTixzQkFBVUQsV0FBV1EsTUFBckI7QUFDSDtBQUNKOztBQUVELFFBQUlQLFlBQVksSUFBWixJQUFvQixpQkFBT1EsU0FBUCxDQUFpQlIsT0FBakIsRUFBMEIsVUFBMUIsQ0FBeEIsRUFBK0Q7QUFDM0RFLGNBQU0sS0FBTjtBQUNIOztBQUVELFFBQUksQ0FBQ0EsR0FBTCxFQUFVO0FBQ04sWUFBSSxrQkFBTUMsS0FBTixDQUFZLE1BQVosQ0FBSixFQUF5QjtBQUNyQkoseUJBQWEsa0JBQU1LLElBQU4sQ0FBVyxnQkFBWCxFQUE2QixFQUFFQyxRQUFRLElBQVYsRUFBN0IsQ0FBYjtBQUNBLGdCQUFJTixXQUFXTyxJQUFYLEtBQW9CLENBQXhCLEVBQTJCO0FBQ3ZCTCwyQkFBV0YsV0FBV1EsTUFBdEI7QUFDSDtBQUNKOztBQUVELFlBQUlOLGFBQWEsSUFBakIsRUFBdUI7QUFDbkJDLGtCQUFNLEtBQU47QUFDSCxTQUZELE1BRU87QUFDSEEsa0JBQU0sTUFBTjtBQUNIO0FBQ0o7QUFDRCxXQUFPQSxHQUFQO0FBQ0g7O0FBRUQsTUFBTUEsTUFBTUosUUFBWjs7QUFFQTs7Ozs7OztBQU9PLFNBQVNoQixhQUFULENBQXVCMkIsV0FBdkIsRUFBb0NDLFVBQXBDLEVBQWdEO0FBQ25ELHNCQUFNQyxFQUFOLENBQVMsS0FBVCxFQUFnQkYsV0FBaEI7QUFDQSxzQkFBTUcsS0FBTixDQUFZSCxXQUFaO0FBQ0Esc0JBQU1JLEVBQU4sQ0FBUyxLQUFULEVBQWdCLGVBQUtuQixJQUFMLENBQVVDLFNBQVYsRUFBcUIsSUFBckIsRUFBMkIsS0FBM0IsRUFBa0MsR0FBbEMsQ0FBaEIsRUFBd0RjLFdBQXhEO0FBQ0EsVUFBTUssY0FBYyxlQUFLcEIsSUFBTCxDQUFVZSxXQUFWLEVBQXVCLGNBQXZCLENBQXBCO0FBQ0EsVUFBTU0sVUFBVSxlQUFLckIsSUFBTCxDQUFVZSxXQUFWLEVBQXVCLFVBQXZCLENBQWhCOztBQUVBLGlCQUFHTyxhQUFILENBQ0lGLFdBREosRUFFSSxhQUFHRyxZQUFILENBQWdCSCxXQUFoQixFQUE2QixPQUE3QixFQUFzQ0ksT0FBdEMsQ0FBOEMsVUFBOUMsRUFBMERSLFVBQTFELENBRko7QUFJQSxpQkFBR00sYUFBSCxDQUFpQkQsT0FBakIsRUFBMEIsYUFBR0UsWUFBSCxDQUFnQkYsT0FBaEIsRUFBeUIsT0FBekIsRUFBa0NHLE9BQWxDLENBQTBDLFVBQTFDLEVBQXNEUixVQUF0RCxDQUExQjs7QUFFQSxXQUFPLElBQUlTLE9BQUosQ0FBYUMsT0FBRCxJQUFhO0FBQzVCLGtDQUFNbEIsR0FBTixFQUFXLENBQUMsU0FBRCxDQUFYLEVBQXdCO0FBQ3BCbUIsaUJBQUssZUFBSzNCLElBQUwsQ0FBVSxlQUFLMEIsT0FBTCxDQUFhWCxXQUFiLENBQVYsQ0FEZTtBQUVwQmEsbUJBQU87QUFGYSxTQUF4QixFQUdHQyxFQUhILENBR00sTUFITixFQUdjLE1BQU07QUFDaEJIO0FBQ0gsU0FMRDtBQU1ILEtBUE0sQ0FBUDtBQVFIOztBQUVEOzs7Ozs7OztBQVFPLFNBQVNyQyxPQUFULENBQWlCeUMsR0FBakIsRUFBK0I7QUFBQSxzQ0FBTkMsSUFBTTtBQUFOQSxZQUFNO0FBQUE7O0FBQ2xDLFdBQU9ELElBQUlFLFFBQUosQ0FBYUMsV0FBYixDQUF5QjFDLElBQXpCLENBQThCMkMsS0FBOUIsQ0FBb0NKLElBQUlFLFFBQUosQ0FBYUMsV0FBakQsRUFBOERGLElBQTlELENBQVA7QUFDSDtBQUNNLFNBQVN6QyxXQUFULENBQXFCd0MsR0FBckIsRUFBbUM7QUFBQSx1Q0FBTkMsSUFBTTtBQUFOQSxZQUFNO0FBQUE7O0FBQ3RDLFdBQU9ELElBQUlFLFFBQUosQ0FBYUMsV0FBYixDQUF5QkUsUUFBekIsQ0FBa0NELEtBQWxDLENBQXdDSixJQUFJRSxRQUFKLENBQWFDLFdBQXJELEVBQWtFRixJQUFsRSxDQUFQO0FBQ0g7O0FBRUQ7Ozs7Ozs7OztBQVNPLFNBQVN4QyxJQUFULENBQWN1QyxHQUFkLEVBQW1CTSxNQUFuQixFQUEyQkMsS0FBM0IsRUFBMkM7QUFBQSx1Q0FBTk4sSUFBTTtBQUFOQSxZQUFNO0FBQUE7O0FBQzlDQSxTQUFLTyxPQUFMLENBQWMsSUFBRUYsTUFBTyxPQUFJQyxLQUFNLEdBQWpDO0FBQ0EsV0FBT1AsSUFBSUUsUUFBSixDQUFhQyxXQUFiLENBQXlCMUMsSUFBekIsQ0FBOEIyQyxLQUE5QixDQUFvQ0osSUFBSUUsUUFBSixDQUFhQyxXQUFqRCxFQUE4REYsSUFBOUQsQ0FBUDtBQUNIOztBQUVEOzs7Ozs7OztBQVFPLFNBQVN2Qyx5QkFBVCxDQUFtQ3NDLEdBQW5DLEVBQXdDUyxXQUF4QyxFQUFxREMsZ0JBQXJELEVBQXFGO0FBQUEsdUNBQVhDLFNBQVc7QUFBWEEsaUJBQVc7QUFBQTs7QUFDeEY7QUFDQSxXQUFPWCxJQUFJWSxNQUFKLENBQVdDLFlBQVgsQ0FBd0IsVUFBVUMsWUFBVixFQUF3QkMsWUFBeEIsRUFBc0NDLFVBQXRDLEVBQWtEQyxpQkFBbEQsRUFBcUVDLElBQXJFLEVBQTJFO0FBQ3RHLGNBQU1DLE1BQU1DLE9BQU9OLFlBQVAsRUFBcUIsVUFBckIsRUFBaUNYLFdBQTdDO0FBQ0FnQixZQUFJRSxJQUFKLENBQVNKLGlCQUFULEVBQTRCLFNBQVNLLGFBQVQsR0FBeUI7QUFDakRKLGlCQUFLSyxNQUFNQyxTQUFOLENBQWdCQyxLQUFoQixDQUFzQkMsSUFBdEIsQ0FBMkJDLFNBQTNCLENBQUw7QUFDSCxTQUZEO0FBR0FYLG1CQUFXUixPQUFYLENBQW1CTyxZQUFuQjtBQUNBSSxZQUFJMUQsSUFBSixDQUFTMkMsS0FBVCxDQUFlZSxHQUFmLEVBQW9CSCxVQUFwQjtBQUNILEtBUE0sRUFPSmhCLElBQUk0QixHQUFKLENBQVFDLFdBUEosRUFPaUJwQixXQVBqQixFQU84QkUsU0FQOUIsRUFPeUNELGdCQVB6QyxDQUFQO0FBUUE7QUFDSDs7QUFFRDs7Ozs7OztBQU9PLFNBQVMvQyxrQkFBVCxDQUE0QnFDLEdBQTVCLEVBQWlDOEIsV0FBakMsRUFBNEQ7QUFBQSx1Q0FBWG5CLFNBQVc7QUFBWEEsaUJBQVc7QUFBQTs7QUFDL0QsV0FBT25ELDhCQUFZd0MsR0FBWixFQUFpQixvQkFBakIsRUFBdUM4QixXQUF2QyxTQUF1RG5CLFNBQXZELEVBQVA7QUFDSDs7QUFFRDs7Ozs7Ozs7QUFRTyxTQUFTL0MsbUNBQVQsQ0FDSG9DLEdBREcsRUFDRThCLFdBREYsRUFDZXBCLGdCQURmLEVBRUw7QUFBQSx1Q0FEeUNDLFNBQ3pDO0FBRHlDQSxpQkFDekM7QUFBQTs7QUFDRSxXQUFPbkQsWUFBWXdDLEdBQVosRUFBaUIseUJBQWpCLEVBQTRDVSxnQkFBNUMsRUFDRnFCLElBREUsQ0FDRyxNQUFNckUsNENBQTBCc0MsR0FBMUIsRUFBK0Isb0JBQS9CLEVBQXNELG1CQUFpQlUsZ0JBQWlCLEdBQXhGLEVBQTJGb0IsV0FBM0YsU0FBMkduQixTQUEzRyxFQURULENBQVA7QUFFSDs7QUFFRDs7Ozs7QUFLTyxTQUFTOUMsZUFBVCxDQUF5Qm1DLEdBQXpCLEVBQXVDO0FBQUEsdUNBQU5DLElBQU07QUFBTkEsWUFBTTtBQUFBOztBQUMxQyxXQUFPekMsOEJBQVl3QyxHQUFaLEVBQWlCLGlCQUFqQixTQUF1Q0MsSUFBdkMsRUFBUDtBQUNIOztBQUdEOzs7Ozs7QUFNTyxTQUFTbkMsVUFBVCxDQUFvQmtDLEdBQXBCLEVBQXlCVSxnQkFBekIsRUFBMkM7QUFDOUM7QUFDQSxXQUFPVixJQUFJWSxNQUFKLENBQVdDLFlBQVgsQ0FBd0IsVUFBVUMsWUFBVixFQUF3QmtCLGdCQUF4QixFQUEwQ2QsSUFBMUMsRUFBZ0Q7QUFDM0UsY0FBTUMsTUFBTUMsT0FBT04sWUFBUCxFQUFxQixVQUFyQixFQUFpQ1gsV0FBN0M7QUFDQWdCLFlBQUlFLElBQUosQ0FBU1csZ0JBQVQsRUFBMkIsU0FBU1YsYUFBVCxHQUF5QjtBQUNoREosaUJBQUtLLE1BQU1DLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCQyxJQUF0QixDQUEyQkMsU0FBM0IsQ0FBTDtBQUNILFNBRkQ7QUFHSCxLQUxNLEVBS0ozQixJQUFJNEIsR0FBSixDQUFRQyxXQUxKLEVBS2lCbkIsZ0JBTGpCLENBQVA7QUFNQTtBQUNIOztBQUVNLFNBQVMzQyxxQkFBVCxDQUErQmlDLEdBQS9CLEVBQW9DVSxnQkFBcEMsRUFBc0Q7QUFDekQsV0FBT2xELFlBQVl3QyxHQUFaLEVBQWlCLHlCQUFqQixFQUE0Q1UsZ0JBQTVDLEVBQThEcUIsSUFBOUQsQ0FDSCxNQUFNakUsV0FBV2tDLEdBQVgsRUFBaUIsa0JBQWdCVSxnQkFBaUIsR0FBbEQsQ0FESCxDQUFQO0FBR0g7O0FBR0QsSUFBSXVCLG1CQUFtQixDQUF2Qjs7QUFFQTs7Ozs7Ozs7QUFRTyxTQUFTakUsS0FBVCxDQUFlZ0MsR0FBZixFQUFvQk0sTUFBcEIsRUFBNEJDLEtBQTVCLEVBQTRDO0FBQUEsdUNBQU5OLElBQU07QUFBTkEsWUFBTTtBQUFBOztBQUMvQyxXQUFPLElBQUlOLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVzQyxNQUFWLEtBQXFCO0FBQ3BDLFlBQUlELHFCQUFxQkUsT0FBT0MsZ0JBQWhDLEVBQWtEO0FBQzlDSCwrQkFBbUIsQ0FBbkI7QUFDSDtBQUNEQSw0QkFBb0IsQ0FBcEI7QUFDQSxjQUFNSSxVQUFVSixnQkFBaEI7QUFDQXZFLG9EQUEwQnNDLEdBQTFCLEVBQ0ssSUFBRU0sTUFBTyxPQUFJQyxLQUFNLEdBRHhCLEVBRUssSUFBRUQsTUFBTyxPQUFJQyxLQUFNLGNBRnhCLEVBR0k4QixPQUhKLFNBR2dCcEMsSUFIaEIsR0FJSzhCLElBSkwsQ0FJV08sTUFBRCxJQUFZO0FBQ2QsZ0JBQUlBLE9BQU9DLEtBQVgsRUFBa0I7QUFDZCxvQkFBSUQsT0FBT0MsS0FBUCxDQUFhLENBQWIsTUFBb0JGLE9BQXhCLEVBQWlDO0FBQzdCekMsNEJBQVEwQyxPQUFPQyxLQUFmO0FBQ0gsaUJBRkQsTUFFTztBQUNITCwyQkFBTyxtQ0FBUDtBQUNIO0FBQ0o7QUFDSixTQVpMLEVBYUtNLEtBYkwsQ0FhV0MsS0FBS1AsT0FBT08sQ0FBUCxDQWJoQjtBQWNILEtBcEJNLENBQVA7QUFxQkg7O0FBRU0sTUFBTUMsTUFBTixDQUFhO0FBQ2hCQyxnQkFBWUMsSUFBWixFQUFrQkMsVUFBbEIsRUFBOEI7QUFDMUIsYUFBS0QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxhQUFLQyxPQUFMLEdBQWU7QUFDWEMsaUJBQUssTUFBTSxJQUFJTCxNQUFKLENBQVdFLElBQVgsRUFBaUJDLFVBQWpCO0FBREEsU0FBZjtBQUdIOztBQUVERyxXQUFjO0FBQ1YsWUFBSSxLQUFLSixJQUFULEVBQWU7QUFBQTs7QUFDWCxpQ0FBUUssR0FBUjtBQUNIO0FBQ0o7O0FBRURDLGNBQWlCO0FBQ2IsWUFBSSxLQUFLTixJQUFULEVBQWU7QUFBQTs7QUFDWCxrQ0FBUUssR0FBUjtBQUNIO0FBQ0o7O0FBRURFLFlBQWU7QUFDWCxZQUFJLEtBQUtQLElBQVQsRUFBZTtBQUFBOztBQUNYLGtDQUFRSyxHQUFSO0FBQ0g7QUFDSjs7QUFFREcsV0FBYztBQUNWLFlBQUksS0FBS1IsSUFBVCxFQUFlO0FBQUE7O0FBQ1gsa0NBQVFRLElBQVI7QUFDSDtBQUNKOztBQUVEQyxZQUFlO0FBQ1gsWUFBSSxLQUFLVCxJQUFMLElBQWEsS0FBS0MsVUFBdEIsRUFBa0M7QUFBQTs7QUFDOUIsa0NBQVFRLEtBQVI7QUFDSDtBQUNKOztBQUVEQyxtQkFBZTtBQUNYLGVBQU8sSUFBSVosTUFBSixDQUFXLEtBQUtFLElBQWhCLEVBQXNCLEtBQUtDLFVBQTNCLENBQVA7QUFDSDtBQXpDZTs7UUFBUEgsTSxHQUFBQSxNO0FBNENicEMsT0FBT2lELE9BQVAsR0FBaUI7QUFDYmxHLG9DQURhO0FBRWJRLG9DQUZhO0FBR2JOLG9CQUhhO0FBSWJDLDRCQUphO0FBS2JGLGdDQUxhO0FBTWJHLGNBTmE7QUFPYkUsMENBUGE7QUFRYkMsNEVBUmE7QUFTYkUsMEJBVGE7QUFVYkMsZ0RBVmE7QUFXYkMsZ0JBWGE7QUFZYk4sd0RBWmE7QUFhYmdGO0FBYmEsQ0FBakIiLCJmaWxlIjoic3VpdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItc3ByZWFkLCBuby1jb25zb2xlICovXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzaGVsbCBmcm9tICdzaGVsbGpzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgc3Bhd24gZnJvbSAnY3Jvc3Mtc3Bhd24nO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG4vKipcbiAqIFJldHVybnMgcGF0aCB0byBlbGVjdHJvbiBiaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVjdHJvblBhdGgoKSB7XG4gICAgbGV0IGVsZWN0cm9uUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuYmluJywgJ2VsZWN0cm9uJyk7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIGVsZWN0cm9uUGF0aCArPSAnLmNtZCc7XG4gICAgcmV0dXJuIGVsZWN0cm9uUGF0aDtcbn1cblxuLyoqXG4gKiBMb29rcyBmb3IgbnBtLlxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGdldE5wbSgpIHtcbiAgICBsZXQgZXhlY1Jlc3VsdDtcbiAgICBsZXQgdmVyc2lvbjtcbiAgICBsZXQgdmVyc2lvbjM7XG4gICAgbGV0IG5wbTtcbiAgICBpZiAoc2hlbGwud2hpY2goJ25wbScpKSB7XG4gICAgICAgIGV4ZWNSZXN1bHQgPSBzaGVsbC5leGVjKCducG0gLS12ZXJzaW9uJywgeyBzaWxlbnQ6IHRydWUgfSk7XG4gICAgICAgIGlmIChleGVjUmVzdWx0LmNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHZlcnNpb24gPSBleGVjUmVzdWx0LnN0ZG91dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICE9PSBudWxsICYmIHNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgJz49IDMuMC4wJykpIHtcbiAgICAgICAgbnBtID0gJ25wbSc7XG4gICAgfVxuXG4gICAgaWYgKCFucG0pIHtcbiAgICAgICAgaWYgKHNoZWxsLndoaWNoKCducG0zJykpIHtcbiAgICAgICAgICAgIGV4ZWNSZXN1bHQgPSBzaGVsbC5leGVjKCducG0zIC0tdmVyc2lvbicsIHsgc2lsZW50OiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKGV4ZWNSZXN1bHQuY29kZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHZlcnNpb24zID0gZXhlY1Jlc3VsdC5zdGRvdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyc2lvbjMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG5wbSA9ICducG0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbnBtID0gJ25wbTMnO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBucG07XG59XG5cbmNvbnN0IG5wbSA9IGdldE5wbSgpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZXN0IGFwcCB3aXRoIHRoZSBwbHVnaW4gaW5jbHVkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbGxQYXRoIC0gcGF0aCBhdCB3aGljaCB0byBpbnN0YWxsIHRoZSBhcHBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbHVnaW5OYW1lICAtIG5hbWUgb2YgdGhlIG5wbSBwYWNrYWdlIChwbHVnaW4pIHlvdSBhcmUgdGVzdGluZ1xuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXN0QXBwKGluc3RhbGxQYXRoLCBwbHVnaW5OYW1lKSB7XG4gICAgc2hlbGwucm0oJy1yZicsIGluc3RhbGxQYXRoKTtcbiAgICBzaGVsbC5ta2RpcihpbnN0YWxsUGF0aCk7XG4gICAgc2hlbGwuY3AoJy1yZicsIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdhcHAnLCAnKicpLCBpbnN0YWxsUGF0aCk7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBwYXRoLmpvaW4oaW5zdGFsbFBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgICBjb25zdCBpbmRleEpzID0gcGF0aC5qb2luKGluc3RhbGxQYXRoLCAnaW5kZXguanMnKTtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIHBhY2thZ2VKc29uLFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGFja2FnZUpzb24sICdVVEYtOCcpLnJlcGxhY2UoJ3twbHVnaW59JywgcGx1Z2luTmFtZSlcbiAgICApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoaW5kZXhKcywgZnMucmVhZEZpbGVTeW5jKGluZGV4SnMsICdVVEYtOCcpLnJlcGxhY2UoJ3twbHVnaW59JywgcGx1Z2luTmFtZSkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNwYXduKG5wbSwgWydpbnN0YWxsJ10sIHtcbiAgICAgICAgICAgIGN3ZDogcGF0aC5qb2luKHBhdGgucmVzb2x2ZShpbnN0YWxsUGF0aCkpLFxuICAgICAgICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgICAgICB9KS5vbignZXhpdCcsICgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gSVBDIG1lc3NhZ2UgdG8gdGhlIG1haW4gcHJvY2Vzcy5cbiAqICFXb3JrcyBvbmx5IHdoZW4geW91IGRvIG5vdCBoYXZlIGFuIGlwY1JlbmRlcmVyIGluaXRpYXRlZCBpbiB0aGUgYXBwIVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgLSB0aGUgYXBwIHJlZiBmcm9tIFNwZWN0cm9uXG4gKiBAcGFyYW0gey4uLip9ICBhcmdzIC0gYXJyYXkgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gaXBjLnNlbmRcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZElwYyhhcHAsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXBwLmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmQuYXBwbHkoYXBwLmVsZWN0cm9uLmlwY1JlbmRlcmVyLCBhcmdzKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZW5kSXBjU3luYyhhcHAsIC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXBwLmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jLmFwcGx5KGFwcC5lbGVjdHJvbi5pcGNSZW5kZXJlciwgYXJncyk7XG59XG5cbi8qKlxuICogU2VuZHMgYW4gSVBDIGV2ZW50IHRvIHlvdXIgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgICAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBtb2R1bGUgbmFtZSB5b3VyIHBsdWdpbiBpcyByZWdpc3RlcmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50ICAtIGV2ZW50IGZyb20geW91ciBtb2R1bGVcbiAqIEBwYXJhbSB7Li4uKn0gYXJncyAgICAgLSBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFzcyB0byBpcGMuc2VuZFxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kKGFwcCwgbW9kdWxlLCBldmVudCwgLi4uYXJncykge1xuICAgIGFyZ3MudW5zaGlmdChgJHttb2R1bGV9X18ke2V2ZW50fWApO1xuICAgIHJldHVybiBhcHAuZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZC5hcHBseShhcHAuZWxlY3Ryb24uaXBjUmVuZGVyZXIsIGFyZ3MpO1xufVxuXG4vKipcbiAqIFNlbmRzIGFuIElQQyBldmVudCBhbmQgd2FpdHMgZm9yIGFuIGFub3RoZXIgSVBDIGV2ZW50IHRvIGNvbWUuXG4gKiBAcGFyYW0ge09iamVjdH0gYXBwICAgICAgICAgICAgICAtIGFwcCByZWYgZnJvbSBTcGVjdHJvblxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9TZW5kICAgICAgLSBuYW1lIG9mIHRoZSBpcGMgZXZlbnQgdG8gc2VuZFxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9MaXN0ZW5Gb3IgLSBpcGMgZXZlbnQgdG8gbGlzdGVuIGZvclxuICogQHBhcmFtIHsuLi4qfSAgIGV2ZW50QXJncyAgICAgICAgLSBhcmd1bWVudHMgdG8gcGFzcyB3aXRoIHRoZSBldmVudFxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kSXBjQW5kV2FpdEZvclJlc3BvbnNlKGFwcCwgZXZlbnRUb1NlbmQsIGV2ZW50VG9MaXN0ZW5Gb3IsIC4uLmV2ZW50QXJncykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgcmV0dXJuIGFwcC5jbGllbnQuZXhlY3V0ZUFzeW5jKGZ1bmN0aW9uICgkcmVxdWlyZU5hbWUsICRldmVudFRvU2VuZCwgJGV2ZW50QXJncywgJGV2ZW50VG9MaXN0ZW5Gb3IsIGRvbmUpIHtcbiAgICAgICAgY29uc3QgaXBjID0gd2luZG93WyRyZXF1aXJlTmFtZV0oJ2VsZWN0cm9uJykuaXBjUmVuZGVyZXI7XG4gICAgICAgIGlwYy5vbmNlKCRldmVudFRvTGlzdGVuRm9yLCBmdW5jdGlvbiBldmVudENhbGxiYWNrKCkge1xuICAgICAgICAgICAgZG9uZShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRldmVudEFyZ3MudW5zaGlmdCgkZXZlbnRUb1NlbmQpO1xuICAgICAgICBpcGMuc2VuZC5hcHBseShpcGMsICRldmVudEFyZ3MpO1xuICAgIH0sIGFwcC5hcGkucmVxdWlyZU5hbWUsIGV2ZW50VG9TZW5kLCBldmVudEFyZ3MsIGV2ZW50VG9MaXN0ZW5Gb3IpO1xuICAgIC8qIGVzbGludC1lbmFibGUgKi9cbn1cblxuLyoqXG4gKiBGaXJlcyBhbiBldmVudCBvbiB0aGUgZXZlbnRzIGJ1cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgICAgICAgICAtIGFwcCByZWYgZnJvbSBTcGVjdHJvblxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9GaXJlIC0gbmFtZSBvZiB0aGUgZXZlbnQgdG8gZmlyZVxuICogQHBhcmFtIHsuLi4qfSAgIGV2ZW50QXJncyAgIC0gYXJndW1lbnRzIHRvIHBhc3Mgd2l0aCB0aGUgZXZlbnRcbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZUV2ZW50c0J1c0V2ZW50KGFwcCwgZXZlbnRUb0ZpcmUsIC4uLmV2ZW50QXJncykge1xuICAgIHJldHVybiBzZW5kSXBjU3luYyhhcHAsICdmaXJlRXZlbnRzQnVzRXZlbnQnLCBldmVudFRvRmlyZSwgLi4uZXZlbnRBcmdzKTtcbn1cblxuLyoqXG4gKiBGaXJlcyBhbiBldmVudCBvbiB0aGUgZXZlbnRzIGJ1cyBhbmQgdGhlbiB3YWl0cyBmb3IgYW4gYW5vdGhlciBldmVudCB0byBiZSBlbWl0dGVkLlxuICogQHBhcmFtIHtPYmplY3R9IGFwcCAgICAgICAgICAgICAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFRvRmlyZSAgICAgIC0gbmFtZSBvZiB0aGUgZXZlbnQgdG8gZmlyZVxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9MaXN0ZW5Gb3IgLSBldmVudCB0byBsaXN0ZW4gZm9yIG9uIHRoZSBldmVudHMgYnVzXG4gKiBAcGFyYW0gey4uLip9ICAgZXZlbnRBcmdzICAgICAgICAtIGFyZ3VtZW50cyB0byBwYXNzIHdpdGggdGhlIGV2ZW50XG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZUV2ZW50c0J1c0V2ZW50QW5kV2FpdEZvckFub3RoZXIoXG4gICAgYXBwLCBldmVudFRvRmlyZSwgZXZlbnRUb0xpc3RlbkZvciwgLi4uZXZlbnRBcmdzXG4pIHtcbiAgICByZXR1cm4gc2VuZElwY1N5bmMoYXBwLCAnbGlzdGVuVG9FdmVudE9uRXZlbnRCdXMnLCBldmVudFRvTGlzdGVuRm9yKVxuICAgICAgICAudGhlbigoKSA9PiBzZW5kSXBjQW5kV2FpdEZvclJlc3BvbnNlKGFwcCwgJ2ZpcmVFdmVudHNCdXNFdmVudCcsIGBldmVudHNCdXNFdmVudF8ke2V2ZW50VG9MaXN0ZW5Gb3J9YCwgZXZlbnRUb0ZpcmUsIC4uLmV2ZW50QXJncykpO1xufVxuXG4vKipcbiAqIEluc3RhbnRpYXRlcyB5b3VyIHBsdWdpbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7Li4uKn0gIGFyZ3MgLSBhcmdzIHRvIHlvdXIgcGx1Z2luIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RQbHVnaW4oYXBwLCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIHNlbmRJcGNTeW5jKGFwcCwgJ2NvbnN0cnVjdFBsdWdpbicsIC4uLmFyZ3MpO1xufVxuXG5cbi8qKlxuICogV2FpdCBmb3IgYSBzcGVjaWZpZWQgaXBjIGV2ZW50LlxuICogQHBhcmFtIHtPYmplY3R9IGFwcCAgICAgICAgICAgICAtIGFwcCByZWYgZnJvbSBTcGVjdHJvblxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VG9MaXN0ZW5Gb3IgLSBuYW1lIG9mIHRoZSBldmVudCB0byBsaXN0ZW4gZm9yXG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvcklwYyhhcHAsIGV2ZW50VG9MaXN0ZW5Gb3IpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIHJldHVybiBhcHAuY2xpZW50LmV4ZWN1dGVBc3luYyhmdW5jdGlvbiAoJHJlcXVpcmVOYW1lLCAkZXZlbnRUb0xpc3RlblRvLCBkb25lKSB7XG4gICAgICAgIGNvbnN0IGlwYyA9IHdpbmRvd1skcmVxdWlyZU5hbWVdKCdlbGVjdHJvbicpLmlwY1JlbmRlcmVyO1xuICAgICAgICBpcGMub25jZSgkZXZlbnRUb0xpc3RlblRvLCBmdW5jdGlvbiBldmVudENhbGxiYWNrKCkge1xuICAgICAgICAgICAgZG9uZShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICAgICAgfSk7XG4gICAgfSwgYXBwLmFwaS5yZXF1aXJlTmFtZSwgZXZlbnRUb0xpc3RlbkZvcik7XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvckV2ZW50c0J1c0V2ZW50KGFwcCwgZXZlbnRUb0xpc3RlbkZvcikge1xuICAgIHJldHVybiBzZW5kSXBjU3luYyhhcHAsICdsaXN0ZW5Ub0V2ZW50T25FdmVudEJ1cycsIGV2ZW50VG9MaXN0ZW5Gb3IpLnRoZW4oXG4gICAgICAgICgpID0+IHdhaXRGb3JJcGMoYXBwLCBgZXZlbnRCdXNFdmVudF8ke2V2ZW50VG9MaXN0ZW5Gb3J9YClcbiAgICApO1xufVxuXG5cbmxldCBmZXRjaENhbGxDb3VudGVyID0gMDtcblxuLyoqXG4gKiBGZXRjaGVzIHNvbWUgZGF0YSBmcm9tIG1haW4gcHJvY2VzcyBieSBzZW5kaW5nIGFuIElQQyBldmVudCBhbmQgd2FpdGluZyBmb3IgYSByZXNwb25zZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhcHAgICAgLSBhcHAgcmVmIGZyb20gU3BlY3Ryb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBtb2R1bGUgbmFtZSB5b3VyIHBsdWdpbiBpcyByZWdpc3RlcmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50ICAtIGV2ZW50IGZyb20geW91ciBtb2R1bGVcbiAqIEBwYXJhbSB7Li4uKn0gICBhcmdzICAgLSBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFzcyB0byBpcGMuc2VuZFxuICogQHJldHVybiB7UHJvbWlzZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGFwcCwgbW9kdWxlLCBldmVudCwgLi4uYXJncykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGlmIChmZXRjaENhbGxDb3VudGVyID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgZmV0Y2hDYWxsQ291bnRlciA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZmV0Y2hDYWxsQ291bnRlciArPSAxO1xuICAgICAgICBjb25zdCBmZXRjaElkID0gZmV0Y2hDYWxsQ291bnRlcjtcbiAgICAgICAgc2VuZElwY0FuZFdhaXRGb3JSZXNwb25zZShhcHAsXG4gICAgICAgICAgICBgJHttb2R1bGV9X18ke2V2ZW50fWAsXG4gICAgICAgICAgICBgJHttb2R1bGV9X18ke2V2ZW50fV9fX3Jlc3BvbnNlYCxcbiAgICAgICAgICAgIGZldGNoSWQsIC4uLmFyZ3MpXG4gICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlWzFdID09PSBmZXRjaElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoJ3dyb25nIGZldGNoSWQgaW4gdGhlIGlwYyByZXNwb25zZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHJlamVjdChlKSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICAgIGNvbnN0cnVjdG9yKHNob3csIHNob3dFcnJvcnMpIHtcbiAgICAgICAgdGhpcy5zaG93ID0gc2hvdztcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzID0gc2hvd0Vycm9ycztcbiAgICAgICAgdGhpcy5sb2dnZXJzID0ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiBuZXcgTG9nZ2VyKHNob3csIHNob3dFcnJvcnMpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW5mbyguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmVyYm9zZSguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVidWcoLi4uYXJncykge1xuICAgICAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdhcm4oLi4uYXJncykge1xuICAgICAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvciguLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3cgfHwgdGhpcy5zaG93RXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TG9nZ2VyRm9yKCkge1xuICAgICAgICByZXR1cm4gbmV3IExvZ2dlcih0aGlzLnNob3csIHRoaXMuc2hvd0Vycm9ycyk7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRFbGVjdHJvblBhdGgsXG4gICAgY29uc3RydWN0UGx1Z2luLFxuICAgIHNlbmRJcGMsXG4gICAgc2VuZElwY1N5bmMsXG4gICAgY3JlYXRlVGVzdEFwcCxcbiAgICBzZW5kLFxuICAgIGZpcmVFdmVudHNCdXNFdmVudCxcbiAgICBmaXJlRXZlbnRzQnVzRXZlbnRBbmRXYWl0Rm9yQW5vdGhlcixcbiAgICB3YWl0Rm9ySXBjLFxuICAgIHdhaXRGb3JFdmVudHNCdXNFdmVudCxcbiAgICBmZXRjaCxcbiAgICBzZW5kSXBjQW5kV2FpdEZvclJlc3BvbnNlLFxuICAgIExvZ2dlclxufTtcbiJdfQ==
{
"name": "meteor-desktop-plugin-test-suite",
"version": "0.0.13",
"engines": {
"node": ">=4.0.0"
},
"description": "Few utils to ease out functional testing of Meteor Desktop plugins.",
"main": "dist/suite.js",
"scripts": {
"prepublish": "npm run build",
"build": "babel src --out-dir dist --source-maps inline --copy-files",
"build-watch": "babel src --watch --out-dir dist --source-maps inline --copy-files",
"lint": "eslint -c .eslintrc src/**/*.js app/**/*.js"
},
"author": "Bartosz Wojtkowiak <bartosz@wojtkowiak.it>",
"license": "MIT",
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-core": "^6.18.0",
"babel-preset-es2015-node4": "^2.1.0",
"eslint": "^3.7.1",
"eslint-config-airbnb-base": "^9.0.0",
"eslint-plugin-import": "^2.0.0"
},
"dependencies": {
"semver": "^5.3.0",
"cross-spawn": "^4.0.2",
"shelljs": "^0.7.4"
},
"repository": {
"type": "git",
"url": "https://github.com/wojtkowiak/meteor-desktop-plugin-test-suite"
},
"keywords": [
"electron",
"meteor",
"packager",
"desktop",
"test",
"suite"
],
"bugs": {
"url": "https://github.com/wojtkowiak/meteor-desktop-plugin-test-suite/issues"
},
"homepage": "https://github.com/wojtkowiak/meteor-desktop-plugin-test-suite"
"name": "meteor-desktop-plugin-test-suite",
"version": "0.0.15",
"engines": {
"node": ">=4.0.0"
},
"description": "Few utils to ease out functional testing of Meteor Desktop plugins.",
"main": "dist/suite.js",
"scripts": {
"prepublish": "npm run build",
"build": "babel src --out-dir dist --source-maps inline --copy-files",
"build-watch": "babel src --watch --out-dir dist --source-maps inline --copy-files",
"lint": "eslint src app"
},
"author": "Bartosz Wojtkowiak <bartosz@wojtkowiak.it>",
"license": "MIT",
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-core": "^6.18.0",
"babel-preset-es2015-node4": "^2.1.0",
"eslint": "^3.8.1",
"eslint-config-airbnb-base": "^9.0.0",
"eslint-plugin-import": "^2.0.1"
},
"dependencies": {
"semver": "^5.3.0",
"cross-spawn": "^4.0.2",
"shelljs": "^0.7.4"
},
"repository": {
"type": "git",
"url": "https://github.com/wojtkowiak/meteor-desktop-plugin-test-suite"
},
"keywords": [
"electron",
"meteor",
"packager",
"desktop",
"test",
"suite"
],
"bugs": {
"url": "https://github.com/wojtkowiak/meteor-desktop-plugin-test-suite/issues"
},
"homepage": "https://github.com/wojtkowiak/meteor-desktop-plugin-test-suite"
}
## Meteor Desktop Plugin Test Suite
Few utils to ease out functional testing of Meteor Desktop plugins.
Take a look at the examples at the bottom of this readme to actually see how you can use this.

@@ -9,3 +10,3 @@ ### `getElectronPath`

### `createTestApp(installPath, pluginName)`
Creates a test app with the your plugin included.
Creates a test app with plugin you are testing included. Plugin is installed by `npm`.
```javascript

@@ -23,3 +24,2 @@ /**

### `fireEventsBusEvent(app, eventToFire, ...eventArgs)`

@@ -38,3 +38,2 @@ Fires an event on the events bus, so you can simulate for example a system event on which you plugin is listening.

Sends an IPC event to your module. Equivalent of `Desktop.send`.
Use if your plugin/module registers itself via `let module = new Module('myModuleName')`.
```javascript

@@ -45,3 +44,3 @@ /**

* @param {string} event - event from your module
* @param {Array} args - array of arguments to pass to ipc.send
* @param {...*} args - array of arguments to pass to ipc.send
* @returns {Promise}

@@ -52,3 +51,3 @@ */

### `fetch(app, module, event, ...args)`
Fetches some data from main process by sending an IPC event and waiting for a response.
Fetches some data from main process by sending an IPC event and waiting for the response.
Equivalent of `Desktop.fetch`.

@@ -60,3 +59,3 @@ ```javascript

* @param {string} event - event from your module
* @param {Array} args - array of arguments to pass to ipc.send
* @param {...*} args - array of arguments to pass to ipc.send
* @return {Promise}

@@ -83,3 +82,3 @@ */

* @param {Object} app - the app ref from Spectron
* @param {Array} args - array of arguments to pass to ipc.send
* @param {...*} args - array of arguments to pass to ipc.send
* @returns {Promise}

@@ -106,4 +105,4 @@ */

## Example
## Examples
An example of usage in tests is here [meteor-desktop-splash-screen](https://github.com/wojtkowiak/meteor-desktop-splash-screen/blob/master/tests/functional/test.js) and here [meteor-desktop-localstorage](https://github.com/wojtkowiak/meteor-desktop-localstorage/blob/master/tests/functional/test.js).

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc