appium-ios-simulator 3.26.1 → 3.27.2

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.
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.toXmlArg = toXmlArg;
9
+ exports.generateUpdateCommandArgs = generateUpdateCommandArgs;
10
+ exports.NSUserDefaults = void 0;
11
+
12
+ require("source-map-support/register");
13
+
14
+ var _lodash = _interopRequireDefault(require("lodash"));
15
+
16
+ var _xmldom = require("xmldom");
17
+
18
+ var _teen_process = require("teen_process");
19
+
20
+ var _bluebird = _interopRequireDefault(require("bluebird"));
21
+
22
+ var _logger = _interopRequireDefault(require("./logger"));
23
+
24
+ function toXmlArg(value, serialize = true) {
25
+ let xmlDoc = null;
26
+
27
+ if (_lodash.default.isPlainObject(value)) {
28
+ xmlDoc = new _xmldom.DOMParser().parseFromString('<dict></dict>', 'text/xml');
29
+
30
+ for (const [subKey, subValue] of _lodash.default.toPairs(value)) {
31
+ const keyEl = xmlDoc.createElement('key');
32
+ const keyTextEl = xmlDoc.createTextNode(subKey);
33
+ keyEl.appendChild(keyTextEl);
34
+ xmlDoc.documentElement.appendChild(keyEl);
35
+ const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);
36
+ xmlDoc.documentElement.appendChild(subValueEl);
37
+ }
38
+ } else if (_lodash.default.isArray(value)) {
39
+ xmlDoc = new _xmldom.DOMParser().parseFromString('<array></array>', 'text/xml');
40
+
41
+ for (const subValue of value) {
42
+ const subValueEl = xmlDoc.importNode(toXmlArg(subValue, false), true);
43
+ xmlDoc.documentElement.appendChild(subValueEl);
44
+ }
45
+ } else if (_lodash.default.isBoolean(value)) {
46
+ xmlDoc = new _xmldom.DOMParser().parseFromString(value ? '<true/>' : '<false/>', 'text/xml');
47
+ } else if (_lodash.default.isInteger(value)) {
48
+ xmlDoc = new _xmldom.DOMParser().parseFromString(`<integer>${value}</integer>`, 'text/xml');
49
+ } else if (_lodash.default.isNumber(value)) {
50
+ xmlDoc = new _xmldom.DOMParser().parseFromString(`<real>${value}</real>`, 'text/xml');
51
+ } else if (_lodash.default.isString(value)) {
52
+ xmlDoc = new _xmldom.DOMParser().parseFromString(`<string></string>`, 'text/xml');
53
+ const valueTextEl = xmlDoc.createTextNode(value);
54
+ xmlDoc.documentElement.appendChild(valueTextEl);
55
+ }
56
+
57
+ if (!xmlDoc) {
58
+ throw new TypeError(`The defaults value ${JSON.stringify(value)} cannot be written, ` + `because it is not known how to handle its type`);
59
+ }
60
+
61
+ return serialize ? new _xmldom.XMLSerializer().serializeToString(xmlDoc.documentElement) : xmlDoc.documentElement;
62
+ }
63
+
64
+ function generateUpdateCommandArgs(valuesMap) {
65
+ const resultArgs = [];
66
+
67
+ for (const [key, value] of _lodash.default.toPairs(valuesMap)) {
68
+ try {
69
+ if (_lodash.default.isPlainObject(value)) {
70
+ const dictArgs = [key, '-dict-add'];
71
+
72
+ for (const [subKey, subValue] of _lodash.default.toPairs(value)) {
73
+ dictArgs.push(subKey, toXmlArg(subValue));
74
+ }
75
+
76
+ resultArgs.push(dictArgs);
77
+ } else if (_lodash.default.isArray(value)) {
78
+ const arrayArgs = [key, '-array-add'];
79
+
80
+ for (const subValue of arrayArgs) {
81
+ arrayArgs.push(toXmlArg(subValue));
82
+ }
83
+
84
+ resultArgs.push(arrayArgs);
85
+ } else {
86
+ resultArgs.push([key, toXmlArg(value)]);
87
+ }
88
+ } catch (e) {
89
+ if (e instanceof TypeError) {
90
+ _logger.default.warn(e.message);
91
+ } else {
92
+ throw e;
93
+ }
94
+ }
95
+ }
96
+
97
+ return resultArgs;
98
+ }
99
+
100
+ class NSUserDefaults {
101
+ constructor(plist) {
102
+ this.plist = plist;
103
+ }
104
+
105
+ async asJson() {
106
+ try {
107
+ const {
108
+ stdout
109
+ } = await (0, _teen_process.exec)('plutil', ['-convert', 'json', '-o', '-', this.plist]);
110
+ return JSON.parse(stdout);
111
+ } catch (e) {
112
+ throw new Error(`'${this.plist}' cannot be converted to JSON. Original error: ${e.stderr || e.message}`);
113
+ }
114
+ }
115
+
116
+ async update(valuesMap) {
117
+ if (!_lodash.default.isPlainObject(valuesMap)) {
118
+ throw new TypeError(`plist values must be a map. '${valuesMap}' is given instead`);
119
+ }
120
+
121
+ if (_lodash.default.isEmpty(valuesMap)) {
122
+ return;
123
+ }
124
+
125
+ const commandArgs = generateUpdateCommandArgs(valuesMap);
126
+
127
+ try {
128
+ await _bluebird.default.all(commandArgs.map(args => (0, _teen_process.exec)('defaults', ['write', this.plist, ...args])));
129
+ } catch (e) {
130
+ throw new Error(`Could not write defaults into '${this.plist}'. Original error: ${e.stderr || e.message}`);
131
+ }
132
+ }
133
+
134
+ }
135
+
136
+ exports.NSUserDefaults = NSUserDefaults;require('source-map-support').install();
137
+
138
+
139
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZWZhdWx0cy11dGlscy5qcyJdLCJuYW1lcyI6WyJ0b1htbEFyZyIsInZhbHVlIiwic2VyaWFsaXplIiwieG1sRG9jIiwiXyIsImlzUGxhaW5PYmplY3QiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJzdWJLZXkiLCJzdWJWYWx1ZSIsInRvUGFpcnMiLCJrZXlFbCIsImNyZWF0ZUVsZW1lbnQiLCJrZXlUZXh0RWwiLCJjcmVhdGVUZXh0Tm9kZSIsImFwcGVuZENoaWxkIiwiZG9jdW1lbnRFbGVtZW50Iiwic3ViVmFsdWVFbCIsImltcG9ydE5vZGUiLCJpc0FycmF5IiwiaXNCb29sZWFuIiwiaXNJbnRlZ2VyIiwiaXNOdW1iZXIiLCJpc1N0cmluZyIsInZhbHVlVGV4dEVsIiwiVHlwZUVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsImdlbmVyYXRlVXBkYXRlQ29tbWFuZEFyZ3MiLCJ2YWx1ZXNNYXAiLCJyZXN1bHRBcmdzIiwia2V5IiwiZGljdEFyZ3MiLCJwdXNoIiwiYXJyYXlBcmdzIiwiZSIsImxvZyIsIndhcm4iLCJtZXNzYWdlIiwiTlNVc2VyRGVmYXVsdHMiLCJjb25zdHJ1Y3RvciIsInBsaXN0IiwiYXNKc29uIiwic3Rkb3V0IiwicGFyc2UiLCJFcnJvciIsInN0ZGVyciIsInVwZGF0ZSIsImlzRW1wdHkiLCJjb21tYW5kQXJncyIsIkIiLCJhbGwiLCJtYXAiLCJhcmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBY0EsU0FBU0EsUUFBVCxDQUFtQkMsS0FBbkIsRUFBMEJDLFNBQVMsR0FBRyxJQUF0QyxFQUE0QztBQUMxQyxNQUFJQyxNQUFNLEdBQUcsSUFBYjs7QUFFQSxNQUFJQyxnQkFBRUMsYUFBRixDQUFnQkosS0FBaEIsQ0FBSixFQUE0QjtBQUMxQkUsSUFBQUEsTUFBTSxHQUFHLElBQUlHLGlC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O0FBQ0QsS0FGRCxDQUVFLE9BQU9sQixDQUFQLEVBQVU7QUFDVixZQUFNLElBQUlVLEtBQUosQ0FBVyxrQ0FBaUMsS0FBS0osS0FBTSxzQkFBcUJOLENBQUMsQ0FBQ1csTUFBRixJQUFZWCxDQUFDLENBQUNHLE9BQVEsRUFBbEcsQ0FBTjtBQUNEO0FBQ0Y7O0FBOUNrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBET01QYXJzZXIsIFhNTFNlcmlhbGl6ZXIgfSBmcm9tICd4bWxkb20nO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiB2YWx1ZSB0byBwbGlzdC1jb21wYXRpYmxlXG4gKiBYTUwgcmVwcmVzZW50YXRpb24sIHdoaWNoIGlzIHJlYWR5IGZvciBmdXJ0aGVyIHVzYWdlXG4gKiB3aXRoIGBkZWZhdWx0c2AgY29tbWFuZCBsaW5lIHRvb2wgYXJndW1lbnRzXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgc2VyaWFsaXplZFxuICogQHBhcmFtIHtib29sZWFufSBzZXJpYWxpemUgW3RydWVdIFdoZXRoZXIgdG8gc2VyaWFsaXplIHRoZSByZXN1bHRpbmdcbiAqIFhNTCB0byBzdHJpbmcgb3IgdG8gcmV0dXJuIHJhdyBIVE1MRWxlbWVudCBpbnN0YW5jZVxuICogQHJldHVybnMge0hUTUxFbGVtZW50fHN0cmluZ30gRWl0aGVyIHN0cmluZyBvciByYXcgbm9kZSByZXByZXNlbnRhdGlvbiBvZlxuICogdGhlIGdpdmVuIHZhbHVlXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGl0IGlzIG5vdCBrbm93biBob3cgdG8gc2VyaWFsaXplIHRoZSBnaXZlbiB2YWx1ZVxuICovXG5mdW5jdGlvbiB0b1htbEFyZyAodmFsdWUsIHNlcmlhbGl6ZSA9IHRydWUpIHtcbiAgbGV0IHhtbERvYyA9IG51bGw7XG5cbiAgaWYgKF8uaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICB4bWxEb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKCc8ZGljdD48L2RpY3Q+JywgJ3RleHQveG1sJyk7XG4gICAgZm9yIChjb25zdCBbc3ViS2V5LCBzdWJWYWx1ZV0gb2YgXy50b1BhaXJzKHZhbHVlKSkge1xuICAgICAgY29uc3Qga2V5RWwgPSB4bWxEb2MuY3JlYXRlRWxlbWVudCgna2V5Jyk7XG4gICAgICBjb25zdCBrZXlUZXh0RWwgPSB4bWxEb2MuY3JlYXRlVGV4dE5vZGUoc3ViS2V5KTtcbiAgICAgIGtleUVsLmFwcGVuZENoaWxkKGtleVRleHRFbCk7XG4gICAgICB4bWxEb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGtleUVsKTtcbiAgICAgIGNvbnN0IHN1YlZhbHVlRWwgPSB4bWxEb2MuaW1wb3J0Tm9kZSh0b1htbEFyZyhzdWJWYWx1ZSwgZmFsc2UpLCB0cnVlKTtcbiAgICAgIHhtbERvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoc3ViVmFsdWVFbCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKF8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB4bWxEb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKCc8YXJyYXk+PC9hcnJheT4nLCAndGV4dC94bWwnKTtcbiAgICBmb3IgKGNvbnN0IHN1YlZhbHVlIG9mIHZhbHVlKSB7XG4gICAgICBjb25zdCBzdWJWYWx1ZUVsID0geG1sRG9jLmltcG9ydE5vZGUodG9YbWxBcmcoc3ViVmFsdWUsIGZhbHNlKSwgdHJ1ZSk7XG4gICAgICB4bWxEb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHN1YlZhbHVlRWwpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfLmlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICB4bWxEb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHZhbHVlID8gJzx0cnVlLz4nIDogJzxmYWxzZS8+JywgJ3RleHQveG1sJyk7XG4gIH0gZWxzZSBpZiAoXy5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgeG1sRG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhgPGludGVnZXI+JHt2YWx1ZX08L2ludGVnZXI+YCwgJ3RleHQveG1sJyk7XG4gIH0gZWxzZSBpZiAoXy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICB4bWxEb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGA8cmVhbD4ke3ZhbHVlfTwvcmVhbD5gLCAndGV4dC94bWwnKTtcbiAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHhtbERvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYDxzdHJpbmc+PC9zdHJpbmc+YCwgJ3RleHQveG1sJyk7XG4gICAgY29uc3QgdmFsdWVUZXh0RWwgPSB4bWxEb2MuY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgIHhtbERvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodmFsdWVUZXh0RWwpO1xuICB9XG5cbiAgaWYgKCF4bWxEb2MpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBUaGUgZGVmYXVsdHMgdmFsdWUgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9IGNhbm5vdCBiZSB3cml0dGVuLCBgICtcbiAgICAgIGBiZWNhdXNlIGl0IGlzIG5vdCBrbm93biBob3cgdG8gaGFuZGxlIGl0cyB0eXBlYCk7XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplXG4gICAgPyBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbERvYy5kb2N1bWVudEVsZW1lbnQpXG4gICAgOiB4bWxEb2MuZG9jdW1lbnRFbGVtZW50O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBjb21tYW5kIGxpbmUgYXJncyBmb3IgdGhlIGBkZWZhdWx0c2BcbiAqIGNvbW1hbmQgbGluZSB1dGlsaXR5IGJhc2VkIG9uIHRoZSBnaXZlbiBwcmVmZXJlbmNlIHZhbHVlcyBtYXBwaW5nLlxuICogU2VlIGh0dHBzOi8vc2hhZG93ZmlsZS5pbm9kZS5saW5rL2Jsb2cvMjAxOC8wNi9hZHZhbmNlZC1kZWZhdWx0czEtdXNhZ2UvXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXNNYXAgUHJlZmVyZW5jZXMgbWFwcGluZ1xuICogQHJldHVybnMge0FycmF5PEFycmF5PHN0cmluZz4+fSBFYWNoIGl0ZW0gaW4gdGhlIGFycmF5XG4gKiBpcyB0aGUgYGRlZmF1bHRzIHdyaXRlIDxwbGlzdD5gIGNvbW1hbmQgc3VmZml4XG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVXBkYXRlQ29tbWFuZEFyZ3MgKHZhbHVlc01hcCkge1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyh2YWx1ZXNNYXApKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChfLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGRpY3RBcmdzID0gW2tleSwgJy1kaWN0LWFkZCddO1xuICAgICAgICBmb3IgKGNvbnN0IFtzdWJLZXksIHN1YlZhbHVlXSBvZiBfLnRvUGFpcnModmFsdWUpKSB7XG4gICAgICAgICAgZGljdEFyZ3MucHVzaChzdWJLZXksIHRvWG1sQXJnKHN1YlZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGRpY3RBcmdzKTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBhcnJheUFyZ3MgPSBba2V5LCAnLWFycmF5LWFkZCddO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YlZhbHVlIG9mIGFycmF5QXJncykge1xuICAgICAgICAgIGFycmF5QXJncy5wdXNoKHRvWG1sQXJnKHN1YlZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGFycmF5QXJncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goW2tleSwgdG9YbWxBcmcodmFsdWUpXSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcbiAgICAgICAgbG9nLndhcm4oZS5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRBcmdzO1xufVxuXG5cbmNsYXNzIE5TVXNlckRlZmF1bHRzIHtcbiAgY29uc3RydWN0b3IgKHBsaXN0KSB7XG4gICAgdGhpcy5wbGlzdCA9IHBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBjb250ZW50IG9mIHRoZSBnaXZlbiBwbGlzdCBmaWxlIHVzaW5nIHBsdXRpbCBjb21tYW5kIGxpbmUgdG9vbFxuICAgKiBhbmQgc2VyaWFsaXplcyBpdCB0byBhIEpTT04gcmVwcmVzZW50YXRpb25cbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH0gVGhlIHNlcmlhbGl6ZWQgcGxpc3QgY29udGVudFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyBzZXJpYWxpemF0aW9uXG4gICAqL1xuICBhc3luYyBhc0pzb24gKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ3BsdXRpbCcsIFsnLWNvbnZlcnQnLCAnanNvbicsICctbycsICctJywgdGhpcy5wbGlzdF0pO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3RoaXMucGxpc3R9JyBjYW5ub3QgYmUgY29udmVydGVkIHRvIEpTT04uIE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY29udGVudCBvZiB0aGUgZ2l2ZW4gcGxpc3QgZmlsZS5cbiAgICogSWYgdGhlIHBsaXN0IGRvZXMgbm90IGV4aXN0IHlldCB0aGVuIGl0IGlzIGdvaW5nIHRvIGJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXNNYXAgTWFwcGluZyBvZiBwcmVmZXJlbmNlIHZhbHVlcyB0byB1cGRhdGUuXG4gICAqIElmIGFueSBvZiBpdGVtIHZhbHVlcyBhcmUgb2YgZGljdGlvbmFyeSB0eXBlIHRoZW4gb25seSB0aGUgZmlyc3QgbGV2ZWwgZGljdGlvbmFyeSBnZXRzXG4gICAqIHVwZGF0ZWQuIEV2ZXJ5dGhpbmcgYmVsb3cgdGhpcyBsZXZlbCB3aWxsIGJlIHJlcGxhY2VkLiBUaGlzIGlzIHRoZSBrbm93biBsaW1pdGF0aW9uXG4gICAqIG9mIHRoZSBgZGVmYXVsdHNgIGNvbW1hbmQgbGluZSB0b29sLiBBIHdvcmthcm91bmQgZm9yIGl0IHdvdWxkIGJlIHRvIHJlYWQgdGhlIGN1cnJlbnRcbiAgICogcHJlZmVyZW5jZXMgbWFwcGluZyBmaXJzdCBhbmQgbWVyZ2UgaXQgd2l0aCB0aGlzIHZhbHVlLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHVwZGF0aW5nIHRoZSBwbGlzdFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlICh2YWx1ZXNNYXApIHtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdCh2YWx1ZXNNYXApKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBwbGlzdCB2YWx1ZXMgbXVzdCBiZSBhIG1hcC4gJyR7dmFsdWVzTWFwfScgaXMgZ2l2ZW4gaW5zdGVhZGApO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHZhbHVlc01hcCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tYW5kQXJncyA9IGdlbmVyYXRlVXBkYXRlQ29tbWFuZEFyZ3ModmFsdWVzTWFwKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgQi5hbGwoY29tbWFuZEFyZ3MubWFwKChhcmdzKSA9PiBleGVjKCdkZWZhdWx0cycsIFsnd3JpdGUnLCB0aGlzLnBsaXN0LCAuLi5hcmdzXSkpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCB3cml0ZSBkZWZhdWx0cyBpbnRvICcke3RoaXMucGxpc3R9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuXG5cbmV4cG9ydCB7XG4gIE5TVXNlckRlZmF1bHRzLFxuICB0b1htbEFyZywgZ2VuZXJhdGVVcGRhdGVDb21tYW5kQXJncyxcbn07XG4iXSwiZmlsZSI6ImxpYi9kZWZhdWx0cy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -36,21 +36,20 @@ async function setLocationWithLyft(udid, latitude, longitude) {
36
36
  }
37
37
 
38
38
  async function setLocationWithIdb(idb, latitude, longitude) {
39
- if (idb) {
40
- try {
41
- await idb.setLocation(latitude, longitude);
42
- } catch (e) {
43
- throw new Error(`Failed to set geolocation with idb. Original error: ${e.stderr || e.message}`);
44
- }
39
+ if (!idb) {
40
+ throw new Error('Failed to set geolocation with idb because it is not installed or the "launchWithIDB" capability was not set');
45
41
  }
46
42
 
47
- throw new Error('Failed to set geolocation with idb because it is not installed');
43
+ try {
44
+ await idb.setLocation(latitude, longitude);
45
+ } catch (e) {
46
+ throw new Error(`Failed to set geolocation with idb. Original error: ${e.stderr || e.message}`);
47
+ }
48
48
  }
49
49
 
50
50
  async function setLocationWithAppleScript(sim, latitude, longitude, menu = 'Debug') {
51
- const decimalSeparator = 0.1.toLocaleString().replace(/\d/g, '');
52
- const latitudeStr = `${latitude}`.replace(/\D/g, decimalSeparator);
53
- const longitudeStr = `${longitude}`.replace(/\D/g, decimalSeparator);
51
+ const decimalSeparator = (await (0, _teen_process.exec)('/usr/bin/python', ['-c', 'from AppKit import NSNumberFormatter;' + 'import sys;' + 'sys.stdout.write(NSNumberFormatter.alloc().init().decimalSeparator())'])).stdout;
52
+ const [latitudeStr, longitudeStr] = [latitude, longitude].map(coord => `${coord}`.replace(/\D/g, decimalSeparator));
54
53
  const output = await sim.executeUIClientScript(`
55
54
  tell application "System Events"
56
55
  tell process "Simulator"
@@ -77,4 +76,4 @@ async function setLocationWithAppleScript(sim, latitude, longitude, menu = 'Debu
77
76
  }require('source-map-support').install();
78
77
 
79
78
 
80
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9nZW9sb2NhdGlvbi5qcyJdLCJuYW1lcyI6WyJMWUZUX1NFVF9MT0NBVElPTiIsInNldExvY2F0aW9uV2l0aEx5ZnQiLCJ1ZGlkIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJmcyIsIndoaWNoIiwiZSIsIkVycm9yIiwic3RkZXJyIiwibWVzc2FnZSIsInNldExvY2F0aW9uV2l0aElkYiIsImlkYiIsInNldExvY2F0aW9uIiwic2V0TG9jYXRpb25XaXRoQXBwbGVTY3JpcHQiLCJzaW0iLCJtZW51IiwiZGVjaW1hbFNlcGFyYXRvciIsInRvTG9jYWxlU3RyaW5nIiwicmVwbGFjZSIsImxhdGl0dWRlU3RyIiwibG9uZ2l0dWRlU3RyIiwib3V0cHV0IiwiZXhlY3V0ZVVJQ2xpZW50U2NyaXB0IiwibG9nIiwiZGVidWciLCJfIiwidHJpbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLHdCQUExQjs7QUFZQSxlQUFlQyxtQkFBZixDQUFvQ0MsSUFBcEMsRUFBMENDLFFBQTFDLEVBQW9EQyxTQUFwRCxFQUErRDtBQUM3RCxNQUFJO0FBQ0YsVUFBTUMsa0JBQUdDLEtBQUgsQ0FBU04saUJBQVQsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPTyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUlDLEtBQUosQ0FBVyxJQUFHUixpQkFBa0IsNENBQXRCLEdBQ2Qsc0ZBRGMsR0FFZCxxRkFGYyxHQUdkLDRDQUhJLENBQU47QUFJRDs7QUFFRCxNQUFJO0FBQ0YsVUFBTSx3QkFBS0EsaUJBQUwsRUFBd0IsQ0FDNUIsSUFENEIsRUFDdEJHLFFBRHNCLEVBQ1pDLFNBRFksRUFFNUIsSUFGNEIsRUFFdEJGLElBRnNCLENBQXhCLENBQU47QUFJRCxHQUxELENBS0UsT0FBT0ssQ0FBUCxFQUFVO0FBQ1YsVUFBTSxJQUFJQyxLQUFKLENBQVcsbUNBQWtDUixpQkFBa0IsS0FBckQsR0FDYixtQkFBa0JPLENBQUMsQ0FBQ0UsTUFBRixJQUFZRixDQUFDLENBQUNHLE9BQVEsRUFEckMsQ0FBTjtBQUVEO0FBQ0Y7O0FBWUQsZUFBZUMsa0JBQWYsQ0FBbUNDLEdBQW5DLEVBQXdDVCxRQUF4QyxFQUFrREMsU0FBbEQsRUFBNkQ7QUFDM0QsTUFBSVEsR0FBSixFQUFTO0FBQ1AsUUFBSTtBQUNGLFlBQU1BLEdBQUcsQ0FBQ0MsV0FBSixDQUFnQlYsUUFBaEIsRUFBMEJDLFNBQTFCLENBQU47QUFDRCxLQUZELENBRUUsT0FBT0csQ0FBUCxFQUFVO0FBQ1YsWUFBTSxJQUFJQyxLQUFKLENBQVcsdURBQXNERCxDQUFDLENBQUNFLE1BQUYsSUFBWUYsQ0FBQyxDQUFDRyxPQUFRLEVBQXZGLENBQU47QUFDRDtBQUNGOztBQUNELFFBQU0sSUFBSUYsS0FBSixDQUFVLGdFQUFWLENBQU47QUFDRDs7QUFjRCxlQUFlTSwwQkFBZixDQUEyQ0MsR0FBM0MsRUFBZ0RaLFFBQWhELEVBQTBEQyxTQUExRCxFQUFxRVksSUFBSSxHQUFHLE9BQTVFLEVBQXFGO0FBQ25GLFFBQU1DLGdCQUFnQixHQUFJLEdBQUQsQ0FBTUMsY0FBTixHQUF1QkMsT0FBdkIsQ0FBK0IsS0FBL0IsRUFBc0MsRUFBdEMsQ0FBekI7QUFFQSxRQUFNQyxXQUFXLEdBQUksR0FBRWpCLFFBQVMsRUFBWixDQUFjZ0IsT0FBZCxDQUFzQixLQUF0QixFQUE2QkYsZ0JBQTdCLENBQXBCO0FBQ0EsUUFBTUksWUFBWSxHQUFJLEdBQUVqQixTQUFVLEVBQWIsQ0FBZWUsT0FBZixDQUF1QixLQUF2QixFQUE4QkYsZ0JBQTlCLENBQXJCO0FBQ0EsUUFBTUssTUFBTSxHQUFHLE1BQU1QLEdBQUcsQ0FBQ1EscUJBQUosQ0FBMkI7Ozs7eUhBSXVFUCxJQUFLOzs7OERBR2hFSSxXQUFZOzs4REFFWkMsWUFBYTs7Ozs7OztHQVRwRCxDQUFyQjs7QUFpQkFHLGtCQUFJQyxLQUFKLENBQVcsMkNBQTBDSCxNQUFPLEVBQTVEOztBQUNBLE1BQUlJLGdCQUFFQyxJQUFGLENBQU9MLE1BQVAsTUFBbUIsTUFBdkIsRUFBK0I7QUFDN0IsVUFBTSxJQUFJZCxLQUFKLENBQVcsK0RBQThEYyxNQUFPLEVBQWhGLENBQU47QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyBmcyB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcblxuY29uc3QgTFlGVF9TRVRfTE9DQVRJT04gPSAnc2V0LXNpbXVsYXRvci1sb2NhdGlvbic7XG5cbi8qKlxuICogU2V0IGN1c3RvbSBnZW9sb2NhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgZ2l2ZW4gU2ltdWxhdG9yIHVzaW5nIExZRlRfU0VUX0xPQ0FUSU9OLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIC0gVGhlIHVkaWQgdG8gc2V0IHRoZSBnaXZlbiBnZW9sb2NhdGlvblxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBsYXRpdHVkZSAtIFRoZSBsYXRpdHVkZSB2YWx1ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW50ZXJlZFxuICogICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVkaXQgZmllbGQsIGZvciBleGFtcGxlICczOSwwMDA2Jy5cbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSB2YWx1ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW50ZXJlZFxuICogICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVkaXQgZmllbGQsIGZvciBleGFtcGxlICcxOSwwMDY4Jy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCBmYWlsZWQgdG8gc2V0IHRoZSBsb2NhdGlvblxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRMb2NhdGlvbldpdGhMeWZ0ICh1ZGlkLCBsYXRpdHVkZSwgbG9uZ2l0dWRlKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud2hpY2goTFlGVF9TRVRfTE9DQVRJT04pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnJHtMWUZUX1NFVF9MT0NBVElPTn0nIGJpbmFyeSBoYXMgbm90IGJlZW4gZm91bmQgaW4geW91ciBQQVRILiBgICtcbiAgICAgICdQbGVhc2UgaW5zdGFsbCBpdCBhcyBcImJyZXcgaW5zdGFsbCBseWZ0L2Zvcm11bGFlL3NldC1zaW11bGF0b3ItbG9jYXRpb25cIiBieSBicmV3IG9yICcgK1xuICAgICAgJ3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL2x5ZnQvc2V0LXNpbXVsYXRvci1sb2NhdGlvbiB0byBzZXQgdGhlIGJpbmFyeSBieSBtYW51YWwgdG8gJyArXG4gICAgICAnYmUgYWJsZSB0byBzZXQgZ2VvbG9jYXRpb24gYnkgdGhlIGxpYnJhcnkuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGV4ZWMoTFlGVF9TRVRfTE9DQVRJT04sIFtcbiAgICAgICctYycsIGxhdGl0dWRlLCBsb25naXR1ZGUsXG4gICAgICAnLXUnLCB1ZGlkXG4gICAgXSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBzZXQgZ2VvbG9jYXRpb24gd2l0aCAnJHtMWUZUX1NFVF9MT0NBVElPTn0nLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTZXQgY3VzdG9tIGdlb2xvY2F0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBnaXZlbiBTaW11bGF0b3IgdXNpbmcgaWRiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpZGIgLSBUaGUgSURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIC0gVGhlIGxhdGl0dWRlIHZhbHVlLCB3aGljaCBpcyBnb2luZyB0byBiZSBlbnRlcmVkXG4gKiAgIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZWRpdCBmaWVsZCwgZm9yIGV4YW1wbGUgJzM5LDAwMDYnLlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBsb25naXR1ZGUgLSBUaGUgbG9uZ2l0dWRlIHZhbHVlLCB3aGljaCBpcyBnb2luZyB0byBiZSBlbnRlcmVkXG4gKiAgIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZWRpdCBmaWVsZCwgZm9yIGV4YW1wbGUgJzE5LDAwNjgnLlxuICogQHRocm93cyB7RXJyb3J9IElmIGl0IGZhaWxlZCB0byBzZXQgdGhlIGxvY2F0aW9uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldExvY2F0aW9uV2l0aElkYiAoaWRiLCBsYXRpdHVkZSwgbG9uZ2l0dWRlKSB7XG4gIGlmIChpZGIpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgaWRiLnNldExvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNldCBnZW9sb2NhdGlvbiB3aXRoIGlkYi4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBzZXQgZ2VvbG9jYXRpb24gd2l0aCBpZGIgYmVjYXVzZSBpdCBpcyBub3QgaW5zdGFsbGVkJyk7XG59XG5cblxuLyoqXG4gKiBTZXQgY3VzdG9tIGdlb2xvY2F0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBnaXZlbiBTaW11bGF0b3IgdXNpbmcgQXBwbGVTY3JpcHRcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc2ltIC0gVGhlIFNpbXVsYXRvclhjb2RlIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBsYXRpdHVkZSAtIFRoZSBsYXRpdHVkZSB2YWx1ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW50ZXJlZFxuICogICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVkaXQgZmllbGQsIGZvciBleGFtcGxlICczOSwwMDA2Jy5cbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSB2YWx1ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW50ZXJlZFxuICogICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVkaXQgZmllbGQsIGZvciBleGFtcGxlICcxOSwwMDY4Jy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVudT1EZWJ1Z10gLSBUaGUgbWVudSBmaWVsZCBpbiB3aGljaCB0aGUgJ0xvY2F0aW9uJyBmZWF0dXJlIGlzIGZvdW5kXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbGVkIHRvIHNldCB0aGUgbG9jYXRpb25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb25XaXRoQXBwbGVTY3JpcHQgKHNpbSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgbWVudSA9ICdEZWJ1ZycpIHtcbiAgY29uc3QgZGVjaW1hbFNlcGFyYXRvciA9ICgwLjEpLnRvTG9jYWxlU3RyaW5nKCkucmVwbGFjZSgvXFxkL2csICcnKTtcbiAgLy8gTWFrZSBzdXJlIHN5c3RlbS13aWRlIGRlY2ltYWwgc2VwYXJhdG9yIGlzIHVzZWRcbiAgY29uc3QgbGF0aXR1ZGVTdHIgPSBgJHtsYXRpdHVkZX1gLnJlcGxhY2UoL1xcRC9nLCBkZWNpbWFsU2VwYXJhdG9yKTtcbiAgY29uc3QgbG9uZ2l0dWRlU3RyID0gYCR7bG9uZ2l0dWRlfWAucmVwbGFjZSgvXFxEL2csIGRlY2ltYWxTZXBhcmF0b3IpO1xuICBjb25zdCBvdXRwdXQgPSBhd2FpdCBzaW0uZXhlY3V0ZVVJQ2xpZW50U2NyaXB0KGBcbiAgICB0ZWxsIGFwcGxpY2F0aW9uIFwiU3lzdGVtIEV2ZW50c1wiXG4gICAgICB0ZWxsIHByb2Nlc3MgXCJTaW11bGF0b3JcIlxuICAgICAgICBzZXQgZmVhdHVyZU5hbWUgdG8gXCJDdXN0b20gTG9jYXRpb25cIlxuICAgICAgICBzZXQgZHN0TWVudUl0ZW0gdG8gbWVudSBpdGVtIChmZWF0dXJlTmFtZSAmIFwi4oCmXCIpIG9mIG1lbnUgMSBvZiBtZW51IGl0ZW0gXCJMb2NhdGlvblwiIG9mIG1lbnUgMSBvZiBtZW51IGJhciBpdGVtIFwiJHttZW51fVwiIG9mIG1lbnUgYmFyIDFcbiAgICAgICAgY2xpY2sgZHN0TWVudUl0ZW1cbiAgICAgICAgZGVsYXkgMVxuICAgICAgICBzZXQgdmFsdWUgb2YgdGV4dCBmaWVsZCAxIG9mIHdpbmRvdyBmZWF0dXJlTmFtZSB0byBcIiR7bGF0aXR1ZGVTdHJ9XCJcbiAgICAgICAgZGVsYXkgMC41XG4gICAgICAgIHNldCB2YWx1ZSBvZiB0ZXh0IGZpZWxkIDIgb2Ygd2luZG93IGZlYXR1cmVOYW1lIHRvIFwiJHtsb25naXR1ZGVTdHJ9XCJcbiAgICAgICAgZGVsYXkgMC41XG4gICAgICAgIGNsaWNrIGJ1dHRvbiBcIk9LXCIgb2Ygd2luZG93IGZlYXR1cmVOYW1lXG4gICAgICAgIGRlbGF5IDAuNVxuICAgICAgICBzZXQgaXNJbnZpc2libGUgdG8gKG5vdCAoZXhpc3RzICh3aW5kb3cgZmVhdHVyZU5hbWUpKSlcbiAgICAgIGVuZCB0ZWxsXG4gICAgZW5kIHRlbGxcbiAgYCk7XG4gIGxvZy5kZWJ1ZyhgR2VvbG9jYXRpb24gcGFyYW1ldGVycyBkaWFsb2cgYWNjZXB0ZWQ6ICR7b3V0cHV0fWApO1xuICBpZiAoXy50cmltKG91dHB1dCkgIT09ICd0cnVlJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNldCBnZW9sb2NhdGlvbiB3aXRoIEFwcGxlU2NyaXB0LiBPcmlnaW5hbCBlcnJvcjogJHtvdXRwdXR9YCk7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgc2V0TG9jYXRpb25XaXRoTHlmdCwgc2V0TG9jYXRpb25XaXRoSWRiLCBzZXRMb2NhdGlvbldpdGhBcHBsZVNjcmlwdFxufTtcbiJdLCJmaWxlIjoibGliL2dlb2xvY2F0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
79
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9nZW9sb2NhdGlvbi5qcyJdLCJuYW1lcyI6WyJMWUZUX1NFVF9MT0NBVElPTiIsInNldExvY2F0aW9uV2l0aEx5ZnQiLCJ1ZGlkIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJmcyIsIndoaWNoIiwiZSIsIkVycm9yIiwic3RkZXJyIiwibWVzc2FnZSIsInNldExvY2F0aW9uV2l0aElkYiIsImlkYiIsInNldExvY2F0aW9uIiwic2V0TG9jYXRpb25XaXRoQXBwbGVTY3JpcHQiLCJzaW0iLCJtZW51IiwiZGVjaW1hbFNlcGFyYXRvciIsInN0ZG91dCIsImxhdGl0dWRlU3RyIiwibG9uZ2l0dWRlU3RyIiwibWFwIiwiY29vcmQiLCJyZXBsYWNlIiwib3V0cHV0IiwiZXhlY3V0ZVVJQ2xpZW50U2NyaXB0IiwibG9nIiwiZGVidWciLCJfIiwidHJpbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLHdCQUExQjs7QUFZQSxlQUFlQyxtQkFBZixDQUFvQ0MsSUFBcEMsRUFBMENDLFFBQTFDLEVBQW9EQyxTQUFwRCxFQUErRDtBQUM3RCxNQUFJO0FBQ0YsVUFBTUMsa0JBQUdDLEtBQUgsQ0FBU04saUJBQVQsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPTyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUlDLEtBQUosQ0FBVyxJQUFHUixpQkFBa0IsNENBQXRCLEdBQ2Qsc0ZBRGMsR0FFZCxxRkFGYyxHQUdkLDRDQUhJLENBQU47QUFJRDs7QUFFRCxNQUFJO0FBQ0YsVUFBTSx3QkFBS0EsaUJBQUwsRUFBd0IsQ0FDNUIsSUFENEIsRUFDdEJHLFFBRHNCLEVBQ1pDLFNBRFksRUFFNUIsSUFGNEIsRUFFdEJGLElBRnNCLENBQXhCLENBQU47QUFJRCxHQUxELENBS0UsT0FBT0ssQ0FBUCxFQUFVO0FBQ1YsVUFBTSxJQUFJQyxLQUFKLENBQVcsbUNBQWtDUixpQkFBa0IsS0FBckQsR0FDYixtQkFBa0JPLENBQUMsQ0FBQ0UsTUFBRixJQUFZRixDQUFDLENBQUNHLE9BQVEsRUFEckMsQ0FBTjtBQUVEO0FBQ0Y7O0FBWUQsZUFBZUMsa0JBQWYsQ0FBbUNDLEdBQW5DLEVBQXdDVCxRQUF4QyxFQUFrREMsU0FBbEQsRUFBNkQ7QUFDM0QsTUFBSSxDQUFDUSxHQUFMLEVBQVU7QUFDUixVQUFNLElBQUlKLEtBQUosQ0FBVSw4R0FBVixDQUFOO0FBQ0Q7O0FBRUQsTUFBSTtBQUNGLFVBQU1JLEdBQUcsQ0FBQ0MsV0FBSixDQUFnQlYsUUFBaEIsRUFBMEJDLFNBQTFCLENBQU47QUFDRCxHQUZELENBRUUsT0FBT0csQ0FBUCxFQUFVO0FBQ1YsVUFBTSxJQUFJQyxLQUFKLENBQVcsdURBQXNERCxDQUFDLENBQUNFLE1BQUYsSUFBWUYsQ0FBQyxDQUFDRyxPQUFRLEVBQXZGLENBQU47QUFDRDtBQUNGOztBQWNELGVBQWVJLDBCQUFmLENBQTJDQyxHQUEzQyxFQUFnRFosUUFBaEQsRUFBMERDLFNBQTFELEVBQXFFWSxJQUFJLEdBQUcsT0FBNUUsRUFBcUY7QUFFbkYsUUFBTUMsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLHdCQUFLLGlCQUFMLEVBQXdCLENBQ3RELElBRHNELEVBRXRELDBDQUNBLGFBREEsR0FFQSx1RUFKc0QsQ0FBeEIsQ0FBUCxFQUtyQkMsTUFMSjtBQU9BLFFBQU0sQ0FBQ0MsV0FBRCxFQUFjQyxZQUFkLElBQThCLENBQUNqQixRQUFELEVBQVdDLFNBQVgsRUFBc0JpQixHQUF0QixDQUEyQkMsS0FBRCxJQUFZLEdBQUVBLEtBQU0sRUFBVCxDQUFXQyxPQUFYLENBQW1CLEtBQW5CLEVBQTBCTixnQkFBMUIsQ0FBckMsQ0FBcEM7QUFFQSxRQUFNTyxNQUFNLEdBQUcsTUFBTVQsR0FBRyxDQUFDVSxxQkFBSixDQUEyQjs7Ozt5SEFJdUVULElBQUs7Ozs4REFHaEVHLFdBQVk7OzhEQUVaQyxZQUFhOzs7Ozs7O0dBVHBELENBQXJCOztBQWlCQU0sa0JBQUlDLEtBQUosQ0FBVywyQ0FBMENILE1BQU8sRUFBNUQ7O0FBQ0EsTUFBSUksZ0JBQUVDLElBQUYsQ0FBT0wsTUFBUCxNQUFtQixNQUF2QixFQUErQjtBQUM3QixVQUFNLElBQUloQixLQUFKLENBQVcsK0RBQThEZ0IsTUFBTyxFQUFoRixDQUFOO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNvbnN0IExZRlRfU0VUX0xPQ0FUSU9OID0gJ3NldC1zaW11bGF0b3ItbG9jYXRpb24nO1xuXG4vKipcbiAqIFNldCBjdXN0b20gZ2VvbG9jYXRpb24gcGFyYW1ldGVycyBmb3IgdGhlIGdpdmVuIFNpbXVsYXRvciB1c2luZyBMWUZUX1NFVF9MT0NBVElPTi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCAtIFRoZSB1ZGlkIHRvIHNldCB0aGUgZ2l2ZW4gZ2VvbG9jYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUsIHdoaWNoIGlzIGdvaW5nIHRvIGJlIGVudGVyZWRcbiAqICAgaW50byB0aGUgY29ycmVzcG9uZGluZyBlZGl0IGZpZWxkLCBmb3IgZXhhbXBsZSAnMzksMDAwNicuXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUsIHdoaWNoIGlzIGdvaW5nIHRvIGJlIGVudGVyZWRcbiAqICAgaW50byB0aGUgY29ycmVzcG9uZGluZyBlZGl0IGZpZWxkLCBmb3IgZXhhbXBsZSAnMTksMDA2OCcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbGVkIHRvIHNldCB0aGUgbG9jYXRpb25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb25XaXRoTHlmdCAodWRpZCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSkge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndoaWNoKExZRlRfU0VUX0xPQ0FUSU9OKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJyR7TFlGVF9TRVRfTE9DQVRJT059JyBiaW5hcnkgaGFzIG5vdCBiZWVuIGZvdW5kIGluIHlvdXIgUEFUSC4gYCArXG4gICAgICAnUGxlYXNlIGluc3RhbGwgaXQgYXMgXCJicmV3IGluc3RhbGwgbHlmdC9mb3JtdWxhZS9zZXQtc2ltdWxhdG9yLWxvY2F0aW9uXCIgYnkgYnJldyBvciAnICtcbiAgICAgICdyZWFkIGh0dHBzOi8vZ2l0aHViLmNvbS9seWZ0L3NldC1zaW11bGF0b3ItbG9jYXRpb24gdG8gc2V0IHRoZSBiaW5hcnkgYnkgbWFudWFsIHRvICcgK1xuICAgICAgJ2JlIGFibGUgdG8gc2V0IGdlb2xvY2F0aW9uIGJ5IHRoZSBsaWJyYXJ5LicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKExZRlRfU0VUX0xPQ0FUSU9OLCBbXG4gICAgICAnLWMnLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLFxuICAgICAgJy11JywgdWRpZFxuICAgIF0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2V0IGdlb2xvY2F0aW9uIHdpdGggJyR7TFlGVF9TRVRfTE9DQVRJT059Jy4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59XG5cbi8qKlxuICogU2V0IGN1c3RvbSBnZW9sb2NhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgZ2l2ZW4gU2ltdWxhdG9yIHVzaW5nIGlkYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaWRiIC0gVGhlIElEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBsYXRpdHVkZSAtIFRoZSBsYXRpdHVkZSB2YWx1ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW50ZXJlZFxuICogICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVkaXQgZmllbGQsIGZvciBleGFtcGxlICczOSwwMDA2Jy5cbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSB2YWx1ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgZW50ZXJlZFxuICogICBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVkaXQgZmllbGQsIGZvciBleGFtcGxlICcxOSwwMDY4Jy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCBmYWlsZWQgdG8gc2V0IHRoZSBsb2NhdGlvblxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRMb2NhdGlvbldpdGhJZGIgKGlkYiwgbGF0aXR1ZGUsIGxvbmdpdHVkZSkge1xuICBpZiAoIWlkYikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHNldCBnZW9sb2NhdGlvbiB3aXRoIGlkYiBiZWNhdXNlIGl0IGlzIG5vdCBpbnN0YWxsZWQgb3IgdGhlIFwibGF1bmNoV2l0aElEQlwiIGNhcGFiaWxpdHkgd2FzIG5vdCBzZXQnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgaWRiLnNldExvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2V0IGdlb2xvY2F0aW9uIHdpdGggaWRiLiBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG4vKipcbiAqIFNldCBjdXN0b20gZ2VvbG9jYXRpb24gcGFyYW1ldGVycyBmb3IgdGhlIGdpdmVuIFNpbXVsYXRvciB1c2luZyBBcHBsZVNjcmlwdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBzaW0gLSBUaGUgU2ltdWxhdG9yWGNvZGUgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIC0gVGhlIGxhdGl0dWRlIHZhbHVlLCB3aGljaCBpcyBnb2luZyB0byBiZSBlbnRlcmVkXG4gKiAgIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZWRpdCBmaWVsZCwgZm9yIGV4YW1wbGUgJzM5LDAwMDYnLlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBsb25naXR1ZGUgLSBUaGUgbG9uZ2l0dWRlIHZhbHVlLCB3aGljaCBpcyBnb2luZyB0byBiZSBlbnRlcmVkXG4gKiAgIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZWRpdCBmaWVsZCwgZm9yIGV4YW1wbGUgJzE5LDAwNjgnLlxuICogQHBhcmFtIHtzdHJpbmd9IFttZW51PURlYnVnXSAtIFRoZSBtZW51IGZpZWxkIGluIHdoaWNoIHRoZSAnTG9jYXRpb24nIGZlYXR1cmUgaXMgZm91bmRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCBmYWlsZWQgdG8gc2V0IHRoZSBsb2NhdGlvblxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRMb2NhdGlvbldpdGhBcHBsZVNjcmlwdCAoc2ltLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBtZW51ID0gJ0RlYnVnJykge1xuICAvLyBNYWtlIHN1cmUgc3lzdGVtLXdpZGUgZGVjaW1hbCBzZXBhcmF0b3IgaXMgdXNlZFxuICBjb25zdCBkZWNpbWFsU2VwYXJhdG9yID0gKGF3YWl0IGV4ZWMoJy91c3IvYmluL3B5dGhvbicsIFtcbiAgICAnLWMnLFxuICAgICdmcm9tIEFwcEtpdCBpbXBvcnQgTlNOdW1iZXJGb3JtYXR0ZXI7JyArXG4gICAgJ2ltcG9ydCBzeXM7JyArXG4gICAgJ3N5cy5zdGRvdXQud3JpdGUoTlNOdW1iZXJGb3JtYXR0ZXIuYWxsb2MoKS5pbml0KCkuZGVjaW1hbFNlcGFyYXRvcigpKSdcbiAgXSkpLnN0ZG91dDtcblxuICBjb25zdCBbbGF0aXR1ZGVTdHIsIGxvbmdpdHVkZVN0cl0gPSBbbGF0aXR1ZGUsIGxvbmdpdHVkZV0ubWFwKChjb29yZCkgPT4gYCR7Y29vcmR9YC5yZXBsYWNlKC9cXEQvZywgZGVjaW1hbFNlcGFyYXRvcikpO1xuXG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IHNpbS5leGVjdXRlVUlDbGllbnRTY3JpcHQoYFxuICAgIHRlbGwgYXBwbGljYXRpb24gXCJTeXN0ZW0gRXZlbnRzXCJcbiAgICAgIHRlbGwgcHJvY2VzcyBcIlNpbXVsYXRvclwiXG4gICAgICAgIHNldCBmZWF0dXJlTmFtZSB0byBcIkN1c3RvbSBMb2NhdGlvblwiXG4gICAgICAgIHNldCBkc3RNZW51SXRlbSB0byBtZW51IGl0ZW0gKGZlYXR1cmVOYW1lICYgXCLigKZcIikgb2YgbWVudSAxIG9mIG1lbnUgaXRlbSBcIkxvY2F0aW9uXCIgb2YgbWVudSAxIG9mIG1lbnUgYmFyIGl0ZW0gXCIke21lbnV9XCIgb2YgbWVudSBiYXIgMVxuICAgICAgICBjbGljayBkc3RNZW51SXRlbVxuICAgICAgICBkZWxheSAxXG4gICAgICAgIHNldCB2YWx1ZSBvZiB0ZXh0IGZpZWxkIDEgb2Ygd2luZG93IGZlYXR1cmVOYW1lIHRvIFwiJHtsYXRpdHVkZVN0cn1cIlxuICAgICAgICBkZWxheSAwLjVcbiAgICAgICAgc2V0IHZhbHVlIG9mIHRleHQgZmllbGQgMiBvZiB3aW5kb3cgZmVhdHVyZU5hbWUgdG8gXCIke2xvbmdpdHVkZVN0cn1cIlxuICAgICAgICBkZWxheSAwLjVcbiAgICAgICAgY2xpY2sgYnV0dG9uIFwiT0tcIiBvZiB3aW5kb3cgZmVhdHVyZU5hbWVcbiAgICAgICAgZGVsYXkgMC41XG4gICAgICAgIHNldCBpc0ludmlzaWJsZSB0byAobm90IChleGlzdHMgKHdpbmRvdyBmZWF0dXJlTmFtZSkpKVxuICAgICAgZW5kIHRlbGxcbiAgICBlbmQgdGVsbFxuICBgKTtcbiAgbG9nLmRlYnVnKGBHZW9sb2NhdGlvbiBwYXJhbWV0ZXJzIGRpYWxvZyBhY2NlcHRlZDogJHtvdXRwdXR9YCk7XG4gIGlmIChfLnRyaW0ob3V0cHV0KSAhPT0gJ3RydWUnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2V0IGdlb2xvY2F0aW9uIHdpdGggQXBwbGVTY3JpcHQuIE9yaWdpbmFsIGVycm9yOiAke291dHB1dH1gKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBzZXRMb2NhdGlvbldpdGhMeWZ0LCBzZXRMb2NhdGlvbldpdGhJZGIsIHNldExvY2F0aW9uV2l0aEFwcGxlU2NyaXB0XG59O1xuIl0sImZpbGUiOiJsaWIvZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -50,16 +50,38 @@ class SimulatorXcode10 extends _simulatorXcode.default {
50
50
 
51
51
  const timer = new _appiumSupport.timing.Timer().start();
52
52
  await this.simctl.openUrl(url);
53
+ let psError;
53
54
 
54
55
  try {
55
- await (0, _asyncbox.waitForCondition)(async () => (await this.ps()).some(({
56
- name
57
- }) => name === _utils.MOBILE_SAFARI_BUNDLE_ID), {
56
+ await (0, _asyncbox.waitForCondition)(async () => {
57
+ let procList = [];
58
+
59
+ try {
60
+ procList = await this.ps();
61
+ psError = null;
62
+ } catch (e) {
63
+ _logger.default.debug(e.message);
64
+
65
+ psError = e;
66
+ }
67
+
68
+ return procList.some(({
69
+ name
70
+ }) => name === _utils.MOBILE_SAFARI_BUNDLE_ID);
71
+ }, {
58
72
  waitMs: _utils.SAFARI_STARTUP_TIMEOUT,
59
73
  intervalMs: 500
60
74
  });
61
75
  } catch (err) {
62
- throw new Error(`Safari cannot open '${url}' after ${timer.getDuration().asSeconds.toFixed(3)}s ` + `because of: ${err.message}`);
76
+ const secondsElapsed = timer.getDuration().asSeconds;
77
+
78
+ if (psError) {
79
+ _logger.default.warn(`Mobile Safari process existence cannot be verified after ${secondsElapsed.toFixed(3)}s. ` + `Original error: ${psError.message}`);
80
+
81
+ _logger.default.warn('Continuing anyway');
82
+ } else {
83
+ throw new Error(`Mobile Safari cannot open '${url}' after ${secondsElapsed.toFixed(3)}s. ` + `Its process ${_utils.MOBILE_SAFARI_BUNDLE_ID} does not exist in the list of Simulator processes`);
84
+ }
63
85
  }
64
86
 
65
87
  _logger.default.debug(`Safari successfully opened '${url}' in ${timer.getDuration().asSeconds.toFixed(3)}s`);
@@ -71,4 +93,4 @@ var _default = SimulatorXcode10;
71
93
  exports.default = _default;require('source-map-support').install();
72
94
 
73
95
 
74
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zaW11bGF0b3IteGNvZGUtMTAuanMiXSwibmFtZXMiOlsiU2ltdWxhdG9yWGNvZGUxMCIsIlNpbXVsYXRvclhjb2RlOTMiLCJjb25zdHJ1Y3RvciIsInVkaWQiLCJ4Y29kZVZlcnNpb24iLCJpc0FwcEluc3RhbGxlZCIsImJ1bmRsZUlkIiwiYXBwQ29udGFpbmVyIiwic2ltY3RsIiwiZ2V0QXBwQ29udGFpbmVyIiwiZW5kc1dpdGgiLCJmcyIsImV4aXN0cyIsImVyciIsImluZm8iLCJhcHBJbmZvIiwiaW5jbHVkZXMiLCJpZ24iLCJvcGVuVXJsIiwidXJsIiwiaXNSdW5uaW5nIiwiRXJyb3IiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJwcyIsInNvbWUiLCJuYW1lIiwiTU9CSUxFX1NBRkFSSV9CVU5ETEVfSUQiLCJ3YWl0TXMiLCJTQUZBUklfU1RBUlRVUF9USU1FT1VUIiwiaW50ZXJ2YWxNcyIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwidG9GaXhlZCIsIm1lc3NhZ2UiLCJsb2ciLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxnQkFBTixTQUErQkMsdUJBQS9CLENBQWdEO0FBQzlDQyxFQUFBQSxXQUFXLENBQUVDLElBQUYsRUFBUUMsWUFBUixFQUFzQjtBQUMvQixVQUFNRCxJQUFOLEVBQVlDLFlBQVo7QUFDRDs7QUFTRCxRQUFNQyxjQUFOLENBQXNCQyxRQUF0QixFQUFnQztBQUM5QixRQUFJO0FBQ0YsWUFBTUMsWUFBWSxHQUFHLE1BQU0sS0FBS0MsTUFBTCxDQUFZQyxlQUFaLENBQTRCSCxRQUE1QixDQUEzQjs7QUFDQSxVQUFJLENBQUNDLFlBQVksQ0FBQ0csUUFBYixDQUFzQixNQUF0QixDQUFMLEVBQW9DO0FBQ2xDLGVBQU8sS0FBUDtBQUNEOztBQUNELGFBQU8sTUFBTUMsa0JBQUdDLE1BQUgsQ0FBVUwsWUFBVixDQUFiO0FBQ0QsS0FORCxDQU1FLE9BQU9NLEdBQVAsRUFBWTtBQUlaLFVBQUk7QUFDRixjQUFNQyxJQUFJLEdBQUcsTUFBTSxLQUFLTixNQUFMLENBQVlPLE9BQVosQ0FBb0JULFFBQXBCLENBQW5CO0FBQ0EsZUFBT1EsSUFBSSxDQUFDRSxRQUFMLENBQWMsaUJBQWQsQ0FBUDtBQUNELE9BSEQsQ0FHRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTtBQUNqQjs7QUFDRCxXQUFPLEtBQVA7QUFDRDs7QUFLRCxRQUFNQyxPQUFOLENBQWVDLEdBQWYsRUFBb0I7QUFDbEIsUUFBSSxFQUFDLE1BQU0sS0FBS0MsU0FBTCxFQUFQLENBQUosRUFBNkI7QUFDM0IsWUFBTSxJQUFJQyxLQUFKLENBQVcsa0JBQWlCRixHQUFJLHlDQUFoQyxDQUFOO0FBQ0Q7O0FBQ0QsVUFBTUcsS0FBSyxHQUFHLElBQUlDLHNCQUFPQyxLQUFYLEdBQW1CQyxLQUFuQixFQUFkO0FBQ0EsVUFBTSxLQUFLakIsTUFBTCxDQUFZVSxPQUFaLENBQW9CQyxHQUFwQixDQUFOOztBQUNBLFFBQUk7QUFDRixZQUFNLGdDQUNKLFlBQVksQ0FBQyxNQUFNLEtBQUtPLEVBQUwsRUFBUCxFQUFrQkMsSUFBbEIsQ0FBdUIsQ0FBQztBQUFDQyxRQUFBQTtBQUFELE9BQUQsS0FBWUEsSUFBSSxLQUFLQyw4QkFBNUMsQ0FEUixFQUM4RTtBQUNoRkMsUUFBQUEsTUFBTSxFQUFFQyw2QkFEd0U7QUFFaEZDLFFBQUFBLFVBQVUsRUFBRTtBQUZvRSxPQUQ5RSxDQUFOO0FBS0QsS0FORCxDQU1FLE9BQU9uQixHQUFQLEVBQVk7QUFDWixZQUFNLElBQUlRLEtBQUosQ0FBVyx1QkFBc0JGLEdBQUksV0FBVUcsS0FBSyxDQUFDVyxXQUFOLEdBQW9CQyxTQUFwQixDQUE4QkMsT0FBOUIsQ0FBc0MsQ0FBdEMsQ0FBeUMsSUFBOUUsR0FDYixlQUFjdEIsR0FBRyxDQUFDdUIsT0FBUSxFQUR2QixDQUFOO0FBRUQ7O0FBQ0RDLG9CQUFJQyxLQUFKLENBQVcsK0JBQThCbkIsR0FBSSxRQUFPRyxLQUFLLENBQUNXLFdBQU4sR0FBb0JDLFNBQXBCLENBQThCQyxPQUE5QixDQUFzQyxDQUF0QyxDQUF5QyxHQUE3RjtBQUNEOztBQW5ENkM7O2VBc0RqQ25DLGdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpbXVsYXRvclhjb2RlOTMgZnJvbSAnLi9zaW11bGF0b3IteGNvZGUtOS4zJztcbmltcG9ydCB7IGZzLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgTU9CSUxFX1NBRkFSSV9CVU5ETEVfSUQsIFNBRkFSSV9TVEFSVFVQX1RJTUVPVVQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuXG5cbmNsYXNzIFNpbXVsYXRvclhjb2RlMTAgZXh0ZW5kcyBTaW11bGF0b3JYY29kZTkzIHtcbiAgY29uc3RydWN0b3IgKHVkaWQsIHhjb2RlVmVyc2lvbikge1xuICAgIHN1cGVyKHVkaWQsIHhjb2RlVmVyc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHdoZXRoZXIgdGhlIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gaXMgaW5zdGFsbGVkIG9uIFNpbXVsYXRvci5cbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCAtIFRoZSBidW5kbGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGluc3RhbGxlZC5cbiAgICovXG4gIGFzeW5jIGlzQXBwSW5zdGFsbGVkIChidW5kbGVJZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBDb250YWluZXIgPSBhd2FpdCB0aGlzLnNpbWN0bC5nZXRBcHBDb250YWluZXIoYnVuZGxlSWQpO1xuICAgICAgaWYgKCFhcHBDb250YWluZXIuZW5kc1dpdGgoJy5hcHAnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgZnMuZXhpc3RzKGFwcENvbnRhaW5lcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBnZXRfYXBwX2NvbnRhaW5lciBzdWJjb21tYW5kIGZhaWxzIGZvciBzeXN0ZW0gYXBwbGljYXRpb25zLFxuICAgICAgLy8gc28gd2UgdHJ5IHRoZSBoaWRkZW4gYXBwaW5mbyBzdWJjb21tYW5kLCB3aGljaCBwcmludHMgY29ycmVjdCBpbmZvIGZvclxuICAgICAgLy8gc3lzdGVtL2hpZGRlbiBhcHBzXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpbmZvID0gYXdhaXQgdGhpcy5zaW1jdGwuYXBwSW5mbyhidW5kbGVJZCk7XG4gICAgICAgIHJldHVybiBpbmZvLmluY2x1ZGVzKCdBcHBsaWNhdGlvblR5cGUnKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgYXN5bmMgb3BlblVybCAodXJsKSB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLmlzUnVubmluZygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyaWVkIHRvIG9wZW4gJyR7dXJsfScsIGJ1dCBTaW11bGF0b3IgaXMgbm90IGluIEJvb3RlZCBzdGF0ZWApO1xuICAgIH1cbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuc2ltY3RsLm9wZW5VcmwodXJsKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihcbiAgICAgICAgYXN5bmMgKCkgPT4gKGF3YWl0IHRoaXMucHMoKSkuc29tZSgoe25hbWV9KSA9PiBuYW1lID09PSBNT0JJTEVfU0FGQVJJX0JVTkRMRV9JRCksIHtcbiAgICAgICAgICB3YWl0TXM6IFNBRkFSSV9TVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2FmYXJpIGNhbm5vdCBvcGVuICcke3VybH0nIGFmdGVyICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc1NlY29uZHMudG9GaXhlZCgzKX1zIGAgK1xuICAgICAgICBgYmVjYXVzZSBvZjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBTYWZhcmkgc3VjY2Vzc2Z1bGx5IG9wZW5lZCAnJHt1cmx9JyBpbiAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMyl9c2ApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpbXVsYXRvclhjb2RlMTA7XG4iXSwiZmlsZSI6ImxpYi9zaW11bGF0b3IteGNvZGUtMTAuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
96
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zaW11bGF0b3IteGNvZGUtMTAuanMiXSwibmFtZXMiOlsiU2ltdWxhdG9yWGNvZGUxMCIsIlNpbXVsYXRvclhjb2RlOTMiLCJjb25zdHJ1Y3RvciIsInVkaWQiLCJ4Y29kZVZlcnNpb24iLCJpc0FwcEluc3RhbGxlZCIsImJ1bmRsZUlkIiwiYXBwQ29udGFpbmVyIiwic2ltY3RsIiwiZ2V0QXBwQ29udGFpbmVyIiwiZW5kc1dpdGgiLCJmcyIsImV4aXN0cyIsImVyciIsImluZm8iLCJhcHBJbmZvIiwiaW5jbHVkZXMiLCJpZ24iLCJvcGVuVXJsIiwidXJsIiwiaXNSdW5uaW5nIiwiRXJyb3IiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJwc0Vycm9yIiwicHJvY0xpc3QiLCJwcyIsImUiLCJsb2ciLCJkZWJ1ZyIsIm1lc3NhZ2UiLCJzb21lIiwibmFtZSIsIk1PQklMRV9TQUZBUklfQlVORExFX0lEIiwid2FpdE1zIiwiU0FGQVJJX1NUQVJUVVBfVElNRU9VVCIsImludGVydmFsTXMiLCJzZWNvbmRzRWxhcHNlZCIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwid2FybiIsInRvRml4ZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZ0JBQU4sU0FBK0JDLHVCQUEvQixDQUFnRDtBQUM5Q0MsRUFBQUEsV0FBVyxDQUFFQyxJQUFGLEVBQVFDLFlBQVIsRUFBc0I7QUFDL0IsVUFBTUQsSUFBTixFQUFZQyxZQUFaO0FBQ0Q7O0FBU0QsUUFBTUMsY0FBTixDQUFzQkMsUUFBdEIsRUFBZ0M7QUFDOUIsUUFBSTtBQUNGLFlBQU1DLFlBQVksR0FBRyxNQUFNLEtBQUtDLE1BQUwsQ0FBWUMsZUFBWixDQUE0QkgsUUFBNUIsQ0FBM0I7O0FBQ0EsVUFBSSxDQUFDQyxZQUFZLENBQUNHLFFBQWIsQ0FBc0IsTUFBdEIsQ0FBTCxFQUFvQztBQUNsQyxlQUFPLEtBQVA7QUFDRDs7QUFDRCxhQUFPLE1BQU1DLGtCQUFHQyxNQUFILENBQVVMLFlBQVYsQ0FBYjtBQUNELEtBTkQsQ0FNRSxPQUFPTSxHQUFQLEVBQVk7QUFJWixVQUFJO0FBQ0YsY0FBTUMsSUFBSSxHQUFHLE1BQU0sS0FBS04sTUFBTCxDQUFZTyxPQUFaLENBQW9CVCxRQUFwQixDQUFuQjtBQUNBLGVBQU9RLElBQUksQ0FBQ0UsUUFBTCxDQUFjLGlCQUFkLENBQVA7QUFDRCxPQUhELENBR0UsT0FBT0MsR0FBUCxFQUFZLENBQUU7QUFDakI7O0FBQ0QsV0FBTyxLQUFQO0FBQ0Q7O0FBS0QsUUFBTUMsT0FBTixDQUFlQyxHQUFmLEVBQW9CO0FBQ2xCLFFBQUksRUFBQyxNQUFNLEtBQUtDLFNBQUwsRUFBUCxDQUFKLEVBQTZCO0FBQzNCLFlBQU0sSUFBSUMsS0FBSixDQUFXLGtCQUFpQkYsR0FBSSx5Q0FBaEMsQ0FBTjtBQUNEOztBQUNELFVBQU1HLEtBQUssR0FBRyxJQUFJQyxzQkFBT0MsS0FBWCxHQUFtQkMsS0FBbkIsRUFBZDtBQUNBLFVBQU0sS0FBS2pCLE1BQUwsQ0FBWVUsT0FBWixDQUFvQkMsR0FBcEIsQ0FBTjtBQUNBLFFBQUlPLE9BQUo7O0FBQ0EsUUFBSTtBQUNGLFlBQU0sZ0NBQWlCLFlBQVk7QUFDakMsWUFBSUMsUUFBUSxHQUFHLEVBQWY7O0FBQ0EsWUFBSTtBQUNGQSxVQUFBQSxRQUFRLEdBQUcsTUFBTSxLQUFLQyxFQUFMLEVBQWpCO0FBQ0FGLFVBQUFBLE9BQU8sR0FBRyxJQUFWO0FBQ0QsU0FIRCxDQUdFLE9BQU9HLENBQVAsRUFBVTtBQUNWQywwQkFBSUMsS0FBSixDQUFVRixDQUFDLENBQUNHLE9BQVo7O0FBQ0FOLFVBQUFBLE9BQU8sR0FBR0csQ0FBVjtBQUNEOztBQUNELGVBQU9GLFFBQVEsQ0FBQ00sSUFBVCxDQUFjLENBQUM7QUFBQ0MsVUFBQUE7QUFBRCxTQUFELEtBQVlBLElBQUksS0FBS0MsOEJBQW5DLENBQVA7QUFDRCxPQVZLLEVBVUg7QUFDREMsUUFBQUEsTUFBTSxFQUFFQyw2QkFEUDtBQUVEQyxRQUFBQSxVQUFVLEVBQUU7QUFGWCxPQVZHLENBQU47QUFjRCxLQWZELENBZUUsT0FBT3pCLEdBQVAsRUFBWTtBQUNaLFlBQU0wQixjQUFjLEdBQUdqQixLQUFLLENBQUNrQixXQUFOLEdBQW9CQyxTQUEzQzs7QUFDQSxVQUFJZixPQUFKLEVBQWE7QUFDWEksd0JBQUlZLElBQUosQ0FBVSw0REFBMkRILGNBQWMsQ0FBQ0ksT0FBZixDQUF1QixDQUF2QixDQUEwQixLQUF0RixHQUNOLG1CQUFrQmpCLE9BQU8sQ0FBQ00sT0FBUSxFQURyQzs7QUFFQUYsd0JBQUlZLElBQUosQ0FBUyxtQkFBVDtBQUNELE9BSkQsTUFJTztBQUNMLGNBQU0sSUFBSXJCLEtBQUosQ0FBVyw4QkFBNkJGLEdBQUksV0FBVW9CLGNBQWMsQ0FBQ0ksT0FBZixDQUF1QixDQUF2QixDQUEwQixLQUF0RSxHQUNiLGVBQWNSLDhCQUF3QixvREFEbkMsQ0FBTjtBQUVEO0FBQ0Y7O0FBQ0RMLG9CQUFJQyxLQUFKLENBQVcsK0JBQThCWixHQUFJLFFBQU9HLEtBQUssQ0FBQ2tCLFdBQU4sR0FBb0JDLFNBQXBCLENBQThCRSxPQUE5QixDQUFzQyxDQUF0QyxDQUF5QyxHQUE3RjtBQUNEOztBQXBFNkM7O2VBdUVqQzNDLGdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpbXVsYXRvclhjb2RlOTMgZnJvbSAnLi9zaW11bGF0b3IteGNvZGUtOS4zJztcbmltcG9ydCB7IGZzLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgTU9CSUxFX1NBRkFSSV9CVU5ETEVfSUQsIFNBRkFSSV9TVEFSVFVQX1RJTUVPVVQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuXG5cbmNsYXNzIFNpbXVsYXRvclhjb2RlMTAgZXh0ZW5kcyBTaW11bGF0b3JYY29kZTkzIHtcbiAgY29uc3RydWN0b3IgKHVkaWQsIHhjb2RlVmVyc2lvbikge1xuICAgIHN1cGVyKHVkaWQsIHhjb2RlVmVyc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHdoZXRoZXIgdGhlIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gaXMgaW5zdGFsbGVkIG9uIFNpbXVsYXRvci5cbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCAtIFRoZSBidW5kbGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGluc3RhbGxlZC5cbiAgICovXG4gIGFzeW5jIGlzQXBwSW5zdGFsbGVkIChidW5kbGVJZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBDb250YWluZXIgPSBhd2FpdCB0aGlzLnNpbWN0bC5nZXRBcHBDb250YWluZXIoYnVuZGxlSWQpO1xuICAgICAgaWYgKCFhcHBDb250YWluZXIuZW5kc1dpdGgoJy5hcHAnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgZnMuZXhpc3RzKGFwcENvbnRhaW5lcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBnZXRfYXBwX2NvbnRhaW5lciBzdWJjb21tYW5kIGZhaWxzIGZvciBzeXN0ZW0gYXBwbGljYXRpb25zLFxuICAgICAgLy8gc28gd2UgdHJ5IHRoZSBoaWRkZW4gYXBwaW5mbyBzdWJjb21tYW5kLCB3aGljaCBwcmludHMgY29ycmVjdCBpbmZvIGZvclxuICAgICAgLy8gc3lzdGVtL2hpZGRlbiBhcHBzXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpbmZvID0gYXdhaXQgdGhpcy5zaW1jdGwuYXBwSW5mbyhidW5kbGVJZCk7XG4gICAgICAgIHJldHVybiBpbmZvLmluY2x1ZGVzKCdBcHBsaWNhdGlvblR5cGUnKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgYXN5bmMgb3BlblVybCAodXJsKSB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLmlzUnVubmluZygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyaWVkIHRvIG9wZW4gJyR7dXJsfScsIGJ1dCBTaW11bGF0b3IgaXMgbm90IGluIEJvb3RlZCBzdGF0ZWApO1xuICAgIH1cbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuc2ltY3RsLm9wZW5VcmwodXJsKTtcbiAgICBsZXQgcHNFcnJvcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBwcm9jTGlzdCA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb2NMaXN0ID0gYXdhaXQgdGhpcy5wcygpO1xuICAgICAgICAgIHBzRXJyb3IgPSBudWxsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGUubWVzc2FnZSk7XG4gICAgICAgICAgcHNFcnJvciA9IGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb2NMaXN0LnNvbWUoKHtuYW1lfSkgPT4gbmFtZSA9PT0gTU9CSUxFX1NBRkFSSV9CVU5ETEVfSUQpO1xuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNBRkFSSV9TVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IDUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3Qgc2Vjb25kc0VsYXBzZWQgPSB0aW1lci5nZXREdXJhdGlvbigpLmFzU2Vjb25kcztcbiAgICAgIGlmIChwc0Vycm9yKSB7XG4gICAgICAgIGxvZy53YXJuKGBNb2JpbGUgU2FmYXJpIHByb2Nlc3MgZXhpc3RlbmNlIGNhbm5vdCBiZSB2ZXJpZmllZCBhZnRlciAke3NlY29uZHNFbGFwc2VkLnRvRml4ZWQoMyl9cy4gYCArXG4gICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke3BzRXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgbG9nLndhcm4oJ0NvbnRpbnVpbmcgYW55d2F5Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vYmlsZSBTYWZhcmkgY2Fubm90IG9wZW4gJyR7dXJsfScgYWZ0ZXIgJHtzZWNvbmRzRWxhcHNlZC50b0ZpeGVkKDMpfXMuIGAgK1xuICAgICAgICAgIGBJdHMgcHJvY2VzcyAke01PQklMRV9TQUZBUklfQlVORExFX0lEfSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbGlzdCBvZiBTaW11bGF0b3IgcHJvY2Vzc2VzYCk7XG4gICAgICB9XG4gICAgfVxuICAgIGxvZy5kZWJ1ZyhgU2FmYXJpIHN1Y2Nlc3NmdWxseSBvcGVuZWQgJyR7dXJsfScgaW4gJHt0aW1lci5nZXREdXJhdGlvbigpLmFzU2Vjb25kcy50b0ZpeGVkKDMpfXNgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW11bGF0b3JYY29kZTEwO1xuIl0sImZpbGUiOiJsaWIvc2ltdWxhdG9yLXhjb2RlLTEwLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=