Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-simctl

Package Overview
Dependencies
Maintainers
7
Versions
142
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-simctl - npm Package Compare versions

Comparing version 3.1.0 to 3.1.1

105

build/lib/simctl.js

@@ -27,6 +27,7 @@ 'use strict';

function simExec(command, timeout) {
function simCommand(command, timeout) {
var args = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
var env = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
return _regeneratorRuntime.async(function simExec$(context$1$0) {
var executingFunction = arguments.length <= 4 || arguments[4] === undefined ? _teen_process.exec : arguments[4];
return _regeneratorRuntime.async(function simCommand$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {

@@ -44,3 +45,3 @@ case 0:

context$1$0.prev = 3;
return context$1$0.abrupt('return', (0, _teen_process.exec)('xcrun', args, { timeout: timeout, env: env }));
return context$1$0.abrupt('return', executingFunction('xcrun', args, { timeout: timeout, env: env }));

@@ -64,2 +65,47 @@ case 7:

function simExec(command, timeout) {
var args = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
var env = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
return _regeneratorRuntime.async(function simExec$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
return context$1$0.abrupt('return', simCommand(command, timeout, args, env, function (c, a, ob) {
return (0, _teen_process.exec)(c, a, ob);
}));
case 1:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
function simSubProcess(command, timeout) {
var args = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
var env = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
return _regeneratorRuntime.async(function simSubProcess$(context$1$0) {
var _this = this;
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
return context$1$0.abrupt('return', simCommand(command, timeout, args, env, function callee$1$0(c, a, ob) {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
return context$2$0.abrupt('return', new _teen_process.SubProcess(c, a, ob));
case 1:
case 'end':
return context$2$0.stop();
}
}, null, _this);
}));
case 1:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
function installApp(udid, appPath) {

@@ -116,2 +162,5 @@ return _regeneratorRuntime.async(function installApp$(context$1$0) {

case 2:
return context$1$0.abrupt('return', context$1$0.sent);
case 3:
case 'end':

@@ -123,2 +172,20 @@ return context$1$0.stop();

function spawnSubProcess(udid, executablePath) {
var env = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
return _regeneratorRuntime.async(function spawnSubProcess$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return _regeneratorRuntime.awrap(simSubProcess('spawn', 0, [udid, executablePath], env));
case 2:
return context$1$0.abrupt('return', context$1$0.sent);
case 3:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
function shutdown(udid) {

@@ -170,9 +237,26 @@ return _regeneratorRuntime.async(function shutdown$(context$1$0) {

function deleteDevice(udid) {
var loopFn;
return _regeneratorRuntime.async(function deleteDevice$(context$1$0) {
var _this2 = this;
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return _regeneratorRuntime.awrap(simExec('delete', 0, [udid]));
loopFn = function loopFn() {
return _regeneratorRuntime.async(function loopFn$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _regeneratorRuntime.awrap(simExec('delete', 0, [udid]));
case 2:
case 2:
case 'end':
return context$2$0.stop();
}
}, null, _this2);
};
context$1$0.next = 3;
return _regeneratorRuntime.awrap((0, _asyncbox.retryInterval)(5, 200, loopFn));
case 3:
case 'end':

@@ -187,3 +271,3 @@ return context$1$0.stop();

return _regeneratorRuntime.async(function eraseDevice$(context$1$0) {
var _this = this;
var _this3 = this;

@@ -203,3 +287,3 @@ while (1) switch (context$1$0.prev = context$1$0.next) {

}
}, null, _this);
}, null, _this3);
};

@@ -404,2 +488,3 @@

exports.spawn = spawn;
exports.spawnSubProcess = spawnSubProcess;
exports.shutdown = shutdown;

@@ -411,2 +496,4 @@ exports.createDevice = createDevice;

// retry delete with a sleep in between because it's flakey
// retry erase with a sleep in between because it's flakey

@@ -434,2 +521,2 @@

// otherwise return all the sdk -> device mappings.
//# sourceMappingURL=data:application/json;base64,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QUMsQ0FBQyxDQUFDOzs7Ozs7OztBQUE1QyxZQUFXO0FBT2QsY0FBYSxHQUFHLHlDQUF5QztBQUN6RCxpQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7Y0FDcEMsU0FBUyxLQUFLLElBQUksQ0FBQTs7Ozs7Y0FDZCxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQzs7OztBQUd6QyxlQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2hCLGNBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLGNBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLGVBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3BCLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBS0gsTUFBTTs7Ozs7WUFDSCxPQUFPLENBQUMsTUFBTSxDQUFDOzs7OztjQUNaLElBQUksS0FBSyxZQUFTLE1BQU0sdUNBQW1DOzs7NENBRTVELE9BQU8sQ0FBQyxNQUFNLENBQUM7Ozs0Q0FJakIsT0FBTzs7Ozs7OztDQUNmOztRQUVRLFVBQVUsR0FBVixVQUFVO1FBQUUsU0FBUyxHQUFULFNBQVM7UUFBRSxNQUFNLEdBQU4sTUFBTTtRQUFFLEtBQUssR0FBTCxLQUFLO1FBQUUsUUFBUSxHQUFSLFFBQVE7UUFBRSxZQUFZLEdBQVosWUFBWTtRQUM1RCxZQUFZLEdBQVosWUFBWTtRQUFFLFdBQVcsR0FBWCxXQUFXO1FBQUUsVUFBVSxHQUFWLFVBQVUiLCJmaWxlIjoibGliL3NpbWN0bC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gJ2FwcGl1bS1sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBsb2cgPSBnZXRMb2dnZXIoJ3NpbWN0bCcpO1xuXG5hc3luYyBmdW5jdGlvbiBzaW1FeGVjIChjb21tYW5kOnN0cmluZywgdGltZW91dDpudW1iZXIsIGFyZ3M6QXJyYXkgPSBbXSxcbiAgICBlbnYgPSB7fSkge1xuICAvLyBydW4gYSBwYXJ0aWN1bGFyIHNpbWN0bCBjb21tYW5kXG4gIGFyZ3MgPSBbJ3NpbWN0bCcsIGNvbW1hbmQsIC4uLmFyZ3NdO1xuICBsb2cuaW5mbyhgRXhlY3V0aW5nOiB4Y3J1biB3aXRoIGFyZ3M6ICR7YXJncy5qb2luKCcgJyl9IGFuZCB0aW1lb3V0OiAke3RpbWVvdXR9YCk7XG4gIC8vIFByZWZpeCBhbGwgcGFzc2VkIGluIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoICdTSU1DVExfQ0hJTERfJywgc2ltY3RsXG4gIC8vIHdpbGwgdGhlbiBwYXNzIHRoZXNlIHRvIHRoZSBjaGlsZCAoc3Bhd25lZCkgcHJvY2Vzcy5cbiAgZW52ID0gXy5kZWZhdWx0cyhfLm1hcEtleXMoZW52LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmV0dXJuICdTSU1DVExfQ0hJTERfJyArIGtleTtcbiAgfSksIHByb2Nlc3MuZW52KTtcblxuICB0cnkge1xuICAgIHJldHVybiBleGVjKCd4Y3J1bicsIGFyZ3MsIHt0aW1lb3V0LCBlbnZ9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlLnN0ZGVycikge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYHNpbWN0bCBlcnJvcjogJHtlLnN0ZGVyci50cmltKCl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGUpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQXBwICh1ZGlkOnN0cmluZywgYXBwUGF0aDpzdHJpbmcpOnZvaWQge1xuICBhd2FpdCBzaW1FeGVjKCdpbnN0YWxsJywgMCwgW3VkaWQsIGFwcFBhdGhdKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlQXBwICh1ZGlkOnN0cmluZywgYnVuZGxlSWQ6c3RyaW5nKTp2b2lkIHtcbiAgYXdhaXQgc2ltRXhlYygndW5pbnN0YWxsJywgMCwgW3VkaWQsIGJ1bmRsZUlkXSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxhdW5jaCAodWRpZDpzdHJpbmcsIGJ1bmRsZUlkOnN0cmluZyk6dm9pZCB7XG4gIGF3YWl0IHNpbUV4ZWMoJ2xhdW5jaCcsIDAsIFt1ZGlkLCBidW5kbGVJZF0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzcGF3biAodWRpZDpzdHJpbmcsIGV4ZWN1dGFibGVQYXRoOnN0cmluZywgZW52ID0ge30pOnZvaWQge1xuICBhd2FpdCBzaW1FeGVjKCdzcGF3bicsIDAsIFt1ZGlkLCBleGVjdXRhYmxlUGF0aF0sIGVudik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNodXRkb3duICh1ZGlkOnN0cmluZyk6dm9pZCB7XG4gIGF3YWl0IHNpbUV4ZWMoJ3NodXRkb3duJywgMCwgW3VkaWRdKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGV2aWNlIChuYW1lOnN0cmluZywgZGV2aWNlVHlwZUlkOnN0cmluZyxcbiAgICBydW50aW1lSWQ6c3RyaW5nKTp2b2lkIHtcbiAgbGV0IG91dDtcbiAgdHJ5IHtcbiAgICBvdXQgPSBhd2FpdCBzaW1FeGVjKCdjcmVhdGUnLCAwLCBbbmFtZSwgZGV2aWNlVHlwZUlkLCBydW50aW1lSWRdKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgY3JlYXRlIHNpbXVsYXRvci4gUmVhc29uOiAke2Uuc3RkZXJyLnRyaW0oKX1gKTtcbiAgfVxuICByZXR1cm4gb3V0LnN0ZG91dC50cmltKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZURldmljZSAodWRpZDpzdHJpbmcpOnZvaWQge1xuICBhd2FpdCBzaW1FeGVjKCdkZWxldGUnLCAwLCBbdWRpZF0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBlcmFzZURldmljZSAodWRpZDpzdHJpbmcpOnZvaWQge1xuICBsZXQgbG9vcEZuOkZ1bmN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHNpbUV4ZWMoJ2VyYXNlJywgMjAwMCwgW3VkaWRdKTtcbiAgfTtcbiAgLy8gcmV0cnkgZXJhc2Ugd2l0aCBhIHNsZWVwIGluIGJldHdlZW4gYmVjYXVzZSBpdCdzIGZsYWtleVxuICBhd2FpdCByZXRyeUludGVydmFsKDUsIDIwMCwgbG9vcEZuKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlcyAoZm9yU2RrOnN0cmluZyA9IG51bGwpOk9iamVjdCB7XG4gIC8vIGdldCB0aGUgbGlzdCBvZiBkZXZpY2VzXG4gIGxldCB7IHN0ZG91dCB9ID0gYXdhaXQgc2ltRXhlYygnbGlzdCcsIDAsIFsnZGV2aWNlcyddKTtcblxuICAvLyBleHBlY3QgdG8gZ2V0IGEgbGlzdGluZyBsaWtlXG4gIC8vIC0tIGlPUyA4LjEgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoM0NBNkU3REQtMjIwRS00NUU1LUI3MTYtMUU5OTJCM0E0MjlDKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gLS0gaU9TIDguMiAtLVxuICAvLyAgICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgLy8gICAgIC4uLlxuICAvLyBzbywgZ2V0IHRoZSBgLS0gaU9TIFguWCAtLWAgbGluZSB0byBmaW5kIHRoZSBzZGsgKFguWClcbiAgLy8gYW5kIHRoZSByZXN0IG9mIHRoZSBsaXN0aW5nIGluIG9yZGVyIHRvIGxhdGVyIGZpbmQgdGhlIGRldmljZXNcbiAgbGV0IGRldmljZVNlY3Rpb25SZTpSZWdFeHAgPSAvLS0gaU9TICguKykgLS0oXFxuICAgIC4rKSovbWc7XG4gIGxldCBtYXRjaGVzOkFycmF5ID0gW107XG4gIGxldCBtYXRjaDpPYmplY3QgPSBkZXZpY2VTZWN0aW9uUmUuZXhlYyhzdGRvdXQpO1xuXG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKG1hdGNoICE9PSBudWxsKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgICBtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCk7XG4gIH1cbiAgaWYgKG1hdGNoZXMubGVuZ3RoIDwgMSkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgbGV0IGRldmljZXM6T2JqZWN0ID0ge307XG4gIGZvciAobWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgIGxldCBzZGs6c3RyaW5nID0gbWF0Y2hbMV07XG4gICAgZGV2aWNlc1tzZGtdID0gW107XG4gICAgLy8gc3BsaXQgdGhlIGZ1bGwgbWF0Y2ggaW50byBsaW5lcyBhbmQgcmVtb3ZlIHRoZSBmaXJzdFxuICAgIGZvciAobGV0IGxpbmU6c3RyaW5nIG9mIG1hdGNoWzBdLnNwbGl0KCdcXG4nKS5zbGljZSgxKSkge1xuICAgICAgLy8gYSBsaW5lIGlzIHNvbWV0aGluZyBsaWtlXG4gICAgICAvLyAgICBpUGhvbmUgNHMgKEE5OUZGRkMzLThFMTktNERDRi1CNTg1LTdEOUQ0NkI0QzE2RSkgKFNodXRkb3duKVxuICAgICAgLy8gcmV0cmlldmU6XG4gICAgICAvLyAgIGlQaG9uZSA0c1xuICAgICAgLy8gICBBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkVcbiAgICAgIC8vICAgU2h1dGRvd25cbiAgICAgIGxldCBsaW5lUmU6UmVnRXhwID0gL14gICAgKFteXFwoXSspIFxcKChbXlxcKV0rKVxcKSBcXCgoW15cXCldKylcXCkvO1xuICAgICAgbGV0IGxpbmVNYXRjaDpPYmplY3QgPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChsaW5lTWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgbWF0Y2ggbGluZScpO1xuICAgICAgfVxuICAgICAgLy8gc2F2ZSB0aGUgd2hvbGUgdGhpbmcgYXMgYWIgb2JqZWN0IGluIHRoZSBsaXN0IGZvciB0aGlzIHNka1xuICAgICAgZGV2aWNlc1tzZGtdLnB1c2goe1xuICAgICAgICBuYW1lOiBsaW5lTWF0Y2hbMV0sXG4gICAgICAgIHVkaWQ6IGxpbmVNYXRjaFsyXSxcbiAgICAgICAgc3RhdGU6IGxpbmVNYXRjaFszXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIGEgYGZvclNka2Agd2FzIHBhc3NlZCBpbiwgcmV0dXJuIG9ubHkgdGhlIGNvcnJlc3BvbmRpbmcgbGlzdFxuICBpZiAoZm9yU2RrKSB7XG4gICAgaWYgKCFkZXZpY2VzW2ZvclNka10pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2RrICcke2ZvclNka30nIHdhcyBub3QgaW4gbGlzdCBvZiBzaW1jdGwgc2Rrc2ApO1xuICAgIH1cbiAgICByZXR1cm4gZGV2aWNlc1tmb3JTZGtdO1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlIHJldHVybiBhbGwgdGhlIHNkayAtPiBkZXZpY2UgbWFwcGluZ3MuXG4gIHJldHVybiBkZXZpY2VzO1xufVxuXG5leHBvcnQgeyBpbnN0YWxsQXBwLCByZW1vdmVBcHAsIGxhdW5jaCwgc3Bhd24sIHNodXRkb3duLCBjcmVhdGVEZXZpY2UsXG4gICAgICAgICBkZWxldGVEZXZpY2UsIGVyYXNlRGV2aWNlLCBnZXREZXZpY2VzIH07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zaW1jdGwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7NEJBQWlDLGNBQWM7O3dCQUNqQixVQUFVOzs0QkFDZCxlQUFlOztzQkFDM0IsUUFBUTs7OztBQUd0QixJQUFNLEdBQUcsR0FBRyw2QkFBVSxRQUFRLENBQUMsQ0FBQzs7QUFFaEMsU0FBZSxVQUFVLENBQUUsT0FBYyxFQUFFLE9BQWM7TUFBRSxJQUFVLHlEQUFHLEVBQUU7TUFBRSxHQUFHLHlEQUFHLEVBQUU7TUFBRSxpQkFBaUI7Ozs7O0FBRXJHLFlBQUksSUFBSSxRQUFRLEVBQUUsT0FBTyw0QkFBSyxJQUFJLEVBQUMsQ0FBQztBQUNwQyxXQUFHLENBQUMsSUFBSSxrQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQWlCLE9BQU8sQ0FBRyxDQUFDOzs7QUFHbEYsV0FBRyxHQUFHLG9CQUFFLFFBQVEsQ0FBQyxvQkFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVMsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNuRCxpQkFBTyxlQUFlLEdBQUcsR0FBRyxDQUFDO1NBQzlCLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Ozs0Q0FHUixpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFQLE9BQU8sRUFBRSxHQUFHLEVBQUgsR0FBRyxFQUFDLENBQUM7Ozs7OztBQUV2RCxZQUFJLGVBQUUsTUFBTSxFQUFFO0FBQ1osYUFBRyxDQUFDLGFBQWEsb0JBQWtCLGVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFHLENBQUM7U0FDdkQsTUFBTTtBQUNMLGFBQUcsQ0FBQyxhQUFhLGdCQUFHLENBQUM7U0FDdEI7Ozs7Ozs7Q0FFSjs7QUFFRCxTQUFlLE9BQU8sQ0FBRSxPQUFjLEVBQUUsT0FBYztNQUFFLElBQVUseURBQUcsRUFBRTtNQUFFLEdBQUcseURBQUcsRUFBRTs7Ozs0Q0FDeEUsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFLO0FBQzNELGlCQUFPLHdCQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDdkIsQ0FBQzs7Ozs7OztDQUNIOztBQUVELFNBQWUsYUFBYSxDQUFFLE9BQWMsRUFBRSxPQUFjO01BQUUsSUFBVSx5REFBRyxFQUFFO01BQUUsR0FBRyx5REFBRyxFQUFFOzs7Ozs7NENBQzlFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsb0JBQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFOzs7O29EQUNyRCw2QkFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7Ozs7OztTQUNoQyxDQUFDOzs7Ozs7O0NBQ0g7O0FBRUQsU0FBZSxVQUFVLENBQUUsSUFBVyxFQUFFLE9BQWM7Ozs7O3lDQUM5QyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7Ozs7OztDQUM3Qzs7QUFFRCxTQUFlLFNBQVMsQ0FBRSxJQUFXLEVBQUUsUUFBZTs7Ozs7eUNBQzlDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDOzs7Ozs7O0NBQ2hEOztBQUVELFNBQWUsTUFBTSxDQUFFLElBQVcsRUFBRSxRQUFlOzs7Ozt5Q0FDM0MsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7Ozs7Ozs7Q0FDN0M7O0FBRUQsU0FBZSxLQUFLLENBQUUsSUFBVyxFQUFFLGNBQXFCO01BQUUsR0FBRyx5REFBRyxFQUFFOzs7Ozt5Q0FDbkQsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDOzs7Ozs7Ozs7O0NBQzlEOztBQUVELFNBQWUsZUFBZSxDQUFFLElBQVcsRUFBRSxjQUFxQjtNQUFFLEdBQUcseURBQUcsRUFBRTs7Ozs7eUNBQzdELGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQzs7Ozs7Ozs7OztDQUNwRTs7QUFFRCxTQUFlLFFBQVEsQ0FBRSxJQUFXOzs7Ozt5Q0FDNUIsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Ozs7OztDQUNyQzs7QUFFRCxTQUFlLFlBQVksQ0FBRSxJQUFXLEVBQUUsWUFBbUIsRUFDekQsU0FBZ0I7TUFDZCxHQUFHOzs7O0FBQUgsV0FBRzs7O3lDQUVPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQzs7O0FBQWpFLFdBQUc7Ozs7Ozs7O0FBRUgsV0FBRyxDQUFDLGFBQWEsMENBQXdDLGVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFHLENBQUM7Ozs0Q0FFdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Ozs7Ozs7Q0FDekI7O0FBRUQsU0FBZSxZQUFZLENBQUUsSUFBVztNQUNsQyxNQUFlOzs7Ozs7QUFBZixjQUFlLEdBQUcsU0FBbEIsTUFBZTs7Ozs7aURBQ1gsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Ozs7OztTQUNuQzs7O3lDQUVLLDZCQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDOzs7Ozs7O0NBQ3BDOztBQUVELFNBQWUsV0FBVyxDQUFFLElBQVc7TUFDakMsTUFBZTs7Ozs7O0FBQWYsY0FBZSxHQUFHLFNBQWxCLE1BQWU7Ozs7O2lEQUNYLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7Ozs7U0FDckM7Ozt5Q0FFSyw2QkFBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQzs7Ozs7OztDQUNwQzs7QUFFRCxTQUFlLFVBQVU7TUFBRSxNQUFhLHlEQUFHLElBQUk7Ozs7QUFFdkMsUUFBTSxFQVdSLGVBQXNCLEVBQ3RCLE9BQWEsRUFDYixLQUFZLEVBWVosT0FBYyxrRkFFWixHQUFVLHVGQUdMLElBQVcsRUFPZCxNQUFhLEVBQ2IsU0FBZ0I7Ozs7Ozt5Q0F0Q0QsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7OztBQUFoRCxjQUFNLFFBQU4sTUFBTTtBQVdSLHVCQUFzQixHQUFHLDZCQUE2QjtBQUN0RCxlQUFhLEdBQUcsRUFBRTtBQUNsQixhQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7OztBQUcvQyxlQUFPLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDckIsaUJBQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEIsZUFBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7QUFDRCxZQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLGFBQUcsQ0FBQyxhQUFhLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNwRDs7O0FBR0csZUFBYyxHQUFHLEVBQUU7Ozs7O2lDQUNULE9BQU87Ozs7Ozs7O0FBQWhCLGFBQUs7QUFDSixXQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzs7QUFDekIsZUFBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQzs7Ozs7O2tDQUVNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs7Ozs7Ozs7QUFBNUMsWUFBVztBQU9kLGNBQWEsR0FBRyx5Q0FBeUM7QUFDekQsaUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7O2NBQ3BDLFNBQVMsS0FBSyxJQUFJLENBQUE7Ozs7O2NBQ2QsSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUM7Ozs7QUFHekMsZUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQixjQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNsQixjQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNsQixlQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNwQixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQUtILE1BQU07Ozs7O1lBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQzs7Ozs7Y0FDWixJQUFJLEtBQUssWUFBUyxNQUFNLHVDQUFtQzs7OzRDQUU1RCxPQUFPLENBQUMsTUFBTSxDQUFDOzs7NENBSWpCLE9BQU87Ozs7Ozs7Q0FDZjs7UUFFUSxVQUFVLEdBQVYsVUFBVTtRQUFFLFNBQVMsR0FBVCxTQUFTO1FBQUUsTUFBTSxHQUFOLE1BQU07UUFBRSxLQUFLLEdBQUwsS0FBSztRQUFFLGVBQWUsR0FBZixlQUFlO1FBQUUsUUFBUSxHQUFSLFFBQVE7UUFBRSxZQUFZLEdBQVosWUFBWTtRQUM3RSxZQUFZLEdBQVosWUFBWTtRQUFFLFdBQVcsR0FBWCxXQUFXO1FBQUUsVUFBVSxHQUFWLFVBQVUiLCJmaWxlIjoibGliL3NpbWN0bC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMsIFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gJ2FwcGl1bS1sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBsb2cgPSBnZXRMb2dnZXIoJ3NpbWN0bCcpO1xuXG5hc3luYyBmdW5jdGlvbiBzaW1Db21tYW5kIChjb21tYW5kOnN0cmluZywgdGltZW91dDpudW1iZXIsIGFyZ3M6QXJyYXkgPSBbXSwgZW52ID0ge30sIGV4ZWN1dGluZ0Z1bmN0aW9uID0gZXhlYykge1xuICAvLyBydW4gYSBwYXJ0aWN1bGFyIHNpbWN0bCBjb21tYW5kXG4gIGFyZ3MgPSBbJ3NpbWN0bCcsIGNvbW1hbmQsIC4uLmFyZ3NdO1xuICBsb2cuaW5mbyhgRXhlY3V0aW5nOiB4Y3J1biB3aXRoIGFyZ3M6ICR7YXJncy5qb2luKCcgJyl9IGFuZCB0aW1lb3V0OiAke3RpbWVvdXR9YCk7XG4gIC8vIFByZWZpeCBhbGwgcGFzc2VkIGluIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoICdTSU1DVExfQ0hJTERfJywgc2ltY3RsXG4gIC8vIHdpbGwgdGhlbiBwYXNzIHRoZXNlIHRvIHRoZSBjaGlsZCAoc3Bhd25lZCkgcHJvY2Vzcy5cbiAgZW52ID0gXy5kZWZhdWx0cyhfLm1hcEtleXMoZW52LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmV0dXJuICdTSU1DVExfQ0hJTERfJyArIGtleTtcbiAgfSksIHByb2Nlc3MuZW52KTtcblxuICB0cnkge1xuICAgIHJldHVybiBleGVjdXRpbmdGdW5jdGlvbigneGNydW4nLCBhcmdzLCB7dGltZW91dCwgZW52fSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5zdGRlcnIpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBzaW1jdGwgZXJyb3I6ICR7ZS5zdGRlcnIudHJpbSgpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhlKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2ltRXhlYyAoY29tbWFuZDpzdHJpbmcsIHRpbWVvdXQ6bnVtYmVyLCBhcmdzOkFycmF5ID0gW10sIGVudiA9IHt9KSB7XG4gIHJldHVybiBzaW1Db21tYW5kKGNvbW1hbmQsIHRpbWVvdXQsIGFyZ3MsIGVudiwgKGMsIGEsIG9iKSA9PiB7XG4gICAgcmV0dXJuIGV4ZWMoYywgYSwgb2IpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2ltU3ViUHJvY2VzcyAoY29tbWFuZDpzdHJpbmcsIHRpbWVvdXQ6bnVtYmVyLCBhcmdzOkFycmF5ID0gW10sIGVudiA9IHt9KSB7XG4gIHJldHVybiBzaW1Db21tYW5kKGNvbW1hbmQsIHRpbWVvdXQsIGFyZ3MsIGVudiwgYXN5bmMgKGMsIGEsIG9iKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBTdWJQcm9jZXNzKGMsIGEsIG9iKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBcHAgKHVkaWQ6c3RyaW5nLCBhcHBQYXRoOnN0cmluZyk6dm9pZCB7XG4gIGF3YWl0IHNpbUV4ZWMoJ2luc3RhbGwnLCAwLCBbdWRpZCwgYXBwUGF0aF0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZW1vdmVBcHAgKHVkaWQ6c3RyaW5nLCBidW5kbGVJZDpzdHJpbmcpOnZvaWQge1xuICBhd2FpdCBzaW1FeGVjKCd1bmluc3RhbGwnLCAwLCBbdWRpZCwgYnVuZGxlSWRdKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbGF1bmNoICh1ZGlkOnN0cmluZywgYnVuZGxlSWQ6c3RyaW5nKTp2b2lkIHtcbiAgYXdhaXQgc2ltRXhlYygnbGF1bmNoJywgMCwgW3VkaWQsIGJ1bmRsZUlkXSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNwYXduICh1ZGlkOnN0cmluZywgZXhlY3V0YWJsZVBhdGg6c3RyaW5nLCBlbnYgPSB7fSk6dm9pZCB7XG4gIHJldHVybiBhd2FpdCBzaW1FeGVjKCdzcGF3bicsIDAsIFt1ZGlkLCBleGVjdXRhYmxlUGF0aF0sIGVudik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNwYXduU3ViUHJvY2VzcyAodWRpZDpzdHJpbmcsIGV4ZWN1dGFibGVQYXRoOnN0cmluZywgZW52ID0ge30pOnZvaWQge1xuICByZXR1cm4gYXdhaXQgc2ltU3ViUHJvY2Vzcygnc3Bhd24nLCAwLCBbdWRpZCwgZXhlY3V0YWJsZVBhdGhdLCBlbnYpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaHV0ZG93biAodWRpZDpzdHJpbmcpOnZvaWQge1xuICBhd2FpdCBzaW1FeGVjKCdzaHV0ZG93bicsIDAsIFt1ZGlkXSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURldmljZSAobmFtZTpzdHJpbmcsIGRldmljZVR5cGVJZDpzdHJpbmcsXG4gICAgcnVudGltZUlkOnN0cmluZyk6dm9pZCB7XG4gIGxldCBvdXQ7XG4gIHRyeSB7XG4gICAgb3V0ID0gYXdhaXQgc2ltRXhlYygnY3JlYXRlJywgMCwgW25hbWUsIGRldmljZVR5cGVJZCwgcnVudGltZUlkXSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGNyZWF0ZSBzaW11bGF0b3IuIFJlYXNvbjogJHtlLnN0ZGVyci50cmltKCl9YCk7XG4gIH1cbiAgcmV0dXJuIG91dC5zdGRvdXQudHJpbSgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVEZXZpY2UgKHVkaWQ6c3RyaW5nKTp2b2lkIHtcbiAgbGV0IGxvb3BGbjpGdW5jdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzaW1FeGVjKCdkZWxldGUnLCAwLCBbdWRpZF0pO1xuICB9O1xuICAvLyByZXRyeSBkZWxldGUgd2l0aCBhIHNsZWVwIGluIGJldHdlZW4gYmVjYXVzZSBpdCdzIGZsYWtleVxuICBhd2FpdCByZXRyeUludGVydmFsKDUsIDIwMCwgbG9vcEZuKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXJhc2VEZXZpY2UgKHVkaWQ6c3RyaW5nKTp2b2lkIHtcbiAgbGV0IGxvb3BGbjpGdW5jdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBzaW1FeGVjKCdlcmFzZScsIDIwMDAsIFt1ZGlkXSk7XG4gIH07XG4gIC8vIHJldHJ5IGVyYXNlIHdpdGggYSBzbGVlcCBpbiBiZXR3ZWVuIGJlY2F1c2UgaXQncyBmbGFrZXlcbiAgYXdhaXQgcmV0cnlJbnRlcnZhbCg1LCAyMDAsIGxvb3BGbik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkazpzdHJpbmcgPSBudWxsKTpPYmplY3Qge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBsZXQgeyBzdGRvdXQgfSA9IGF3YWl0IHNpbUV4ZWMoJ2xpc3QnLCAwLCBbJ2RldmljZXMnXSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGxldCBkZXZpY2VTZWN0aW9uUmU6UmVnRXhwID0gLy0tIGlPUyAoLispIC0tKFxcbiAgICAuKykqL21nO1xuICBsZXQgbWF0Y2hlczpBcnJheSA9IFtdO1xuICBsZXQgbWF0Y2g6T2JqZWN0ID0gZGV2aWNlU2VjdGlvblJlLmV4ZWMoc3Rkb3V0KTtcblxuICAvLyBtYWtlIGFuIGVudHJ5IGZvciBlYWNoIHNkayB2ZXJzaW9uXG4gIHdoaWxlIChtYXRjaCAhPT0gbnVsbCkge1xuICAgIG1hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgbWF0Y2ggPSBkZXZpY2VTZWN0aW9uUmUuZXhlYyhzdGRvdXQpO1xuICB9XG4gIGlmIChtYXRjaGVzLmxlbmd0aCA8IDEpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnQ291bGQgbm90IGZpbmQgZGV2aWNlIHNlY3Rpb24nKTtcbiAgfVxuXG4gIC8vIGdldCBhbGwgdGhlIGRldmljZXMgZm9yIGVhY2ggc2RrXG4gIGxldCBkZXZpY2VzOk9iamVjdCA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBsZXQgc2RrOnN0cmluZyA9IG1hdGNoWzFdO1xuICAgIGRldmljZXNbc2RrXSA9IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGxldCBsaW5lOnN0cmluZyBvZiBtYXRjaFswXS5zcGxpdCgnXFxuJykuc2xpY2UoMSkpIHtcbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBsZXQgbGluZVJlOlJlZ0V4cCA9IC9eICAgIChbXlxcKF0rKSBcXCgoW15cXCldKylcXCkgXFwoKFteXFwpXSspXFwpLztcbiAgICAgIGxldCBsaW5lTWF0Y2g6T2JqZWN0ID0gbGluZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobGluZU1hdGNoID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IG1hdGNoIGxpbmUnKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGZvclNkaykge1xuICAgIGlmICghZGV2aWNlc1tmb3JTZGtdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNkayAnJHtmb3JTZGt9JyB3YXMgbm90IGluIGxpc3Qgb2Ygc2ltY3RsIHNka3NgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRldmljZXNbZm9yU2RrXTtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSByZXR1cm4gYWxsIHRoZSBzZGsgLT4gZGV2aWNlIG1hcHBpbmdzLlxuICByZXR1cm4gZGV2aWNlcztcbn1cblxuZXhwb3J0IHsgaW5zdGFsbEFwcCwgcmVtb3ZlQXBwLCBsYXVuY2gsIHNwYXduLCBzcGF3blN1YlByb2Nlc3MsIHNodXRkb3duLCBjcmVhdGVEZXZpY2UsXG4gICAgICAgICBkZWxldGVEZXZpY2UsIGVyYXNlRGV2aWNlLCBnZXREZXZpY2VzIH07XG4iXX0=

33

lib/simctl.js

@@ -1,2 +0,2 @@

import { exec } from 'teen_process';
import { exec, SubProcess } from 'teen_process';
import { retryInterval } from 'asyncbox';

@@ -9,4 +9,3 @@ import { getLogger } from 'appium-logger';

async function simExec (command:string, timeout:number, args:Array = [],
env = {}) {
async function simCommand (command:string, timeout:number, args:Array = [], env = {}, executingFunction = exec) {
// run a particular simctl command

@@ -22,3 +21,3 @@ args = ['simctl', command, ...args];

try {
return exec('xcrun', args, {timeout, env});
return executingFunction('xcrun', args, {timeout, env});
} catch (e) {

@@ -33,2 +32,14 @@ if (e.stderr) {

async function simExec (command:string, timeout:number, args:Array = [], env = {}) {
return simCommand(command, timeout, args, env, (c, a, ob) => {
return exec(c, a, ob);
});
}
async function simSubProcess (command:string, timeout:number, args:Array = [], env = {}) {
return simCommand(command, timeout, args, env, async (c, a, ob) => {
return new SubProcess(c, a, ob);
});
}
async function installApp (udid:string, appPath:string):void {

@@ -47,5 +58,9 @@ await simExec('install', 0, [udid, appPath]);

async function spawn (udid:string, executablePath:string, env = {}):void {
await simExec('spawn', 0, [udid, executablePath], env);
return await simExec('spawn', 0, [udid, executablePath], env);
}
async function spawnSubProcess (udid:string, executablePath:string, env = {}):void {
return await simSubProcess('spawn', 0, [udid, executablePath], env);
}
async function shutdown (udid:string):void {

@@ -67,3 +82,7 @@ await simExec('shutdown', 0, [udid]);

async function deleteDevice (udid:string):void {
await simExec('delete', 0, [udid]);
let loopFn:Function = async () => {
await simExec('delete', 0, [udid]);
};
// retry delete with a sleep in between because it's flakey
await retryInterval(5, 200, loopFn);
}

@@ -144,3 +163,3 @@

export { installApp, removeApp, launch, spawn, shutdown, createDevice,
export { installApp, removeApp, launch, spawn, spawnSubProcess, shutdown, createDevice,
deleteDevice, eraseDevice, getDevices };

@@ -9,3 +9,3 @@ {

],
"version": "3.1.0",
"version": "3.1.1",
"author": "https://github.com/appium",

@@ -33,3 +33,4 @@ "license": "Apache-2.0",

"source-map-support": "^0.2.8",
"teen_process": "^1.3.1"
"teen_process": "^1.3.1",
"lodash": "^3.10.1"
},

@@ -44,5 +45,4 @@ "scripts": {

"chai": "^3.2.0",
"gulp": "^3.9.0",
"lodash": "^3.10.1"
"gulp": "^3.9.0"
}
}

@@ -157,5 +157,14 @@ ## node-simctl

`spawn(udid, executablePath, env)`
- spawns a process on the simulator specified by `udid` with given environment variable in `env`
`spawnSubProcess(udid, executablePath, env)`
- spawns a process on the simulator specified by `udid` with given environment variable in `env`
- returns a (SubProcess)[https://github.com/appium/node-teen_process#teen_processsubprocess] object.
### Usage
See [specs](test/simctl-specs.js) for examples of usage.
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