node-simctl 7.1.4 → 7.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/build/index.js +1 -5
  3. package/build/lib/helpers.js +1 -10
  4. package/build/lib/helpers.js.map +1 -0
  5. package/build/lib/logger.js +1 -9
  6. package/build/lib/logger.js.map +1 -0
  7. package/build/lib/simctl.js +1 -36
  8. package/build/lib/simctl.js.map +1 -0
  9. package/build/lib/subcommands/addmedia.js +1 -5
  10. package/build/lib/subcommands/addmedia.js.map +1 -0
  11. package/build/lib/subcommands/appinfo.js +1 -5
  12. package/build/lib/subcommands/appinfo.js.map +1 -0
  13. package/build/lib/subcommands/boot.js +1 -11
  14. package/build/lib/subcommands/boot.js.map +1 -0
  15. package/build/lib/subcommands/bootstatus.js +1 -19
  16. package/build/lib/subcommands/bootstatus.js.map +1 -0
  17. package/build/lib/subcommands/create.js +1 -26
  18. package/build/lib/subcommands/create.js.map +1 -0
  19. package/build/lib/subcommands/delete.js +1 -5
  20. package/build/lib/subcommands/delete.js.map +1 -0
  21. package/build/lib/subcommands/erase.js +1 -6
  22. package/build/lib/subcommands/erase.js.map +1 -0
  23. package/build/lib/subcommands/get_app_container.js +1 -7
  24. package/build/lib/subcommands/get_app_container.js.map +1 -0
  25. package/build/lib/subcommands/getenv.js +1 -5
  26. package/build/lib/subcommands/getenv.js.map +1 -0
  27. package/build/lib/subcommands/index.js +1 -29
  28. package/build/lib/subcommands/index.js.map +1 -0
  29. package/build/lib/subcommands/install.js +1 -5
  30. package/build/lib/subcommands/install.js.map +1 -0
  31. package/build/lib/subcommands/io.js +1 -16
  32. package/build/lib/subcommands/io.js.map +1 -0
  33. package/build/lib/subcommands/keychain.js +1 -24
  34. package/build/lib/subcommands/keychain.js.map +1 -0
  35. package/build/lib/subcommands/launch.js +1 -8
  36. package/build/lib/subcommands/launch.js.map +1 -0
  37. package/build/lib/subcommands/list.js +1 -43
  38. package/build/lib/subcommands/list.js.map +1 -0
  39. package/build/lib/subcommands/location.js +1 -9
  40. package/build/lib/subcommands/location.js.map +1 -0
  41. package/build/lib/subcommands/openurl.js +1 -5
  42. package/build/lib/subcommands/openurl.js.map +1 -0
  43. package/build/lib/subcommands/pbcopy.js +1 -5
  44. package/build/lib/subcommands/pbcopy.js.map +1 -0
  45. package/build/lib/subcommands/pbpaste.js +1 -5
  46. package/build/lib/subcommands/pbpaste.js.map +1 -0
  47. package/build/lib/subcommands/privacy.js +1 -7
  48. package/build/lib/subcommands/privacy.js.map +1 -0
  49. package/build/lib/subcommands/push.js +1 -15
  50. package/build/lib/subcommands/push.js.map +1 -0
  51. package/build/lib/subcommands/shutdown.js +1 -11
  52. package/build/lib/subcommands/shutdown.js.map +1 -0
  53. package/build/lib/subcommands/spawn.js +1 -10
  54. package/build/lib/subcommands/spawn.js.map +1 -0
  55. package/build/lib/subcommands/terminate.js +1 -5
  56. package/build/lib/subcommands/terminate.js.map +1 -0
  57. package/build/lib/subcommands/ui.js +1 -8
  58. package/build/lib/subcommands/ui.js.map +1 -0
  59. package/build/lib/subcommands/uninstall.js +1 -5
  60. package/build/lib/subcommands/uninstall.js.map +1 -0
  61. package/package.json +6 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.js","names":["commands","rimrafAsync","B","promisify","rimraf","writeFileAsync","fs","writeFile","handleRawPayload","payload","onPayloadStored","filePath","path","resolve","os","tmpdir","uuidV4","_","isBuffer","addRootCertificate","cert","opts","raw","execMethod","certPath","exec","args","requireUdid","addCertificate","resetKeychain"],"sources":["../../../lib/subcommands/keychain.js"],"sourcesContent":["import os from 'os';\nimport fs from 'fs';\nimport B from 'bluebird';\nimport { v4 as uuidV4 } from 'uuid';\nimport path from 'path';\nimport _ from 'lodash';\nimport rimraf from 'rimraf';\n\nconst commands = {};\nconst rimrafAsync = B.promisify(rimraf);\nconst writeFileAsync = B.promisify(fs.writeFile);\n\nasync function handleRawPayload (payload, onPayloadStored) {\n const filePath = path.resolve(os.tmpdir(), `${uuidV4()}.pem`);\n try {\n if (_.isBuffer(payload)) {\n await writeFileAsync(filePath, payload);\n } else {\n await writeFileAsync(filePath, payload, 'utf8');\n }\n await onPayloadStored(filePath);\n } finally {\n await rimrafAsync(filePath);\n }\n}\n\n\n/**\n * @typedef {Object} CertOptions\n * @property {boolean} raw [false] - whether the `cert` argument\n * is the path to the certificate on the local file system or\n * a raw certificate content\n */\n\n/**\n * Adds the given certificate to the Trusted Root Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addRootCertificate = async function addRootCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-root-cert'), 'add-root-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Adds the given certificate to the Keychain Store on the simulator\n *\n * @since Xcode 11.4 SDK\n * @param {string} cert the full path to a valid .cert file containing\n * the certificate content or the certificate content itself, depending on\n * options\n * @param {CertOptions} opts\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while adding the certificate\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.addCertificate = async function addCertificate (cert, opts = {}) {\n const {\n raw = false,\n } = opts;\n const execMethod = async (certPath) => await this.exec('keychain', {\n args: [this.requireUdid('keychain add-cert'), 'add-cert', certPath],\n });\n if (raw) {\n await handleRawPayload(cert, execMethod);\n } else {\n await execMethod(cert);\n }\n};\n\n/**\n * Resets the simulator keychain\n *\n * @since Xcode 11.4 SDK\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while resetting the keychain\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.resetKeychain = async function resetKeychain () {\n await this.exec('keychain', {\n args: [this.requireUdid('keychain reset'), 'reset'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,WAAW,GAAGC,iBAAC,CAACC,SAAS,CAACC,eAAM,CAAC;AACvC,MAAMC,cAAc,GAAGH,iBAAC,CAACC,SAAS,CAACG,WAAE,CAACC,SAAS,CAAC;AAEhD,eAAeC,gBAAgB,CAAEC,OAAO,EAAEC,eAAe,EAAE;EACzD,MAAMC,QAAQ,GAAGC,aAAI,CAACC,OAAO,CAACC,WAAE,CAACC,MAAM,EAAE,EAAG,GAAE,IAAAC,QAAM,GAAG,MAAK,CAAC;EAC7D,IAAI;IACF,IAAIC,eAAC,CAACC,QAAQ,CAACT,OAAO,CAAC,EAAE;MACvB,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,CAAC;IACzC,CAAC,MAAM;MACL,MAAMJ,cAAc,CAACM,QAAQ,EAAEF,OAAO,EAAE,MAAM,CAAC;IACjD;IACA,MAAMC,eAAe,CAACC,QAAQ,CAAC;EACjC,CAAC,SAAS;IACR,MAAMV,WAAW,CAACU,QAAQ,CAAC;EAC7B;AACF;AAsBAX,QAAQ,CAACmB,kBAAkB,GAAG,eAAeA,kBAAkB,CAAEC,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EAChF,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,wBAAwB,CAAC,EAAE,eAAe,EAAEH,QAAQ;EAC9E,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;AAcDpB,QAAQ,CAAC4B,cAAc,GAAG,eAAeA,cAAc,CAAER,IAAI,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EACxE,MAAM;IACJC,GAAG,GAAG;EACR,CAAC,GAAGD,IAAI;EACR,MAAME,UAAU,GAAG,MAAOC,QAAQ,IAAK,MAAM,IAAI,CAACC,IAAI,CAAC,UAAU,EAAE;IACjEC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAEH,QAAQ;EACpE,CAAC,CAAC;EACF,IAAIF,GAAG,EAAE;IACP,MAAMd,gBAAgB,CAACY,IAAI,EAAEG,UAAU,CAAC;EAC1C,CAAC,MAAM;IACL,MAAMA,UAAU,CAACH,IAAI,CAAC;EACxB;AACF,CAAC;AAUDpB,QAAQ,CAAC6B,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACJ,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO;EACpD,CAAC,CAAC;AACJ,CAAC;AAAC,eAEa3B,QAAQ;AAAA"}
@@ -1,20 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
10
  var _asyncbox = require("asyncbox");
15
-
16
11
  const commands = {};
17
-
18
12
  commands.launchApp = async function launchApp(bundleId, tries = 5) {
19
13
  return await (0, _asyncbox.retryInterval)(tries, 1000, async () => {
20
14
  const {
@@ -25,7 +19,6 @@ commands.launchApp = async function launchApp(bundleId, tries = 5) {
25
19
  return _lodash.default.trim(stdout);
26
20
  });
27
21
  };
28
-
29
22
  var _default = commands;
30
23
  exports.default = _default;
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImxhdW5jaEFwcCIsImJ1bmRsZUlkIiwidHJpZXMiLCJyZXRyeUludGVydmFsIiwic3Rkb3V0IiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsIl8iLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2xhdW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUgYW5kXG4gKiB0aGUgYXBwbGljYXRpb24gd2l0aCBnaXZlbiBidW5kbGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24sXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBnb2luZyB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHRyaWVzIFs1XSAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93aW5nIGFuIGV4Y2VwdGlvbi5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMubGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwIChidW5kbGVJZCwgdHJpZXMgPSA1KSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHRyaWVzLCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xhdW5jaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsYXVuY2gnKSwgYnVuZGxlSWRdLFxuICAgIH0pO1xuICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBZ0JBQSxRQUFRLENBQUNDLFNBQVQsR0FBcUIsZUFBZUEsU0FBZixDQUEwQkMsUUFBMUIsRUFBb0NDLEtBQUssR0FBRyxDQUE1QyxFQUErQztFQUNsRSxPQUFPLE1BQU0sSUFBQUMsdUJBQUEsRUFBY0QsS0FBZCxFQUFxQixJQUFyQixFQUEyQixZQUFZO0lBQ2xELE1BQU07TUFBQ0U7SUFBRCxJQUFXLE1BQU0sS0FBS0MsSUFBTCxDQUFVLFFBQVYsRUFBb0I7TUFDekNDLElBQUksRUFBRSxDQUFDLEtBQUtDLFdBQUwsQ0FBaUIsUUFBakIsQ0FBRCxFQUE2Qk4sUUFBN0I7SUFEbUMsQ0FBcEIsQ0FBdkI7SUFHQSxPQUFPTyxlQUFBLENBQUVDLElBQUYsQ0FBT0wsTUFBUCxDQUFQO0VBQ0QsQ0FMWSxDQUFiO0FBTUQsQ0FQRDs7ZUFTZUwsUSJ9
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImxhdW5jaEFwcCIsImJ1bmRsZUlkIiwidHJpZXMiLCJyZXRyeUludGVydmFsIiwic3Rkb3V0IiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsIl8iLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2xhdW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUgYW5kXG4gKiB0aGUgYXBwbGljYXRpb24gd2l0aCBnaXZlbiBidW5kbGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24sXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBnb2luZyB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHRyaWVzIFs1XSAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93aW5nIGFuIGV4Y2VwdGlvbi5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMubGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwIChidW5kbGVJZCwgdHJpZXMgPSA1KSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHRyaWVzLCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xhdW5jaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsYXVuY2gnKSwgYnVuZGxlSWRdLFxuICAgIH0pO1xuICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQWdCbkJBLFFBQVEsQ0FBQ0MsU0FBUyxHQUFHLGVBQWVBLFNBQVMsQ0FBRUMsUUFBUSxFQUFFQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO0VBQ2xFLE9BQU8sTUFBTSxJQUFBQyx1QkFBYSxFQUFDRCxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVk7SUFDbEQsTUFBTTtNQUFDRTtJQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFFBQVEsRUFBRTtNQUN6Q0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUVOLFFBQVE7SUFDN0MsQ0FBQyxDQUFDO0lBQ0YsT0FBT08sZUFBQyxDQUFDQyxJQUFJLENBQUNMLE1BQU0sQ0FBQztFQUN2QixDQUFDLENBQUM7QUFDSixDQUFDO0FBQUMsZUFFYUwsUUFBUTtBQUFBIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","names":["commands","launchApp","bundleId","tries","retryInterval","stdout","exec","args","requireUdid","_","trim"],"sources":["../../../lib/subcommands/launch.js"],"sourcesContent":["import _ from 'lodash';\nimport { retryInterval } from 'asyncbox';\n\nconst commands = {};\n\n/**\n * Execute the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state and\n * the application with given bundle identifier is already installed.\n *\n * @param {string} bundleId - Bundle identifier of the application,\n * which is going to be removed.\n * @param {number} tries [5] - The maximum number of retries before\n * throwing an exception.\n * @return {string} the actual command output\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.launchApp = async function launchApp (bundleId, tries = 5) {\n return await retryInterval(tries, 1000, async () => {\n const {stdout} = await this.exec('launch', {\n args: [this.requireUdid('launch'), bundleId],\n });\n return _.trim(stdout);\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAgBnBA,QAAQ,CAACC,SAAS,GAAG,eAAeA,SAAS,CAAEC,QAAQ,EAAEC,KAAK,GAAG,CAAC,EAAE;EAClE,OAAO,MAAM,IAAAC,uBAAa,EAACD,KAAK,EAAE,IAAI,EAAE,YAAY;IAClD,MAAM;MAACE;IAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;MACzCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEN,QAAQ;IAC7C,CAAC,CAAC;IACF,OAAOO,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaL,QAAQ;AAAA"}
@@ -1,26 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
10
  var _helpers = require("../helpers");
15
-
16
11
  var _logger = _interopRequireWildcard(require("../logger"));
17
-
18
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
14
  const commands = {};
23
-
24
15
  commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
25
16
  const {
26
17
  stdout
@@ -30,33 +21,25 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
30
21
  const deviceSectionRe = _lodash.default.isEmpty(platform) ? new RegExp(`\\-\\-\\s+(\\S+)\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi') : new RegExp(`\\-\\-\\s+${_lodash.default.escapeRegExp(platform)}\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi');
31
22
  const matches = [];
32
23
  let match;
33
-
34
24
  while (match = deviceSectionRe.exec(stdout)) {
35
25
  matches.push(match);
36
26
  }
37
-
38
27
  if (_lodash.default.isEmpty(matches)) {
39
28
  throw new Error('Could not find device section');
40
29
  }
41
-
42
30
  const lineRe = /([^\s].+) \((\w+-.+\w+)\) \((\w+\s?\w+)\)/;
43
31
  const devices = {};
44
-
45
32
  for (match of matches) {
46
33
  const sdk = platform ? match[1] : match[2];
47
34
  devices[sdk] = devices[sdk] || [];
48
-
49
35
  for (const line of match[0].split('\n').slice(1)) {
50
36
  if (line.includes('(unavailable, ')) {
51
37
  continue;
52
38
  }
53
-
54
39
  const lineMatch = lineRe.exec(line);
55
-
56
40
  if (!lineMatch) {
57
41
  throw new Error(`Could not match line: ${line}`);
58
42
  }
59
-
60
43
  devices[sdk].push({
61
44
  name: lineMatch[1],
62
45
  udid: lineMatch[2],
@@ -66,13 +49,10 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
66
49
  });
67
50
  }
68
51
  }
69
-
70
52
  return devices;
71
53
  };
72
-
73
54
  commands.getDevices = async function getDevices(forSdk, platform) {
74
55
  let devices = {};
75
-
76
56
  try {
77
57
  const {
78
58
  stdout
@@ -80,15 +60,12 @@ commands.getDevices = async function getDevices(forSdk, platform) {
80
60
  args: ['devices', '-j']
81
61
  });
82
62
  const versionMatchRe = _lodash.default.isEmpty(platform) ? new RegExp(`^([^\\s-]+)[\\s-](\\S+)`, 'i') : new RegExp(`^${_lodash.default.escapeRegExp(platform)}[\\s-](\\S+)`, 'i');
83
-
84
63
  for (let [sdkName, entries] of _lodash.default.toPairs(JSON.parse(stdout).devices)) {
85
64
  sdkName = sdkName.replace(_helpers.SIM_RUNTIME_NAME, '');
86
65
  const versionMatch = versionMatchRe.exec(sdkName);
87
-
88
66
  if (!versionMatch) {
89
67
  continue;
90
68
  }
91
-
92
69
  const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');
93
70
  devices[sdk] = devices[sdk] || [];
94
71
  devices[sdk].push(...entries.filter(el => _lodash.default.isUndefined(el.isAvailable) || el.isAvailable).map(el => {
@@ -102,35 +79,26 @@ commands.getDevices = async function getDevices(forSdk, platform) {
102
79
  }
103
80
  } catch (err) {
104
81
  _logger.default.debug(_logger.LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);
105
-
106
82
  _logger.default.debug(_logger.LOG_PREFIX, 'Falling back to manual parsing');
107
-
108
83
  devices = await this.getDevicesByParsing(platform);
109
84
  }
110
-
111
85
  if (!forSdk) {
112
86
  return devices;
113
87
  }
114
-
115
88
  if (devices[forSdk]) {
116
89
  return devices[forSdk];
117
90
  }
118
-
119
91
  let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;
120
-
121
92
  const availableSDKs = _lodash.default.keys(devices);
122
-
123
93
  errMsg += availableSDKs.length ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}` : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;
124
94
  throw new Error(errMsg);
125
95
  };
126
-
127
96
  commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson(platformVersion, platform = 'iOS') {
128
97
  const {
129
98
  stdout
130
99
  } = await this.exec('list', {
131
100
  args: ['runtimes', '--json']
132
101
  });
133
-
134
102
  for (const {
135
103
  version,
136
104
  identifier,
@@ -140,10 +108,8 @@ commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatf
140
108
  return identifier;
141
109
  }
142
110
  }
143
-
144
111
  throw new Error(`Could not use --json flag to parse platform version`);
145
112
  };
146
-
147
113
  commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion(platformVersion, platform = 'iOS') {
148
114
  try {
149
115
  const {
@@ -152,26 +118,21 @@ commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVers
152
118
  args: ['runtimes']
153
119
  });
154
120
  const runtimeRe = new RegExp(`${_lodash.default.escapeRegExp(platform)}\\s+(\\d+\\.\\d+)\\s+\\((\\d+\\.\\d+\\.*\\d*)`, 'i');
155
-
156
121
  for (const line of stdout.split('\n')) {
157
122
  const match = runtimeRe.exec(line);
158
-
159
123
  if (match && match[1] === platformVersion) {
160
124
  return match[2];
161
125
  }
162
126
  }
163
127
  } catch (ign) {}
164
-
165
128
  return platformVersion;
166
129
  };
167
-
168
130
  commands.getDeviceTypes = async function getDeviceTypes() {
169
131
  const {
170
132
  stdout
171
133
  } = await this.exec('list', {
172
134
  args: ['devicetypes', '-j']
173
135
  });
174
-
175
136
  try {
176
137
  const deviceTypes = JSON.parse(stdout.trim());
177
138
  return deviceTypes.devicetypes.map(type => type.name);
@@ -179,21 +140,18 @@ commands.getDeviceTypes = async function getDeviceTypes() {
179
140
  throw new Error(`Unable to get list of device types: ${err.message}`);
180
141
  }
181
142
  };
182
-
183
143
  commands.list = async function list() {
184
144
  const {
185
145
  stdout
186
146
  } = await this.exec('list', {
187
147
  args: ['-j']
188
148
  });
189
-
190
149
  try {
191
150
  return JSON.parse(stdout.trim());
192
151
  } catch (e) {
193
152
  throw new Error(`Unable to parse simctl list: ${e.message}`);
194
153
  }
195
154
  };
196
-
197
155
  var _default = commands;
198
156
  exports.default = _default;
199
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
157
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","names":["commands","getDevicesByParsing","platform","stdout","exec","args","deviceSectionRe","_","isEmpty","RegExp","escapeRegExp","matches","match","push","Error","lineRe","devices","sdk","line","split","slice","includes","lineMatch","name","udid","state","getDevices","forSdk","versionMatchRe","sdkName","entries","toPairs","JSON","parse","replace","SIM_RUNTIME_NAME","versionMatch","filter","el","isUndefined","isAvailable","map","availability","err","log","debug","LOG_PREFIX","stack","errMsg","availableSDKs","keys","length","join","getRuntimeForPlatformVersionViaJson","platformVersion","version","identifier","runtimes","normalizeVersion","toLowerCase","startsWith","getRuntimeForPlatformVersion","runtimeRe","ign","getDeviceTypes","deviceTypes","trim","devicetypes","type","message","list","e"],"sources":["../../../lib/subcommands/list.js"],"sourcesContent":["import _ from 'lodash';\nimport { SIM_RUNTIME_NAME, normalizeVersion } from '../helpers';\nimport log, { LOG_PREFIX } from '../logger';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} DeviceInfo\n * @property {string} name - The device name.\n * @property {string} udid - The device UDID.\n * @property {string} state - The current Simulator state, for example 'booted' or 'shutdown'.\n * @property {string} sdk - The SDK version, for example '10.3'.\n */\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping.\n *\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object} The resulting mapping. Each key is platform version,\n * for example '10.3' and the corresponding value is an\n * array of the matching {@link DeviceInfo} instances.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n */\ncommands.getDevicesByParsing = async function getDevicesByParsing (platform) {\n // get the list of devices\n const {stdout} = await this.exec('list', {\n args: ['devices'],\n });\n\n // expect to get a listing like\n // -- iOS 8.1 --\n // iPhone 4s (3CA6E7DD-220E-45E5-B716-1E992B3A429C) (Shutdown)\n // ...\n // -- iOS 8.2 --\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // ...\n // so, get the `-- iOS X.X --` line to find the sdk (X.X)\n // and the rest of the listing in order to later find the devices\n const deviceSectionRe = _.isEmpty(platform)\n ? new RegExp(`\\\\-\\\\-\\\\s+(\\\\S+)\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi')\n : new RegExp(`\\\\-\\\\-\\\\s+${_.escapeRegExp(platform)}\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi');\n const matches = [];\n let match;\n // make an entry for each sdk version\n while ((match = deviceSectionRe.exec(stdout))) {\n matches.push(match);\n }\n if (_.isEmpty(matches)) {\n throw new Error('Could not find device section');\n }\n\n const lineRe = /([^\\s].+) \\((\\w+-.+\\w+)\\) \\((\\w+\\s?\\w+)\\)/; // https://regex101.com/r/lG7mK6/3\n // get all the devices for each sdk\n const devices = {};\n for (match of matches) {\n const sdk = platform ? match[1] : match[2];\n devices[sdk] = devices[sdk] || [];\n // split the full match into lines and remove the first\n for (const line of match[0].split('\\n').slice(1)) {\n if (line.includes('(unavailable, ')) {\n continue;\n }\n // a line is something like\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // retrieve:\n // iPhone 4s\n // A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E\n // Shutdown\n const lineMatch = lineRe.exec(line);\n if (!lineMatch) {\n throw new Error(`Could not match line: ${line}`);\n }\n // save the whole thing as ab object in the list for this sdk\n devices[sdk].push({\n name: lineMatch[1],\n udid: lineMatch[2],\n state: lineMatch[3],\n sdk,\n platform: platform || match[1],\n });\n }\n }\n return devices;\n};\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping for the particular platform version.\n *\n * @param {?string} forSdk - The sdk version,\n * for which the devices list should be parsed,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object|Array<DeviceInfo>} If _forSdk_ is set then the list\n * of devices for the particular platform version.\n * Otherwise the same result as for {@link getDevicesByParsing}\n * function.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code or if no matching\n * platform version is found in the system.\n */\ncommands.getDevices = async function getDevices (forSdk, platform) {\n let devices = {};\n try {\n const {stdout} = await this.exec('list', {\n args: ['devices', '-j'],\n });\n /* JSON should be\n * {\n * \"devices\" : {\n * \"iOS <sdk>\" : [ // or\n * \"com.apple.CoreSimulator.SimRuntime.iOS-<sdk> : [\n * {\n * \"state\" : \"Booted\",\n * \"availability\" : \"(available)\",\n * \"isAvailable\" : true,\n * \"name\" : \"iPhone 6\",\n * \"udid\" : \"75E34140-18E8-4D1A-9F45-AAC735DF75DF\"\n * }\n * ]\n * }\n * }\n */\n const versionMatchRe = _.isEmpty(platform)\n ? new RegExp(`^([^\\\\s-]+)[\\\\s-](\\\\S+)`, 'i')\n : new RegExp(`^${_.escapeRegExp(platform)}[\\\\s-](\\\\S+)`, 'i');\n for (let [sdkName, entries] of _.toPairs(JSON.parse(stdout).devices)) {\n // there could be a longer name, so remove it\n sdkName = sdkName.replace(SIM_RUNTIME_NAME, '');\n const versionMatch = versionMatchRe.exec(sdkName);\n if (!versionMatch) {\n continue;\n }\n\n // the sdk can have dashes (`12-2`) or dots (`12.1`)\n const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');\n devices[sdk] = devices[sdk] || [];\n devices[sdk].push(...entries.filter((el) => _.isUndefined(el.isAvailable) || el.isAvailable)\n .map((el) => {\n delete el.availability;\n return {\n sdk,\n ...el,\n platform: platform || versionMatch[1],\n };\n })\n );\n }\n } catch (err) {\n log.debug(LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);\n log.debug(LOG_PREFIX, 'Falling back to manual parsing');\n devices = await this.getDevicesByParsing(platform);\n }\n\n if (!forSdk) {\n return devices;\n }\n // if a `forSdk` was passed in, return only the corresponding list\n if (devices[forSdk]) {\n return devices[forSdk];\n }\n\n let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;\n const availableSDKs = _.keys(devices);\n errMsg += availableSDKs.length\n ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}`\n : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;\n throw new Error(errMsg);\n};\n\n/**\n * Get the runtime for the particular platform version using --json flag\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson (\n platformVersion, platform = 'iOS') {\n const {stdout} = await this.exec('list', {\n args: ['runtimes', '--json'],\n });\n for (const {version, identifier, name} of JSON.parse(stdout).runtimes) {\n if (normalizeVersion(version) === normalizeVersion(platformVersion)\n && name.toLowerCase().startsWith(platform.toLowerCase())) {\n return identifier;\n }\n }\n throw new Error(`Could not use --json flag to parse platform version`);\n};\n\n/**\n * Get the runtime for the particular platform version.\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion (\n platformVersion, platform = 'iOS') {\n // Try with parsing\n try {\n const {stdout} = await this.exec('list', {\n args: ['runtimes'],\n });\n // https://regex101.com/r/UykjQZ/1\n const runtimeRe =\n new RegExp(`${_.escapeRegExp(platform)}\\\\s+(\\\\d+\\\\.\\\\d+)\\\\s+\\\\((\\\\d+\\\\.\\\\d+\\\\.*\\\\d*)`, 'i');\n for (const line of stdout.split('\\n')) {\n const match = runtimeRe.exec(line);\n if (match && match[1] === platformVersion) {\n return match[2];\n }\n }\n } catch (ign) {}\n\n // if nothing was found, pass platform version back\n return platformVersion;\n};\n\n/**\n * Get the list of device types available in the current Xcode installation\n *\n * @return {Array<string>} List of the types of devices available\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.getDeviceTypes = async function getDeviceTypes () {\n const {stdout} = await this.exec('list', {\n args: ['devicetypes', '-j'],\n });\n /*\n * JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * }\n */\n try {\n const deviceTypes = JSON.parse(stdout.trim());\n return deviceTypes.devicetypes.map((type) => type.name);\n } catch (err) {\n throw new Error(`Unable to get list of device types: ${err.message}`);\n }\n};\n\n/**\n * Get the full list of runtimes, devicetypes, devices and pairs as Object\n *\n * @return {Object} Object containing device types, runtimes devices and pairs.\n * The resulting JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * ],\n * \"runtimes\" : [\n * {\n * \"version\" : '13.0',\n * \"bundlePath\" : '/Applications/Xcode11beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime',\n * \"isAvailable\" : true,\n * \"name\" : 'iOS 13.0',\n * \"identifier\" : 'com.apple.CoreSimulator.SimRuntime.iOS-13-0',\n * \"buildversion\" : '17A5534d'\n * },\n * ...\n * },\n * \"devices\" :\n * {\n * 'com.apple.CoreSimulator.SimRuntime.iOS-13-0': [ [Object], [Object] ] },\n * ...\n * },\n * \"pairs\" : {} }\n *\n * }\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.list = async function list () {\n const {stdout} = await this.exec('list', {\n args: ['-j'],\n });\n try {\n return JSON.parse(stdout.trim());\n } catch (e) {\n throw new Error(`Unable to parse simctl list: ${e.message}`);\n }\n};\n\nexport default commands;\n"],"mappings":"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"}
@@ -4,21 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  const commands = {};
11
-
12
9
  function formatArg(name, value) {
13
10
  const flt = parseFloat(value);
14
-
15
11
  if (isNaN(flt)) {
16
12
  throw new TypeError(`${name} must be a valid number, got '${value}' instead`);
17
13
  }
18
-
19
14
  return flt.toFixed(7);
20
15
  }
21
-
22
16
  commands.setLocation = async function setLocation(latitude, longitude) {
23
17
  const lat = formatArg('latitude', latitude);
24
18
  const lon = formatArg('longitude', longitude);
@@ -26,13 +20,11 @@ commands.setLocation = async function setLocation(latitude, longitude) {
26
20
  args: [this.requireUdid('location'), 'set', `${lat},${lon}`]
27
21
  });
28
22
  };
29
-
30
23
  commands.clearLocation = async function clearLocation() {
31
24
  await this.exec('location', {
32
25
  args: [this.requireUdid('location'), 'clear']
33
26
  });
34
27
  };
35
-
36
28
  var _default = commands;
37
29
  exports.default = _default;
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImZvcm1hdEFyZyIsIm5hbWUiLCJ2YWx1ZSIsImZsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsInRvRml4ZWQiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibGF0IiwibG9uIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImNsZWFyTG9jYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvbG9jYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBsb2NhdGlvbiBhcmd1bWVudCBmb3Igc2ltY3RsIHVzYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSBMb2NhdGlvbiBhcmd1bWVudCB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIHZhbHVlLCBmb3IgZXhhbXBsZSAtNzMuNzY4MjU0XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFyZyAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZmx0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbHQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyLCBnb3QgJyR7dmFsdWV9JyBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIGZsdC50b0ZpeGVkKDcpO1xufVxuXG4vKipcbiAqIFNldCB0aGUgU2ltdWxhdG9yIGxvY2F0aW9uIHRvIGEgc3BlY2lmaWMgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cbiAqIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBYY29kZSAxNC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIExvY2F0aW9uIGxhdGl0dWRlIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSBMb2NhdGlvbiBsb25naXR1ZGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgbm90IGEgdmFsaWQgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgY29uc3QgbGF0ID0gZm9ybWF0QXJnKCdsYXRpdHVkZScsIGxhdGl0dWRlKTtcbiAgY29uc3QgbG9uID0gZm9ybWF0QXJnKCdsb25naXR1ZGUnLCBsb25naXR1ZGUpO1xuICBhd2FpdCB0aGlzLmV4ZWMoJ2xvY2F0aW9uJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsb2NhdGlvbicpLCAnc2V0JywgYCR7bGF0fSwke2xvbn1gXSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFN0b3AgYW55IHJ1bm5pbmcgc2NlbmFyaW8gYW5kIGNsZWFyIGFueSBzaW11bGF0ZWQgbG9jYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGUgMTQuXG4gKi9cbmNvbW1hbmRzLmNsZWFyTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2F0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdsb2NhdGlvbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgnbG9jYXRpb24nKSwgJ2NsZWFyJ10sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFTQSxTQUFTQyxTQUFULENBQW9CQyxJQUFwQixFQUEwQkMsS0FBMUIsRUFBaUM7RUFDL0IsTUFBTUMsR0FBRyxHQUFHQyxVQUFVLENBQUNGLEtBQUQsQ0FBdEI7O0VBQ0EsSUFBSUcsS0FBSyxDQUFDRixHQUFELENBQVQsRUFBZ0I7SUFDZCxNQUFNLElBQUlHLFNBQUosQ0FBZSxHQUFFTCxJQUFLLGlDQUFnQ0MsS0FBTSxXQUE1RCxDQUFOO0VBQ0Q7O0VBQ0QsT0FBT0MsR0FBRyxDQUFDSSxPQUFKLENBQVksQ0FBWixDQUFQO0FBQ0Q7O0FBWURSLFFBQVEsQ0FBQ1MsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQ0MsU0FBdEMsRUFBaUQ7RUFDdEUsTUFBTUMsR0FBRyxHQUFHWCxTQUFTLENBQUMsVUFBRCxFQUFhUyxRQUFiLENBQXJCO0VBQ0EsTUFBTUcsR0FBRyxHQUFHWixTQUFTLENBQUMsV0FBRCxFQUFjVSxTQUFkLENBQXJCO0VBQ0EsTUFBTSxLQUFLRyxJQUFMLENBQVUsVUFBVixFQUFzQjtJQUMxQkMsSUFBSSxFQUFFLENBQUMsS0FBS0MsV0FBTCxDQUFpQixVQUFqQixDQUFELEVBQStCLEtBQS9CLEVBQXVDLEdBQUVKLEdBQUksSUFBR0MsR0FBSSxFQUFwRDtFQURvQixDQUF0QixDQUFOO0FBR0QsQ0FORDs7QUFZQWIsUUFBUSxDQUFDaUIsYUFBVCxHQUF5QixlQUFlQSxhQUFmLEdBQWdDO0VBQ3ZELE1BQU0sS0FBS0gsSUFBTCxDQUFVLFVBQVYsRUFBc0I7SUFDMUJDLElBQUksRUFBRSxDQUFDLEtBQUtDLFdBQUwsQ0FBaUIsVUFBakIsQ0FBRCxFQUErQixPQUEvQjtFQURvQixDQUF0QixDQUFOO0FBR0QsQ0FKRDs7ZUFNZWhCLFEifQ==
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImZvcm1hdEFyZyIsIm5hbWUiLCJ2YWx1ZSIsImZsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsInRvRml4ZWQiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibGF0IiwibG9uIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImNsZWFyTG9jYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvbG9jYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBsb2NhdGlvbiBhcmd1bWVudCBmb3Igc2ltY3RsIHVzYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSBMb2NhdGlvbiBhcmd1bWVudCB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIHZhbHVlLCBmb3IgZXhhbXBsZSAtNzMuNzY4MjU0XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFyZyAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZmx0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbHQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyLCBnb3QgJyR7dmFsdWV9JyBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIGZsdC50b0ZpeGVkKDcpO1xufVxuXG4vKipcbiAqIFNldCB0aGUgU2ltdWxhdG9yIGxvY2F0aW9uIHRvIGEgc3BlY2lmaWMgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cbiAqIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBYY29kZSAxNC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIExvY2F0aW9uIGxhdGl0dWRlIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSBMb2NhdGlvbiBsb25naXR1ZGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgbm90IGEgdmFsaWQgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgY29uc3QgbGF0ID0gZm9ybWF0QXJnKCdsYXRpdHVkZScsIGxhdGl0dWRlKTtcbiAgY29uc3QgbG9uID0gZm9ybWF0QXJnKCdsb25naXR1ZGUnLCBsb25naXR1ZGUpO1xuICBhd2FpdCB0aGlzLmV4ZWMoJ2xvY2F0aW9uJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsb2NhdGlvbicpLCAnc2V0JywgYCR7bGF0fSwke2xvbn1gXSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFN0b3AgYW55IHJ1bm5pbmcgc2NlbmFyaW8gYW5kIGNsZWFyIGFueSBzaW11bGF0ZWQgbG9jYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGUgMTQuXG4gKi9cbmNvbW1hbmRzLmNsZWFyTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2F0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdsb2NhdGlvbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgnbG9jYXRpb24nKSwgJ2NsZWFyJ10sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBU25CLFNBQVNDLFNBQVMsQ0FBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUU7RUFDL0IsTUFBTUMsR0FBRyxHQUFHQyxVQUFVLENBQUNGLEtBQUssQ0FBQztFQUM3QixJQUFJRyxLQUFLLENBQUNGLEdBQUcsQ0FBQyxFQUFFO0lBQ2QsTUFBTSxJQUFJRyxTQUFTLENBQUUsR0FBRUwsSUFBSyxpQ0FBZ0NDLEtBQU0sV0FBVSxDQUFDO0VBQy9FO0VBQ0EsT0FBT0MsR0FBRyxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBWUFSLFFBQVEsQ0FBQ1MsV0FBVyxHQUFHLGVBQWVBLFdBQVcsQ0FBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUU7RUFDdEUsTUFBTUMsR0FBRyxHQUFHWCxTQUFTLENBQUMsVUFBVSxFQUFFUyxRQUFRLENBQUM7RUFDM0MsTUFBTUcsR0FBRyxHQUFHWixTQUFTLENBQUMsV0FBVyxFQUFFVSxTQUFTLENBQUM7RUFDN0MsTUFBTSxJQUFJLENBQUNHLElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRyxHQUFFSixHQUFJLElBQUdDLEdBQUksRUFBQztFQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBTURiLFFBQVEsQ0FBQ2lCLGFBQWEsR0FBRyxlQUFlQSxhQUFhLEdBQUk7RUFDdkQsTUFBTSxJQUFJLENBQUNILElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU87RUFDOUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFoQixRQUFRO0FBQUEifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location.js","names":["commands","formatArg","name","value","flt","parseFloat","isNaN","TypeError","toFixed","setLocation","latitude","longitude","lat","lon","exec","args","requireUdid","clearLocation"],"sources":["../../../lib/subcommands/location.js"],"sourcesContent":["const commands = {};\n\n/**\n * Formats the given location argument for simctl usage\n *\n * @param {string} name Argument name\n * @param {string|number} value Location argument value\n * @returns {string} Formatted value, for example -73.768254\n */\nfunction formatArg (name, value) {\n const flt = parseFloat(value);\n if (isNaN(flt)) {\n throw new TypeError(`${name} must be a valid number, got '${value}' instead`);\n }\n return flt.toFixed(7);\n}\n\n/**\n * Set the Simulator location to a specific latitude and longitude.\n * This functionality is only available since Xcode 14.\n *\n * @param {string|number} latitude Location latitude value\n * @param {string|number} longitude Location longitude value\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {TypeError} If any of the arguments is not a valid value.\n */\ncommands.setLocation = async function setLocation (latitude, longitude) {\n const lat = formatArg('latitude', latitude);\n const lon = formatArg('longitude', longitude);\n await this.exec('location', {\n args: [this.requireUdid('location'), 'set', `${lat},${lon}`],\n });\n};\n\n/**\n * Stop any running scenario and clear any simulated location.\n * This functionality is only available since Xcode 14.\n */\ncommands.clearLocation = async function clearLocation () {\n await this.exec('location', {\n args: [this.requireUdid('location'), 'clear'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AASnB,SAASC,SAAS,CAAEC,IAAI,EAAEC,KAAK,EAAE;EAC/B,MAAMC,GAAG,GAAGC,UAAU,CAACF,KAAK,CAAC;EAC7B,IAAIG,KAAK,CAACF,GAAG,CAAC,EAAE;IACd,MAAM,IAAIG,SAAS,CAAE,GAAEL,IAAK,iCAAgCC,KAAM,WAAU,CAAC;EAC/E;EACA,OAAOC,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;AACvB;AAYAR,QAAQ,CAACS,WAAW,GAAG,eAAeA,WAAW,CAAEC,QAAQ,EAAEC,SAAS,EAAE;EACtE,MAAMC,GAAG,GAAGX,SAAS,CAAC,UAAU,EAAES,QAAQ,CAAC;EAC3C,MAAMG,GAAG,GAAGZ,SAAS,CAAC,WAAW,EAAEU,SAAS,CAAC;EAC7C,MAAM,IAAI,CAACG,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAG,GAAEJ,GAAI,IAAGC,GAAI,EAAC;EAC7D,CAAC,CAAC;AACJ,CAAC;AAMDb,QAAQ,CAACiB,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACH,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO;EAC9C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEahB,QAAQ;AAAA"}
@@ -4,17 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  const commands = {};
11
-
12
9
  commands.openUrl = async function openUrl(url) {
13
10
  return await this.exec('openurl', {
14
11
  args: [this.requireUdid('openurl'), url]
15
12
  });
16
13
  };
17
-
18
14
  var _default = commands;
19
15
  exports.default = _default;
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsIm9wZW5VcmwiLCJ1cmwiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL29wZW51cmwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBPcGVuIFVSTCBzY2hlbWUgb24gU2ltdWxhdG9yLiBpT1Mgd2lsbCBhdXRvbWF0aWNhbGx5IHRyeVxuICogdG8gZmluZCBhIG1hdGNoaW5nIGFwcGxpY2F0aW9uLCB3aGljaCBzdXBwb3J0cyB0aGUgZ2l2ZW4gc2NoZW1lLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgc2NoZW1lIHRvIG9wZW4sIGZvciBleGFtcGxlIGh0dHA6Ly9hcHBpb20uaW9cbiAqICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIG9wZW5lZCBieSB0aGUgYnVpbHQtaW4gbW9iaWxlIGJyb3dzZXIuXG4gKiBAcmV0dXJuIHtFeGVjUmVzdWx0fSBDb21tYW5kIGV4ZWN1dGlvbiByZXN1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5vcGVuVXJsID0gYXN5bmMgZnVuY3Rpb24gb3BlblVybCAodXJsKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWMoJ29wZW51cmwnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ29wZW51cmwnKSwgdXJsXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQWNBQSxRQUFRLENBQUNDLE9BQVQsR0FBbUIsZUFBZUEsT0FBZixDQUF3QkMsR0FBeEIsRUFBNkI7RUFDOUMsT0FBTyxNQUFNLEtBQUtDLElBQUwsQ0FBVSxTQUFWLEVBQXFCO0lBQ2hDQyxJQUFJLEVBQUUsQ0FBQyxLQUFLQyxXQUFMLENBQWlCLFNBQWpCLENBQUQsRUFBOEJILEdBQTlCO0VBRDBCLENBQXJCLENBQWI7QUFHRCxDQUpEOztlQU1lRixRIn0=
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsIm9wZW5VcmwiLCJ1cmwiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL29wZW51cmwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBPcGVuIFVSTCBzY2hlbWUgb24gU2ltdWxhdG9yLiBpT1Mgd2lsbCBhdXRvbWF0aWNhbGx5IHRyeVxuICogdG8gZmluZCBhIG1hdGNoaW5nIGFwcGxpY2F0aW9uLCB3aGljaCBzdXBwb3J0cyB0aGUgZ2l2ZW4gc2NoZW1lLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgc2NoZW1lIHRvIG9wZW4sIGZvciBleGFtcGxlIGh0dHA6Ly9hcHBpb20uaW9cbiAqICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIG9wZW5lZCBieSB0aGUgYnVpbHQtaW4gbW9iaWxlIGJyb3dzZXIuXG4gKiBAcmV0dXJuIHtFeGVjUmVzdWx0fSBDb21tYW5kIGV4ZWN1dGlvbiByZXN1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5vcGVuVXJsID0gYXN5bmMgZnVuY3Rpb24gb3BlblVybCAodXJsKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWMoJ29wZW51cmwnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ29wZW51cmwnKSwgdXJsXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFjbkJBLFFBQVEsQ0FBQ0MsT0FBTyxHQUFHLGVBQWVBLE9BQU8sQ0FBRUMsR0FBRyxFQUFFO0VBQzlDLE9BQU8sTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDaENDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFSCxHQUFHO0VBQ3pDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQyxlQUVhRixRQUFRO0FBQUEifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openurl.js","names":["commands","openUrl","url","exec","args","requireUdid"],"sources":["../../../lib/subcommands/openurl.js"],"sourcesContent":["const commands = {};\n\n/**\n * Open URL scheme on Simulator. iOS will automatically try\n * to find a matching application, which supports the given scheme.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} url - The URL scheme to open, for example http://appiom.io\n * will be opened by the built-in mobile browser.\n * @return {ExecResult} Command execution result.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.openUrl = async function openUrl (url) {\n return await this.exec('openurl', {\n args: [this.requireUdid('openurl'), url],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,OAAO,GAAG,eAAeA,OAAO,CAAEC,GAAG,EAAE;EAC9C,OAAO,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAChCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,EAAEH,GAAG;EACzC,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaF,QAAQ;AAAA"}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  const commands = {};
11
-
12
9
  commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8') {
13
10
  const pbCopySubprocess = await this.exec('pbcopy', {
14
11
  args: [this.requireUdid('pbcopy')],
@@ -22,7 +19,6 @@ commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8'
22
19
  stdin.end();
23
20
  await exitCodeVerifier;
24
21
  };
25
-
26
22
  var _default = commands;
27
23
  exports.default = _default;
28
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInNldFBhc3RlYm9hcmQiLCJjb250ZW50IiwiZW5jb2RpbmciLCJwYkNvcHlTdWJwcm9jZXNzIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFzeW5jaHJvbm91cyIsInN0YXJ0IiwiZXhpdENvZGVWZXJpZmllciIsImpvaW4iLCJzdGRpbiIsInByb2MiLCJzZXRFbmNvZGluZyIsIndyaXRlIiwiZW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3BiY29weS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFNldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgOC4xXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIFRoZSBhY3R1YWwgc3RyaW5nIGNvbnRlbnQgdG8gYmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nIFt1dGYnXSAtIFRoZSBlbmNvZGluZyBvZiB0aGUgZ2l2ZW4gcGFzdGVib2FyZCBjb250ZW50LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5IGRlZmF1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5zZXRQYXN0ZWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gc2V0UGFzdGVib2FyZCAoY29udGVudCwgZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgY29uc3QgcGJDb3B5U3VicHJvY2VzcyA9IGF3YWl0IHRoaXMuZXhlYygncGJjb3B5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwYmNvcHknKV0sXG4gICAgYXN5bmNocm9ub3VzOiB0cnVlLFxuICB9KTtcbiAgYXdhaXQgcGJDb3B5U3VicHJvY2Vzcy5zdGFydCgwKTtcbiAgY29uc3QgZXhpdENvZGVWZXJpZmllciA9IHBiQ29weVN1YnByb2Nlc3Muam9pbigpO1xuICBjb25zdCBzdGRpbiA9IHBiQ29weVN1YnByb2Nlc3MucHJvYy5zdGRpbjtcbiAgc3RkaW4uc2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICBzdGRpbi53cml0ZShjb250ZW50KTtcbiAgc3RkaW4uZW5kKCk7XG4gIGF3YWl0IGV4aXRDb2RlVmVyaWZpZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQWNBQSxRQUFRLENBQUNDLGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QkMsT0FBOUIsRUFBdUNDLFFBQVEsR0FBRyxNQUFsRCxFQUEwRDtFQUNqRixNQUFNQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUtDLElBQUwsQ0FBVSxRQUFWLEVBQW9CO0lBQ2pEQyxJQUFJLEVBQUUsQ0FBQyxLQUFLQyxXQUFMLENBQWlCLFFBQWpCLENBQUQsQ0FEMkM7SUFFakRDLFlBQVksRUFBRTtFQUZtQyxDQUFwQixDQUEvQjtFQUlBLE1BQU1KLGdCQUFnQixDQUFDSyxLQUFqQixDQUF1QixDQUF2QixDQUFOO0VBQ0EsTUFBTUMsZ0JBQWdCLEdBQUdOLGdCQUFnQixDQUFDTyxJQUFqQixFQUF6QjtFQUNBLE1BQU1DLEtBQUssR0FBR1IsZ0JBQWdCLENBQUNTLElBQWpCLENBQXNCRCxLQUFwQztFQUNBQSxLQUFLLENBQUNFLFdBQU4sQ0FBa0JYLFFBQWxCO0VBQ0FTLEtBQUssQ0FBQ0csS0FBTixDQUFZYixPQUFaO0VBQ0FVLEtBQUssQ0FBQ0ksR0FBTjtFQUNBLE1BQU1OLGdCQUFOO0FBQ0QsQ0FaRDs7ZUFjZVYsUSJ9
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInNldFBhc3RlYm9hcmQiLCJjb250ZW50IiwiZW5jb2RpbmciLCJwYkNvcHlTdWJwcm9jZXNzIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFzeW5jaHJvbm91cyIsInN0YXJ0IiwiZXhpdENvZGVWZXJpZmllciIsImpvaW4iLCJzdGRpbiIsInByb2MiLCJzZXRFbmNvZGluZyIsIndyaXRlIiwiZW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3BiY29weS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFNldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgOC4xXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIFRoZSBhY3R1YWwgc3RyaW5nIGNvbnRlbnQgdG8gYmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nIFt1dGYnXSAtIFRoZSBlbmNvZGluZyBvZiB0aGUgZ2l2ZW4gcGFzdGVib2FyZCBjb250ZW50LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5IGRlZmF1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5zZXRQYXN0ZWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gc2V0UGFzdGVib2FyZCAoY29udGVudCwgZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgY29uc3QgcGJDb3B5U3VicHJvY2VzcyA9IGF3YWl0IHRoaXMuZXhlYygncGJjb3B5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwYmNvcHknKV0sXG4gICAgYXN5bmNocm9ub3VzOiB0cnVlLFxuICB9KTtcbiAgYXdhaXQgcGJDb3B5U3VicHJvY2Vzcy5zdGFydCgwKTtcbiAgY29uc3QgZXhpdENvZGVWZXJpZmllciA9IHBiQ29weVN1YnByb2Nlc3Muam9pbigpO1xuICBjb25zdCBzdGRpbiA9IHBiQ29weVN1YnByb2Nlc3MucHJvYy5zdGRpbjtcbiAgc3RkaW4uc2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICBzdGRpbi53cml0ZShjb250ZW50KTtcbiAgc3RkaW4uZW5kKCk7XG4gIGF3YWl0IGV4aXRDb2RlVmVyaWZpZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFjbkJBLFFBQVEsQ0FBQ0MsYUFBYSxHQUFHLGVBQWVBLGFBQWEsQ0FBRUMsT0FBTyxFQUFFQyxRQUFRLEdBQUcsTUFBTSxFQUFFO0VBQ2pGLE1BQU1DLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsUUFBUSxFQUFFO0lBQ2pEQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQ0MsWUFBWSxFQUFFO0VBQ2hCLENBQUMsQ0FBQztFQUNGLE1BQU1KLGdCQUFnQixDQUFDSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQy9CLE1BQU1DLGdCQUFnQixHQUFHTixnQkFBZ0IsQ0FBQ08sSUFBSSxFQUFFO0VBQ2hELE1BQU1DLEtBQUssR0FBR1IsZ0JBQWdCLENBQUNTLElBQUksQ0FBQ0QsS0FBSztFQUN6Q0EsS0FBSyxDQUFDRSxXQUFXLENBQUNYLFFBQVEsQ0FBQztFQUMzQlMsS0FBSyxDQUFDRyxLQUFLLENBQUNiLE9BQU8sQ0FBQztFQUNwQlUsS0FBSyxDQUFDSSxHQUFHLEVBQUU7RUFDWCxNQUFNTixnQkFBZ0I7QUFDeEIsQ0FBQztBQUFDLGVBRWFWLFFBQVE7QUFBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbcopy.js","names":["commands","setPasteboard","content","encoding","pbCopySubprocess","exec","args","requireUdid","asynchronous","start","exitCodeVerifier","join","stdin","proc","setEncoding","write","end"],"sources":["../../../lib/subcommands/pbcopy.js"],"sourcesContent":["const commands = {};\n\n/**\n * Set the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode SDK 8.1\n * @param {string} content - The actual string content to be set.\n * @param {string} encoding [utf'] - The encoding of the given pasteboard content.\n * UTF-8 by default.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.setPasteboard = async function setPasteboard (content, encoding = 'utf8') {\n const pbCopySubprocess = await this.exec('pbcopy', {\n args: [this.requireUdid('pbcopy')],\n asynchronous: true,\n });\n await pbCopySubprocess.start(0);\n const exitCodeVerifier = pbCopySubprocess.join();\n const stdin = pbCopySubprocess.proc.stdin;\n stdin.setEncoding(encoding);\n stdin.write(content);\n stdin.end();\n await exitCodeVerifier;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAa,CAAEC,OAAO,EAAEC,QAAQ,GAAG,MAAM,EAAE;EACjF,MAAMC,gBAAgB,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;IACjDC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClCC,YAAY,EAAE;EAChB,CAAC,CAAC;EACF,MAAMJ,gBAAgB,CAACK,KAAK,CAAC,CAAC,CAAC;EAC/B,MAAMC,gBAAgB,GAAGN,gBAAgB,CAACO,IAAI,EAAE;EAChD,MAAMC,KAAK,GAAGR,gBAAgB,CAACS,IAAI,CAACD,KAAK;EACzCA,KAAK,CAACE,WAAW,CAACX,QAAQ,CAAC;EAC3BS,KAAK,CAACG,KAAK,CAACb,OAAO,CAAC;EACpBU,KAAK,CAACI,GAAG,EAAE;EACX,MAAMN,gBAAgB;AACxB,CAAC;AAAC,eAEaV,QAAQ;AAAA"}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  const commands = {};
11
-
12
9
  commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
13
10
  const {
14
11
  stdout
@@ -18,7 +15,6 @@ commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
18
15
  });
19
16
  return stdout;
20
17
  };
21
-
22
18
  var _default = commands;
23
19
  exports.default = _default;
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFBhc3RlYm9hcmQiLCJlbmNvZGluZyIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvcGJwYXN0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEdldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSA4LjEgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jb2RpbmcgWyd1dGYtOCddIC0gVGhlIGVuY29kaW5nIG9mIHRoZSByZXR1cm5lZCBwYXN0ZWJvYXJkIGNvbnRlbnQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGLTggYnkgZGVmYXVsdC5cbiAqIEByZXR1cm4ge3N0cmluZ30gQ3VycmVudCBjb250ZW50IG9mIFNpbXVsYXRvciBwYXN0ZWJvYXJkIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldFBhc3RlYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBnZXRQYXN0ZWJvYXJkIChlbmNvZGluZyA9ICd1dGY4Jykge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygncGJwYXN0ZScsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgncGJwYXN0ZScpXSxcbiAgICBlbmNvZGluZyxcbiAgfSk7XG4gIHJldHVybiBzdGRvdXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQWNBQSxRQUFRLENBQUNDLGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QkMsUUFBUSxHQUFHLE1BQXpDLEVBQWlEO0VBQ3hFLE1BQU07SUFBQ0M7RUFBRCxJQUFXLE1BQU0sS0FBS0MsSUFBTCxDQUFVLFNBQVYsRUFBcUI7SUFDMUNDLElBQUksRUFBRSxDQUFDLEtBQUtDLFdBQUwsQ0FBaUIsU0FBakIsQ0FBRCxDQURvQztJQUUxQ0o7RUFGMEMsQ0FBckIsQ0FBdkI7RUFJQSxPQUFPQyxNQUFQO0FBQ0QsQ0FORDs7ZUFRZUgsUSJ9
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFBhc3RlYm9hcmQiLCJlbmNvZGluZyIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvcGJwYXN0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEdldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSA4LjEgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jb2RpbmcgWyd1dGYtOCddIC0gVGhlIGVuY29kaW5nIG9mIHRoZSByZXR1cm5lZCBwYXN0ZWJvYXJkIGNvbnRlbnQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGLTggYnkgZGVmYXVsdC5cbiAqIEByZXR1cm4ge3N0cmluZ30gQ3VycmVudCBjb250ZW50IG9mIFNpbXVsYXRvciBwYXN0ZWJvYXJkIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldFBhc3RlYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBnZXRQYXN0ZWJvYXJkIChlbmNvZGluZyA9ICd1dGY4Jykge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygncGJwYXN0ZScsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgncGJwYXN0ZScpXSxcbiAgICBlbmNvZGluZyxcbiAgfSk7XG4gIHJldHVybiBzdGRvdXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFjbkJBLFFBQVEsQ0FBQ0MsYUFBYSxHQUFHLGVBQWVBLGFBQWEsQ0FBRUMsUUFBUSxHQUFHLE1BQU0sRUFBRTtFQUN4RSxNQUFNO0lBQUNDO0VBQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQzFDQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQ0o7RUFDRixDQUFDLENBQUM7RUFDRixPQUFPQyxNQUFNO0FBQ2YsQ0FBQztBQUFDLGVBRWFILFFBQVE7QUFBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbpaste.js","names":["commands","getPasteboard","encoding","stdout","exec","args","requireUdid"],"sources":["../../../lib/subcommands/pbpaste.js"],"sourcesContent":["const commands = {};\n\n/**\n * Get the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode 8.1 SDK\n * @param {string} encoding ['utf-8'] - The encoding of the returned pasteboard content.\n * UTF-8 by default.\n * @return {string} Current content of Simulator pasteboard or an empty string.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getPasteboard = async function getPasteboard (encoding = 'utf8') {\n const {stdout} = await this.exec('pbpaste', {\n args: [this.requireUdid('pbpaste')],\n encoding,\n });\n return stdout;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAa,CAAEC,QAAQ,GAAG,MAAM,EAAE;EACxE,MAAM;IAACC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAC1CC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,CAAC;IACnCJ;EACF,CAAC,CAAC;EACF,OAAOC,MAAM;AACf,CAAC;AAAC,eAEaH,QAAQ;AAAA"}
@@ -4,29 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  const commands = {};
11
-
12
9
  commands.grantPermission = async function grantPermission(bundleId, perm) {
13
10
  await this.exec('privacy', {
14
11
  args: [this.requireUdid('privacy grant'), 'grant', perm, bundleId]
15
12
  });
16
13
  };
17
-
18
14
  commands.revokePermission = async function revokePermission(bundleId, perm) {
19
15
  await this.exec('privacy', {
20
16
  args: [this.requireUdid('privacy revoke'), 'revoke', perm, bundleId]
21
17
  });
22
18
  };
23
-
24
19
  commands.resetPermission = async function resetPermission(bundleId, perm) {
25
20
  await this.exec('privacy', {
26
21
  args: [this.requireUdid('private reset'), 'reset', perm, bundleId]
27
22
  });
28
23
  };
29
-
30
24
  var _default = commands;
31
25
  exports.default = _default;
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdyYW50UGVybWlzc2lvbiIsImJ1bmRsZUlkIiwicGVybSIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiLCJyZXZva2VQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3ByaXZhY3kuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBHcmFudHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBhcHBsaWNhdGlvbiB3aG9zZVxuICogcHJpdmFjeSBzZXR0aW5ncyBhcmUgZ29pbmcgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IHBlcm0gb25lIG9mIHBvc3NpYmxlIHBlcm1pc3Npb24gdmFsdWVzOlxuICogLSBhbGw6IEFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIHNlcnZpY2VzLlxuICogLSBjYWxlbmRhcjogQWxsb3cgYWNjZXNzIHRvIGNhbGVuZGFyLlxuICogLSBjb250YWN0cy1saW1pdGVkOiBBbGxvdyBhY2Nlc3MgdG8gYmFzaWMgY29udGFjdCBpbmZvLlxuICogLSBjb250YWN0czogQWxsb3cgYWNjZXNzIHRvIGZ1bGwgY29udGFjdCBkZXRhaWxzLlxuICogLSBsb2NhdGlvbjogQWxsb3cgYWNjZXNzIHRvIGxvY2F0aW9uIHNlcnZpY2VzIHdoZW4gYXBwIGlzIGluIHVzZS5cbiAqIC0gbG9jYXRpb24tYWx3YXlzOiBBbGxvdyBhY2Nlc3MgdG8gbG9jYXRpb24gc2VydmljZXMgYXQgYWxsIHRpbWVzLlxuICogLSBwaG90b3MtYWRkOiBBbGxvdyBhZGRpbmcgcGhvdG9zIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBwaG90b3M6IEFsbG93IGZ1bGwgYWNjZXNzIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBtZWRpYS1saWJyYXJ5OiBBbGxvdyBhY2Nlc3MgdG8gdGhlIG1lZGlhIGxpYnJhcnkuXG4gKiAtIG1pY3JvcGhvbmU6IEFsbG93IGFjY2VzcyB0byBhdWRpbyBpbnB1dC5cbiAqIC0gbW90aW9uOiBBbGxvdyBhY2Nlc3MgdG8gbW90aW9uIGFuZCBmaXRuZXNzIGRhdGEuXG4gKiAtIHJlbWluZGVyczogQWxsb3cgYWNjZXNzIHRvIHJlbWluZGVycy5cbiAqIC0gc2lyaTogQWxsb3cgdXNlIG9mIHRoZSBhcHAgd2l0aCBTaXJpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBncmFudGluZyB0aGUgcGVybWlzc2lvblxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuZ3JhbnRQZXJtaXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gZ3JhbnRQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgZ3JhbnQnKSwgJ2dyYW50JywgcGVybSwgYnVuZGxlSWRdLFxuICB9KTtcbn07XG5cbi8qKlxuICogUmV2b2tlcyB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBvbiB0aGUgYXBwIHdpdGggdGhlIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyXG4gKiBhZnRlciBpdCBoYXMgYmVlbiBncmFudGVkXG4gKlxuICogQHNpbmNlIFhjb2RlIDExLjQgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFwcGxpY2F0aW9uIHdob3NlXG4gKiBwcml2YWN5IHNldHRpbmdzIGFyZSBnb2luZyB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGVybSBvbmUgb2YgcG9zc2libGUgcGVybWlzc2lvbiB2YWx1ZXMgKHNlZSBgZ3JhbnRQZXJtaXNzaW9uYClcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmV2b2tpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJldm9rZVBlcm1pc3Npb24gPSBhc3luYyBmdW5jdGlvbiByZXZva2VQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgcmV2b2tlJyksICdyZXZva2UnLCBwZXJtLCBidW5kbGVJZF0sXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXNldHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICogdG8gaXRzIGRlZmF1bHQgc3RhdGVcbiAqXG4gKiBAc2luY2UgWGNvZGUgMTEuNCBTREtcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCB0aGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gd2hvc2VcbiAqIHByaXZhY3kgc2V0dGluZ3MgYXJlIGdvaW5nIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwZXJtIG9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHZhbHVlcyAoc2VlIGBncmFudFBlcm1pc3Npb25gKVxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXNldHRpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJlc2V0UGVybWlzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIHJlc2V0UGVybWlzc2lvbiAoYnVuZGxlSWQsIHBlcm0pIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdwcml2YWN5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwcml2YXRlIHJlc2V0JyksICdyZXNldCcsIHBlcm0sIGJ1bmRsZUlkXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQTBCQUEsUUFBUSxDQUFDQyxlQUFULEdBQTJCLGVBQWVBLGVBQWYsQ0FBZ0NDLFFBQWhDLEVBQTBDQyxJQUExQyxFQUFnRDtFQUN6RSxNQUFNLEtBQUtDLElBQUwsQ0FBVSxTQUFWLEVBQXFCO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxLQUFLQyxXQUFMLENBQWlCLGVBQWpCLENBQUQsRUFBb0MsT0FBcEMsRUFBNkNILElBQTdDLEVBQW1ERCxRQUFuRDtFQURtQixDQUFyQixDQUFOO0FBR0QsQ0FKRDs7QUFrQkFGLFFBQVEsQ0FBQ08sZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsQ0FBaUNMLFFBQWpDLEVBQTJDQyxJQUEzQyxFQUFpRDtFQUMzRSxNQUFNLEtBQUtDLElBQUwsQ0FBVSxTQUFWLEVBQXFCO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxLQUFLQyxXQUFMLENBQWlCLGdCQUFqQixDQUFELEVBQXFDLFFBQXJDLEVBQStDSCxJQUEvQyxFQUFxREQsUUFBckQ7RUFEbUIsQ0FBckIsQ0FBTjtBQUdELENBSkQ7O0FBa0JBRixRQUFRLENBQUNRLGVBQVQsR0FBMkIsZUFBZUEsZUFBZixDQUFnQ04sUUFBaEMsRUFBMENDLElBQTFDLEVBQWdEO0VBQ3pFLE1BQU0sS0FBS0MsSUFBTCxDQUFVLFNBQVYsRUFBcUI7SUFDekJDLElBQUksRUFBRSxDQUFDLEtBQUtDLFdBQUwsQ0FBaUIsZUFBakIsQ0FBRCxFQUFvQyxPQUFwQyxFQUE2Q0gsSUFBN0MsRUFBbURELFFBQW5EO0VBRG1CLENBQXJCLENBQU47QUFHRCxDQUpEOztlQU1lRixRIn0=
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdyYW50UGVybWlzc2lvbiIsImJ1bmRsZUlkIiwicGVybSIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiLCJyZXZva2VQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3ByaXZhY3kuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBHcmFudHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBhcHBsaWNhdGlvbiB3aG9zZVxuICogcHJpdmFjeSBzZXR0aW5ncyBhcmUgZ29pbmcgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IHBlcm0gb25lIG9mIHBvc3NpYmxlIHBlcm1pc3Npb24gdmFsdWVzOlxuICogLSBhbGw6IEFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIHNlcnZpY2VzLlxuICogLSBjYWxlbmRhcjogQWxsb3cgYWNjZXNzIHRvIGNhbGVuZGFyLlxuICogLSBjb250YWN0cy1saW1pdGVkOiBBbGxvdyBhY2Nlc3MgdG8gYmFzaWMgY29udGFjdCBpbmZvLlxuICogLSBjb250YWN0czogQWxsb3cgYWNjZXNzIHRvIGZ1bGwgY29udGFjdCBkZXRhaWxzLlxuICogLSBsb2NhdGlvbjogQWxsb3cgYWNjZXNzIHRvIGxvY2F0aW9uIHNlcnZpY2VzIHdoZW4gYXBwIGlzIGluIHVzZS5cbiAqIC0gbG9jYXRpb24tYWx3YXlzOiBBbGxvdyBhY2Nlc3MgdG8gbG9jYXRpb24gc2VydmljZXMgYXQgYWxsIHRpbWVzLlxuICogLSBwaG90b3MtYWRkOiBBbGxvdyBhZGRpbmcgcGhvdG9zIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBwaG90b3M6IEFsbG93IGZ1bGwgYWNjZXNzIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBtZWRpYS1saWJyYXJ5OiBBbGxvdyBhY2Nlc3MgdG8gdGhlIG1lZGlhIGxpYnJhcnkuXG4gKiAtIG1pY3JvcGhvbmU6IEFsbG93IGFjY2VzcyB0byBhdWRpbyBpbnB1dC5cbiAqIC0gbW90aW9uOiBBbGxvdyBhY2Nlc3MgdG8gbW90aW9uIGFuZCBmaXRuZXNzIGRhdGEuXG4gKiAtIHJlbWluZGVyczogQWxsb3cgYWNjZXNzIHRvIHJlbWluZGVycy5cbiAqIC0gc2lyaTogQWxsb3cgdXNlIG9mIHRoZSBhcHAgd2l0aCBTaXJpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBncmFudGluZyB0aGUgcGVybWlzc2lvblxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuZ3JhbnRQZXJtaXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gZ3JhbnRQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgZ3JhbnQnKSwgJ2dyYW50JywgcGVybSwgYnVuZGxlSWRdLFxuICB9KTtcbn07XG5cbi8qKlxuICogUmV2b2tlcyB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBvbiB0aGUgYXBwIHdpdGggdGhlIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyXG4gKiBhZnRlciBpdCBoYXMgYmVlbiBncmFudGVkXG4gKlxuICogQHNpbmNlIFhjb2RlIDExLjQgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFwcGxpY2F0aW9uIHdob3NlXG4gKiBwcml2YWN5IHNldHRpbmdzIGFyZSBnb2luZyB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGVybSBvbmUgb2YgcG9zc2libGUgcGVybWlzc2lvbiB2YWx1ZXMgKHNlZSBgZ3JhbnRQZXJtaXNzaW9uYClcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmV2b2tpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJldm9rZVBlcm1pc3Npb24gPSBhc3luYyBmdW5jdGlvbiByZXZva2VQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgcmV2b2tlJyksICdyZXZva2UnLCBwZXJtLCBidW5kbGVJZF0sXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXNldHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICogdG8gaXRzIGRlZmF1bHQgc3RhdGVcbiAqXG4gKiBAc2luY2UgWGNvZGUgMTEuNCBTREtcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCB0aGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gd2hvc2VcbiAqIHByaXZhY3kgc2V0dGluZ3MgYXJlIGdvaW5nIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwZXJtIG9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHZhbHVlcyAoc2VlIGBncmFudFBlcm1pc3Npb25gKVxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXNldHRpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJlc2V0UGVybWlzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIHJlc2V0UGVybWlzc2lvbiAoYnVuZGxlSWQsIHBlcm0pIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdwcml2YWN5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwcml2YXRlIHJlc2V0JyksICdyZXNldCcsIHBlcm0sIGJ1bmRsZUlkXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUEwQm5CQSxRQUFRLENBQUNDLGVBQWUsR0FBRyxlQUFlQSxlQUFlLENBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFO0VBQ3pFLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUVILElBQUksRUFBRUQsUUFBUTtFQUNuRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBY0RGLFFBQVEsQ0FBQ08sZ0JBQWdCLEdBQUcsZUFBZUEsZ0JBQWdCLENBQUVMLFFBQVEsRUFBRUMsSUFBSSxFQUFFO0VBQzNFLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ3pCQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRUgsSUFBSSxFQUFFRCxRQUFRO0VBQ3JFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFjREYsUUFBUSxDQUFDUSxlQUFlLEdBQUcsZUFBZUEsZUFBZSxDQUFFTixRQUFRLEVBQUVDLElBQUksRUFBRTtFQUN6RSxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUN6QkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFSCxJQUFJLEVBQUVELFFBQVE7RUFDbkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFGLFFBQVE7QUFBQSJ9