@appium/support 2.56.0 → 2.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/env.d.ts +54 -0
- package/build/lib/env.d.ts.map +1 -0
- package/build/lib/fs.d.ts +221 -0
- package/build/lib/fs.d.ts.map +1 -0
- package/build/lib/fs.js +1 -1
- package/build/lib/image-util.d.ts +56 -0
- package/build/lib/image-util.d.ts.map +1 -0
- package/build/lib/image-util.js +2 -3
- package/build/lib/index.d.ts +38 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +20 -14
- package/build/lib/log-internal.d.ts +74 -0
- package/build/lib/log-internal.d.ts.map +1 -0
- package/build/lib/log-internal.js +10 -18
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logging.d.ts +45 -0
- package/build/lib/logging.d.ts.map +1 -0
- package/build/lib/logging.js +11 -13
- package/build/lib/mjpeg.d.ts +65 -0
- package/build/lib/mjpeg.d.ts.map +1 -0
- package/build/lib/mjpeg.js +11 -4
- package/build/lib/mkdirp.d.ts +3 -0
- package/build/lib/mkdirp.d.ts.map +1 -0
- package/build/lib/net.d.ts +95 -0
- package/build/lib/net.d.ts.map +1 -0
- package/build/lib/net.js +41 -23
- package/build/lib/node.d.ts +26 -0
- package/build/lib/node.d.ts.map +1 -0
- package/build/lib/node.js +4 -2
- package/build/lib/npm.d.ts +123 -0
- package/build/lib/npm.d.ts.map +1 -0
- package/build/lib/npm.js +18 -41
- package/build/lib/plist.d.ts +43 -0
- package/build/lib/plist.d.ts.map +1 -0
- package/build/lib/plist.js +1 -1
- package/build/lib/process.d.ts +3 -0
- package/build/lib/process.d.ts.map +1 -0
- package/build/lib/system.d.ts +7 -0
- package/build/lib/system.d.ts.map +1 -0
- package/build/lib/tempdir.d.ts +63 -0
- package/build/lib/tempdir.d.ts.map +1 -0
- package/build/lib/tempdir.js +3 -6
- package/build/lib/timing.d.ts +46 -0
- package/build/lib/timing.d.ts.map +1 -0
- package/build/lib/util.d.ts +183 -0
- package/build/lib/util.d.ts.map +1 -0
- package/build/lib/util.js +4 -8
- package/build/lib/zip.d.ts +180 -0
- package/build/lib/zip.d.ts.map +1 -0
- package/build/lib/zip.js +6 -2
- package/build/tsconfig.tsbuildinfo +1 -0
- package/lib/fs.js +9 -4
- package/lib/image-util.js +23 -7
- package/lib/index.js +2 -8
- package/lib/log-internal.js +31 -38
- package/lib/logging.js +40 -16
- package/lib/mjpeg.js +14 -5
- package/lib/net.js +116 -60
- package/lib/node.js +4 -4
- package/lib/npm.js +33 -90
- package/lib/plist.js +3 -1
- package/lib/tempdir.js +8 -7
- package/lib/util.js +10 -11
- package/lib/zip.js +24 -13
- package/package.json +15 -7
package/build/lib/zip.js
CHANGED
|
@@ -55,6 +55,8 @@ const IFDIR = 16384;
|
|
|
55
55
|
const IFLNK = 40960;
|
|
56
56
|
|
|
57
57
|
class ZipExtractor {
|
|
58
|
+
zipfile;
|
|
59
|
+
|
|
58
60
|
constructor(sourcePath, opts = {}) {
|
|
59
61
|
this.zipPath = sourcePath;
|
|
60
62
|
this.opts = opts;
|
|
@@ -154,7 +156,9 @@ class ZipExtractor {
|
|
|
154
156
|
return;
|
|
155
157
|
}
|
|
156
158
|
|
|
157
|
-
const
|
|
159
|
+
const openReadStream = _bluebird.default.promisify(this.zipfile.openReadStream.bind(this.zipfile));
|
|
160
|
+
|
|
161
|
+
const readStream = await openReadStream(entry);
|
|
158
162
|
|
|
159
163
|
if (isSymlink) {
|
|
160
164
|
const link = await (0, _getStream.default)(readStream);
|
|
@@ -454,4 +458,4 @@ var _default = {
|
|
|
454
458
|
toArchive
|
|
455
459
|
};
|
|
456
460
|
exports.default = _default;
|
|
457
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi96aXAuanMiXSwibmFtZXMiOlsib3BlblppcCIsIkIiLCJwcm9taXNpZnkiLCJ5YXV6bCIsIm9wZW4iLCJwaXBlbGluZSIsInN0cmVhbSIsIlpJUF9NQUdJQyIsIklGTVQiLCJJRkRJUiIsIklGTE5LIiwiWmlwRXh0cmFjdG9yIiwiY29uc3RydWN0b3IiLCJzb3VyY2VQYXRoIiwib3B0cyIsInppcFBhdGgiLCJjYW5jZWxlZCIsImV4dHJhY3RGaWxlTmFtZSIsImVudHJ5IiwiXyIsImlzQnVmZmVyIiwiZmlsZU5hbWUiLCJ0b1N0cmluZyIsImZpbGVOYW1lc0VuY29kaW5nIiwiZXh0cmFjdCIsImRpciIsInppcGZpbGUiLCJsYXp5RW50cmllcyIsImRlY29kZVN0cmluZ3MiLCJyZXNvbHZlIiwicmVqZWN0Iiwib24iLCJlcnIiLCJyZWFkRW50cnkiLCJzdGFydHNXaXRoIiwiZGVzdERpciIsInBhdGgiLCJkaXJuYW1lIiwiam9pbiIsImZzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjYW5vbmljYWxEZXN0RGlyIiwicmVhbHBhdGgiLCJyZWxhdGl2ZURlc3REaXIiLCJyZWxhdGl2ZSIsInNwbGl0Iiwic2VwIiwiaW5jbHVkZXMiLCJFcnJvciIsImV4dHJhY3RFbnRyeSIsImNsb3NlIiwiZGVzdCIsIm1vZGUiLCJleHRlcm5hbEZpbGVBdHRyaWJ1dGVzIiwiaXNTeW1saW5rIiwiaXNEaXIiLCJlbmRzV2l0aCIsInZlcnNpb25NYWRlQnkiLCJwcm9jTW9kZSIsImdldEV4dHJhY3RlZE1vZGUiLCJta2Rpck9wdGlvbnMiLCJyZWFkU3RyZWFtIiwib3BlblJlYWRTdHJlYW0iLCJiaW5kIiwibGluayIsInN5bWxpbmsiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImVudHJ5TW9kZSIsImRlZmF1bHREaXJNb2RlIiwiZGVmYXVsdEZpbGVNb2RlIiwicGFyc2VJbnQiLCJleHRyYWN0QWxsVG8iLCJ6aXBGaWxlUGF0aCIsImlzQWJzb2x1dGUiLCJ1c2VTeXN0ZW1VbnppcCIsImV4dHJhY3RXaXRoU3lzdGVtVW56aXAiLCJsb2ciLCJ3YXJuIiwic3RkZXJyIiwibWVzc2FnZSIsImV4dHJhY3RvciIsImlzV2luZG93c0hvc3QiLCJleGVjdXRhYmxlUGF0aCIsImdldEV4ZWN1dGFibGVQYXRoIiwiZSIsIl9leHRyYWN0RW50cnlUbyIsInppcEZpbGUiLCJkc3RQYXRoIiwidGVzdCIsImV4aXN0cyIsIm1rZGlycCIsIndyaXRlU3RyZWFtIiwiZmxhZ3MiLCJ3cml0ZVN0cmVhbVByb21pc2UiLCJvbmNlIiwiemlwUmVhZFN0cmVhbSIsInppcFJlYWRTdHJlYW1Qcm9taXNlIiwicGlwZSIsImFsbCIsInJlYWRFbnRyaWVzIiwib25FbnRyeSIsInJlcyIsImV4dHJhY3RFbnRyeVRvIiwiZW1pdCIsInRvSW5NZW1vcnlaaXAiLCJzcmNQYXRoIiwiaXNNZXRlcmVkIiwiZW5jb2RlVG9CYXNlNjQiLCJtYXhTaXplIiwiR2lCIiwibGV2ZWwiLCJyZXN1bHRCdWZmZXJzIiwicmVzdWx0QnVmZmVyc1NpemUiLCJyZXN1bHRXcml0ZVN0cmVhbSIsIldyaXRhYmxlIiwid3JpdGUiLCJidWZmZXIiLCJlbmNvZGluZyIsIm5leHQiLCJwdXNoIiwibGVuZ3RoIiwiYXJjaGl2ZSIsInpsaWIiLCJzcmNTaXplIiwiYmFzZTY0RW5jb2RlclN0cmVhbSIsIkJhc2U2NEVuY29kZSIsInJlc3VsdFdyaXRlU3RyZWFtUHJvbWlzZSIsInVucGlwZSIsImFib3J0IiwiZGVzdHJveSIsInBvaW50ZXIiLCJhcmNoaXZlU3RyZWFtUHJvbWlzZSIsInRpbWVyIiwiVGltZXIiLCJzdGFydCIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImZpbGUiLCJuYW1lIiwiYmFzZW5hbWUiLCJmaW5hbGl6ZSIsImRlYnVnIiwiZ2V0RHVyYXRpb24iLCJhc1NlY29uZHMiLCJ0b0ZpeGVkIiwiQnVmZmVyIiwiY29uY2F0IiwiYXNzZXJ0VmFsaWRaaXAiLCJmaWxlUGF0aCIsInNpemUiLCJmZCIsImFsbG9jIiwicmVhZCIsInNpZ25hdHVyZSIsInRvQXJjaGl2ZSIsInNyYyIsInBhdHRlcm4iLCJjd2QiLCJpZ25vcmUiLCJnbG9iIiwibWVtb2l6ZSIsImJpbmFyeU5hbWUiLCJmdWxsUGF0aCIsIndoaWNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLE9BQU8sR0FBR0Msa0JBQUVDLFNBQUYsQ0FBWUMsZUFBTUMsSUFBbEIsQ0FBaEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHSixrQkFBRUMsU0FBRixDQUFZSSxnQkFBT0QsUUFBbkIsQ0FBakI7O0FBQ0EsTUFBTUUsU0FBUyxHQUFHLElBQWxCO0FBQ0EsTUFBTUMsSUFBSSxHQUFHLEtBQWI7QUFDQSxNQUFNQyxLQUFLLEdBQUcsS0FBZDtBQUNBLE1BQU1DLEtBQUssR0FBRyxLQUFkOztBQUdBLE1BQU1DLFlBQU4sQ0FBbUI7QUFDakJDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxJQUFJLEdBQUcsRUFBckIsRUFBeUI7QUFDbEMsU0FBS0MsT0FBTCxHQUFlRixVQUFmO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQixLQUFoQjtBQUNEOztBQUVEQyxFQUFBQSxlQUFlLENBQUVDLEtBQUYsRUFBUztBQUN0QixXQUFPQyxnQkFBRUMsUUFBRixDQUFXRixLQUFLLENBQUNHLFFBQWpCLElBQTZCSCxLQUFLLENBQUNHLFFBQU4sQ0FBZUMsUUFBZixDQUF3QixLQUFLUixJQUFMLENBQVVTLGlCQUFsQyxDQUE3QixHQUFvRkwsS0FBSyxDQUFDRyxRQUFqRztBQUNEOztBQUVZLFFBQVBHLE9BQU8sR0FBSTtBQUNmLFVBQU07QUFDSkMsTUFBQUEsR0FESTtBQUVKRixNQUFBQTtBQUZJLFFBR0YsS0FBS1QsSUFIVDtBQUlBLFNBQUtZ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QU87QUFDbEJxQyxNQUFBQSxPQUFPLENBQUNNLE1BQVIsQ0FBZTFILE1BQWY7QUFDQW9ILE1BQUFBLE9BQU8sQ0FBQ08sS0FBUjtBQUNBUCxNQUFBQSxPQUFPLENBQUNRLE9BQVI7QUFDQXBHLE1BQUFBLE1BQU0sQ0FBQ3VELENBQUQsQ0FBTjtBQUNELEtBTkgsRUFPR3RELEVBUEgsQ0FPTSxRQVBOLEVBT2dCRixPQVBoQjtBQVFBNkYsSUFBQUEsT0FBTyxDQUFDb0IsUUFBUjtBQUNELEdBakJZLENBQWI7QUFrQkQ7O0FBTUQsTUFBTTFELGlCQUFpQixHQUFHakUsZ0JBQUUrSSxPQUFGLENBSXhCLGVBQWU5RSxpQkFBZixDQUFrQytFLFVBQWxDLEVBQThDO0FBQzVDLFFBQU1DLFFBQVEsR0FBRyxNQUFNN0gsYUFBRzhILEtBQUgsQ0FBU0YsVUFBVCxDQUF2Qjs7QUFDQXRGLGtCQUFJa0UsS0FBSixDQUFXLG9CQUFYLEVBQWdDb0IsVUFBaEMsRUFBNENDLFFBQTVDOztBQUNBLFNBQU9BLFFBQVA7QUFDRCxDQVJ1QixDQUExQjs7ZUFhZTtBQUFFNUYsRUFBQUEsWUFBRjtBQUFnQjRCLEVBQUFBLFdBQWhCO0FBQTZCSyxFQUFBQSxhQUE3QjtBQUE0QzRDLEVBQUFBLGNBQTVDO0FBQTRETyxFQUFBQTtBQUE1RCxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB5YXV6bCBmcm9tICd5YXV6bCc7XG5pbXBvcnQgYXJjaGl2ZXIgZnJvbSAnYXJjaGl2ZXInO1xuaW1wb3J0IHsgY3JlYXRlV3JpdGVTdHJlYW0gfSBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gJy4vc3lzdGVtJztcbmltcG9ydCB7IEJhc2U2NEVuY29kZSB9IGZyb20gJ2Jhc2U2NC1zdHJlYW0nO1xuaW1wb3J0IHsgdG9SZWFkYWJsZVNpemVTdHJpbmcsIEdpQiB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgVGltZXIgZnJvbSAnLi90aW1pbmcnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgZ2V0U3RyZWFtIGZyb20gJ2dldC1zdHJlYW0nO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IG9wZW5aaXAgPSBCLnByb21pc2lmeSh5YXV6bC5vcGVuKTtcbmNvbnN0IHBpcGVsaW5lID0gQi5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKTtcbmNvbnN0IFpJUF9NQUdJQyA9ICdQSyc7XG5jb25zdCBJRk1UID0gNjE0NDA7XG5jb25zdCBJRkRJUiA9IDE2Mzg0O1xuY29uc3QgSUZMTksgPSA0MDk2MDtcblxuLy8gVGhpcyBjbGFzcyBpcyBtb3N0bHkgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21heG9nZGVuL2V4dHJhY3QtemlwL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5jbGFzcyBaaXBFeHRyYWN0b3Ige1xuICBjb25zdHJ1Y3RvciAoc291cmNlUGF0aCwgb3B0cyA9IHt9KSB7XG4gICAgdGhpcy56aXBQYXRoID0gc291cmNlUGF0aDtcbiAgICB0aGlzLm9wdHMgPSBvcHRzO1xuICAgIHRoaXMuY2FuY2VsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGV4dHJhY3RGaWxlTmFtZSAoZW50cnkpIHtcbiAgICByZXR1cm4gXy5pc0J1ZmZlcihlbnRyeS5maWxlTmFtZSkgPyBlbnRyeS5maWxlTmFtZS50b1N0cmluZyh0aGlzLm9wdHMuZmlsZU5hbWVzRW5jb2RpbmcpIDogZW50cnkuZmlsZU5hbWU7XG4gIH1cblxuICBhc3luYyBleHRyYWN0ICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBkaXIsXG4gICAgICBmaWxlTmFtZXNFbmNvZGluZyxcbiAgICB9ID0gdGhpcy5vcHRzO1xuICAgIHRoaXMuemlwZmlsZSA9IGF3YWl0IG9wZW5aaXAodGhpcy56aXBQYXRoLCB7XG4gICAgICBsYXp5RW50cmllczogdHJ1ZSxcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVqb3Nod29sZmUveWF1emwvY29tbWl0L2NjNzQ1NWFjNzg5YmE4NDk3MzE4NGU1ZWJkZTA1ODFjZGM0YzNiMzkjZGlmZi0wNGM2ZTkwZmFhYzI2NzVhYTg5ZTIxNzZkMmVlYzdkOFI5NVxuICAgICAgZGVjb2RlU3RyaW5nczogIWZpbGVOYW1lc0VuY29kaW5nLFxuICAgIH0pO1xuICAgIHRoaXMuY2FuY2VsZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnppcGZpbGUub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuemlwZmlsZS5yZWFkRW50cnkoKTtcblxuICAgICAgdGhpcy56aXBmaWxlLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbmNlbGVkKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy56aXBmaWxlLm9uKCdlbnRyeScsIGFzeW5jIChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW5jZWxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5leHRyYWN0RmlsZU5hbWUoZW50cnkpO1xuICAgICAgICBpZiAoZmlsZU5hbWUuc3RhcnRzV2l0aCgnX19NQUNPU1gvJykpIHtcbiAgICAgICAgICB0aGlzLnppcGZpbGUucmVhZEVudHJ5KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVzdERpciA9IHBhdGguZGlybmFtZShwYXRoLmpvaW4oZGlyLCBmaWxlTmFtZSkpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGZzLm1rZGlyKGRlc3REaXIsIHtyZWN1cnNpdmU6IHRydWV9KTtcblxuICAgICAgICAgIGNvbnN0IGNhbm9uaWNhbERlc3REaXIgPSBhd2FpdCBmcy5yZWFscGF0aChkZXN0RGlyKTtcbiAgICAgICAgICBjb25zdCByZWxhdGl2ZURlc3REaXIgPSBwYXRoLnJlbGF0aXZlKGRpciwgY2Fub25pY2FsRGVzdERpcik7XG5cbiAgICAgICAgICBpZiAocmVsYXRpdmVEZXN0RGlyLnNwbGl0KHBhdGguc2VwKS5pbmNsdWRlcygnLi4nKSkge1xuICAgICAgICAgICAgbmV3IEVycm9yKGBPdXQgb2YgYm91bmQgcGF0aCBcIiR7Y2Fub25pY2FsRGVzdERpcn1cIiBmb3VuZCB3aGlsZSBwcm9jZXNzaW5nIGZpbGUgJHtmaWxlTmFtZX1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhd2FpdCB0aGlzLmV4dHJhY3RFbnRyeShlbnRyeSk7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLnJlYWRFbnRyeSgpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnppcGZpbGUuY2xvc2UoKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBleHRyYWN0RW50cnkgKGVudHJ5KSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBkaXIsXG4gICAgfSA9IHRoaXMub3B0cztcblxuICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5leHRyYWN0RmlsZU5hbWUoZW50cnkpO1xuICAgIGNvbnN0IGRlc3QgPSBwYXRoLmpvaW4oZGlyLCBmaWxlTmFtZSk7XG5cbiAgICAvLyBjb252ZXJ0IGV4dGVybmFsIGZpbGUgYXR0ciBpbnQgaW50byBhIGZzIHN0YXQgbW9kZSBpbnRcbiAgICBjb25zdCBtb2RlID0gKGVudHJ5LmV4dGVybmFsRmlsZUF0dHJpYnV0ZXMgPj4gMTYpICYgMHhGRkZGO1xuICAgIC8vIGNoZWNrIGlmIGl0J3MgYSBzeW1saW5rIG9yIGRpciAodXNpbmcgc3RhdCBtb2RlIGNvbnN0YW50cylcbiAgICBjb25zdCBpc1N5bWxpbmsgPSAobW9kZSAmIElGTVQpID09PSBJRkxOSztcbiAgICBjb25zdCBpc0RpciA9IChtb2RlICYgSUZNVCkgPT09IElGRElSXG4gICAgICAvLyBGYWlsc2FmZSwgYm9ycm93ZWQgZnJvbSBqc1ppcFxuICAgICAgfHwgZmlsZU5hbWUuZW5kc1dpdGgoJy8nKVxuICAgICAgLy8gY2hlY2sgZm9yIHdpbmRvd3Mgd2VpcmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBkaXJlY3RvcnlcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhvZ2Rlbi9leHRyYWN0LXppcC9pc3N1ZXMvMTMjaXNzdWVjb21tZW50LTE1NDQ5NDU2NlxuICAgICAgfHwgKGVudHJ5LnZlcnNpb25NYWRlQnkgPj4gOCA9PT0gMCAmJiBlbnRyeS5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzID09PSAxNik7XG4gICAgY29uc3QgcHJvY01vZGUgPSB0aGlzLmdldEV4dHJhY3RlZE1vZGUobW9kZSwgaXNEaXIpICYgMG83Nzc7XG4gICAgLy8gYWx3YXlzIGVuc3VyZSBmb2xkZXJzIGFyZSBjcmVhdGVkXG4gICAgY29uc3QgZGVzdERpciA9IGlzRGlyID8gZGVzdCA6IHBhdGguZGlybmFtZShkZXN0KTtcbiAgICBjb25zdCBta2Rpck9wdGlvbnMgPSB7IHJlY3Vyc2l2ZTogdHJ1ZSB9O1xuICAgIGlmIChpc0Rpcikge1xuICAgICAgbWtkaXJPcHRpb25zLm1vZGUgPSBwcm9jTW9kZTtcbiAgICB9XG4gICAgYXdhaXQgZnMubWtkaXIoZGVzdERpciwgbWtkaXJPcHRpb25zKTtcbiAgICBpZiAoaXNEaXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkU3RyZWFtID0gYXdhaXQgQi5wcm9taXNpZnkodGhpcy56aXBmaWxlLm9wZW5SZWFkU3RyZWFtLmJpbmQodGhpcy56aXBmaWxlKSkoZW50cnkpO1xuICAgIGlmIChpc1N5bWxpbmspIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBhd2FpdCBnZXRTdHJlYW0ocmVhZFN0cmVhbSk7XG4gICAgICBhd2FpdCBmcy5zeW1saW5rKGxpbmssIGRlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBwaXBlbGluZShyZWFkU3RyZWFtLCBmcy5jcmVhdGVXcml0ZVN0cmVhbShkZXN0LCB7IG1vZGU6IHByb2NNb2RlIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYWN0ZWRNb2RlIChlbnRyeU1vZGUsIGlzRGlyKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGVmYXVsdERpck1vZGUsXG4gICAgICBkZWZhdWx0RmlsZU1vZGUsXG4gICAgfSA9IHRoaXMub3B0cztcblxuICAgIGxldCBtb2RlID0gZW50cnlNb2RlO1xuICAgIC8vIFNldCBkZWZhdWx0cywgaWYgbmVjZXNzYXJ5XG4gICAgaWYgKG1vZGUgPT09IDApIHtcbiAgICAgIGlmIChpc0Rpcikge1xuICAgICAgICBpZiAoZGVmYXVsdERpck1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gcGFyc2VJbnQoZGVmYXVsdERpck1vZGUsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIG1vZGUgPSAwbzc1NTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGRlZmF1bHRGaWxlTW9kZSkge1xuICAgICAgICAgIG1vZGUgPSBwYXJzZUludChkZWZhdWx0RmlsZU1vZGUsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIG1vZGUgPSAwbzY0NDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlO1xuICB9XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiBFeHRyYWN0QWxsT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlTmFtZXNFbmNvZGluZyBUaGUgZW5jb2RpbmcgdG8gdXNlIGZvciBleHRyYWN0ZWQgZmlsZSBuYW1lcy5cbiAqIEZvciBaSVAgYXJjaGl2ZXMgY3JlYXRlZCBvbiBNYWNPUyBpdCBpcyB1c3VhbGx5IGV4cGVjdGVkIHRvIGJlIGB1dGY4YC5cbiAqIEJ5IGRlZmF1bHQgaXQgaXMgYXV0b2RldGVjdGVkIGJhc2VkIG9uIHRoZSBlbnRyeSBtZXRhZGF0YSBhbmQgaXMgb25seSBuZWVkZWQgdG8gYmUgc2V0IGV4cGxpY2l0bHlcbiAqIGlmIHRoZSBwYXJ0aWN1bGFyIGFyY2hpdmUgZG9lcyBub3QgY29tcGx5IHRvIHRoZSBzdGFuZGFyZHMsIHdoaWNoIGxlYWRzIHRvIGNvcnJ1cHRlZCBmaWxlIG5hbWVzXG4gKiBhZnRlciBleHRyYWN0aW9uLiBPbmx5IGFwcGxpY2FibGUgaWYgc3lzdGVtIHVuemlwIGJpbmFyeSBpcyBOT1QgYmVpbmcgdXNlZC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHVzZVN5c3RlbVVuemlwIFtmYWxzZV0gSWYgdHJ1ZSwgYXR0ZW1wdCB0byB1c2Ugc3lzdGVtIHVuemlwOyBpZiB0aGlzIGZhaWxzLFxuICogZmFsbGJhY2sgdG8gdGhlIEpTIHVuemlwIGltcGxlbWVudGF0aW9uLlxuICovXG5cbi8qKlxuICogRXh0cmFjdCB6aXBmaWxlIHRvIGEgZGlyZWN0b3J5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcEZpbGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHNvdXJjZSBaSVAgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKiBAcGFyYW0gez9FeHRyYWN0QWxsT3B0aW9uc30gb3B0c1xuICovXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0QWxsVG8gKHppcEZpbGVQYXRoLCBkZXN0RGlyLCBvcHRzID0ge30pIHtcbiAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoZGVzdERpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRhcmdldCBwYXRoICcke2Rlc3REaXJ9JyBpcyBleHBlY3RlZCB0byBiZSBhYnNvbHV0ZWApO1xuICB9XG5cbiAgYXdhaXQgZnMubWtkaXIoZGVzdERpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICBjb25zdCBkaXIgPSBhd2FpdCBmcy5yZWFscGF0aChkZXN0RGlyKTtcbiAgaWYgKG9wdHMudXNlU3lzdGVtVW56aXApIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXh0cmFjdFdpdGhTeXN0ZW1VbnppcCh6aXBGaWxlUGF0aCwgZGlyKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKCd1bnppcCBmYWlsZWQ7IGZhbGxpbmcgYmFjayB0byBKUzogJXMnLCBlcnIuc3RkZXJyIHx8IGVyci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZXh0cmFjdG9yID0gbmV3IFppcEV4dHJhY3Rvcih6aXBGaWxlUGF0aCwge1xuICAgIC4uLm9wdHMsXG4gICAgZGlyLFxuICB9KTtcbiAgYXdhaXQgZXh0cmFjdG9yLmV4dHJhY3QoKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBzeXN0ZW0gdW56aXAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApLiBJZiBhdmFpbGFibGUsIGl0IGlzXG4gKiBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHRoZSBKUyBpbXBsZW1lbnRhdGlvbi5cbiAqIEJ5IGRlZmF1bHQgYWxsIGZpbGVzIGluIHRoZSBkZXN0RGlyIGdldCBvdmVycmlkZGVuIGlmIGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcEZpbGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHNvdXJjZSBaSVAgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyLlxuICogVGhpcyBmb2xkZXIgaXMgZXhwZWN0ZWQgdG8gYWxyZWFkeSBleGlzdCBiZWZvcmUgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFdpdGhTeXN0ZW1VbnppcCAoemlwRmlsZVBhdGgsIGRlc3REaXIpIHtcbiAgY29uc3QgaXNXaW5kb3dzSG9zdCA9IGlzV2luZG93cygpO1xuICBsZXQgZXhlY3V0YWJsZVBhdGg7XG4gIHRyeSB7XG4gICAgZXhlY3V0YWJsZVBhdGggPSBhd2FpdCBnZXRFeGVjdXRhYmxlUGF0aChcbiAgICAgIGlzV2luZG93c0hvc3QgPyAncG93ZXJzaGVsbC5leGUnIDogJ3VuemlwJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHN5c3RlbSB1bnppcCcpO1xuICB9XG5cbiAgaWYgKGlzV2luZG93c0hvc3QpIHtcbiAgICAvLyBvbiBXaW5kb3dzIHdlIHVzZSBQb3dlclNoZWxsIHRvIHVuemlwIGZpbGVzXG4gICAgYXdhaXQgZXhlYyhleGVjdXRhYmxlUGF0aCwgW1xuICAgICAgJy1jb21tYW5kJywgJ0V4cGFuZC1BcmNoaXZlJyxcbiAgICAgICctTGl0ZXJhbFBhdGgnLCB6aXBGaWxlUGF0aCxcbiAgICAgICctRGVzdGluYXRpb25QYXRoJywgZGVzdERpcixcbiAgICAgICctRm9yY2UnXG4gICAgXSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gLXEgbWVhbnMgcXVpZXQgKG5vIHN0ZG91dClcbiAgICAvLyAtbyBtZWFucyBvdmVyd3JpdGVcbiAgICAvLyAtZCBpcyB0aGUgZGVzdCBkaXJcbiAgICBhd2FpdCBleGVjKGV4ZWN1dGFibGVQYXRoLCBbXG4gICAgICAnLXEnLFxuICAgICAgJy1vJywgemlwRmlsZVBhdGgsXG4gICAgICAnLWQnLCBkZXN0RGlyXG4gICAgXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0IGEgc2luZ2xlIHppcCBlbnRyeSB0byBhIGRpcmVjdG9yeVxuICpcbiAqIEBwYXJhbSB7U3RyZWFtYWJsZX0gemlwRmlsZSBUaGUgc291cmNlIFpJUCBzdHJlYW1cbiAqIEBwYXJhbSB7eWF1emwuWmlwRW50cnl9IGVudHJ5IFRoZSBlbnRyeSBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIF9leHRyYWN0RW50cnlUbyAoemlwRmlsZSwgZW50cnksIGRlc3REaXIpIHtcbiAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShkZXN0RGlyLCBlbnRyeS5maWxlTmFtZSk7XG5cbiAgLy8gQ3JlYXRlIGRlc3QgZGlyZWN0b3J5IGlmIGRvZXNuJ3QgZXhpc3QgYWxyZWFkeVxuICBpZiAoL1xcLyQvLnRlc3QoZW50cnkuZmlsZU5hbWUpKSB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZHN0UGF0aCkpIHtcbiAgICAgIGF3YWl0IGZzLm1rZGlycChkc3RQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCFhd2FpdCBmcy5leGlzdHMocGF0aC5kaXJuYW1lKGRzdFBhdGgpKSkge1xuICAgIGF3YWl0IGZzLm1rZGlycChwYXRoLmRpcm5hbWUoZHN0UGF0aCkpO1xuICB9XG5cbiAgLy8gQ3JlYXRlIGEgd3JpdGUgc3RyZWFtXG4gIGNvbnN0IHdyaXRlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0oZHN0UGF0aCwge2ZsYWdzOiAndyd9KTtcbiAgY29uc3Qgd3JpdGVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHdyaXRlU3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIHdyaXRlU3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIHppcFJlYWRTdHJlYW0gYW5kIHBpcGUgZGF0YSB0byB0aGUgd3JpdGUgc3RyZWFtXG4gIC8vIChmb3Igc29tZSBvZGQgcmVhc29uIEIucHJvbWlzaWZ5IGRvZXNuJ3Qgd29yayBvbiB6aXBmaWxlLm9wZW5SZWFkU3RyZWFtLCBpdCBjYXVzZXMgYW4gZXJyb3IgJ2Nsb3NlZCcpXG4gIGNvbnN0IHppcFJlYWRTdHJlYW0gPSBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgemlwRmlsZS5vcGVuUmVhZFN0cmVhbShlbnRyeSwgKGVyciwgcmVhZFN0cmVhbSkgPT4gZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHJlYWRTdHJlYW0pKTtcbiAgfSk7XG4gIGNvbnN0IHppcFJlYWRTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHppcFJlYWRTdHJlYW0ub25jZSgnZW5kJywgcmVzb2x2ZSk7XG4gICAgemlwUmVhZFN0cmVhbS5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gIH0pO1xuICB6aXBSZWFkU3RyZWFtLnBpcGUod3JpdGVTdHJlYW0pO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSB6aXBSZWFkU3RyZWFtIGFuZCB3cml0ZVN0cmVhbSB0byBlbmQgYmVmb3JlIHJldHVybmluZ1xuICByZXR1cm4gYXdhaXQgQi5hbGwoW1xuICAgIHppcFJlYWRTdHJlYW1Qcm9taXNlLFxuICAgIHdyaXRlU3RyZWFtUHJvbWlzZSxcbiAgXSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgWmlwRW50cnlcbiAqIEBwcm9wZXJ0eSB7eWF1emwuWmlwRW50cnl9IGVudHJ5IFRoZSBhY3R1YWwgZW50cnkgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IGV4dHJhY3RFbnRyeVRvIEFuIGFzeW5jIGZ1bmN0aW9uLCB3aGljaCBhY2NlcHRzIG9uZSBwYXJhbWV0ZXIuXG4gKiBUaGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgZGVzdGluYXRpb24gZm9sZGVyIHBhdGggdG8gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBleHRyYWN0IHRoZSBlbnRyeS5cbiAqL1xuXG4vKipcbiAqIEdldCBlbnRyaWVzIGZvciBhIHppcCBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gemlwRmlsZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIFpJUCBmaWxlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkVudHJ5IENhbGxiYWNrIHdoZW4gZW50cnkgaXMgcmVhZC5cbiAqIFRoZSBjYWxsYmFjayBpcyBleHBlY3RlZCB0byBhY2NlcHQgb25lIGFyZ3VtZW50IG9mIFppcEVudHJ5IHR5cGUuXG4gKiBUaGUgaXRlcmF0aW9uIHRocm91Z2ggdGhlIHNvdXJjZSB6aXAgZmlsZSB3aWxsIGJpIHRlcm1pbmF0ZWQgYXMgc29vbiBhc1xuICogdGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGVxdWFscyB0byBgZmFsc2VgLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWFkRW50cmllcyAoemlwRmlsZVBhdGgsIG9uRW50cnkpIHtcbiAgLy8gT3BlbiBhIHppcCBmaWxlIGFuZCBzdGFydCByZWFkaW5nIGVudHJpZXNcbiAgY29uc3QgemlwZmlsZSA9IGF3YWl0IG9wZW5aaXAoemlwRmlsZVBhdGgsIHtsYXp5RW50cmllczogdHJ1ZX0pO1xuICBjb25zdCB6aXBSZWFkU3RyZWFtUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB6aXBmaWxlLm9uY2UoJ2VuZCcsIHJlc29sdmUpO1xuICAgIHppcGZpbGUub25jZSgnZXJyb3InLCByZWplY3QpO1xuXG4gICAgLy8gT24gZWFjaCBlbnRyeSwgY2FsbCAnb25FbnRyeScgYW5kIHRoZW4gcmVhZCB0aGUgbmV4dCBlbnRyeVxuICAgIHppcGZpbGUub24oJ2VudHJ5JywgYXN5bmMgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBvbkVudHJ5KHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIGV4dHJhY3RFbnRyeVRvOiBhc3luYyAoZGVzdERpcikgPT4gYXdhaXQgX2V4dHJhY3RFbnRyeVRvKHppcGZpbGUsIGVudHJ5LCBkZXN0RGlyKVxuICAgICAgfSk7XG4gICAgICBpZiAocmVzID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gemlwZmlsZS5lbWl0KCdlbmQnKTtcbiAgICAgIH1cbiAgICAgIHppcGZpbGUucmVhZEVudHJ5KCk7XG4gICAgfSk7XG4gIH0pO1xuICB6aXBmaWxlLnJlYWRFbnRyeSgpO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSBlbnRyaWVzIHRvIGZpbmlzaCBiZWluZyBpdGVyYXRlZCB0aHJvdWdoXG4gIHJldHVybiBhd2FpdCB6aXBSZWFkU3RyZWFtUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBaaXBPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuY29kZVRvQmFzZTY0IFtmYWxzZV0gV2hldGhlciB0byBlbmNvZGVcbiAqIHRoZSByZXN1bHRpbmcgYXJjaGl2ZSB0byBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZ1xuICogQHByb3BlcnR5IHtib29sZWFufSBpc01ldGVyZWQgW3RydWVdIFdoZXRoZXIgdG8gbG9nIHRoZSBhY3R1YWxcbiAqIGFyY2hpdmVyIHBlcmZvcm1hbmNlXG4gKiBAcHJvcGVydHkge251bWJlcn0gbWF4U2l6ZSBbMTA3Mzc0MTgyNF0gVGhlIG1heGltdW0gc2l6ZSBvZlxuICogdGhlIHJlc3VsdGluZyBhcmNoaXZlIGluIGJ5dGVzLiBUaGlzIGlzIHNldCB0byAxR0IgYnkgZGVmYXVsdCwgYmVjYXVzZVxuICogQXBwaXVtIGxpbWl0cyB0aGUgbWF4aW11bSBIVFRQIGJvZHkgc2l6ZSB0byAxR0IuIEFsc28sIHRoZSBOb2RlSlMgaGVhcFxuICogc2l6ZSBtdXN0IGJlIGVub3VnaCB0byBrZWVwIHRoZSByZXN1bHRpbmcgb2JqZWN0ICh1c3VhbGx5IHRoaXMgc2l6ZSBpc1xuICogbGltaXRlZCB0byAxLjQgR0IpXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGV2ZWwgWzldIFRoZSBjb21wcmVzc2lvbiBsZXZlbC4gVGhlIG1heGltdW1cbiAqIGxldmVsIGlzIDkgKHRoZSBiZXN0IGNvbXByZXNzaW9uLCB3b3JzdCBwZXJmb3JtYW5jZSkuIFRoZSBtaW5pbXVtXG4gKiBjb21wcmVzc2lvbiBsZXZlbCBpcyAwIChubyBjb21wcmVzc2lvbikuXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBjb250ZW50cyBvZiBsb2NhbCBkaXJlY3RvcnkgdG8gYW4gaW4tbWVtb3J5IC56aXAgYnVmZmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNyY1BhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgZm9sZGVyIG9yIGZpbGUgYmVpbmcgemlwcGVkXG4gKiBAcGFyYW0ge1ppcE9wdGlvbnN9IG9wdHMgWmlwcGluZyBvcHRpb25zXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBaaXBwZWQgKGFuZCBlbmNvZGVkIGlmIGBlbmNvZGVUb0Jhc2U2NGAgaXMgdHJ1dGh5KVxuICogY29udGVudCBvZiB0aGUgc291cmNlIHBhdGggYXMgbWVtb3J5IGJ1ZmZlclxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZWFkaW5nIHRoZSBzb3VyY2VcbiAqIG9yIHRoZSBzb3VyY2UgaXMgdG9vIGJpZ1xuICovXG5hc3luYyBmdW5jdGlvbiB0b0luTWVtb3J5WmlwIChzcmNQYXRoLCBvcHRzID0ge30pIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoc3JjUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggZmlsZSBvciBmb2xkZXI6ICR7c3JjUGF0aH1gKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc01ldGVyZWQgPSB0cnVlLFxuICAgIGVuY29kZVRvQmFzZTY0ID0gZmFsc2UsXG4gICAgbWF4U2l6ZSA9IDEgKiBHaUIsXG4gICAgbGV2ZWwgPSA5LFxuICB9ID0gb3B0cztcbiAgY29uc3QgcmVzdWx0QnVmZmVycyA9IFtdO1xuICBsZXQgcmVzdWx0QnVmZmVyc1NpemUgPSAwO1xuICAvLyBDcmVhdGUgYSB3cml0YWJsZSBzdHJlYW0gdGhhdCB6aXAgYnVmZmVycyB3aWxsIGJlIHN0cmVhbWVkIHRvXG4gIGNvbnN0IHJlc3VsdFdyaXRlU3RyZWFtID0gbmV3IHN0cmVhbS5Xcml0YWJsZSh7XG4gICAgd3JpdGU6IChidWZmZXIsIGVuY29kaW5nLCBuZXh0KSA9PiB7XG4gICAgICByZXN1bHRCdWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICAgIHJlc3VsdEJ1ZmZlcnNTaXplICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZiAobWF4U2l6ZSA+IDAgJiYgcmVzdWx0QnVmZmVyc1NpemUgPiBtYXhTaXplKSB7XG4gICAgICAgIHJlc3VsdFdyaXRlU3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKGBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIGAgK1xuICAgICAgICAgIGBhcmNoaXZlIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAke3RvUmVhZGFibGVTaXplU3RyaW5nKG1heFNpemUpfWApKTtcbiAgICAgIH1cbiAgICAgIG5leHQoKTtcbiAgICB9LFxuICB9KTtcblxuICAvLyBaaXAgJ3NyY0RpcicgYW5kIHN0cmVhbSBpdCB0byB0aGUgYWJvdmUgd3JpdGFibGUgc3RyZWFtXG4gIGNvbnN0IGFyY2hpdmUgPSBhcmNoaXZlcignemlwJywge1xuICAgIHpsaWI6IHtsZXZlbH1cbiAgfSk7XG4gIGxldCBzcmNTaXplID0gbnVsbDtcbiAgY29uc3QgYmFzZTY0RW5jb2RlclN0cmVhbSA9IGVuY29kZVRvQmFzZTY0ID8gbmV3IEJhc2U2NEVuY29kZSgpIDogbnVsbDtcbiAgY29uc3QgcmVzdWx0V3JpdGVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlc3VsdFdyaXRlU3RyZWFtLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGlmIChiYXNlNjRFbmNvZGVyU3RyZWFtKSB7XG4gICAgICAgIGFyY2hpdmUudW5waXBlKGJhc2U2NEVuY29kZXJTdHJlYW0pO1xuICAgICAgICBiYXNlNjRFbmNvZGVyU3RyZWFtLnVucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcmNoaXZlLnVucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gICAgICB9XG4gICAgICBhcmNoaXZlLmFib3J0KCk7XG4gICAgICBhcmNoaXZlLmRlc3Ryb3koKTtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9KTtcbiAgICByZXN1bHRXcml0ZVN0cmVhbS5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBzcmNTaXplID0gYXJjaGl2ZS5wb2ludGVyKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBhcmNoaXZlU3RyZWFtUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhcmNoaXZlLm9uY2UoJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIGFyY2hpdmUub25jZSgnZXJyb3InLCAoZSkgPT4gcmVqZWN0KFxuICAgICAgbmV3IEVycm9yKGBGYWlsZWQgdG8gYXJjaGl2ZSAnJHtzcmNQYXRofSc6ICR7ZS5tZXNzYWdlfWApKSk7XG4gIH0pO1xuICBjb25zdCB0aW1lciA9IGlzTWV0ZXJlZCA/IG5ldyBUaW1lcigpLnN0YXJ0KCkgOiBudWxsO1xuICBpZiAoKGF3YWl0IGZzLnN0YXQoc3JjUGF0aCkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBhcmNoaXZlLmRpcmVjdG9yeShzcmNQYXRoLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgYXJjaGl2ZS5maWxlKHNyY1BhdGgsIHtcbiAgICAgIG5hbWU6IHBhdGguYmFzZW5hbWUoc3JjUGF0aCksXG4gICAgfSk7XG4gIH1cbiAgaWYgKGJhc2U2NEVuY29kZXJTdHJlYW0pIHtcbiAgICBhcmNoaXZlLnBpcGUoYmFzZTY0RW5jb2RlclN0cmVhbSk7XG4gICAgYmFzZTY0RW5jb2RlclN0cmVhbS5waXBlKHJlc3VsdFdyaXRlU3RyZWFtKTtcbiAgfSBlbHNlIHtcbiAgICBhcmNoaXZlLnBpcGUocmVzdWx0V3JpdGVTdHJlYW0pO1xuICB9XG4gIGFyY2hpdmUuZmluYWxpemUoKTtcblxuICAvLyBXYWl0IGZvciB0aGUgc3RyZWFtcyB0byBmaW5pc2hcbiAgYXdhaXQgQi5hbGwoW2FyY2hpdmVTdHJlYW1Qcm9taXNlLCByZXN1bHRXcml0ZVN0cmVhbVByb21pc2VdKTtcblxuICBpZiAodGltZXIpIHtcbiAgICBsb2cuZGVidWcoYFppcHBlZCAke2VuY29kZVRvQmFzZTY0ID8gJ2FuZCBiYXNlNjQtZW5jb2RlZCAnIDogJyd9YCArXG4gICAgICBgJyR7cGF0aC5iYXNlbmFtZShzcmNQYXRoKX0nIGAgK1xuICAgICAgKHNyY1NpemUgPyBgKCR7dG9SZWFkYWJsZVNpemVTdHJpbmcoc3JjU2l6ZSl9KSBgIDogJycpICtcbiAgICAgIGBpbiAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMyl9cyBgICtcbiAgICAgIGAoY29tcHJlc3Npb24gbGV2ZWw6ICR7bGV2ZWx9KWApO1xuICB9XG4gIC8vIFJldHVybiB0aGUgYXJyYXkgb2YgemlwIGJ1ZmZlcnMgY29uY2F0ZW5hdGVkIGludG8gb25lIGJ1ZmZlclxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChyZXN1bHRCdWZmZXJzKTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHRoZSBnaXZlbiBmaWxlIGlzIGEgdmFsaWQgWklQIGFyY2hpdmVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVBhdGggLSBGdWxsIHBhdGggdG8gdGhlIGZpbGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSB2YWxpZCBaSVAgYXJjaGl2ZVxuICovXG5hc3luYyBmdW5jdGlvbiBhc3NlcnRWYWxpZFppcCAoZmlsZVBhdGgpIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtmaWxlUGF0aH0nIGRvZXMgbm90IGV4aXN0YCk7XG4gIH1cblxuICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KGZpbGVQYXRoKTtcbiAgaWYgKHNpemUgPCA0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtmaWxlUGF0aH0nIGlzIHRvbyBzbWFsbCB0byBiZSBhIFpJUCBhcmNoaXZlYCk7XG4gIH1cbiAgY29uc3QgZmQgPSBhd2FpdCBmcy5vcGVuKGZpbGVQYXRoLCAncicpO1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhaSVBfTUFHSUMubGVuZ3RoKTtcbiAgICBhd2FpdCBmcy5yZWFkKGZkLCBidWZmZXIsIDAsIFpJUF9NQUdJQy5sZW5ndGgsIDApO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGJ1ZmZlci50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoc2lnbmF0dXJlICE9PSBaSVBfTUFHSUMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZpbGUgc2lnbmF0dXJlICcke3NpZ25hdHVyZX0nIG9mICcke2ZpbGVQYXRofScgYCArXG4gICAgICAgIGBpcyBub3QgZXF1YWwgdG8gdGhlIGV4cGVjdGVkIFpJUCBhcmNoaXZlIHNpZ25hdHVyZSAnJHtaSVBfTUFHSUN9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5jbG9zZShmZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBaaXBDb21wcmVzc2lvbk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZXZlbCBbOV0gLSBDb21wcmVzc2lvbiBsZXZlbCBpbiByYW5nZSAwLi45XG4gKiAoZ3JlYXRlciBudW1iZXJzIG1lYW4gYmV0dGVyIGNvbXByZXNzaW9uLCBidXQgbG9uZ2VyIHByb2Nlc3NpbmcgdGltZSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFppcFNvdXJjZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gcGF0dGVybiBbJyoqXFwvKiddIC0gR0xPQiBwYXR0ZXJuIGZvciBjb21wcmVzc2lvblxuICogQHByb3BlcnR5IHshc3RyaW5nfSBjd2QgLSBUaGUgc291cmNlIHJvb3QgZm9sZGVyICh0aGUgcGFyZW50IGZvbGRlciBvZlxuICogdGhlIGRlc3RpbmF0aW9uIGZpbGUgYnkgZGVmYXVsdClcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PHN0cmluZz59IGlnbm9yZSAtIFRoZSBsaXN0IG9mIGlnbm9yZWQgcGF0dGVybnNcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJjaGl2ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gZ2xvYiBwYXR0ZXJuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFBhdGggLSBUaGUgcmVzdWx0aW5nIGFyY2hpdmUgcGF0aFxuICogQHBhcmFtIHtaaXBTb3VyY2VPcHRpb25zfSBzcmMgLSBTb3VyY2Ugb3B0aW9uc1xuICogQHBhcmFtIHtaaXBDb21wcmVzc2lvbk9wdGlvbnN9IG9wdHMgLSBDb21wcmVzc2lvbiBvcHRpb25zXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNyZWF0aW5nIHRoZSBhcmNoaXZlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRvQXJjaGl2ZSAoZHN0UGF0aCwgc3JjID0ge30sIG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbGV2ZWwgPSA5LFxuICB9ID0gb3B0cztcbiAgY29uc3Qge1xuICAgIHBhdHRlcm4gPSAnKiovKicsXG4gICAgY3dkID0gcGF0aC5kaXJuYW1lKGRzdFBhdGgpLFxuICAgIGlnbm9yZSA9IFtdLFxuICB9ID0gc3JjO1xuICBjb25zdCBhcmNoaXZlID0gYXJjaGl2ZXIoJ3ppcCcsIHsgemxpYjogeyBsZXZlbCB9fSk7XG4gIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGRzdFBhdGgpO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGFyY2hpdmVcbiAgICAgIC5nbG9iKHBhdHRlcm4sIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBpZ25vcmUsXG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIHJlamVjdClcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gICAgc3RyZWFtXG4gICAgICAub24oJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgICAgYXJjaGl2ZS51bnBpcGUoc3RyZWFtKTtcbiAgICAgICAgYXJjaGl2ZS5hYm9ydCgpO1xuICAgICAgICBhcmNoaXZlLmRlc3Ryb3koKTtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfSlcbiAgICAgIC5vbignZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgYXJjaGl2ZS5maW5hbGl6ZSgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbmQgbWVtb2l6ZXMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2l2ZW4gZXhlY3V0YWJsZS5cbiAqIFJlamVjdHMgaWYgaXQgaXMgbm90IGZvdW5kLlxuICovXG5jb25zdCBnZXRFeGVjdXRhYmxlUGF0aCA9IF8ubWVtb2l6ZShcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtCPHN0cmluZz59IEZ1bGwgUGF0aCB0byB0aGUgZXhlY3V0YWJsZVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0RXhlY3V0YWJsZVBhdGggKGJpbmFyeU5hbWUpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IGF3YWl0IGZzLndoaWNoKGJpbmFyeU5hbWUpO1xuICAgIGxvZy5kZWJ1ZyhgRm91bmQgJyVzJyBhdCAnJXMnYCwgYmluYXJ5TmFtZSwgZnVsbFBhdGgpO1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfVxuKTtcblxuZXhwb3J0IHsgZXh0cmFjdEFsbFRvLCByZWFkRW50cmllcywgdG9Jbk1lbW9yeVppcCwgX2V4dHJhY3RFbnRyeVRvLFxuICBhc3NlcnRWYWxpZFppcCwgdG9BcmNoaXZlIH07XG5leHBvcnQgZGVmYXVsdCB7IGV4dHJhY3RBbGxUbywgcmVhZEVudHJpZXMsIHRvSW5NZW1vcnlaaXAsIGFzc2VydFZhbGlkWmlwLCB0b0FyY2hpdmUgfTtcbiJdfQ==
|
|
461
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi96aXAuanMiXSwibmFtZXMiOlsib3BlblppcCIsIkIiLCJwcm9taXNpZnkiLCJ5YXV6bCIsIm9wZW4iLCJwaXBlbGluZSIsInN0cmVhbSIsIlpJUF9NQUdJQyIsIklGTVQiLCJJRkRJUiIsIklGTE5LIiwiWmlwRXh0cmFjdG9yIiwiemlwZmlsZSIsImNvbnN0cnVjdG9yIiwic291cmNlUGF0aCIsIm9wdHMiLCJ6aXBQYXRoIiwiY2FuY2VsZWQiLCJleHRyYWN0RmlsZU5hbWUiLCJlbnRyeSIsIl8iLCJpc0J1ZmZlciIsImZpbGVOYW1lIiwidG9TdHJpbmciLCJmaWxlTmFtZXNFbmNvZGluZyIsImV4dHJhY3QiLCJkaXIiLCJsYXp5RW50cmllcyIsImRlY29kZVN0cmluZ3MiLCJyZXNvbHZlIiwicmVqZWN0Iiwib24iLCJlcnIiLCJyZWFkRW50cnkiLCJzdGFydHNXaXRoIiwiZGVzdERpciIsInBhdGgiLCJkaXJuYW1lIiwiam9pbiIsImZzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjYW5vbmljYWxEZXN0RGlyIiwicmVhbHBhdGgiLCJyZWxhdGl2ZURlc3REaXIiLCJyZWxhdGl2ZSIsInNwbGl0Iiwic2VwIiwiaW5jbHVkZXMiLCJFcnJvciIsImV4dHJhY3RFbnRyeSIsImNsb3NlIiwiZGVzdCIsIm1vZGUiLCJleHRlcm5hbEZpbGVBdHRyaWJ1dGVzIiwiaXNTeW1saW5rIiwiaXNEaXIiLCJlbmRzV2l0aCIsInZlcnNpb25NYWRlQnkiLCJwcm9jTW9kZSIsImdldEV4dHJhY3RlZE1vZGUiLCJta2Rpck9wdGlvbnMiLCJvcGVuUmVhZFN0cmVhbSIsImJpbmQiLCJyZWFkU3RyZWFtIiwibGluayIsInN5bWxpbmsiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImVudHJ5TW9kZSIsImRlZmF1bHREaXJNb2RlIiwiZGVmYXVsdEZpbGVNb2RlIiwicGFyc2VJbnQiLCJleHRyYWN0QWxsVG8iLCJ6aXBGaWxlUGF0aCIsImlzQWJzb2x1dGUiLCJ1c2VTeXN0ZW1VbnppcCIsImV4dHJhY3RXaXRoU3lzdGVtVW56aXAiLCJsb2ciLCJ3YXJuIiwic3RkZXJyIiwibWVzc2FnZSIsImV4dHJhY3RvciIsImlzV2luZG93c0hvc3QiLCJleGVjdXRhYmxlUGF0aCIsImdldEV4ZWN1dGFibGVQYXRoIiwiZSIsIl9leHRyYWN0RW50cnlUbyIsInppcEZpbGUiLCJkc3RQYXRoIiwidGVzdCIsImV4aXN0cyIsIm1rZGlycCIsIndyaXRlU3RyZWFtIiwiZmxhZ3MiLCJ3cml0ZVN0cmVhbVByb21pc2UiLCJvbmNlIiwiemlwUmVhZFN0cmVhbSIsInppcFJlYWRTdHJlYW1Qcm9taXNlIiwicGlwZSIsImFsbCIsInJlYWRFbnRyaWVzIiwib25FbnRyeSIsInJlcyIsImV4dHJhY3RFbnRyeVRvIiwiZW1pdCIsInRvSW5NZW1vcnlaaXAiLCJzcmNQYXRoIiwiaXNNZXRlcmVkIiwiZW5jb2RlVG9CYXNlNjQiLCJtYXhTaXplIiwiR2lCIiwibGV2ZWwiLCJyZXN1bHRCdWZmZXJzIiwicmVzdWx0QnVmZmVyc1NpemUiLCJyZXN1bHRXcml0ZVN0cmVhbSIsIldyaXRhYmxlIiwid3JpdGUiLCJidWZmZXIiLCJlbmNvZGluZyIsIm5leHQiLCJwdXNoIiwibGVuZ3RoIiwiYXJjaGl2ZSIsInpsaWIiLCJzcmNTaXplIiwiYmFzZTY0RW5jb2RlclN0cmVhbSIsIkJhc2U2NEVuY29kZSIsInJlc3VsdFdyaXRlU3RyZWFtUHJvbWlzZSIsInVucGlwZSIsImFib3J0IiwiZGVzdHJveSIsInBvaW50ZXIiLCJhcmNoaXZlU3RyZWFtUHJvbWlzZSIsInRpbWVyIiwiVGltZXIiLCJzdGFydCIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImZpbGUiLCJuYW1lIiwiYmFzZW5hbWUiLCJmaW5hbGl6ZSIsImRlYnVnIiwiZ2V0RHVyYXRpb24iLCJhc1NlY29uZHMiLCJ0b0ZpeGVkIiwiQnVmZmVyIiwiY29uY2F0IiwiYXNzZXJ0VmFsaWRaaXAiLCJmaWxlUGF0aCIsInNpemUiLCJmZCIsImFsbG9jIiwicmVhZCIsInNpZ25hdHVyZSIsInRvQXJjaGl2ZSIsInNyYyIsInBhdHRlcm4iLCJjd2QiLCJpZ25vcmUiLCJnbG9iIiwibWVtb2l6ZSIsImJpbmFyeU5hbWUiLCJmdWxsUGF0aCIsIndoaWNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUtBLE1BQU1BLE9BQU8sR0FBR0Msa0JBQUVDLFNBQUYsQ0FBWUMsZUFBTUMsSUFBbEIsQ0FBaEI7O0FBSUEsTUFBTUMsUUFBUSxHQUFHSixrQkFBRUMsU0FBRixDQUFZSSxnQkFBT0QsUUFBbkIsQ0FBakI7O0FBQ0EsTUFBTUUsU0FBUyxHQUFHLElBQWxCO0FBQ0EsTUFBTUMsSUFBSSxHQUFHLEtBQWI7QUFDQSxNQUFNQyxLQUFLLEdBQUcsS0FBZDtBQUNBLE1BQU1DLEtBQUssR0FBRyxLQUFkOztBQUdBLE1BQU1DLFlBQU4sQ0FBbUI7QUFFakJDLEVBQUFBLE9BQU87O0FBRVBDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxJQUFJLEdBQUcsRUFBckIsRUFBeUI7QUFDbEMsU0FBS0MsT0FBTCxHQUFlRixVQUFmO0FBQ0EsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQixLQUFoQjtBQUNEOztBQUVEQyxFQUFBQSxlQUFlLENBQUVDLEtBQUYsRUFBUztBQUN0QixXQUFPQyxnQkFBRUMsUUFBRixDQUFXRixLQUFLLENBQUNHLFFBQWpCLElBQTZCSCxLQUFLLENBQUNHLFFBQU4sQ0FBZUMsUUFBZixDQUF3QixLQUFLUixJQUFMLENBQVVTLGlCQUFsQyxDQUE3QixHQUFvRkwsS0FBSyxDQUFDRyxRQUFqRztBQUNEOztBQUVZLFFBQVBHLE9BQU8sR0FBSTtBQUNmLFVBQU07QUFDSkMsTUFBQUEsR0FESTtBQUVKRixNQUFBQTtBQUZJLFFBR0YsS0FB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QU5ILENBTVE1RixNQU5SO0FBT0FBLElBQUFBLE1BQU0sQ0FDSHlCLEVBREgsQ0FDTSxPQUROLEVBQ2dCc0QsQ0FBRCxJQUFPO0FBQ2xCcUMsTUFBQUEsT0FBTyxDQUFDTSxNQUFSLENBQWUxSCxNQUFmO0FBQ0FvSCxNQUFBQSxPQUFPLENBQUNPLEtBQVI7QUFDQVAsTUFBQUEsT0FBTyxDQUFDUSxPQUFSO0FBQ0FwRyxNQUFBQSxNQUFNLENBQUN1RCxDQUFELENBQU47QUFDRCxLQU5ILEVBT0d0RCxFQVBILENBT00sUUFQTixFQU9nQkYsT0FQaEI7QUFRQTZGLElBQUFBLE9BQU8sQ0FBQ29CLFFBQVI7QUFDRCxHQWpCWSxDQUFiO0FBa0JEOztBQU1ELE1BQU0xRCxpQkFBaUIsR0FBR2hFLGdCQUFFOEksT0FBRixDQUl4QixlQUFlOUUsaUJBQWYsQ0FBa0MrRSxVQUFsQyxFQUE4QztBQUM1QyxRQUFNQyxRQUFRLEdBQUcsTUFBTTdILGFBQUc4SCxLQUFILENBQVNGLFVBQVQsQ0FBdkI7O0FBQ0F0RixrQkFBSWtFLEtBQUosQ0FBVyxvQkFBWCxFQUFnQ29CLFVBQWhDLEVBQTRDQyxRQUE1Qzs7QUFDQSxTQUFPQSxRQUFQO0FBQ0QsQ0FSdUIsQ0FBMUI7O2VBYWU7QUFBRTVGLEVBQUFBLFlBQUY7QUFBZ0I0QixFQUFBQSxXQUFoQjtBQUE2QkssRUFBQUEsYUFBN0I7QUFBNEM0QyxFQUFBQSxjQUE1QztBQUE0RE8sRUFBQUE7QUFBNUQsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeWF1emwgZnJvbSAneWF1emwnO1xuaW1wb3J0IGFyY2hpdmVyIGZyb20gJ2FyY2hpdmVyJztcbmltcG9ydCB7IGNyZWF0ZVdyaXRlU3RyZWFtIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgZnMgZnJvbSAnLi9mcyc7XG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tICcuL3N5c3RlbSc7XG5pbXBvcnQgeyBCYXNlNjRFbmNvZGUgfSBmcm9tICdiYXNlNjQtc3RyZWFtJztcbmltcG9ydCB7IHRvUmVhZGFibGVTaXplU3RyaW5nLCBHaUIgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IFRpbWVyIGZyb20gJy4vdGltaW5nJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IGdldFN0cmVhbSBmcm9tICdnZXQtc3RyZWFtJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG4vKipcbiAqIEB0eXBlIHsocGF0aDogc3RyaW5nLCBvcHRpb25zPzogeWF1emwuT3B0aW9ucykgPT4gUHJvbWlzZTx5YXV6bC5aaXBGaWxlPn1cbiAqL1xuY29uc3Qgb3BlblppcCA9IEIucHJvbWlzaWZ5KHlhdXpsLm9wZW4pO1xuLyoqXG4gKiBAdHlwZSB7KHNvdXJjZTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtLCBkZXN0aW5hdGlvbjogTm9kZUpTLldyaXRhYmxlU3RyZWFtKSA9PiBQcm9taXNlPE5vZGVKUy5Xcml0YWJsZVN0cmVhbT59XG4gKi9cbmNvbnN0IHBpcGVsaW5lID0gQi5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKTtcbmNvbnN0IFpJUF9NQUdJQyA9ICdQSyc7XG5jb25zdCBJRk1UID0gNjE0NDA7XG5jb25zdCBJRkRJUiA9IDE2Mzg0O1xuY29uc3QgSUZMTksgPSA0MDk2MDtcblxuLy8gVGhpcyBjbGFzcyBpcyBtb3N0bHkgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21heG9nZGVuL2V4dHJhY3QtemlwL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5jbGFzcyBaaXBFeHRyYWN0b3Ige1xuICAvKiogQHR5cGUge3lhdXpsLlppcEZpbGV9ICovXG4gIHppcGZpbGU7XG5cbiAgY29uc3RydWN0b3IgKHNvdXJjZVBhdGgsIG9wdHMgPSB7fSkge1xuICAgIHRoaXMuemlwUGF0aCA9IHNvdXJjZVBhdGg7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gIH1cblxuICBleHRyYWN0RmlsZU5hbWUgKGVudHJ5KSB7XG4gICAgcmV0dXJuIF8uaXNCdWZmZXIoZW50cnkuZmlsZU5hbWUpID8gZW50cnkuZmlsZU5hbWUudG9TdHJpbmcodGhpcy5vcHRzLmZpbGVOYW1lc0VuY29kaW5nKSA6IGVudHJ5LmZpbGVOYW1lO1xuICB9XG5cbiAgYXN5bmMgZXh0cmFjdCAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGlyLFxuICAgICAgZmlsZU5hbWVzRW5jb2RpbmcsXG4gICAgfSA9IHRoaXMub3B0cztcbiAgICB0aGlzLnppcGZpbGUgPSBhd2FpdCBvcGVuWmlwKHRoaXMuemlwUGF0aCwge1xuICAgICAgbGF6eUVudHJpZXM6IHRydWUsXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGhlam9zaHdvbGZlL3lhdXpsL2NvbW1pdC9jYzc0NTVhYzc4OWJhODQ5NzMxODRlNWViZGUwNTgxY2RjNGMzYjM5I2RpZmYtMDRjNmU5MGZhYWMyNjc1YWE4OWUyMTc2ZDJlZWM3ZDhSOTVcbiAgICAgIGRlY29kZVN0cmluZ3M6ICFmaWxlTmFtZXNFbmNvZGluZyxcbiAgICB9KTtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy56aXBmaWxlLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnppcGZpbGUucmVhZEVudHJ5KCk7XG5cbiAgICAgIHRoaXMuemlwZmlsZS5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxlZCkge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuemlwZmlsZS5vbignZW50cnknLCBhc3luYyAoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGVudHJ5KTtcbiAgICAgICAgaWYgKGZpbGVOYW1lLnN0YXJ0c1dpdGgoJ19fTUFDT1NYLycpKSB7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLnJlYWRFbnRyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlc3REaXIgPSBwYXRoLmRpcm5hbWUocGF0aC5qb2luKGRpciwgZmlsZU5hbWUpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmcy5ta2RpcihkZXN0RGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG5cbiAgICAgICAgICBjb25zdCBjYW5vbmljYWxEZXN0RGlyID0gYXdhaXQgZnMucmVhbHBhdGgoZGVzdERpcik7XG4gICAgICAgICAgY29uc3QgcmVsYXRpdmVEZXN0RGlyID0gcGF0aC5yZWxhdGl2ZShkaXIsIGNhbm9uaWNhbERlc3REaXIpO1xuXG4gICAgICAgICAgaWYgKHJlbGF0aXZlRGVzdERpci5zcGxpdChwYXRoLnNlcCkuaW5jbHVkZXMoJy4uJykpIHtcbiAgICAgICAgICAgIG5ldyBFcnJvcihgT3V0IG9mIGJvdW5kIHBhdGggXCIke2Nhbm9uaWNhbERlc3REaXJ9XCIgZm91bmQgd2hpbGUgcHJvY2Vzc2luZyBmaWxlICR7ZmlsZU5hbWV9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdGhpcy5leHRyYWN0RW50cnkoZW50cnkpO1xuICAgICAgICAgIHRoaXMuemlwZmlsZS5yZWFkRW50cnkoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy56aXBmaWxlLmNsb3NlKCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZXh0cmFjdEVudHJ5IChlbnRyeSkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgZGlyLFxuICAgIH0gPSB0aGlzLm9wdHM7XG5cbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZXh0cmFjdEZpbGVOYW1lKGVudHJ5KTtcbiAgICBjb25zdCBkZXN0ID0gcGF0aC5qb2luKGRpciwgZmlsZU5hbWUpO1xuXG4gICAgLy8gY29udmVydCBleHRlcm5hbCBmaWxlIGF0dHIgaW50IGludG8gYSBmcyBzdGF0IG1vZGUgaW50XG4gICAgY29uc3QgbW9kZSA9IChlbnRyeS5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzID4+IDE2KSAmIDB4RkZGRjtcbiAgICAvLyBjaGVjayBpZiBpdCdzIGEgc3ltbGluayBvciBkaXIgKHVzaW5nIHN0YXQgbW9kZSBjb25zdGFudHMpXG4gICAgY29uc3QgaXNTeW1saW5rID0gKG1vZGUgJiBJRk1UKSA9PT0gSUZMTks7XG4gICAgY29uc3QgaXNEaXIgPSAobW9kZSAmIElGTVQpID09PSBJRkRJUlxuICAgICAgLy8gRmFpbHNhZmUsIGJvcnJvd2VkIGZyb20ganNaaXBcbiAgICAgIHx8IGZpbGVOYW1lLmVuZHNXaXRoKCcvJylcbiAgICAgIC8vIGNoZWNrIGZvciB3aW5kb3dzIHdlaXJkIHdheSBvZiBzcGVjaWZ5aW5nIGEgZGlyZWN0b3J5XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF4b2dkZW4vZXh0cmFjdC16aXAvaXNzdWVzLzEzI2lzc3VlY29tbWVudC0xNTQ0OTQ1NjZcbiAgICAgIHx8IChlbnRyeS52ZXJzaW9uTWFkZUJ5ID4+IDggPT09IDAgJiYgZW50cnkuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyA9PT0gMTYpO1xuICAgIGNvbnN0IHByb2NNb2RlID0gdGhpcy5nZXRFeHRyYWN0ZWRNb2RlKG1vZGUsIGlzRGlyKSAmIDBvNzc3O1xuICAgIC8vIGFsd2F5cyBlbnN1cmUgZm9sZGVycyBhcmUgY3JlYXRlZFxuICAgIGNvbnN0IGRlc3REaXIgPSBpc0RpciA/IGRlc3QgOiBwYXRoLmRpcm5hbWUoZGVzdCk7XG4gICAgY29uc3QgbWtkaXJPcHRpb25zID0geyByZWN1cnNpdmU6IHRydWUgfTtcbiAgICBpZiAoaXNEaXIpIHtcbiAgICAgIG1rZGlyT3B0aW9ucy5tb2RlID0gcHJvY01vZGU7XG4gICAgfVxuICAgIGF3YWl0IGZzLm1rZGlyKGRlc3REaXIsIG1rZGlyT3B0aW9ucyk7XG4gICAgaWYgKGlzRGlyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHsoZW50cnk6IHlhdXpsLkVudHJ5KSA9PiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT59ICovXG4gICAgY29uc3Qgb3BlblJlYWRTdHJlYW0gPSBCLnByb21pc2lmeSh0aGlzLnppcGZpbGUub3BlblJlYWRTdHJlYW0uYmluZCh0aGlzLnppcGZpbGUpKTtcbiAgICBjb25zdCByZWFkU3RyZWFtID0gYXdhaXQgb3BlblJlYWRTdHJlYW0oZW50cnkpO1xuICAgIGlmIChpc1N5bWxpbmspIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBhd2FpdCBnZXRTdHJlYW0ocmVhZFN0cmVhbSk7XG4gICAgICBhd2FpdCBmcy5zeW1saW5rKGxpbmssIGRlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBwaXBlbGluZShyZWFkU3RyZWFtLCBmcy5jcmVhdGVXcml0ZVN0cmVhbShkZXN0LCB7IG1vZGU6IHByb2NNb2RlIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYWN0ZWRNb2RlIChlbnRyeU1vZGUsIGlzRGlyKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGVmYXVsdERpck1vZGUsXG4gICAgICBkZWZhdWx0RmlsZU1vZGUsXG4gICAgfSA9IHRoaXMub3B0cztcblxuICAgIGxldCBtb2RlID0gZW50cnlNb2RlO1xuICAgIC8vIFNldCBkZWZhdWx0cywgaWYgbmVjZXNzYXJ5XG4gICAgaWYgKG1vZGUgPT09IDApIHtcbiAgICAgIGlmIChpc0Rpcikge1xuICAgICAgICBpZiAoZGVmYXVsdERpck1vZGUpIHtcbiAgICAgICAgICBtb2RlID0gcGFyc2VJbnQoZGVmYXVsdERpck1vZGUsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIG1vZGUgPSAwbzc1NTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGRlZmF1bHRGaWxlTW9kZSkge1xuICAgICAgICAgIG1vZGUgPSBwYXJzZUludChkZWZhdWx0RmlsZU1vZGUsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIG1vZGUgPSAwbzY0NDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlO1xuICB9XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiBFeHRyYWN0QWxsT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlTmFtZXNFbmNvZGluZyBUaGUgZW5jb2RpbmcgdG8gdXNlIGZvciBleHRyYWN0ZWQgZmlsZSBuYW1lcy5cbiAqIEZvciBaSVAgYXJjaGl2ZXMgY3JlYXRlZCBvbiBNYWNPUyBpdCBpcyB1c3VhbGx5IGV4cGVjdGVkIHRvIGJlIGB1dGY4YC5cbiAqIEJ5IGRlZmF1bHQgaXQgaXMgYXV0b2RldGVjdGVkIGJhc2VkIG9uIHRoZSBlbnRyeSBtZXRhZGF0YSBhbmQgaXMgb25seSBuZWVkZWQgdG8gYmUgc2V0IGV4cGxpY2l0bHlcbiAqIGlmIHRoZSBwYXJ0aWN1bGFyIGFyY2hpdmUgZG9lcyBub3QgY29tcGx5IHRvIHRoZSBzdGFuZGFyZHMsIHdoaWNoIGxlYWRzIHRvIGNvcnJ1cHRlZCBmaWxlIG5hbWVzXG4gKiBhZnRlciBleHRyYWN0aW9uLiBPbmx5IGFwcGxpY2FibGUgaWYgc3lzdGVtIHVuemlwIGJpbmFyeSBpcyBOT1QgYmVpbmcgdXNlZC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHVzZVN5c3RlbVVuemlwIFtmYWxzZV0gSWYgdHJ1ZSwgYXR0ZW1wdCB0byB1c2Ugc3lzdGVtIHVuemlwOyBpZiB0aGlzIGZhaWxzLFxuICogZmFsbGJhY2sgdG8gdGhlIEpTIHVuemlwIGltcGxlbWVudGF0aW9uLlxuICovXG5cbi8qKlxuICogRXh0cmFjdCB6aXBmaWxlIHRvIGEgZGlyZWN0b3J5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcEZpbGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHNvdXJjZSBaSVAgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlc3REaXIgVGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKiBAcGFyYW0ge0V4dHJhY3RBbGxPcHRpb25zfSBbb3B0c11cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEFsbFRvICh6aXBGaWxlUGF0aCwgZGVzdERpciwgb3B0cyA9IC8qKiBAdHlwZSB7RXh0cmFjdEFsbE9wdGlvbnN9ICovKHt9KSkge1xuICBpZiAoIXBhdGguaXNBYnNvbHV0ZShkZXN0RGlyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGFyZ2V0IHBhdGggJyR7ZGVzdERpcn0nIGlzIGV4cGVjdGVkIHRvIGJlIGFic29sdXRlYCk7XG4gIH1cblxuICBhd2FpdCBmcy5ta2RpcihkZXN0RGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIGNvbnN0IGRpciA9IGF3YWl0IGZzLnJlYWxwYXRoKGRlc3REaXIpO1xuICBpZiAob3B0cy51c2VTeXN0ZW1VbnppcCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleHRyYWN0V2l0aFN5c3RlbVVuemlwKHppcEZpbGVQYXRoLCBkaXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oJ3VuemlwIGZhaWxlZDsgZmFsbGluZyBiYWNrIHRvIEpTOiAlcycsIGVyci5zdGRlcnIgfHwgZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuICBjb25zdCBleHRyYWN0b3IgPSBuZXcgWmlwRXh0cmFjdG9yKHppcEZpbGVQYXRoLCB7XG4gICAgLi4ub3B0cyxcbiAgICBkaXIsXG4gIH0pO1xuICBhd2FpdCBleHRyYWN0b3IuZXh0cmFjdCgpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIHN5c3RlbSB1bnppcCAoZS5nLiwgYC91c3IvYmluL3VuemlwYCkuIElmIGF2YWlsYWJsZSwgaXQgaXNcbiAqIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gdGhlIEpTIGltcGxlbWVudGF0aW9uLlxuICogQnkgZGVmYXVsdCBhbGwgZmlsZXMgaW4gdGhlIGRlc3REaXIgZ2V0IG92ZXJyaWRkZW4gaWYgYWxyZWFkeSBleGlzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gemlwRmlsZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIFpJUCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzdERpciBUaGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIuXG4gKiBUaGlzIGZvbGRlciBpcyBleHBlY3RlZCB0byBhbHJlYWR5IGV4aXN0IGJlZm9yZSBleHRyYWN0aW5nIHRoZSBhcmNoaXZlLlxuICovXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0V2l0aFN5c3RlbVVuemlwICh6aXBGaWxlUGF0aCwgZGVzdERpcikge1xuICBjb25zdCBpc1dpbmRvd3NIb3N0ID0gaXNXaW5kb3dzKCk7XG4gIGxldCBleGVjdXRhYmxlUGF0aDtcbiAgdHJ5IHtcbiAgICBleGVjdXRhYmxlUGF0aCA9IGF3YWl0IGdldEV4ZWN1dGFibGVQYXRoKFxuICAgICAgaXNXaW5kb3dzSG9zdCA/ICdwb3dlcnNoZWxsLmV4ZScgOiAndW56aXAnXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgc3lzdGVtIHVuemlwJyk7XG4gIH1cblxuICBpZiAoaXNXaW5kb3dzSG9zdCkge1xuICAgIC8vIG9uIFdpbmRvd3Mgd2UgdXNlIFBvd2VyU2hlbGwgdG8gdW56aXAgZmlsZXNcbiAgICBhd2FpdCBleGVjKGV4ZWN1dGFibGVQYXRoLCBbXG4gICAgICAnLWNvbW1hbmQnLCAnRXhwYW5kLUFyY2hpdmUnLFxuICAgICAgJy1MaXRlcmFsUGF0aCcsIHppcEZpbGVQYXRoLFxuICAgICAgJy1EZXN0aW5hdGlvblBhdGgnLCBkZXN0RGlyLFxuICAgICAgJy1Gb3JjZSdcbiAgICBdKTtcbiAgfSBlbHNlIHtcbiAgICAvLyAtcSBtZWFucyBxdWlldCAobm8gc3Rkb3V0KVxuICAgIC8vIC1vIG1lYW5zIG92ZXJ3cml0ZVxuICAgIC8vIC1kIGlzIHRoZSBkZXN0IGRpclxuICAgIGF3YWl0IGV4ZWMoZXhlY3V0YWJsZVBhdGgsIFtcbiAgICAgICctcScsXG4gICAgICAnLW8nLCB6aXBGaWxlUGF0aCxcbiAgICAgICctZCcsIGRlc3REaXJcbiAgICBdKTtcbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3QgYSBzaW5nbGUgemlwIGVudHJ5IHRvIGEgZGlyZWN0b3J5XG4gKlxuICogQHBhcmFtIHt5YXV6bC5aaXBGaWxlfSB6aXBGaWxlIFRoZSBzb3VyY2UgWklQIHN0cmVhbVxuICogQHBhcmFtIHt5YXV6bC5FbnRyeX0gZW50cnkgVGhlIGVudHJ5IGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzdERpciBUaGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXJcbiAqL1xuYXN5bmMgZnVuY3Rpb24gX2V4dHJhY3RFbnRyeVRvICh6aXBGaWxlLCBlbnRyeSwgZGVzdERpcikge1xuICBjb25zdCBkc3RQYXRoID0gcGF0aC5yZXNvbHZlKGRlc3REaXIsIGVudHJ5LmZpbGVOYW1lKTtcblxuICAvLyBDcmVhdGUgZGVzdCBkaXJlY3RvcnkgaWYgZG9lc24ndCBleGlzdCBhbHJlYWR5XG4gIGlmICgvXFwvJC8udGVzdChlbnRyeS5maWxlTmFtZSkpIHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhkc3RQYXRoKSkge1xuICAgICAgYXdhaXQgZnMubWtkaXJwKGRzdFBhdGgpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIWF3YWl0IGZzLmV4aXN0cyhwYXRoLmRpcm5hbWUoZHN0UGF0aCkpKSB7XG4gICAgYXdhaXQgZnMubWtkaXJwKHBhdGguZGlybmFtZShkc3RQYXRoKSk7XG4gIH1cblxuICAvLyBDcmVhdGUgYSB3cml0ZSBzdHJlYW1cbiAgY29uc3Qgd3JpdGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbShkc3RQYXRoLCB7ZmxhZ3M6ICd3J30pO1xuICBjb25zdCB3cml0ZVN0cmVhbVByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgd3JpdGVTdHJlYW0ub25jZSgnZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgd3JpdGVTdHJlYW0ub25jZSgnZXJyb3InLCByZWplY3QpO1xuICB9KTtcblxuICAvLyBDcmVhdGUgemlwUmVhZFN0cmVhbSBhbmQgcGlwZSBkYXRhIHRvIHRoZSB3cml0ZSBzdHJlYW1cbiAgLy8gKGZvciBzb21lIG9kZCByZWFzb24gQi5wcm9taXNpZnkgZG9lc24ndCB3b3JrIG9uIHppcGZpbGUub3BlblJlYWRTdHJlYW0sIGl0IGNhdXNlcyBhbiBlcnJvciAnY2xvc2VkJylcbiAgY29uc3QgemlwUmVhZFN0cmVhbSA9IGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB6aXBGaWxlLm9wZW5SZWFkU3RyZWFtKGVudHJ5LCAoZXJyLCByZWFkU3RyZWFtKSA9PiBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUocmVhZFN0cmVhbSkpO1xuICB9KTtcbiAgY29uc3QgemlwUmVhZFN0cmVhbVByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgemlwUmVhZFN0cmVhbS5vbmNlKCdlbmQnLCByZXNvbHZlKTtcbiAgICB6aXBSZWFkU3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgfSk7XG4gIHppcFJlYWRTdHJlYW0ucGlwZSh3cml0ZVN0cmVhbSk7XG5cbiAgLy8gV2FpdCBmb3IgdGhlIHppcFJlYWRTdHJlYW0gYW5kIHdyaXRlU3RyZWFtIHRvIGVuZCBiZWZvcmUgcmV0dXJuaW5nXG4gIHJldHVybiBhd2FpdCBCLmFsbChbXG4gICAgemlwUmVhZFN0cmVhbVByb21pc2UsXG4gICAgd3JpdGVTdHJlYW1Qcm9taXNlLFxuICBdKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBaaXBFbnRyeVxuICogQHByb3BlcnR5IHt5YXV6bC5FbnRyeX0gZW50cnkgVGhlIGFjdHVhbCBlbnRyeSBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gZXh0cmFjdEVudHJ5VG8gQW4gYXN5bmMgZnVuY3Rpb24sIHdoaWNoIGFjY2VwdHMgb25lIHBhcmFtZXRlci5cbiAqIFRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIgcGF0aCB0byB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGV4dHJhY3QgdGhlIGVudHJ5LlxuICovXG5cbi8qKlxuICogR2V0IGVudHJpZXMgZm9yIGEgemlwIGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB6aXBGaWxlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgWklQIGZpbGVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uRW50cnkgQ2FsbGJhY2sgd2hlbiBlbnRyeSBpcyByZWFkLlxuICogVGhlIGNhbGxiYWNrIGlzIGV4cGVjdGVkIHRvIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YgWmlwRW50cnkgdHlwZS5cbiAqIFRoZSBpdGVyYXRpb24gdGhyb3VnaCB0aGUgc291cmNlIHppcCBmaWxlIHdpbGwgYmkgdGVybWluYXRlZCBhcyBzb29uIGFzXG4gKiB0aGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gZXF1YWxzIHRvIGBmYWxzZWAuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRFbnRyaWVzICh6aXBGaWxlUGF0aCwgb25FbnRyeSkge1xuICAvLyBPcGVuIGEgemlwIGZpbGUgYW5kIHN0YXJ0IHJlYWRpbmcgZW50cmllc1xuICBjb25zdCB6aXBmaWxlID0gYXdhaXQgb3BlblppcCh6aXBGaWxlUGF0aCwge2xhenlFbnRyaWVzOiB0cnVlfSk7XG4gIGNvbnN0IHppcFJlYWRTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHppcGZpbGUub25jZSgnZW5kJywgcmVzb2x2ZSk7XG4gICAgemlwZmlsZS5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG5cbiAgICAvLyBPbiBlYWNoIGVudHJ5LCBjYWxsICdvbkVudHJ5JyBhbmQgdGhlbiByZWFkIHRoZSBuZXh0IGVudHJ5XG4gICAgemlwZmlsZS5vbignZW50cnknLCBhc3luYyAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IG9uRW50cnkoe1xuICAgICAgICBlbnRyeSxcbiAgICAgICAgZXh0cmFjdEVudHJ5VG86IGFzeW5jIChkZXN0RGlyKSA9PiBhd2FpdCBfZXh0cmFjdEVudHJ5VG8oemlwZmlsZSwgZW50cnksIGRlc3REaXIpXG4gICAgICB9KTtcbiAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB6aXBmaWxlLmVtaXQoJ2VuZCcpO1xuICAgICAgfVxuICAgICAgemlwZmlsZS5yZWFkRW50cnkoKTtcbiAgICB9KTtcbiAgfSk7XG4gIHppcGZpbGUucmVhZEVudHJ5KCk7XG5cbiAgLy8gV2FpdCBmb3IgdGhlIGVudHJpZXMgdG8gZmluaXNoIGJlaW5nIGl0ZXJhdGVkIHRocm91Z2hcbiAgcmV0dXJuIGF3YWl0IHppcFJlYWRTdHJlYW1Qcm9taXNlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIFppcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5jb2RlVG9CYXNlNjQgW2ZhbHNlXSBXaGV0aGVyIHRvIGVuY29kZVxuICogdGhlIHJlc3VsdGluZyBhcmNoaXZlIHRvIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzTWV0ZXJlZCBbdHJ1ZV0gV2hldGhlciB0byBsb2cgdGhlIGFjdHVhbFxuICogYXJjaGl2ZXIgcGVyZm9ybWFuY2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXhTaXplIFsxMDczNzQxODI0XSBUaGUgbWF4aW11bSBzaXplIG9mXG4gKiB0aGUgcmVzdWx0aW5nIGFyY2hpdmUgaW4gYnl0ZXMuIFRoaXMgaXMgc2V0IHRvIDFHQiBieSBkZWZhdWx0LCBiZWNhdXNlXG4gKiBBcHBpdW0gbGltaXRzIHRoZSBtYXhpbXVtIEhUVFAgYm9keSBzaXplIHRvIDFHQi4gQWxzbywgdGhlIE5vZGVKUyBoZWFwXG4gKiBzaXplIG11c3QgYmUgZW5vdWdoIHRvIGtlZXAgdGhlIHJlc3VsdGluZyBvYmplY3QgKHVzdWFsbHkgdGhpcyBzaXplIGlzXG4gKiBsaW1pdGVkIHRvIDEuNCBHQilcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZXZlbCBbOV0gVGhlIGNvbXByZXNzaW9uIGxldmVsLiBUaGUgbWF4aW11bVxuICogbGV2ZWwgaXMgOSAodGhlIGJlc3QgY29tcHJlc3Npb24sIHdvcnN0IHBlcmZvcm1hbmNlKS4gVGhlIG1pbmltdW1cbiAqIGNvbXByZXNzaW9uIGxldmVsIGlzIDAgKG5vIGNvbXByZXNzaW9uKS5cbiAqL1xuXG4vKipcbiAqIENvbnZlcnRzIGNvbnRlbnRzIG9mIGxvY2FsIGRpcmVjdG9yeSB0byBhbiBpbi1tZW1vcnkgLnppcCBidWZmZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBmb2xkZXIgb3IgZmlsZSBiZWluZyB6aXBwZWRcbiAqIEBwYXJhbSB7WmlwT3B0aW9uc30gb3B0cyBaaXBwaW5nIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtQcm9taXNlPEJ1ZmZlcj59IFppcHBlZCAoYW5kIGVuY29kZWQgaWYgYGVuY29kZVRvQmFzZTY0YCBpcyB0cnV0aHkpXG4gKiBjb250ZW50IG9mIHRoZSBzb3VyY2UgcGF0aCBhcyBtZW1vcnkgYnVmZmVyXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHJlYWRpbmcgdGhlIHNvdXJjZVxuICogb3IgdGhlIHNvdXJjZSBpcyB0b28gYmlnXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRvSW5NZW1vcnlaaXAgKHNyY1BhdGgsIG9wdHMgPSAvKiogQHR5cGUge1ppcE9wdGlvbnN9ICovKHt9KSkge1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhzcmNQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCBmaWxlIG9yIGZvbGRlcjogJHtzcmNQYXRofWApO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTWV0ZXJlZCA9IHRydWUsXG4gICAgZW5jb2RlVG9CYXNlNjQgPSBmYWxzZSxcbiAgICBtYXhTaXplID0gMSAqIEdpQixcbiAgICBsZXZlbCA9IDksXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRCdWZmZXJzID0gW107XG4gIGxldCByZXN1bHRCdWZmZXJzU2l6ZSA9IDA7XG4gIC8vIENyZWF0ZSBhIHdyaXRhYmxlIHN0cmVhbSB0aGF0IHppcCBidWZmZXJzIHdpbGwgYmUgc3RyZWFtZWQgdG9cbiAgY29uc3QgcmVzdWx0V3JpdGVTdHJlYW0gPSBuZXcgc3RyZWFtLldyaXRhYmxlKHtcbiAgICB3cml0ZTogKGJ1ZmZlciwgZW5jb2RpbmcsIG5leHQpID0+IHtcbiAgICAgIHJlc3VsdEJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgICAgcmVzdWx0QnVmZmVyc1NpemUgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmIChtYXhTaXplID4gMCAmJiByZXN1bHRCdWZmZXJzU2l6ZSA+IG1heFNpemUpIHtcbiAgICAgICAgcmVzdWx0V3JpdGVTdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgYCArXG4gICAgICAgICAgYGFyY2hpdmUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuICR7dG9SZWFkYWJsZVNpemVTdHJpbmcobWF4U2l6ZSl9YCkpO1xuICAgICAgfVxuICAgICAgbmV4dCgpO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFppcCAnc3JjRGlyJyBhbmQgc3RyZWFtIGl0IHRvIHRoZSBhYm92ZSB3cml0YWJsZSBzdHJlYW1cbiAgY29uc3QgYXJjaGl2ZSA9IGFyY2hpdmVyKCd6aXAnLCB7XG4gICAgemxpYjoge2xldmVsfVxuICB9KTtcbiAgbGV0IHNyY1NpemUgPSBudWxsO1xuICBjb25zdCBiYXNlNjRFbmNvZGVyU3RyZWFtID0gZW5jb2RlVG9CYXNlNjQgPyBuZXcgQmFzZTY0RW5jb2RlKCkgOiBudWxsO1xuICBjb25zdCByZXN1bHRXcml0ZVN0cmVhbVByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcmVzdWx0V3JpdGVTdHJlYW0ub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgICAgaWYgKGJhc2U2NEVuY29kZXJTdHJlYW0pIHtcbiAgICAgICAgYXJjaGl2ZS51bnBpcGUoYmFzZTY0RW5jb2RlclN0cmVhbSk7XG4gICAgICAgIGJhc2U2NEVuY29kZXJTdHJlYW0udW5waXBlKHJlc3VsdFdyaXRlU3RyZWFtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyY2hpdmUudW5waXBlKHJlc3VsdFdyaXRlU3RyZWFtKTtcbiAgICAgIH1cbiAgICAgIGFyY2hpdmUuYWJvcnQoKTtcbiAgICAgIGFyY2hpdmUuZGVzdHJveSgpO1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH0pO1xuICAgIHJlc3VsdFdyaXRlU3RyZWFtLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgIHNyY1NpemUgPSBhcmNoaXZlLnBvaW50ZXIoKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IGFyY2hpdmVTdHJlYW1Qcm9taXNlID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGFyY2hpdmUub25jZSgnZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgYXJjaGl2ZS5vbmNlKCdlcnJvcicsIChlKSA9PiByZWplY3QoXG4gICAgICBuZXcgRXJyb3IoYEZhaWxlZCB0byBhcmNoaXZlICcke3NyY1BhdGh9JzogJHtlLm1lc3NhZ2V9YCkpKTtcbiAgfSk7XG4gIGNvbnN0IHRpbWVyID0gaXNNZXRlcmVkID8gbmV3IFRpbWVyKCkuc3RhcnQoKSA6IG51bGw7XG4gIGlmICgoYXdhaXQgZnMuc3RhdChzcmNQYXRoKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGFyY2hpdmUuZGlyZWN0b3J5KHNyY1BhdGgsIGZhbHNlKTtcbiAgfSBlbHNlIHtcbiAgICBhcmNoaXZlLmZpbGUoc3JjUGF0aCwge1xuICAgICAgbmFtZTogcGF0aC5iYXNlbmFtZShzcmNQYXRoKSxcbiAgICB9KTtcbiAgfVxuICBpZiAoYmFzZTY0RW5jb2RlclN0cmVhbSkge1xuICAgIGFyY2hpdmUucGlwZShiYXNlNjRFbmNvZGVyU3RyZWFtKTtcbiAgICBiYXNlNjRFbmNvZGVyU3RyZWFtLnBpcGUocmVzdWx0V3JpdGVTdHJlYW0pO1xuICB9IGVsc2Uge1xuICAgIGFyY2hpdmUucGlwZShyZXN1bHRXcml0ZVN0cmVhbSk7XG4gIH1cbiAgYXJjaGl2ZS5maW5hbGl6ZSgpO1xuXG4gIC8vIFdhaXQgZm9yIHRoZSBzdHJlYW1zIHRvIGZpbmlzaFxuICBhd2FpdCBCLmFsbChbYXJjaGl2ZVN0cmVhbVByb21pc2UsIHJlc3VsdFdyaXRlU3RyZWFtUHJvbWlzZV0pO1xuXG4gIGlmICh0aW1lcikge1xuICAgIGxvZy5kZWJ1ZyhgWmlwcGVkICR7ZW5jb2RlVG9CYXNlNjQgPyAnYW5kIGJhc2U2NC1lbmNvZGVkICcgOiAnJ31gICtcbiAgICAgIGAnJHtwYXRoLmJhc2VuYW1lKHNyY1BhdGgpfScgYCArXG4gICAgICAoc3JjU2l6ZSA/IGAoJHt0b1JlYWRhYmxlU2l6ZVN0cmluZyhzcmNTaXplKX0pIGAgOiAnJykgK1xuICAgICAgYGluICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc1NlY29uZHMudG9GaXhlZCgzKX1zIGAgK1xuICAgICAgYChjb21wcmVzc2lvbiBsZXZlbDogJHtsZXZlbH0pYCk7XG4gIH1cbiAgLy8gUmV0dXJuIHRoZSBhcnJheSBvZiB6aXAgYnVmZmVycyBjb25jYXRlbmF0ZWQgaW50byBvbmUgYnVmZmVyXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KHJlc3VsdEJ1ZmZlcnMpO1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHdoZXRoZXIgdGhlIGdpdmVuIGZpbGUgaXMgYSB2YWxpZCBaSVAgYXJjaGl2ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlUGF0aCAtIEZ1bGwgcGF0aCB0byB0aGUgZmlsZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhIHZhbGlkIFpJUCBhcmNoaXZlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFzc2VydFZhbGlkWmlwIChmaWxlUGF0aCkge1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke2ZpbGVQYXRofScgZG9lcyBub3QgZXhpc3RgKTtcbiAgfVxuXG4gIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQoZmlsZVBhdGgpO1xuICBpZiAoc2l6ZSA8IDQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke2ZpbGVQYXRofScgaXMgdG9vIHNtYWxsIHRvIGJlIGEgWklQIGFyY2hpdmVgKTtcbiAgfVxuICBjb25zdCBmZCA9IGF3YWl0IGZzLm9wZW4oZmlsZVBhdGgsICdyJyk7XG4gIHRyeSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKFpJUF9NQUdJQy5sZW5ndGgpO1xuICAgIGF3YWl0IGZzLnJlYWQoZmQsIGJ1ZmZlciwgMCwgWklQX01BR0lDLmxlbmd0aCwgMCk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmIChzaWduYXR1cmUgIT09IFpJUF9NQUdJQykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBzaWduYXR1cmUgJyR7c2lnbmF0dXJlfScgb2YgJyR7ZmlsZVBhdGh9JyBgICtcbiAgICAgICAgYGlzIG5vdCBlcXVhbCB0byB0aGUgZXhwZWN0ZWQgWklQIGFyY2hpdmUgc2lnbmF0dXJlICcke1pJUF9NQUdJQ30nYCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLmNsb3NlKGZkKTtcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIFppcENvbXByZXNzaW9uT3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IGxldmVsIFs5XSAtIENvbXByZXNzaW9uIGxldmVsIGluIHJhbmdlIDAuLjlcbiAqIChncmVhdGVyIG51bWJlcnMgbWVhbiBiZXR0ZXIgY29tcHJlc3Npb24sIGJ1dCBsb25nZXIgcHJvY2Vzc2luZyB0aW1lKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgWmlwU291cmNlT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdHRlcm4gWycqKlxcLyonXSAtIEdMT0IgcGF0dGVybiBmb3IgY29tcHJlc3Npb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjd2QgLSBUaGUgc291cmNlIHJvb3QgZm9sZGVyICh0aGUgcGFyZW50IGZvbGRlciBvZlxuICogdGhlIGRlc3RpbmF0aW9uIGZpbGUgYnkgZGVmYXVsdClcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtpZ25vcmVdIC0gVGhlIGxpc3Qgb2YgaWdub3JlZCBwYXR0ZXJuc1xuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcmNoaXZlIGJhc2VkIG9uIHRoZSBnaXZlbiBnbG9iIHBhdHRlcm5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZHN0UGF0aCAtIFRoZSByZXN1bHRpbmcgYXJjaGl2ZSBwYXRoXG4gKiBAcGFyYW0ge1ppcFNvdXJjZU9wdGlvbnN9IHNyYyAtIFNvdXJjZSBvcHRpb25zXG4gKiBAcGFyYW0ge1ppcENvbXByZXNzaW9uT3B0aW9uc30gb3B0cyAtIENvbXByZXNzaW9uIG9wdGlvbnNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGFyY2hpdmVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdG9BcmNoaXZlIChkc3RQYXRoLCBzcmMgPSAvKiogQHR5cGUge1ppcFNvdXJjZU9wdGlvbnN9ICovKHt9KSwgb3B0cyA9IC8qKiBAdHlwZSB7WmlwQ29tcHJlc3Npb25PcHRpb25zfSAqLyh7fSkpIHtcbiAgY29uc3Qge1xuICAgIGxldmVsID0gOSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHtcbiAgICBwYXR0ZXJuID0gJyoqLyonLFxuICAgIGN3ZCA9IHBhdGguZGlybmFtZShkc3RQYXRoKSxcbiAgICBpZ25vcmUgPSBbXSxcbiAgfSA9IHNyYztcbiAgY29uc3QgYXJjaGl2ZSA9IGFyY2hpdmVyKCd6aXAnLCB7IHpsaWI6IHsgbGV2ZWwgfX0pO1xuICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShkc3RQYXRoKTtcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhcmNoaXZlXG4gICAgICAuZ2xvYihwYXR0ZXJuLCB7XG4gICAgICAgIGN3ZCxcbiAgICAgICAgaWdub3JlLFxuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCByZWplY3QpXG4gICAgICAucGlwZShzdHJlYW0pO1xuICAgIHN0cmVhbVxuICAgICAgLm9uKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICAgIGFyY2hpdmUudW5waXBlKHN0cmVhbSk7XG4gICAgICAgIGFyY2hpdmUuYWJvcnQoKTtcbiAgICAgICAgYXJjaGl2ZS5kZXN0cm95KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgIGFyY2hpdmUuZmluYWxpemUoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogRmluZHMgYW5kIG1lbW9pemVzIHRoZSBmdWxsIHBhdGggdG8gdGhlIGdpdmVuIGV4ZWN1dGFibGUuXG4gKiBSZWplY3RzIGlmIGl0IGlzIG5vdCBmb3VuZC5cbiAqL1xuY29uc3QgZ2V0RXhlY3V0YWJsZVBhdGggPSBfLm1lbW9pemUoXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBGdWxsIFBhdGggdG8gdGhlIGV4ZWN1dGFibGVcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldEV4ZWN1dGFibGVQYXRoIChiaW5hcnlOYW1lKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBhd2FpdCBmcy53aGljaChiaW5hcnlOYW1lKTtcbiAgICBsb2cuZGVidWcoYEZvdW5kICclcycgYXQgJyVzJ2AsIGJpbmFyeU5hbWUsIGZ1bGxQYXRoKTtcbiAgICByZXR1cm4gZnVsbFBhdGg7XG4gIH1cbik7XG5cbmV4cG9ydCB7IGV4dHJhY3RBbGxUbywgcmVhZEVudHJpZXMsIHRvSW5NZW1vcnlaaXAsIF9leHRyYWN0RW50cnlUbyxcbiAgYXNzZXJ0VmFsaWRaaXAsIHRvQXJjaGl2ZSB9O1xuZXhwb3J0IGRlZmF1bHQgeyBleHRyYWN0QWxsVG8sIHJlYWRFbnRyaWVzLCB0b0luTWVtb3J5WmlwLCBhc3NlcnRWYWxpZFppcCwgdG9BcmNoaXZlIH07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es6.d.ts","../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/pkg-dir/index.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/basic.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/except.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/mutable.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/merge.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/merge-exclusive.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/require-at-least-one.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/readonly-deep.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/literal-union.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/promisable.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/source/package-json.d.ts","../../../node_modules/read-pkg/node_modules/type-fest/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/read-pkg/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/teen_process/index.d.ts","../../../node_modules/@types/bluebird/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/klaw/index.d.ts","../../../node_modules/@types/mv/index.d.ts","../../../node_modules/@types/ncp/index.d.ts","../../../node_modules/@types/rimraf/index.d.ts","../../../node_modules/sanitize-filename/index.d.ts","../../../node_modules/@types/which/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/shell-quote/index.d.ts","../../../node_modules/@types/pluralize/index.d.ts","../../../node_modules/@types/base64-stream/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/lockfile/index.d.ts","../lib/util.js","../../../node_modules/moment/ts3.1-typings/moment.d.ts","../lib/log-internal.js","../../../node_modules/axios/index.d.ts","../../../node_modules/type-fest/source/primitive.d.ts","../../../node_modules/type-fest/source/typed-array.d.ts","../../../node_modules/type-fest/source/basic.d.ts","../../../node_modules/type-fest/source/observable-like.d.ts","../../../node_modules/type-fest/source/internal.d.ts","../../../node_modules/type-fest/source/except.d.ts","../../../node_modules/type-fest/source/simplify.d.ts","../../../node_modules/type-fest/source/mutable.d.ts","../../../node_modules/type-fest/source/merge.d.ts","../../../node_modules/type-fest/source/merge-exclusive.d.ts","../../../node_modules/type-fest/source/require-at-least-one.d.ts","../../../node_modules/type-fest/source/require-exactly-one.d.ts","../../../node_modules/type-fest/source/require-all-or-none.d.ts","../../../node_modules/type-fest/source/remove-index-signature.d.ts","../../../node_modules/type-fest/source/partial-deep.d.ts","../../../node_modules/type-fest/source/readonly-deep.d.ts","../../../node_modules/type-fest/source/literal-union.d.ts","../../../node_modules/type-fest/source/promisable.d.ts","../../../node_modules/type-fest/source/opaque.d.ts","../../../node_modules/type-fest/source/invariant-of.d.ts","../../../node_modules/type-fest/source/set-optional.d.ts","../../../node_modules/type-fest/source/set-required.d.ts","../../../node_modules/type-fest/source/value-of.d.ts","../../../node_modules/type-fest/source/promise-value.d.ts","../../../node_modules/type-fest/source/async-return-type.d.ts","../../../node_modules/type-fest/source/conditional-keys.d.ts","../../../node_modules/type-fest/source/conditional-except.d.ts","../../../node_modules/type-fest/source/conditional-pick.d.ts","../../../node_modules/type-fest/source/union-to-intersection.d.ts","../../../node_modules/type-fest/source/stringified.d.ts","../../../node_modules/type-fest/source/fixed-length-array.d.ts","../../../node_modules/type-fest/source/multidimensional-array.d.ts","../../../node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../../node_modules/type-fest/source/iterable-element.d.ts","../../../node_modules/type-fest/source/entry.d.ts","../../../node_modules/type-fest/source/entries.d.ts","../../../node_modules/type-fest/source/set-return-type.d.ts","../../../node_modules/type-fest/source/asyncify.d.ts","../../../node_modules/type-fest/source/jsonify.d.ts","../../../node_modules/type-fest/source/schema.d.ts","../../../node_modules/type-fest/source/literal-to-primitive.d.ts","../../../node_modules/type-fest/source/numeric.d.ts","../../../node_modules/type-fest/source/string-key-of.d.ts","../../../node_modules/type-fest/source/utilities.d.ts","../../../node_modules/type-fest/source/split.d.ts","../../../node_modules/type-fest/source/camel-case.d.ts","../../../node_modules/type-fest/source/camel-cased-properties.d.ts","../../../node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/delimiter-case.d.ts","../../../node_modules/type-fest/source/kebab-case.d.ts","../../../node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../../node_modules/type-fest/source/kebab-cased-properties.d.ts","../../../node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/pascal-case.d.ts","../../../node_modules/type-fest/source/pascal-cased-properties.d.ts","../../../node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/snake-case.d.ts","../../../node_modules/type-fest/source/snake-cased-properties.d.ts","../../../node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../../node_modules/type-fest/source/includes.d.ts","../../../node_modules/type-fest/source/screaming-snake-case.d.ts","../../../node_modules/type-fest/source/join.d.ts","../../../node_modules/type-fest/source/trim.d.ts","../../../node_modules/type-fest/source/get.d.ts","../../../node_modules/type-fest/source/last-array-element.d.ts","../../../node_modules/type-fest/source/package-json.d.ts","../../../node_modules/type-fest/source/tsconfig-json.d.ts","../../../node_modules/type-fest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../schema/build/appium-config-schema.d.ts","../../schema/build/index.d.ts","../../types/build/appium-config.d.ts","../../types/build/config.d.ts","../../../node_modules/typescript/lib/typescript.d.ts","../../../node_modules/@wdio/types/build/compiler.d.ts","../../../node_modules/@wdio/types/build/frameworks.d.ts","../../../node_modules/@wdio/types/build/services.d.ts","../../../node_modules/@wdio/types/build/reporters.d.ts","../../../node_modules/@wdio/types/build/options.d.ts","../../../node_modules/@wdio/types/build/capabilities.d.ts","../../../node_modules/@wdio/types/build/clients.d.ts","../../../node_modules/@wdio/types/build/workers.d.ts","../../../node_modules/@wdio/types/build/index.d.ts","../../types/build/capabilities.d.ts","../../types/build/index.d.ts","../lib/logging.js","../lib/logger.js","../lib/timing.js","../lib/fs.js","../lib/system.js","../../../node_modules/resolve-from/index.d.ts","../lib/npm.js","../lib/env.js","../../../node_modules/@jimp/core/types/jimp.d.ts","../../../node_modules/@jimp/core/types/etc.d.ts","../../../node_modules/@jimp/core/types/functions.d.ts","../../../node_modules/@jimp/core/types/utils.d.ts","../../../node_modules/@jimp/core/types/plugins.d.ts","../../../node_modules/@jimp/core/types/index.d.ts","../../../node_modules/@jimp/jpeg/index.d.ts","../../../node_modules/@jimp/png/index.d.ts","../../../node_modules/@jimp/bmp/index.d.ts","../../../node_modules/@jimp/tiff/index.d.ts","../../../node_modules/@jimp/gif/index.d.ts","../../../node_modules/@jimp/types/index.d.ts","../../../node_modules/@jimp/plugin-blit/index.d.ts","../../../node_modules/@jimp/plugin-blur/index.d.ts","../../../node_modules/@jimp/plugin-circle/index.d.ts","../../../node_modules/@jimp/plugin-color/index.d.ts","../../../node_modules/@jimp/plugin-contain/index.d.ts","../../../node_modules/@jimp/plugin-cover/index.d.ts","../../../node_modules/@jimp/plugin-crop/index.d.ts","../../../node_modules/@jimp/plugin-displace/index.d.ts","../../../node_modules/@jimp/plugin-dither/index.d.ts","../../../node_modules/@jimp/plugin-fisheye/index.d.ts","../../../node_modules/@jimp/plugin-flip/index.d.ts","../../../node_modules/@jimp/plugin-gaussian/index.d.ts","../../../node_modules/@jimp/plugin-invert/index.d.ts","../../../node_modules/@jimp/plugin-mask/index.d.ts","../../../node_modules/@jimp/plugin-normalize/index.d.ts","../../../node_modules/@jimp/plugin-print/index.d.ts","../../../node_modules/@jimp/plugin-resize/index.d.ts","../../../node_modules/@jimp/plugin-rotate/index.d.ts","../../../node_modules/@jimp/plugin-scale/index.d.ts","../../../node_modules/@jimp/plugin-shadow/index.d.ts","../../../node_modules/@jimp/plugin-threshold/index.d.ts","../../../node_modules/@jimp/plugins/index.d.ts","../../../node_modules/jimp/types/ts3.1/index.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/pngjs/index.d.ts","../lib/image-util.js","../lib/tempdir.js","../../../node_modules/@types/jsftp/index.d.ts","../../../node_modules/form-data/index.d.ts","../lib/net.js","../../../node_modules/bplist-parser/bplistparser.d.ts","../lib/plist.js","../lib/mkdirp.js","../lib/process.js","../../../node_modules/@types/yauzl/index.d.ts","../../../node_modules/@types/archiver/index.d.ts","../../../node_modules/get-stream/index.d.ts","../lib/zip.js","../lib/node.js","../lib/mjpeg.js","../lib/index.js","../../../node_modules/@types/mocha/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@types/chai-as-promised/index.d.ts"],"fileInfos":["721cec59c3fef87aaf480047d821fb758b3ec9482c4129a54631e6e25e432a31",{"version":"3ac1b83264055b28c0165688fda6dfcc39001e9e7828f649299101c23ad0a0c3","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","2f93dda35dafec68ec217c9ce67f0f4fbbbb030c055ac312641565ad60dd7e26","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"72704b10d97777e15f1a581b73f88273037ef752d2e50b72287bd0a90af64fe6","affectsGlobalScope":true},{"version":"dbb73d4d99be496175cb432c74c2615f78c76f4272f1d83cba11ee0ed6dbddf0","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"5075b36ab861c8c0c45377cb8c96270d7c65f0eeaf105d53fac6850da61f1027","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"e8c9f4e445a489991ca1a4232667de3ac36b07ba75ea335971fbeacf2d26fe67","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"6ea9ab679ea030cf46c16a711a316078e9e02619ebaf07a7fcd16964aba88f2d","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","ca59fe42b81228a317812e95a2e72ccc8c7f1911b5f0c2a032adf41a0161ec5d","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"5e0e877bd76248ec91c8ff110ad95d3241d0640484c81f3f5fb3dffab0cde4d2",{"version":"99113e4c4599427330953ea8c0090f7b540d761cb9f162d39d65a130458feef4","affectsGlobalScope":true},"c58be3e560989a877531d3ff7c9e5db41c5dd9282480ccf197abfcc708a95b8d","4d1462b70f05fd1b16d7d4f78ac195824560a1dd96407de0a1fe964f3ec0e9d4","50d22844db90a0dcd359afeb59dd1e9a384d977b4b363c880b4e65047237a29e","b065ba1b9a52bc541a638fa4b11115644001bcf82a0a0b984b7c1834451bd2b5","cb328633afdbf2115fc1b44d5cf95558ca2bf84a4b36f6ce82a998e198c47bf6","d8b4c196cedbfbdd557ab5d5c609c32d8a77a86ac1a5e7406a06413ab56a1d67","091af8276fbc70609a00e296840bd284a2fe29df282f0e8dae2de9f0a706685f","537aff717746703d2157ec563b5de4f6393ce9f69a84ae62b49e9b6c80b6e587","8b108d831999b4c6b1df9c39cdcc57c059ef19219c441e5b61bca20aabb9f411","8714e4fab09146efd7db2d969cbeb50559225f09f40a2171d7ac122572d0d269","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","720f5916937961481bce84e956040e9d6375d43870762cf47e25fc227f3eee24","d9e55d93aa33fad61bd5c63800972d00ba8879ec5d29f6f3bce67d16d86abc33","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","c544d81603149987796b24cca297c965db427b84b2580fb27e52fb37ddc1f470","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","9eb2875a1e4c583066af7d6194ea8162191b2756e5d87ccb3c562fdf74d06869","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","058b8dd97b7c67b6bf33e7bda7b1e247b019b675d4b6449d14ac002091a8b4f8","89c8a7b88c378663a8124664f2d9b8c2887e186b55aa066edf6d67177ca1aa04","5a30ba65ad753eb2ef65355dbb3011b28b192cb9df2ef0b5f595b51ca7faf353","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","86d425f7fcd8d100dafa6286cc289af88cbb639ecbdbd25c3018a8f0f7b09fe5","9795e0a3a45d5b6f1a791ee54b7c8b58bc931e8900966cea2dff9c5bae56073b","5890be29879d02424b7654f40592915189034948f7a18c5ad121c006d4e92811","0ab49086f10c75a1cb3b18bffe799dae021774146d8a2d5a4bb42dda67b64f9b","81c77839e152b8f715ec67b0a8b910bcc2d6cf916794c3519f8798c40efd12ac","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","464843c00fb3dd4735b28255c5c9fe713f16b8e47a3db09ba1647687440f7aef","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","d0f6d36b2d86f934560c48d8bfdc7ab60c67cfb2ab6dc1916706aa68e83d6dc2","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","c665d5c50c2573aefd98f0ffb12c5583e333ed94294ce6f144a4163a8c84f09b","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"839e0b959028f5385ca8de7b9d9c00d71a5955d52d2c98cb3e488a626f7b90b3","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","945a841f9a591197154c85386bc5a1467d42d325104bb36db51bc566bbb240be","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","3fa48484c65913004d5abb5c0f917b61ea4684f32d05bb28c1ecfa5f05a9ed12","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"dd9ea469d1bfaf589c6a196275d35cb1aa14014707c2c46d920c7b921e8f5bca","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","ebdec596e6c49602efbfe9cee483ff982e998608bd41db07da1feca311eadab4","338bd7c3518b05b4c473971be0e5f8f854aca7cdb00d1b97192c14860f4ebf2f","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","cfaf29b2c2b9a7566aaba8ade813e55863ffdfb88dc30f6d5254efb829256987","b0bc363dbdb9cd5a6772f3ab176ac1adcec1f245c6c546870415ef91008f6004","e021038f8cf781814ad05dd9b2a306976c5f7dc30be3f4596a086a84f2388d18","f4cf5f0ad1cfb0ceebbe4fbe8aaf0aa728e899c99cc36ec6c0c4b8f6e8a84c83","ae02db44606a04880c676f200482d79436e3e8ac48f09307fc06c498e9c9221f","1e737469ef0482a3ca2ab4b98d2e193cc011448ca623299a4c5f38d5d6c1b554","df38da6685578ac3d0e4ce2d20f3d59462ee53959b8263d2532ec9cec48ae098","c0dfe246179c685294cca8ba34f60731ad4095db8c97120e85bf57fc144a7d8c","8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04","1f11b76a4bafdf8acc9734f5678cdd0a27593f43936d0fa1360088b9e1d31947","fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","23c77af9fdadb3569d425dbc7bbf06a118a4b02bd9db14b7abfafc3183d58bb6","4c1c65e0eca4a5050fad71b444515952680aa61cd4c316bcb301cfb619e2ba5a","4051f6311deb0ce6052329eeb1cd4b1b104378fe52f882f483130bea75f92197","f4b9ba2b4f9806c48d0824fbfff3f1de778f0d7a0c7018dda325202f8d39d761","2808645b990069e5f8b5ff14c9f1e6077eb642583c3f7854012d60757f23c70e","cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","4a15fc59b27b65b9894952048be2afc561865ec37606cd0f5e929ee4a102233b",{"version":"744e7c636288493667d553c8f8ebd666ccbc0e715df445a4a7c4a48812f20544","affectsGlobalScope":true},"7e54932a41fec3a9c7e0753e52c8b18cc67b3ffdd01aaacd49b73d638186ee22","af4e1dce65c1820f6fe21bdf2c3931209c539cb498da760f05ab709f2033f2b3","73ab4f2d7964bbad113751c4d13dac7b834407ef4570b50ff67b3b765c07d312","d70d12830ae15bd5967b2b38cb7e24b3ba43bff853e305b33ed519253055ce08","c0618e33d0191171349412c9c7b983bc05081c29c635da9003a6cf7bc5d81746","c974e1ad2639f94de0b566947273e3f3b2dad004c9383bf0ea8df7cf96b1afea","5ab8773f7671da7bafa0f95a5530425a3e8374b8de4f352e64f6dd48c65681ed","bcaa4b2494b205265de37f2b4d5def521055753e8ac8aaabdfb53fd514e2bfb4","2c04fbe9e9b0ca02a0e6a549d21274b72424f3b091416fd63229114c6ac255b7","c19d76cf730f70c239ddcdc84cb78123f43964866e3cedf1ec98f640c5f3ea25","99e9a144144565db9b916035289ee80760c7542170a182312d8c9f4dcca1c276","248957877dde8ba14cd9b8d45947523da23e2fb467646e57cd902a76b2fc693b","1043a791036b9136fe8b3e287b24f14df803a503f6abb3f347b48d1c444a6954","094501dd2107ce40723bbcf30fbc0012631031c3337cbcc2dad153d8d550d7bc","bc1ed67a1d1491918740d86502e5b86369f4b7d6af10ca86340e6df9218ed9c9","55b7d009c3e8bae890063ebbb9c299d14edab7bbe9f98bceb12ef6979b1698fe","c5efedb8f1bd29ca1fd7720a45087344e14d1ea66378ac470450ea00d0f63975","161156b76821d27d22affa815f02d96706aa0861751aece957b5740dd33139ca","4023372ecd33decd9e17cd21272a86403ad60a4a913ccde6b01982a8535db442","d62e0155e4e6eb3d7a799e1fb555bb24ed6ecbebd158f87fc31e98ec6b5fcf73","c38b9f9179364943113b3eb1dd1d86d580dd1b56b68203ced15a013e9e317f29","e157c542921a03c19bafc06a1ae6bfc377359b0d88d8995591a8cdc66d7bf027","491357771c3101332dbd241a58b3733c194a1ed1ca92e371361e702c8849afe2","d1406b0eee2a415d31130b6e8771b6d0eddf70658efbafe9723aad38f58dc63c","b05b738e0e28dfa84e59a038c8287335b6ca9f16c858bd95ed930de0845f18af","dff0fdb7dc8f8ed00db44b493f77b921312ce9ed8493cda4cc82a92e48914756","338aeec8241a5d326cf4afd96408f6ff36b20ff461ee35597bf84a8f707a2745","13b6d7b987a6c306c0f7d27d77136797edc88ac47fd5893c93b8ed51f9912be9","cfa6b71c0cb889d2a210dac350ef928d532cadb26f4035bc405ef03f80b4ce17","4de53c71c9fc54d7fa8870b95b44092ff53eb6fddcfd402e360ac421318f1ca8","1c6c29857deb02e33ec045a67c375eb210a3ea4bc61b5e8078d2fab2ebf7831e","8f36a2e511f634b14983b31199a813b6d91e9f5c8ca1a81c446cfcbe3a8cda45","7e7bf5e592f90ac5784005a7d10f9960d6ff02edebdc18ab87f8cb154d5c16ab","e1b74834e5baec5460bd44dd7c5e389337ebe9eb7903743d1a9dd5b75702ac73","5d4143cf9c0350f01ed6e3d72953c4d22b4abda0a0b2c6d83a595ca061a367a4","9aaf4ee44bdac023b659f1b5e8cfdf56f774edd182c4fec46708d79f6a762298","87b0641dd8bb365de2f97ec5be3ea7aa1bd714ea43f76b6b36039c5dd194e3eb","a47240f5153913c434c66cd660bbcbb01c97f6717756a14c2f59ac7feb49a134","b415d8fc78ef908cc3f02d031e5e9a1cf269dd386212aedd273a0601de175bac","679a500b60fdb879af3ff20dab0bc5937098dd1ea5b75f786c672fde09faaeef","4372b912f51cbf9f0da164599e0934031bff3f5135af1cd6425bd9e384167e0b","5a988bc94b1937ee835a83ae7bb7555a21b8bbcdfd4c8c705d1789d7a8244bc2","0eda42cf7a88e5186bbab20c42eef4cc3a7377da80c71a7bae01f224223f667c","3b2f213b50c0a3abc9ee877b3af6cb7d42bd7939c00801bfc39cb44fb9a4ac05","b484c72c73b4ae0cdee6bfb85f0ae6152b4435b59169fb460044305ef18429cf","d9df799b7d4d7d9a24b201ddffc575b1840e25f1a273650de6eef40f384b6239","ca89e452207fee3233d2cb45c28ad0a4a7e30ddf40b9ac69891dd2242859c6f9","dac79ace008b4b9147644e4d8834b4a62378990e1a1730843ac488fdf6ff5f32","54f6aeeb17ad58793455ad005027bc452b722f31755ac4d15c46bef05f941e58","48fc89daea2775641083563b0671d541dfa464f4aed9ecd6d1e1f61647e759d1","55eb179223f788fcb055cba854b63effc973f7d51cf130ab866fc161c30dd918","03107dc521b6273cf190f0be264b6f69cb43355c24320cc9e760c9ab6a7fdb22","8fb7a5ccc8533b5950772a7722d1f99c846274c7dec01d40c8f96f4fb559a7b8","1a9958339bc9d1092c53a7f13c08d29eac812534c3f61c7c7a2157ef558131a1","30137eda48ba9ccce5dfd6fa79dea587739cddfab6e280fc85f019d21488b393","e6c5a9682cb3328d41eb7f25fa231075f29307319a9d7ac679e52a7b74b6539c","0617c0c6bc0e35226b6000ef3e47fc45697348d33c305e61484b7d264f4737da","73a5569de4e23f58160c68e74b48587950b118d0105f9d71b86ae40fa5c258c4","16d7f5de02bfb62a7a69ef9497c790ed4a8119ce159b14cb763f2432298286e8","c79b44c1518bd3d1ad75aa82f2e54be1bde86cd7663624874c4047a8fc97f833","047f4ee6646463fb4fa44cd6d8083342713a4704693ce64942e77f62a1da0c38","1ccd27d6127a24d5abe36413f68b5e928c9e6f2cbab9825898379ecf18108dc2","baa32aa38cd8ac7128c5a5817a32d8dc8fd8d635a647b16a12485ae27df107ed","2641aff32336e35a5b702aa2d870a0891da29dc1c19ae48602678e2050614041","afb49d6869006d1ecab1c821fffaba08ff9fcbee6a23d1c25b1d894f7e2a727e","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","7d9161ec720909c6abf2957b3f62d1ab27f2623e380a39d147715d43d8abd414","6101949945c252c5706da566e06b7be2a4cc48e73f25165add3c081d0dd37578","a983207132524290a38f8c5e3e1799c4b3372c66835ee1a9c207f42fc5220d88","3859648477a239f3a210119e53b0d3b455b9760bf38bed50a933326ae00f0c83","ba00bb2ada9a5b7e0ab18c7282c0161f5af809112e4439b35c8b3853f7d436a7","a47b38aac630271c68667d717c865e4c98200bd90b4a8859d3f07460da09adec","46ab84953b0abb33ae9a42af24c97883e68f1080f084ffb9436181b3f147776c","d97f055b516d74e0c0bace388e6bbe3bc386a9599a1d1862ba8a669e892a1d2a","dda8410786fe1a473b420c6b95ab797b3cdac5705806ada1e062754b13291e79","60a4f4d1acdf72f3f07b9750884ca59e0d0333f016c071cb97215132c0625e67","7edae9abf00228304f215d24f9c1d5e87b6fd09e1f0eebebe5348772c2d7afd3","db412fc192357cd4bff3e93e79030ea404b7d2cf8c089d2fe9d53ba010f1a916","7bc97e823dd70d66e9640998837ca0aad3480b415035dbd2074e3a450166e221",{"version":"aef0597f694334e5da630438a38b966d7da7b5265af8f0f3685d1baf42df5178","affectsGlobalScope":true},"10487580175f86d0789473002b4b6e6606f9a4d7d3965f91066361aa8629297a","7b98187f36117de7c6be031cd0fecd133a1965da7e65f995fb1e329b9b892902","b45730487883ec6850375c9e181ad3b74d2b7f2e7d975d50bdb8f270fa5a043f","91d5f63672648893170c6bf429124835f2571608be77e5cc2805f8e83f3c6530","72060cccb0607a3fa6cd94bc1b3fb5bf9cf5226375116c76b76352f81f28f698","85ac209382944c6744662d1ba2fe270da45646df8181731a3c6882d15c243d80","c7ffd062248fe9da28345900ea7f23458117ea93fc46a49e295be92771f6f774","a5cd2e379198aa40fb10141d5e8273cc22b09bff6b8c3cd982b651fdd8d5d999","d54df4b7e4112c96e67f30ef55226b143ab0f4d9b8be8c6a77339988c8a570bb","c9af2a1777deec54f6f918c7cd0c074058c022ce2f67a2c7fc59d721ff08dfa0","61c19bbc816b7685a7f7c90928b978fd384820471bed4eb3c8a8d2f2c6d6f51b","81cba1ca948d7a158b75d9bf342955793576687c61930f9d87a331a968c820bc","ac26e1df718b688cb69170ef4a10c4615796af3042dc4a2d533b295095052142","e5435a253e31a74a5ba34cddd2983c2b6e7798be830cf9896656f3dd02d513a3","c58c3df82dbbac85d6cbbfb6ece2a425c125db04ef0ceb3f034d33f6258a595b","107c1b5064b01db7a55616d09c5b6c278cd402c6afb82fcbf95fe28b48920d22","616293f491f8f8038be5cc29418493ba333e6e98820b0e85a6bf02a333667eb8","e32df6324918608e0d404ed125e7f2429a21315830f81d15a22958e53c3bbe97","0f6dc41bab0e1f96f70f46d797644d0d32a491e34a390e3411f61ecbbef3159b","07d406e2b9185f08617234e5d1307789c202e99159f3aa1a13670df39589a2fe","6f690985c908fd2d566f694394016be3e757fb7094e1e3d8be8545813af0453f","cf34998d6c868eb5d814521523731767ceed7d00bddaf40f82f89ef861c411bf","0298fb593e400ab7d61366fad5e84399f224bee4bb1cd3dc0cfaae0e2929c3d7","6adab4f1c0c67ce871828183137449e443e17a4142529a32b22f189f3c737af6","1be04a4005e2b7f5b2688e2d4de704ae68c9d95ebacc0367b8b5730bd8c50fb1","83c2f5af37e6d351b3d2f6824c8c0fe85361e2640035bef7c9e56a5dfeedcd35","101b82e4cc6bc4230c4c764ce8f28d0841a665c38f7c1a40981b2727ebc1bf3c","9c7efe7cc60262099e1f7bb4fbc6d0014df273c9049e744ffb484e6761a7e2ad","259b9513ebf3c844555adec1e27878aaa9e057046f8163fcbb9f3b8a8495440b","0634e12db1decbf3edc562dcf8e2b7f4affe4919a21005d6bea90aa9532612aa","3c464b3eecdf5cd990dcd882a04608f4ae29b99fc24ffbff970e340ac5d4eef1","6daca098a3cf1585848a1464458143442ef8042470cb975ef7ab360afa7651b6","c7b5b995bd17d27758d13f8d200d9748d8fcb5491dd5593a4e840e5abdd4e0c3","a8d4833b2b4896c44af60626a844a086c8120807cf2e6a39d2dc80ab5d1af972","40156b6e614fe0b0aa4af9c21a0157eb84758e572ae700788ff9d436fae78c2b","f0867230a5838be63be92c9480a65f1d075eec34683212e080002760a6174c83","098d6936c459f18218ad71cde5aa25562a74461701c3551c544aecfd2c6226e7","405dc951dda9d1ba88aa742a04541a749973bafa7873f1b49c3065a6dc05e170","fc9091f36b50dfc7e47b6183bd7b4294a20878e1d826f38f44e7053d403358ed","4c846ba0a980408c10c12ed8358bcabdb8ca97aee0bb8869becaea412d6e89bb","ed995ca53b2c1b6bc1555bbee8bc12ea290b2117d89dc1c27c1333f8c3a97d35","26a8c45aaa7c9b7cb356b565f880295b5a94b14f0c348b41dd776cbeab9f06e1","a18ab8a8420f372aab81c57e9eb3b0c29a8a7760eab40328765d65a3d2dff5ac","15465dcb7504e00902baf1c1bf1195c35a20612a300fcd8482836c9319af2d1b","762539fa7b805a2ca94de8b9587db0dfe12ae440848678d028707b70f31acced","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","0b6a0b628776a3e3a4aeeba090438a26e7ffa15373ce658452c78c1f2254665d","934e2a9cc6f61a82269f390402827a28a5de9f2ade07603bcf92134214c4dd2a","2bac9466ca6227d8fdce285bea0f473b7924984eeb18519e5d1ee7e231c22ecf","491d631d04b1bca12bf663c8b62fadf91844c30fdff51f4cc6cc5afffc8c7544","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","c1fe7224342355400121d582ad64467612ce184ff6df1582cb4ea4dbccfcd415","a7edd01c38e694e2a4c0173fcb00d16b7b0b629de715e9576f7a38d2a262e074","99227d1eefa49ccb1813db0b9ec752b5f4caddae4aad450067f6762a1eaccce3","519f270a040eccbf6531e682c23f12a48110870740db895e0b08131280bb0d49","49e3e8d0fa8407fec0c3b429dfbb1d84b43a0ac9d4de84af32fc1cc8f9f7da32","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c","51440322bec180cf452ce474b4f69b993b4eb491fecf47abd958d3342747d6b0","9167feffe2876d879d71a1c0b107b5a354330b4ac0b35bd3b7e007cb886d853a","f377fd0eea3cf0272e6cee69b0ee29c848042f028c8a648275a88d5143181f9c","bb6819688d78130db305571c6b968cf08206c055bda45fb1eaa520000815cd5d","c2bebd690f373f972868659fe667b6bde770d4dcd2d4a04405bfe143559e26e6","15a7ac4d078ef2874c91cdcb1520b7bf2ae42dcccd0c0adb23fa1ef017682fd9",{"version":"30bf01dd2e284098445264c8d71c608890cc11c142f36d0193aa655bdc0a40cb","affectsGlobalScope":true},{"version":"c8747693e5872ad5ef3aa016731a06915e1c34dae987829d9aa5bd40c7a2c54b","affectsGlobalScope":true},"f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","24a09dc3e07d69b0a224dbd14b2994c40d1efd0954e759004b61b9e683dabe5f",{"version":"0fd3b5704bf037608646df5aa053fd06819ff69302ff6ada9736c300f79df852","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"module":5,"outDir":"./","removeComments":false,"rootDir":"..","strictNullChecks":true,"target":2},"fileIdsList":[[165,292],[165,287],[165,287,288,289,290,291],[165,288],[165,288,290],[165,291],[165,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319],[165,293,294,295,296,297],[138,154,165,170,176],[154,165,172],[165],[165,341],[137,138,165,172,175],[137,145,165,172],[138,154,165,172],[55,57,58,59,60,61,62,63,64,65,66,67,165],[55,56,58,59,60,61,62,63,64,65,66,67,165],[56,57,58,59,60,61,62,63,64,65,66,67,165],[55,56,57,59,60,61,62,63,64,65,66,67,165],[55,56,57,58,60,61,62,63,64,65,66,67,165],[55,56,57,58,59,61,62,63,64,65,66,67,165],[55,56,57,58,59,60,62,63,64,65,66,67,165],[55,56,57,58,59,60,61,63,64,65,66,67,165],[55,56,57,58,59,60,61,62,64,65,66,67,165],[55,56,57,58,59,60,61,62,63,65,66,67,165],[55,56,57,58,59,60,61,62,63,64,66,67,165],[55,56,57,58,59,60,61,62,63,64,65,67,165],[55,56,57,58,59,60,61,62,63,64,65,66,165],[138,165,172],[122,165],[125,165],[126,131,165],[127,137,138,145,154,164,165],[127,128,137,145,165],[129,165],[130,131,138,146,165],[131,154,161,165],[132,134,137,145,165],[133,165],[134,135,165],[136,137,165],[137,165],[137,138,139,154,164,165],[137,138,139,154,165],[140,145,154,164,165],[137,138,140,141,145,154,161,164,165],[140,142,154,161,164,165],[122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171],[137,143,165],[144,164,165],[134,137,145,154,165],[146,165],[147,165],[125,148,165],[149,163,165,169],[150,165],[151,165],[137,152,165],[152,153,165,167],[137,154,155,156,165],[154,156,165],[154,155,165],[157,165],[158,165],[137,159,160,165],[159,160,165],[131,145,161,165],[162,165],[145,163,165],[126,140,151,164,165],[131,165],[154,165,166],[165,167],[165,168],[126,131,137,139,148,154,164,165,167,169],[154,165,170],[154,165,170,172],[138,165,172,176],[82,121,165],[82,106,121,165],[121,165],[82,165],[82,107,121,165],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,165],[107,121,165],[165,341,343],[165,342],[127,137,164,165,172],[137,154,165,172],[165,272],[165,273],[165,267],[165,269,270,271,272,273,274,275],[140,142,164,165,172,268,270,271,273],[137,138,165,172],[165,172,269,272,273],[137,165,172,272,273],[140,154,165,172],[165,292,298,320],[79,80,165],[69,70,71,72,73,74,75,76,77,78,165],[69,165],[70,165],[79,165],[165,193,194,195,196,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260],[165,216],[165,216,229],[165,236,237],[165,238],[165,198,218],[165,218],[165,236],[165,241],[165,227],[165,197],[165,235,236,237],[165,193],[165,211],[165,195],[165,245],[165,243],[165,198,199],[165,209],[165,247],[165,198],[165,241,250,253],[165,262],[165,263],[67,68,81,146,147,165,285],[67,68,81,131,138,147,165,174,176,177,178,179,180,181,182,189,280,281],[67,126,165,174,321,323],[165,189,279,281,282,283,285,286,324,325,328,330,331,332,336,337,338],[67,165,282],[165,279],[67,165,183,189,190,191,278],[67,154,165,174,192,280,324,337],[165,282],[67,165,174,189,192,280,281,282,326,327],[67,147,165,173,187,280,283],[121,147,165,173,189,261,282,283,284,286],[67,165,280,282,329],[165,173],[67,146,165,173],[130,146,147,165,280,282],[67,165],[67,121,146,147,154,165,174,184,185,186,187,188,282],[67,138,147,154,165,173,174,186,189,280,281,282,283,333,334,335],[165,276],[165,264,265],[137,140,165,172,183,192,261,265,266,277]],"referencedMap":[[295,1],[288,2],[289,2],[292,3],[287,4],[291,5],[290,6],[297,1],[293,1],[299,1],[300,1],[301,1],[302,1],[303,1],[304,1],[305,1],[306,1],[307,1],[308,1],[309,1],[310,1],[311,1],[312,1],[313,1],[314,1],[315,1],[316,1],[317,1],[318,1],[319,1],[320,7],[294,1],[296,1],[298,8],[334,9],[186,10],[174,11],[345,12],[341,11],[176,13],[326,14],[262,11],[177,15],[188,11],[56,16],[57,17],[55,18],[58,19],[59,20],[60,21],[61,22],[62,23],[63,24],[64,25],[65,26],[66,27],[67,28],[175,11],[340,11],[178,11],[179,29],[122,30],[123,30],[125,31],[126,32],[127,33],[128,34],[129,35],[130,36],[131,37],[132,38],[133,39],[134,40],[135,40],[136,41],[137,42],[138,43],[139,44],[124,11],[171,11],[140,45],[141,46],[142,47],[172,48],[143,49],[144,50],[145,51],[146,52],[147,53],[148,54],[149,55],[150,56],[151,57],[152,58],[153,59],[154,60],[156,61],[155,62],[157,63],[158,64],[159,65],[160,66],[161,67],[162,68],[163,69],[164,70],[165,71],[166,72],[167,73],[168,74],[169,75],[170,76],[80,11],[183,42],[185,11],[323,77],[180,78],[106,79],[107,80],[82,81],[85,81],[104,79],[105,79],[95,82],[94,82],[92,79],[87,79],[100,79],[98,79],[102,79],[86,79],[99,79],[103,79],[88,79],[89,79],[101,79],[83,79],[90,79],[91,79],[93,79],[97,79],[108,83],[96,79],[84,79],[121,84],[120,11],[115,83],[117,85],[116,83],[109,83],[110,83],[112,83],[114,83],[118,85],[119,85],[111,85],[113,85],[184,11],[344,86],[343,87],[342,11],[173,88],[187,11],[182,11],[333,89],[273,90],[274,91],[268,92],[269,11],[276,93],[272,94],[271,95],[270,96],[275,97],[192,11],[329,11],[322,11],[327,98],[335,10],[321,99],[190,11],[68,11],[81,100],[79,101],[69,11],[70,11],[76,102],[73,11],[72,103],[71,11],[78,104],[77,11],[75,102],[74,103],[284,11],[181,11],[261,105],[217,106],[230,107],[195,11],[238,108],[240,109],[239,109],[219,110],[218,11],[220,111],[241,112],[245,113],[243,113],[228,114],[227,11],[198,115],[223,11],[257,116],[253,115],[197,117],[212,118],[226,11],[255,11],[231,119],[242,113],[246,120],[244,121],[258,11],[233,11],[209,117],[202,11],[201,122],[224,115],[225,115],[200,122],[234,11],[196,11],[211,11],[259,123],[207,115],[247,109],[249,124],[248,124],[193,11],[210,11],[216,11],[208,115],[206,11],[205,11],[203,125],[204,11],[232,11],[254,126],[213,122],[214,122],[229,11],[199,11],[250,113],[252,120],[251,121],[237,11],[235,11],[222,11],[256,11],[260,11],[194,11],[221,11],[236,11],[215,11],[12,11],[13,11],[17,11],[16,11],[3,11],[18,11],[19,11],[20,11],[21,11],[22,11],[23,11],[24,11],[25,11],[4,11],[5,11],[29,11],[26,11],[27,11],[28,11],[30,11],[31,11],[32,11],[6,11],[33,11],[34,11],[35,11],[36,11],[7,11],[37,11],[38,11],[39,11],[40,11],[8,11],[45,11],[41,11],[42,11],[43,11],[44,11],[9,11],[49,11],[46,11],[47,11],[48,11],[50,11],[10,11],[51,11],[52,11],[53,11],[2,11],[1,11],[11,11],[54,11],[15,11],[14,11],[267,11],[263,127],[264,128],[286,129],[282,130],[324,131],[339,132],[191,133],[280,134],[279,135],[338,136],[331,137],[328,138],[337,139],[285,140],[330,141],[332,142],[283,143],[325,144],[281,145],[189,146],[336,147],[265,11],[277,148],[266,149],[278,150]],"exportedModulesMap":[[295,1],[288,2],[289,2],[292,3],[287,4],[291,5],[290,6],[297,1],[293,1],[299,1],[300,1],[301,1],[302,1],[303,1],[304,1],[305,1],[306,1],[307,1],[308,1],[309,1],[310,1],[311,1],[312,1],[313,1],[314,1],[315,1],[316,1],[317,1],[318,1],[319,1],[320,7],[294,1],[296,1],[298,8],[334,9],[186,10],[174,11],[345,12],[341,11],[176,13],[326,14],[262,11],[177,15],[188,11],[56,16],[57,17],[55,18],[58,19],[59,20],[60,21],[61,22],[62,23],[63,24],[64,25],[65,26],[66,27],[67,28],[175,11],[340,11],[178,11],[179,29],[122,30],[123,30],[125,31],[126,32],[127,33],[128,34],[129,35],[130,36],[131,37],[132,38],[133,39],[134,40],[135,40],[136,41],[137,42],[138,43],[139,44],[124,11],[171,11],[140,45],[141,46],[142,47],[172,48],[143,49],[144,50],[145,51],[146,52],[147,53],[148,54],[149,55],[150,56],[151,57],[152,58],[153,59],[154,60],[156,61],[155,62],[157,63],[158,64],[159,65],[160,66],[161,67],[162,68],[163,69],[164,70],[165,71],[166,72],[167,73],[168,74],[169,75],[170,76],[80,11],[183,42],[185,11],[323,77],[180,78],[106,79],[107,80],[82,81],[85,81],[104,79],[105,79],[95,82],[94,82],[92,79],[87,79],[100,79],[98,79],[102,79],[86,79],[99,79],[103,79],[88,79],[89,79],[101,79],[83,79],[90,79],[91,79],[93,79],[97,79],[108,83],[96,79],[84,79],[121,84],[120,11],[115,83],[117,85],[116,83],[109,83],[110,83],[112,83],[114,83],[118,85],[119,85],[111,85],[113,85],[184,11],[344,86],[343,87],[342,11],[173,88],[187,11],[182,11],[333,89],[273,90],[274,91],[268,92],[269,11],[276,93],[272,94],[271,95],[270,96],[275,97],[192,11],[329,11],[322,11],[327,98],[335,10],[321,99],[190,11],[68,11],[81,100],[79,101],[69,11],[70,11],[76,102],[73,11],[72,103],[71,11],[78,104],[77,11],[75,102],[74,103],[284,11],[181,11],[261,105],[217,106],[230,107],[195,11],[238,108],[240,109],[239,109],[219,110],[218,11],[220,111],[241,112],[245,113],[243,113],[228,114],[227,11],[198,115],[223,11],[257,116],[253,115],[197,117],[212,118],[226,11],[255,11],[231,119],[242,113],[246,120],[244,121],[258,11],[233,11],[209,117],[202,11],[201,122],[224,115],[225,115],[200,122],[234,11],[196,11],[211,11],[259,123],[207,115],[247,109],[249,124],[248,124],[193,11],[210,11],[216,11],[208,115],[206,11],[205,11],[203,125],[204,11],[232,11],[254,126],[213,122],[214,122],[229,11],[199,11],[250,113],[252,120],[251,121],[237,11],[235,11],[222,11],[256,11],[260,11],[194,11],[221,11],[236,11],[215,11],[12,11],[13,11],[17,11],[16,11],[3,11],[18,11],[19,11],[20,11],[21,11],[22,11],[23,11],[24,11],[25,11],[4,11],[5,11],[29,11],[26,11],[27,11],[28,11],[30,11],[31,11],[32,11],[6,11],[33,11],[34,11],[35,11],[36,11],[7,11],[37,11],[38,11],[39,11],[40,11],[8,11],[45,11],[41,11],[42,11],[43,11],[44,11],[9,11],[49,11],[46,11],[47,11],[48,11],[50,11],[10,11],[51,11],[52,11],[53,11],[2,11],[1,11],[11,11],[54,11],[15,11],[14,11],[267,11],[263,127],[264,128],[286,129],[282,130],[324,131],[339,132],[191,133],[280,134],[279,135],[338,136],[331,137],[328,138],[337,139],[285,140],[330,141],[332,142],[283,143],[325,144],[281,145],[189,146],[336,147],[265,11],[277,148],[266,149],[278,150]],"semanticDiagnosticsPerFile":[295,288,289,292,287,291,290,297,293,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,294,296,298,334,186,174,345,341,176,326,262,177,188,56,57,55,58,59,60,61,62,63,64,65,66,67,175,340,178,179,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,124,171,140,141,142,172,143,144,145,146,147,148,149,150,151,152,153,154,156,155,157,158,159,160,161,162,163,164,165,166,167,168,169,170,80,183,185,323,180,106,107,82,85,104,105,95,94,92,87,100,98,102,86,99,103,88,89,101,83,90,91,93,97,108,96,84,121,120,115,117,116,109,110,112,114,118,119,111,113,184,344,343,342,173,187,182,333,273,274,268,269,276,272,271,270,275,192,329,322,327,335,321,190,68,81,79,69,70,76,73,72,71,78,77,75,74,284,181,261,217,230,195,238,240,239,219,218,220,241,245,243,228,227,198,223,257,253,197,212,226,255,231,242,246,244,258,233,209,202,201,224,225,200,234,196,211,259,207,247,249,248,193,210,216,208,206,205,203,204,232,254,213,214,229,199,250,252,251,237,235,222,256,260,194,221,236,215,12,13,17,16,3,18,19,20,21,22,23,24,25,4,5,29,26,27,28,30,31,32,6,33,34,35,36,7,37,38,39,40,8,45,41,42,43,44,9,49,46,47,48,50,10,51,52,53,2,1,11,54,15,14,267,263,264,286,282,324,339,191,280,279,338,331,328,337,285,330,332,283,325,281,189,336,265,277,266,278]},"version":"4.6.3"}
|
package/lib/fs.js
CHANGED
|
@@ -11,7 +11,7 @@ import ncp from 'ncp';
|
|
|
11
11
|
import path from 'path';
|
|
12
12
|
import pkgDir from 'pkg-dir';
|
|
13
13
|
import readPkg from 'read-pkg';
|
|
14
|
-
import
|
|
14
|
+
import rimrafIdx from 'rimraf';
|
|
15
15
|
import sanitize from 'sanitize-filename';
|
|
16
16
|
import which from 'which';
|
|
17
17
|
import log from './logger';
|
|
@@ -48,13 +48,13 @@ const fs = {
|
|
|
48
48
|
* Remove a directory and all its contents, recursively
|
|
49
49
|
* @todo Replace with `rm()` from `fs.promises` when Node.js v12 support is dropped.
|
|
50
50
|
*/
|
|
51
|
-
rimraf: /** @type {(dirpath: string, opts?: rimraf.Options) => Promise<void>} */(B.promisify(
|
|
51
|
+
rimraf: /** @type {(dirpath: string, opts?: import('rimraf').Options) => Promise<void>} */(B.promisify(rimrafIdx)),
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
* Alias of {@linkcode
|
|
54
|
+
* Alias of {@linkcode rimrafIdx.sync}
|
|
55
55
|
* @todo Replace with `rmSync()` from `fs` when Node.js v12 support is dropped.
|
|
56
56
|
*/
|
|
57
|
-
rimrafSync:
|
|
57
|
+
rimrafSync: rimrafIdx.sync,
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
|
|
@@ -280,6 +280,7 @@ const fs = {
|
|
|
280
280
|
/**
|
|
281
281
|
* Warning: this is a promisified {@linkcode open fs.open}.
|
|
282
282
|
* It resolves w/a file descriptor instead of a {@linkcode fsPromises.FileHandle FileHandle} object, as {@linkcode fsPromises.open} does. Use {@linkcode fs.openFile} if you want a `FileHandle`.
|
|
283
|
+
* @type {(path: import('fs').PathLike, flags: import('fs').OpenMode, mode?: import('fs').Mode) => Promise<number>}
|
|
283
284
|
*/
|
|
284
285
|
open: B.promisify(open),
|
|
285
286
|
openFile: fsPromises.open,
|
|
@@ -333,3 +334,7 @@ export default fs;
|
|
|
333
334
|
* @return {boolean} return true if you want to stop walking
|
|
334
335
|
*/
|
|
335
336
|
|
|
337
|
+
/**
|
|
338
|
+
* @typedef {import('glob')} glob
|
|
339
|
+
* @typedef {import('mv')} mv
|
|
340
|
+
*/
|
package/lib/image-util.js
CHANGED
|
@@ -15,7 +15,7 @@ const { MIME_JPEG, MIME_PNG, MIME_BMP } = Jimp;
|
|
|
15
15
|
*
|
|
16
16
|
* @param {Buffer|string} data - binary image buffer or base64-encoded image
|
|
17
17
|
* string
|
|
18
|
-
* @returns {
|
|
18
|
+
* @returns {Promise<AppiumJimp>} - the jimp image object
|
|
19
19
|
*/
|
|
20
20
|
async function getJimpImage (data) {
|
|
21
21
|
return await new B((resolve, reject) => {
|
|
@@ -26,15 +26,19 @@ async function getJimpImage (data) {
|
|
|
26
26
|
if (_.isString(data)) {
|
|
27
27
|
data = Buffer.from(data, 'base64');
|
|
28
28
|
}
|
|
29
|
-
new Jimp(data,
|
|
29
|
+
new Jimp(data,
|
|
30
|
+
/**
|
|
31
|
+
* @param {Error?} err
|
|
32
|
+
* @param {AppiumJimp} imgObj
|
|
33
|
+
*/
|
|
34
|
+
(err, imgObj) => {
|
|
30
35
|
if (err) {
|
|
31
36
|
return reject(err);
|
|
32
37
|
}
|
|
33
38
|
if (!imgObj) {
|
|
34
39
|
return reject(new Error('Could not create jimp image from that data'));
|
|
35
40
|
}
|
|
36
|
-
imgObj.
|
|
37
|
-
imgObj.getBuffer = B.promisify(imgObj._getBuffer, {context: imgObj});
|
|
41
|
+
imgObj.getBuffer = B.promisify(imgObj.getBuffer.bind(imgObj), {context: imgObj});
|
|
38
42
|
resolve(imgObj);
|
|
39
43
|
});
|
|
40
44
|
});
|
|
@@ -45,7 +49,7 @@ async function getJimpImage (data) {
|
|
|
45
49
|
*
|
|
46
50
|
* @param {string} base64Image The string with base64 encoded image
|
|
47
51
|
* @param {Region} rect The selected region of image
|
|
48
|
-
* @return {string} base64 encoded string of cropped image
|
|
52
|
+
* @return {Promise<string>} base64 encoded string of cropped image
|
|
49
53
|
*/
|
|
50
54
|
async function cropBase64Image (base64Image, rect) {
|
|
51
55
|
const image = await base64ToImage(base64Image);
|
|
@@ -57,7 +61,7 @@ async function cropBase64Image (base64Image, rect) {
|
|
|
57
61
|
* Create a pngjs image from given base64 image
|
|
58
62
|
*
|
|
59
63
|
* @param {string} base64Image The string with base64 encoded image
|
|
60
|
-
* @return {PNG} The image object
|
|
64
|
+
* @return {Promise<PNG>} The image object
|
|
61
65
|
*/
|
|
62
66
|
async function base64ToImage (base64Image) {
|
|
63
67
|
const imageBuffer = Buffer.from(base64Image, 'base64');
|
|
@@ -76,7 +80,7 @@ async function base64ToImage (base64Image) {
|
|
|
76
80
|
* Create a base64 string for given image object
|
|
77
81
|
*
|
|
78
82
|
* @param {PNG} image The image object
|
|
79
|
-
* @return {string} The string with base64 encoded image
|
|
83
|
+
* @return {Promise<string>} The string with base64 encoded image
|
|
80
84
|
*/
|
|
81
85
|
async function imageToBase64 (image) {
|
|
82
86
|
return await new B((resolve, reject) => {
|
|
@@ -138,3 +142,15 @@ export {
|
|
|
138
142
|
cropBase64Image, base64ToImage, imageToBase64, cropImage,
|
|
139
143
|
getJimpImage, MIME_JPEG, MIME_PNG, MIME_BMP
|
|
140
144
|
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @typedef {Omit<Jimp,'getBuffer'> & {getBuffer: Jimp['getBufferAsync']}} AppiumJimp
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @typedef Region
|
|
152
|
+
* @property {number} left
|
|
153
|
+
* @property {number} top
|
|
154
|
+
* @property {number} width
|
|
155
|
+
* @property {number} height
|
|
156
|
+
*/
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as tempDir from './tempdir';
|
|
2
2
|
import * as system from './system';
|
|
3
3
|
import * as util from './util';
|
|
4
|
-
import
|
|
4
|
+
import { fs } from './fs';
|
|
5
5
|
import * as net from './net';
|
|
6
6
|
import * as plist from './plist';
|
|
7
|
-
import
|
|
7
|
+
import { mkdirp } from './mkdirp';
|
|
8
8
|
import * as logger from './logging';
|
|
9
9
|
import * as process from './process';
|
|
10
10
|
import * as zip from './zip';
|
|
@@ -16,13 +16,7 @@ import * as env from './env';
|
|
|
16
16
|
|
|
17
17
|
export { npm } from './npm';
|
|
18
18
|
|
|
19
|
-
const { fs } = fsIndex;
|
|
20
19
|
const { cancellableDelay } = util;
|
|
21
|
-
/**
|
|
22
|
-
* Alias for `fs.mkdir(dir, {recursive: true}`). Use `fs.mkdirp` instead.
|
|
23
|
-
* @deprecated
|
|
24
|
-
*/
|
|
25
|
-
const { mkdirp } = mkdirpIndex;
|
|
26
20
|
|
|
27
21
|
export {
|
|
28
22
|
tempDir, system, util, fs, cancellableDelay, plist, mkdirp, logger, process,
|