appium-android-driver 5.2.9 → 5.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +0 -38
  2. package/build/index.js +2 -4
  3. package/build/lib/android-helpers.js +78 -8
  4. package/build/lib/bootstrap.js +24 -7
  5. package/build/lib/commands/actions.js +2 -4
  6. package/build/lib/commands/alert.js +2 -4
  7. package/build/lib/commands/app-management.js +2 -4
  8. package/build/lib/commands/context.js +2 -4
  9. package/build/lib/commands/coverage.js +2 -4
  10. package/build/lib/commands/element.js +2 -4
  11. package/build/lib/commands/emu-console.js +2 -4
  12. package/build/lib/commands/execute.js +2 -4
  13. package/build/lib/commands/file-actions.js +2 -4
  14. package/build/lib/commands/find.js +2 -4
  15. package/build/lib/commands/general.js +2 -4
  16. package/build/lib/commands/ime.js +2 -4
  17. package/build/lib/commands/index.js +2 -4
  18. package/build/lib/commands/intent.js +2 -4
  19. package/build/lib/commands/log.js +2 -4
  20. package/build/lib/commands/media-projection.js +2 -4
  21. package/build/lib/commands/network.js +2 -4
  22. package/build/lib/commands/performance.js +2 -4
  23. package/build/lib/commands/recordscreen.js +2 -4
  24. package/build/lib/commands/shell.js +2 -4
  25. package/build/lib/commands/streamscreen.js +2 -4
  26. package/build/lib/commands/system-bars.js +2 -4
  27. package/build/lib/commands/touch.js +2 -4
  28. package/build/lib/desired-caps.js +2 -4
  29. package/build/lib/driver.js +2 -4
  30. package/build/lib/logger.js +2 -4
  31. package/build/lib/uiautomator.js +2 -4
  32. package/build/lib/unlock-helpers.js +2 -4
  33. package/build/lib/webview-helpers.js +3 -5
  34. package/lib/android-helpers.js +65 -4
  35. package/lib/bootstrap.js +25 -3
  36. package/lib/webview-helpers.js +1 -1
  37. package/package.json +45 -26
@@ -253,7 +253,5 @@ helpers.wrapBootstrapDisconnect = async function wrapBootstrapDisconnect(wrapped
253
253
 
254
254
  Object.assign(extensions, commands, helpers);
255
255
  var _default = extensions;
256
- exports.default = _default;require('source-map-support').install();
257
-
258
-
259
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL25ldHdvcmsuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiQUlSUExBTkVfTU9ERV9NQVNLIiwiV0lGSV9NQVNLIiwiREFUQV9NQVNLIiwiR0VPX0VQU0lMT04iLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJnZXROZXR3b3JrQ29ubmVjdGlvbiIsImxvZyIsImluZm8iLCJhaXJwbGFuZU1vZGVPbiIsImFkYiIsImlzQWlycGxhbmVNb2RlT24iLCJjb25uZWN0aW9uIiwid2lmaU9uIiwiaXNXaWZpT24iLCJkYXRhT24iLCJpc0RhdGFPbiIsInNldE5ldHdvcmtDb25uZWN0aW9uIiwidHlwZSIsInNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSIsInNob3VsZEVuYWJsZVdpZmkiLCJzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiIsImN1cnJlbnRTdGF0ZSIsImlzQWlycGxhbmVNb2RlRW5hYmxlZCIsImlzV2lGaUVuYWJsZWQiLCJpc0RhdGFFbmFibGVkIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJzZXRBaXJwbGFuZU1vZGUiLCJicm9hZGNhc3RBaXJwbGFuZU1vZGUiLCJzZXRXaWZpU3RhdGUiLCJzZXREYXRhU3RhdGUiLCJpc0VtdWxhdG9yIiwid2lmaSIsInRvZ2dsZURhdGEiLCJkYXRhIiwic2V0V2lmaUFuZERhdGEiLCJ0b2dnbGVXaUZpIiwidG9nZ2xlRmxpZ2h0TW9kZSIsImZsaWdodE1vZGUiLCJzZXRHZW9Mb2NhdGlvbiIsImxvY2F0aW9uIiwiZ2V0R2VvTG9jYXRpb24iLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFsdGl0dWRlIiwibW9iaWxlUmVmcmVzaEdwc0NhY2hlIiwib3B0cyIsInRpbWVvdXRNcyIsInJlZnJlc2hHZW9Mb2NhdGlvbkNhY2hlIiwicGFyc2VGbG9hdCIsIktleUNvZGUiLCJVUCIsIkRPV04iLCJSSUdIVCIsIkNFTlRFUiIsInRvZ2dsZUxvY2F0aW9uU2VydmljZXMiLCJhcGkiLCJnZXRBcGlMZXZlbCIsInByb3ZpZGVycyIsImdldExvY2F0aW9uUHJvdmlkZXJzIiwiaXNHcHNFbmFibGVkIiwiaW5kZXhPZiIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJzZXEiLCJwdXNoIiwia2V5ZXZlbnQiLCJ0b2dnbGVTZXR0aW5nIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInNldHRpbmciLCJwcmVLZXlTZXEiLCJfIiwiaXNOdWxsIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJrZXkiLCJkb0tleSIsImFwcFBhY2thZ2UiLCJhcHBBY3Rpdml0eSIsImdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkiLCJ3YWl0Rm9yTm90QWN0aXZpdHkiLCJpZ24iLCJiYWNrIiwiQiIsImRlbGF5Iiwid3JhcHBlZCIsImJvb3RzdHJhcCIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInJlc3RhcnQiLCJzdGFydCIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJhY2NlcHRTc2xDZXJ0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ0dldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIGxldCBhaXJwbGFuZU1vZGVPbiA9IGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKTtcbiAgbGV0IGNvbm5lY3Rpb24gPSBhaXJwbGFuZU1vZGVPbiA/IEFJUlBMQU5FX01PREVfTUFTSyA6IDA7XG5cbiAgLy8gbm8gbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlIGlmIHdlIGFyZSBpbiBhaXJwbGFuZSBtb2RlXG4gIGlmICghYWlycGxhbmVNb2RlT24pIHtcbiAgICBsZXQgd2lmaU9uID0gYXdhaXQgdGhpcy5pc1dpZmlPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKHdpZmlPbiA/IFdJRklfTUFTSyA6IDApO1xuICAgIGxldCBkYXRhT24gPSBhd2FpdCB0aGlzLmFkYi5pc0RhdGFPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKGRhdGFPbiA/IERBVEFfTUFTSyA6IDApO1xuICB9XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5pc1dpZmlPbiA9IGFzeW5jIGZ1bmN0aW9uIGlzV2lmaU9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCk7XG59O1xuXG5jb21tYW5kcy5zZXROZXR3b3JrQ29ubmVjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gIHRoaXMubG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbi9XaS1GaSBzdGF0ZXMsIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2V0IHRvIGV4cGVjdGVkIHZhbHVlcycpO1xuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpIHtcbiAgICAgIHJldHVybiBBSVJQTEFORV9NT0RFX01BU0sgfCBjdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB+QUlSUExBTkVfTU9ERV9NQVNLICYgY3VycmVudFN0YXRlO1xuICB9XG5cbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNob3VsZEVuYWJsZVdpZmkgIT09IGlzV2lGaUVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lmaVN0YXRlKHNob3VsZEVuYWJsZVdpZmkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24gc3RhdGUsIGJlY2F1c2UgYWlycGxhbmUgbW9kZSBpcyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIGlmIChzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgbmV0d29yayBkYXRhICR7ZGF0YSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe2RhdGF9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlV2lGaSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVdpRmkgKCkge1xuICBsZXQgd2lmaSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICB0aGlzLmxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCBnZXQgdGhlIGN1cnJlbnQgZ2VvbG9jYXRpb24gaW5mbzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgdGhpcy5sb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgdGhpcy5sb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7O0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFNQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBM0I7O0FBRUFSLFFBQVEsQ0FBQ1Msb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDckUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsNEJBQWQ7RUFDQSxJQUFJQyxjQUFjLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGdCQUFULEVBQTNCO0VBQ0EsSUFBSUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdULGtCQUFILEdBQXdCLENBQXZEOztFQUdBLElBQUksQ0FBQ1MsY0FBTCxFQUFxQjtJQUNuQixJQUFJSSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxRQUFMLEVBQW5CO0lBQ0FGLFVBQVUsSUFBS0MsTUFBTSxHQUFHWixTQUFILEdBQWUsQ0FBcEM7SUFDQSxJQUFJYyxNQUFNLEdBQUcsTUFBTSxLQUFLTCxHQUFMLENBQVNNLFFBQVQsRUFBbkI7SUFDQUosVUFBVSxJ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
256
+ exports.default = _default;
257
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiQUlSUExBTkVfTU9ERV9NQVNLIiwiV0lGSV9NQVNLIiwiREFUQV9NQVNLIiwiR0VPX0VQU0lMT04iLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJnZXROZXR3b3JrQ29ubmVjdGlvbiIsImxvZyIsImluZm8iLCJhaXJwbGFuZU1vZGVPbiIsImFkYiIsImlzQWlycGxhbmVNb2RlT24iLCJjb25uZWN0aW9uIiwid2lmaU9uIiwiaXNXaWZpT24iLCJkYXRhT24iLCJpc0RhdGFPbiIsInNldE5ldHdvcmtDb25uZWN0aW9uIiwidHlwZSIsInNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSIsInNob3VsZEVuYWJsZVdpZmkiLCJzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiIsImN1cnJlbnRTdGF0ZSIsImlzQWlycGxhbmVNb2RlRW5hYmxlZCIsImlzV2lGaUVuYWJsZWQiLCJpc0RhdGFFbmFibGVkIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJzZXRBaXJwbGFuZU1vZGUiLCJicm9hZGNhc3RBaXJwbGFuZU1vZGUiLCJzZXRXaWZpU3RhdGUiLCJzZXREYXRhU3RhdGUiLCJpc0VtdWxhdG9yIiwid2lmaSIsInRvZ2dsZURhdGEiLCJkYXRhIiwic2V0V2lmaUFuZERhdGEiLCJ0b2dnbGVXaUZpIiwidG9nZ2xlRmxpZ2h0TW9kZSIsImZsaWdodE1vZGUiLCJzZXRHZW9Mb2NhdGlvbiIsImxvY2F0aW9uIiwiZ2V0R2VvTG9jYXRpb24iLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFsdGl0dWRlIiwibW9iaWxlUmVmcmVzaEdwc0NhY2hlIiwib3B0cyIsInRpbWVvdXRNcyIsInJlZnJlc2hHZW9Mb2NhdGlvbkNhY2hlIiwicGFyc2VGbG9hdCIsIktleUNvZGUiLCJVUCIsIkRPV04iLCJSSUdIVCIsIkNFTlRFUiIsInRvZ2dsZUxvY2F0aW9uU2VydmljZXMiLCJhcGkiLCJnZXRBcGlMZXZlbCIsInByb3ZpZGVycyIsImdldExvY2F0aW9uUHJvdmlkZXJzIiwiaXNHcHNFbmFibGVkIiwiaW5kZXhPZiIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJzZXEiLCJwdXNoIiwia2V5ZXZlbnQiLCJ0b2dnbGVTZXR0aW5nIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInNldHRpbmciLCJwcmVLZXlTZXEiLCJfIiwiaXNOdWxsIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJrZXkiLCJkb0tleSIsImFwcFBhY2thZ2UiLCJhcHBBY3Rpdml0eSIsImdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkiLCJ3YWl0Rm9yTm90QWN0aXZpdHkiLCJpZ24iLCJiYWNrIiwiQiIsImRlbGF5Iiwid3JhcHBlZCIsImJvb3RzdHJhcCIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInJlc3RhcnQiLCJzdGFydCIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJhY2NlcHRTc2xDZXJ0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ0dldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIGxldCBhaXJwbGFuZU1vZGVPbiA9IGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKTtcbiAgbGV0IGNvbm5lY3Rpb24gPSBhaXJwbGFuZU1vZGVPbiA/IEFJUlBMQU5FX01PREVfTUFTSyA6IDA7XG5cbiAgLy8gbm8gbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlIGlmIHdlIGFyZSBpbiBhaXJwbGFuZSBtb2RlXG4gIGlmICghYWlycGxhbmVNb2RlT24pIHtcbiAgICBsZXQgd2lmaU9uID0gYXdhaXQgdGhpcy5pc1dpZmlPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKHdpZmlPbiA/IFdJRklfTUFTSyA6IDApO1xuICAgIGxldCBkYXRhT24gPSBhd2FpdCB0aGlzLmFkYi5pc0RhdGFPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKGRhdGFPbiA/IERBVEFfTUFTSyA6IDApO1xuICB9XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5pc1dpZmlPbiA9IGFzeW5jIGZ1bmN0aW9uIGlzV2lmaU9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCk7XG59O1xuXG5jb21tYW5kcy5zZXROZXR3b3JrQ29ubmVjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gIHRoaXMubG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbi9XaS1GaSBzdGF0ZXMsIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2V0IHRvIGV4cGVjdGVkIHZhbHVlcycpO1xuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpIHtcbiAgICAgIHJldHVybiBBSVJQTEFORV9NT0RFX01BU0sgfCBjdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB+QUlSUExBTkVfTU9ERV9NQVNLICYgY3VycmVudFN0YXRlO1xuICB9XG5cbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNob3VsZEVuYWJsZVdpZmkgIT09IGlzV2lGaUVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lmaVN0YXRlKHNob3VsZEVuYWJsZVdpZmkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24gc3RhdGUsIGJlY2F1c2UgYWlycGxhbmUgbW9kZSBpcyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIGlmIChzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgbmV0d29yayBkYXRhICR7ZGF0YSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe2RhdGF9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlV2lGaSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVdpRmkgKCkge1xuICBsZXQgd2lmaSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICB0aGlzLmxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCBnZXQgdGhlIGN1cnJlbnQgZ2VvbG9jYXRpb24gaW5mbzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgdGhpcy5sb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgdGhpcy5sb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7O0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFNQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBM0I7O0FBRUFSLFFBQVEsQ0FBQ1Msb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDckUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsNEJBQWQ7RUFDQSxJQUFJQyxjQUFjLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGdCQUFULEVBQTNCO0VBQ0EsSUFBSUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdULGtCQUFILEdBQXdCLENBQXZEOztFQUdBLElBQUksQ0FBQ1MsY0FBTCxFQUFxQjtJQUNuQixJQUFJSSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxRQUFMLEVBQW5CO0lBQ0FGLFVBQVUsSUFBS0MsTUFBTSxHQUFHWixTQUFILEdBQWUsQ0FBcEM7SUFDQSxJQUFJYyxNQUFNLEdBQUcsTUFBTSxLQUFLTCxHQUFMLENBQVNNLFFBQVQsRUFBbkI7SUFDQUosVUFBVSxJQUFLRyxNQUFNLEdBQUdiLFNBQUgsR0FBZSxDQUFwQztFQUNEOztFQUVELE9BQU9V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
@@ -323,7 +323,5 @@ helpers.getNetworkTrafficInfo = async function getNetworkTrafficInfo(retries = 2
323
323
 
324
324
  Object.assign(extensions, commands, helpers);
325
325
  var _default = extensions;
326
- exports.default = _default;require('source-map-support').install();
327
-
328
-
329
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3BlcmZvcm1hbmNlLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk5FVFdPUktfS0VZUyIsIkNQVV9LRVlTIiwiQkFUVEVSWV9LRVlTIiwiTUVNT1JZX0tFWVMiLCJTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsImNwdWluZm8iLCJtZW1vcnlpbmZvIiwiYmF0dGVyeWluZm8iLCJuZXR3b3JraW5mbyIsIk1FTUlORk9fVElUTEVTIiwiTkFUSVZFIiwiREFMVklLIiwiRUdMIiwiR0wiLCJNVFJBQ0siLCJUT1RBTCIsIkhFQVAiLCJSRVRSWV9QQVVTRV9NUyIsInBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSIsImVudHJpZXMiLCJ2YWxEaWN0IiwidHlwZSIsInN1YlR5cGUiLCJuYXRpdmVQc3MiLCJuYXRpdmVQcml2YXRlRGlydHkiLCJuYXRpdmVIZWFwU2l6ZSIsIm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplIiwiZGFsdmlrUHNzIiwiZGFsdmlrUHJpdmF0ZURpcnR5IiwiZWdsUHNzIiwiZWdsUHJpdmF0ZURpcnR5IiwiZ2xQc3MiLCJnbFByaXZhdGVEaXJ0eSIsImxlbmd0aCIsInRvdGFsUHNzIiwidG90YWxQcml2YXRlRGlydHkiLCJwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IiwicGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSIsIm5hdGl2ZVJzcyIsImRhbHZpa1JzcyIsInRvdGFsUnNzIiwiZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMiLCJfIiwia2V5cyIsImdldFBlcmZvcm1hbmNlRGF0YSIsInBhY2thZ2VOYW1lIiwiZGF0YVR5cGUiLCJyZXRyaWVzIiwidG9Mb3dlciIsImdldEJhdHRlcnlJbmZvIiwiZ2V0Q1BVSW5mbyIsImdldE1lbW9yeUluZm8iLCJnZXROZXR3b3JrVHJhZmZpY0luZm8iLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXRyeUludGVydmFsIiwib3V0cHV0IiwiYWRiIiwic2hlbGwiLCJlIiwic3RkZXJyIiwibG9nIiwiaW5mbyIsInVzYWdlc1BhdHRlcm4iLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaCIsImV4ZWMiLCJkZWJ1ZyIsImNtZCIsImRhdGEiLCJwb3dlciIsInBhcnNlSW50Iiwic3BsaXQiLCJ0cmltIiwiTnVtYmVyIiwiaXNOYU4iLCJjbG9uZSIsInRvU3RyaW5nIiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImxpbmUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGVhZGVycyIsInZhbHVlcyIsIm1hcCIsImhlYWRlciIsInJldHVyblZhbHVlIiwiYnVja2V0RHVyYXRpb24iLCJidWNrZXRTdGFydCIsImFjdGl2ZVRpbWUiLCJyeEJ5dGVzIiwicnhQYWNrZXRzIiwidHhCeXRlcyIsInR4UGFja2V0cyIsIm9wZXJhdGlvbnMiLCJpbmRleCIsImZyb21YdHN0YXRzIiwiaW5kZXhPZiIsInN0YXJ0IiwiZGVsaW1pdGVyIiwiZW5kIiwicGVuZGluZ0J5dGVzIiwic3Vic3RyaW5nIiwiYXJyYXlMaXN0IiwiaiIsImsiLCJyZXR1cm5JbmRleCIsImkiLCJpc0VxdWFsIiwiaXNVbmRlZmluZWQiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvcGVyZm9ybWFuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBORVRXT1JLX0tFWVMgPSBbXG4gIFsnYnVja2V0U3RhcnQnLCAnYWN0aXZlVGltZScsICdyeEJ5dGVzJywgJ3J4UGFja2V0cycsICd0eEJ5dGVzJywgJ3R4UGFja2V0cycsICdvcGVyYXRpb25zJywgJ2J1Y2tldER1cmF0aW9uJ10sXG4gIFsnc3QnLCAnYWN0aXZlVGltZScsICdyYicsICdycCcsICd0YicsICd0cCcsICdvcCcsICdidWNrZXREdXJhdGlvbiddXG5dO1xuY29uc3QgQ1BVX0tFWVMgPSBbJ3VzZXInLCAna2VybmVsJ107XG5jb25zdCBCQVRURVJZX0tFWVMgPSBbJ3Bvd2VyJ107XG5jb25zdCBNRU1PUllfS0VZUyA9IFtcbiAgJ3RvdGFsUHJpdmF0ZURpcnR5JywgJ25hdGl2ZVByaXZhdGVEaXJ0eScsICdkYWx2aWtQcml2YXRlRGlydHknLFxuICAnZWdsUHJpdmF0ZURpcnR5JywgJ2dsUHJpdmF0ZURpcnR5JyxcbiAgJ3RvdGFsUHNzJywgJ25hdGl2ZVBzcycsICdkYWx2aWtQc3MnLCAnZWdsUHNzJywgJ2dsUHNzJyxcbiAgJ25hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplJywgJ25hdGl2ZUhlYXBTaXplJyxcbiAgJ25hdGl2ZVJzcycsICdkYWx2aWtSc3MnLCAndG90YWxSc3MnXG5dO1xuY29uc3QgU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgY3B1aW5mbzogJ3RoZSBhbW91bnQgb2YgY3B1IGJ5IHVzZXIgYW5kIGtlcm5lbCBwcm9jZXNzIC0gY3B1IGluZm9ybWF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3JzJyxcbiAgbWVtb3J5aW5mbzogJ3RoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHByb2Nlc3MgLSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBiYXR0ZXJ5aW5mbzogJ3RoZSByZW1haW5pbmcgYmF0dGVyeSBwb3dlciAtIGJhdHRlcnkgcG93ZXIgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBuZXR3b3JraW5mbzogJ3RoZSBuZXR3b3JrIHN0YXRpc3RpY3MgLSBuZXR3b3JrIHJ4L3R4IGluZm9ybWF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3JzJ1xufSk7XG5jb25zdCBNRU1JTkZPX1RJVExFUyA9IE9iamVjdC5mcmVlemUoe1xuICBOQVRJVkU6ICdOYXRpdmUnLFxuICBEQUxWSUs6ICdEYWx2aWsnLFxuICBFR0w6ICdFR0wnLFxuICBHTDogJ0dMJyxcbiAgTVRSQUNLOiAnbXRyYWNrJyxcbiAgVE9UQUw6ICdUT1RBTCcsXG4gIEhFQVA6ICdIZWFwJ1xufSk7XG5jb25zdCBSRVRSWV9QQVVTRV9NUyA9IDEwMDA7XG5cbi8qKlxuICogQVBJIGxldmVsIGJldHdlZW4gMTggYW5kIDMwXG4gKiBbJzxTeXN0ZW0gVHlwZT4nLCAnPE1lbW9yeSBUeXBlPicsIDxwc3MgdG90YWw+LCA8cHJpdmF0ZSBkaXJ0eT4sIDxwcml2YXRlIGNsZWFuPiwgPHN3YXBQc3MgZGlydHk+LCA8aGVhcCBzaXplPiwgPGhlYXAgYWxsb2M+LCA8aGVhcCBmcmVlPl1cbiAqIGV4Y2VwdCAnVE9UQUwnLCB3aGljaCBza2lwcyB0aGUgc2Vjb25kIHR5cGUgbmFtZVxuICogISEhIHZhbERpY3QgZ2V0cyBtdXRhdGVkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCBbdHlwZSwgc3ViVHlwZV0gPSBlbnRyaWVzO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5uYXRpdmVQc3MsIHZhbERpY3QubmF0aXZlUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUsgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0LmRhbHZpa1BzcywgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZWdsUHNzLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmdsUHNzLCB2YWxEaWN0LmdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuVE9UQUwgJiYgZW50cmllcy5sZW5ndGggPT09IDgpIHtcbiAgICAvLyB0aGVyZSBhcmUgdHdvIHRvdGFscywgYW5kIHdlIG9ubHkgd2FudCB0aGUgZnVsbCBsaXN0aW5nLCB3aGljaCBoYXMgOCBlbnRyaWVzXG4gICAgWywgdmFsRGljdC50b3RhbFBzcywgdmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9XG59XG5cbi8qKlxuICogWyc8U3lzdGVtIFR5cGUnLCAnPHBwcz4nLCAnPHNoYXJlZCBkaXJ0eT4nLCAnPHByaXZhdGUgZGlydHk+JywgJzxoZWFwIHNpemU+JywgJzxoZWFwIGFsbG9jPicsICc8aGVhcCBmcmVlPiddXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpQmVsb3cxOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCB0eXBlID0gZW50cmllc1swXTtcbiAgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLk5BVElWRSkge1xuICAgIFssIHZhbERpY3QubmF0aXZlUHNzLCwgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUspIHtcbiAgICBbLCB2YWxEaWN0LmRhbHZpa1BzcywsIHZhbERpY3QuZGFsdmlrUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuRUdMKSB7XG4gICAgWywgdmFsRGljdC5lZ2xQc3MsLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMKSB7XG4gICAgWywgdmFsRGljdC5nbFBzcywsIHZhbERpY3QuZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5UT1RBTCkge1xuICAgIFssIHZhbERpY3QudG90YWxQc3MsLCB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBBUEkgbGV2ZWwgMzAgYW5kIGFib3ZlXG4gKiBbJzxTeXN0ZW0gVHlwZT4nLCAnPE1lbW9yeSBUeXBlPicsIDxwc3MgdG90YWw+LCA8cHJpdmF0ZSBkaXJ0eT4sIDxwcml2YXRlIGNsZWFuPiwgPHN3YXBQc3MgZGlydHk+LCA8cnNzIHRvdGFsPiwgPGhlYXAgc2l6ZT4sIDxoZWFwIGFsbG9jPiwgPGhlYXAgZnJlZT5dXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCBbdHlwZSwgc3ViVHlwZV0gPSBlbnRyaWVzO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5uYXRpdmVQc3MsIHZhbERpY3QubmF0aXZlUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QubmF0aXZlUnNzLCB2YWxEaWN0Lm5hdGl2ZUhlYXBTaXplLCB2YWxEaWN0Lm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplXSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuREFMVklLICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5kYWx2aWtQc3MsIHZhbERpY3QuZGFsdmlrUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QuZGFsdmlrUnNzXSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuRUdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmVnbFBzcywgdmFsRGljdC5lZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5HTCAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5NVFJBQ0spIHtcbiAgICBbLCwgdmFsRGljdC5nbFBzcywgdmFsRGljdC5nbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLlRPVEFMICYmIGVudHJpZXMubGVuZ3RoID09PSA5KSB7XG4gICAgLy8gaGFzIDkgZW50cmllc1xuICAgIFssIHZhbERpY3QudG90YWxQc3MsIHZhbERpY3QudG90YWxQcml2YXRlRGlydHksLCwgdmFsRGljdC50b3RhbFJzc10gPSBlbnRyaWVzO1xuICB9XG59XG5cbi8vXG4vLyByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB0eXBlIG9mIHRoZSBzeXN0ZW0gc3RhdGUgd2hpY2ggaXMgc3VwcG9ydGVkIHRvIHJlYWQgYXMgbGlrZSBjcHUsIG1lbW9yeSwgbmV0d29yayB0cmFmZmljLCBhbmQgYmF0dGVyeS5cbi8vIG91dHB1dCAtIGFycmF5IGxpa2UgYmVsb3dcbi8vIFtjcHVpbmZvLCBiYXR0ZXJ5aW5mbywgbmV0d29ya2luZm8sIG1lbW9yeWluZm9dXG4vL1xuY29tbWFuZHMuZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMgPSBmdW5jdGlvbiBnZXRQZXJmb3JtYW5jZURhdGFUeXBlcyAoKSB7XG4gIHJldHVybiBfLmtleXMoU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMpO1xufTtcblxuLyoqXG4gKiBAcmV0dXJucyBUaGUgaW5mb3JtYXRpb24gdHlwZSBvZiB0aGUgc3lzdGVtIHN0YXRlIHdoaWNoIGlzIHN1cHBvcnRlZCB0byByZWFkIGFzIGxpa2UgY3B1LCBtZW1vcnksIG5ldHdvcmsgdHJhZmZpYywgYW5kIGJhdHRlcnkuXG4gKiBpbnB1dCAtIChwYWNrYWdlTmFtZSkgdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgYXBwbGljYXRpb25cbiAqICAgICAgICAoZGF0YVR5cGUpIHRoZSB0eXBlIG9mIHN5c3RlbSBzdGF0ZSB3aGljaCB3YW50cyB0byByZWFkLiBJdCBzaG91bGQgYmUgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFU1xuICogICAgICAgIChkYXRhUmVhZFRpbWVvdXQpIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gcmVhZFxuICogb3V0cHV0IC0gdGFibGUgb2YgdGhlIHBlcmZvcm1hbmNlIGRhdGEsIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0YWJsZSByZXByZXNlbnRzIHRoZSB0eXBlIG9mIGRhdGEuIFRoZSByZW1haW5pbmcgbGluZXMgcmVwcmVzZW50IHRoZSB2YWx1ZXMgb2YgdGhlIGRhdGEuXG4gKlxuICogaW4gY2FzZSBvZiBiYXR0ZXJ5IGluZm8gOiBbW3Bvd2VyXSwgWzIzXV1cbiAqIGluIGNhc2Ugb2YgbWVtb3J5IGluZm8gOiAgW1t0b3RhbFByaXZhdGVEaXJ0eSwgbmF0aXZlUHJpdmF0ZURpcnR5LCBkYWx2aWtQcml2YXRlRGlydHksIGVnbFByaXZhdGVEaXJ0eSwgZ2xQcml2YXRlRGlydHksIHRvdGFsUHNzLFxuICogICBuYXRpdmVQc3MsIGRhbHZpa1BzcywgZWdsUHNzLCBnbFBzcywgbmF0aXZlSGVhcEFsbG9jYXRlZFNpemUsIG5hdGl2ZUhlYXBTaXplXSwgWzE4MzYwLCA4Mjk2LCA2MTMyLCBudWxsLCBudWxsLCA0MjU4OCwgODQwNiwgNzAyNCwgbnVsbCwgbnVsbCwgMjY1MTksIDEwMzQ0XV1cbiAqIGluIGNhc2Ugb2YgbmV0d29yayBpbmZvIDogW1tidWNrZXRTdGFydCwgYWN0aXZlVGltZSwgcnhCeXRlcywgcnhQYWNrZXRzLCB0eEJ5dGVzLCB0eFBhY2tldHMsIG9wZXJhdGlvbnMsIGJ1Y2tldER1cmF0aW9uLF0sXG4gKiAgIFsxNDc4MDkxNjAwMDAwLCBudWxsLCAxMDk5MDc1LCA2MTA5NDcsIDkyOCwgMTE0MzYyLCA3NjksIDAsIDM2MDAwMDBdLCBbMTQ3ODA5NTIwMDAwMCwgbnVsbCwgMTMwNjMwMCwgNDA1OTk3LCA1MDksIDQ2MzU5LCAzNzAsIDAsIDM2MDAwMDBdXVxuICogaW4gY2FzZSBvZiBuZXR3b3JrIGluZm8gOiBbW3N0LCBhY3RpdmVUaW1lLCByYiwgcnAsIHRiLCB0cCwgb3AsIGJ1Y2tldER1cmF0aW9uXSwgWzE0NzgwODgwMDAsIG51bGwsIG51bGwsIDMyMTE1Mjk2LCAzNDI5MSwgMjk1NjgwNSwgMjU3MDUsIDAsIDM2MDBdLFxuICogICBbMTQ3ODA5MTYwMCwgbnVsbCwgbnVsbCwgMjcxNDY4MywgMTE4MjEsIDE0MjA1NjQsIDEyNjUwLCAwLCAzNjAwXSwgWzE0NzgwOTUyMDAsIG51bGwsIG51bGwsIDEwMDc5MjEzLCAxOTk2MiwgMjQ4NzcwNSwgMjAwMTUsIDAsIDM2MDBdLFxuICogICBbMTQ3ODA5ODgwMCwgbnVsbCwgbnVsbCwgNDQ0NDQzMywgMTAyMjcsIDE0MzAzNTYsIDEwNDkzLCAwLCAzNjAwXV1cbiAqIGluIGNhc2Ugb2YgY3B1IGluZm8gOiBbW3VzZXIsIGtlcm5lbF0sIFswLjksIDEuM11dXG4gKi9cbmNvbW1hbmRzLmdldFBlcmZvcm1hbmNlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIGdldFBlcmZvcm1hbmNlRGF0YSAocGFja2FnZU5hbWUsIGRhdGFUeXBlLCByZXRyaWVzID0gMikge1xuICBzd2l0Y2ggKF8udG9Mb3dlcihkYXRhVHlwZSkpIHtcbiAgICBjYXNlICdiYXR0ZXJ5aW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRCYXR0ZXJ5SW5mbyhyZXRyaWVzKTtcbiAgICBjYXNlICdjcHVpbmZvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldENQVUluZm8ocGFja2FnZU5hbWUsIHJldHJpZXMpO1xuICAgIGNhc2UgJ21lbW9yeWluZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TWVtb3J5SW5mbyhwYWNrYWdlTmFtZSwgcmV0cmllcyk7XG4gICAgY2FzZSAnbmV0d29ya2luZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmV0d29ya1RyYWZmaWNJbmZvKHJldHJpZXMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHBlcmZvcm1hbmNlIGRhdGEgb2YgdHlwZSAnJHtkYXRhVHlwZX0nIGZvdW5kLiBgICtcbiAgICAgICAgYE9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZDogJHtKU09OLnN0cmluZ2lmeShTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUywgJyAnLCAyKX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5nZXRDUFVJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q1BVSW5mbyAocGFja2FnZU5hbWUsIHJldHJpZXMgPSAyKSB7XG4gIC8vIFRPRE86IGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXNcbiAgLy8gc29tZXRpbWVzLCB0aGUgZnVuY3Rpb24gb2YgJ2FkYi5zaGVsbCcgZmFpbHMuIHdoZW4gSSB0ZXN0ZWQgdGhpcyBmdW5jdGlvbiBvbiB0aGUgdGFyZ2V0IG9mICdHYWxheHkgTm90ZTUnLFxuICAvLyBhZGIuc2hlbGwoZHVtcHN5cyBjcHVpbmZvKSByZXR1cm5zIGNwdSBkYXRhcyBmb3Igb3RoZXIgYXBwbGljYXRpb24gcGFja2FnZXMsIGJ1dCBJIGNhbid0IGZpbmQgdGhlIGRhdGEgZm9yIHBhY2thZ2VOYW1lLlxuICAvLyBJdCB1c3VhbGx5IGZhaWxzIDMwIHRpbWVzIGFuZCBzdWNjZXNzIGZvciB0aGUgbmV4dCB0aW1lLFxuICAvLyBTaW5jZSB0aGVuLCBoZSBoYXMgY29udGludWVkIHRvIHN1Y2NlZWQuXG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIFJFVFJZX1BBVVNFX01TLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IG91dHB1dDtcbiAgICB0cnkge1xuICAgICAgb3V0cHV0ID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkdW1wc3lzJywgJ2NwdWluZm8nXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuc3RkZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oZS5zdGRlcnIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgLy8gYG91dHB1dGAgd2lsbCBiZSBzb21ldGhpbmcgbGlrZVxuICAgIC8vICAgICswJSAyMjA5L2lvLmFwcGl1bS5hbmRyb2lkLmFwaXM6IDAuMSUgdXNlciArIDAuMiUga2VybmVsIC8gZmF1bHRzOiA3MCBtaW5vclxuICAgIGNvbnN0IHVzYWdlc1BhdHRlcm4gPVxuICAgICAgbmV3IFJlZ0V4cChgXi4rXFxcXC8ke18uZXNjYXBlUmVnRXhwKHBhY2thZ2VOYW1lKX06XFxcXEQrKFtcXFxcZC5dKyklXFxcXHMrdXNlclxcXFxzK1xcXFwrXFxcXHMrKFtcXFxcZC5dKyklXFxcXHMra2VybmVsYCwgJ20nKTtcbiAgICBjb25zdCBtYXRjaCA9IHVzYWdlc1BhdHRlcm4uZXhlYyhvdXRwdXQpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKG91dHB1dCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBjcHUgdXNhZ2UgZGF0YSBmb3IgJyR7cGFja2FnZU5hbWV9Jy4gQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICByZXR1cm4gW0NQVV9LRVlTLCBbbWF0Y2hbMV0sIG1hdGNoWzJdXV07XG4gIH0pO1xufTtcblxuaGVscGVycy5nZXRCYXR0ZXJ5SW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldEJhdHRlcnlJbmZvIChyZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBbJ2R1bXBzeXMnLCAnYmF0dGVyeScsICd8JywgJ2dyZXAnLCAnbGV2ZWwnXTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgbGV0IHBvd2VyID0gcGFyc2VJbnQoKGRhdGEuc3BsaXQoJzonKVsxXSB8fCAnJykudHJpbSgpLCAxMCk7XG5cbiAgICBpZiAoIU51bWJlci5pc05hTihwb3dlcikpIHtcbiAgICAgIHJldHVybiBbXy5jbG9uZShCQVRURVJZX0tFWVMpLCBbcG93ZXIudG9TdHJpbmcoKV1dO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBiYXR0ZXJ5IGRhdGE6ICcke2RhdGF9J2ApO1xuICAgIH1cbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldE1lbW9yeUluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRNZW1vcnlJbmZvIChwYWNrYWdlTmFtZSwgcmV0cmllcyA9IDIpIHtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjbWQgPSBbXG4gICAgICAnZHVtcHN5cycsICdtZW1pbmZvJywgYCcke3BhY2thZ2VOYW1lfSdgLFxuICAgICAgJ3wnLCAnZ3JlcCcsICctRScsXG4gICAgICBgJyR7TUVNSU5GT19USVRMRVMuTkFUSVZFfXwke01FTUlORk9fVElUTEVTLkRBTFZJS318JHtNRU1JTkZPX1RJVExFUy5FR0x9YCArXG4gICAgICBgfCR7TUVNSU5GT19USVRMRVMuR0x9fCR7TUVNSU5GT19USVRMRVMuVE9UQUx9J2BcbiAgICBdO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGZyb20gZHVtcHN5cycpO1xuICAgIH1cbiAgICBjb25zdCB2YWxEaWN0ID0ge3RvdGFsUHJpdmF0ZURpcnR5OiAnJ307XG4gICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBkYXRhLnNwbGl0KCdcXG4nKSkge1xuICAgICAgY29uc3QgZW50cmllcyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKGFwaUxldmVsID49IDMwKSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaUFib3ZlMjkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9IGVsc2UgaWYgKGFwaUxldmVsID4gMTggJiYgYXBpTGV2ZWwgPCAzMCkge1xuICAgICAgICBwYXJzZU1lbWluZm9Gb3JBcGkxOVRvMjkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5KGVudHJpZXMsIHZhbERpY3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eSAmJiB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5ICE9PSAnbm9kZXgnKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gXy5jbG9uZShNRU1PUllfS0VZUyk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBoZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiB2YWxEaWN0W2hlYWRlcl0pO1xuICAgICAgcmV0dXJuIFtoZWFkZXJzLCB2YWx1ZXNdO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG1lbW9yeSBkYXRhOiAnJHtkYXRhfSdgKTtcbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldE5ldHdvcmtUcmFmZmljSW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldE5ldHdvcmtUcmFmZmljSW5mbyAocmV0cmllcyA9IDIpIHtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBbXTtcbiAgICBsZXQgYnVja2V0RHVyYXRpb24sIGJ1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucztcblxuICAgIGxldCBjbWQgPSBbJ2R1bXBzeXMnLCAnbmV0c3RhdHMnXTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgLy8gSW4gY2FzZSBvZiBuZXR3b3JrIHRyYWZmaWMgaW5mb3JtYXRpb24sIGl0IGlzIGRpZmZlcmVudCBmb3IgdGhlIHJldHVybiBkYXRhIGJldHdlZW4gZW11bGF0b3IgYW5kIHJlYWwgZGV2aWNlLlxuICAgIC8vIHRoZSByZXR1cm4gZGF0YSBvZiBlbXVsYXRvclxuICAgIC8vICAgWHQgc3RhdHM6XG4gICAgLy8gICBQZW5kaW5nIGJ5dGVzOiAzOTI1MFxuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W1t0eXBlPVdJRkksIHN1YlR5cGU9Q09NQklORUQsIG5ldHdvcmtJZD1cIldpcmVkU1NJRFwiXV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgTmV0d29ya1N0YXRzSGlzdG9yeTogYnVja2V0RHVyYXRpb249MzYwMDAwMFxuICAgIC8vICAgYnVja2V0U3RhcnQ9MTQ3ODA5ODgwMDAwMCBhY3RpdmVUaW1lPTMxODI0IHJ4Qnl0ZXM9MjE1MDIgcnhQYWNrZXRzPTc4IHR4Qnl0ZXM9MTc3NDggdHhQYWNrZXRzPTkwIG9wZXJhdGlvbnM9MFxuICAgIC8vXG4gICAgLy8gNy4xXG4gICAgLy8gICBYdCBzdGF0czpcbiAgICAvLyAgIFBlbmRpbmcgYnl0ZXM6IDQ4MTQ4N1xuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W3t0eXBlPU1PQklMRSwgc3ViVHlwZT1DT01CSU5FRCwgc3Vic2NyaWJlcklkPTMxMDI2MC4uLiwgbWV0ZXJlZD10cnVlfV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgICBOZXR3b3JrU3RhdHNIaXN0b3J5OiBidWNrZXREdXJhdGlvbj0zNjAwXG4gICAgLy8gICAgICAgc3Q9MTQ4Mzk4NDgwMCByYj0wIHJwPTAgdGI9MTIwMzEgdHA9MTg0IG9wPTBcbiAgICAvLyAgICAgICBzdD0xNDgzOTg4NDAwIHJiPTAgcnA9MCB0Yj0zODQ3NiB0cD01ODcgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODM5OTkyMDAgcmI9MzE1NjE2IHJwPTQwMCB0Yj05NDgwMCB0cD0zNjIgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODQwMDI4MDAgcmI9MTU4MjYgcnA9MjAgdGI9NDczOCB0cD0xNiBvcD0wXG4gICAgLy9cbiAgICAvLyB0aGUgcmV0dXJuIGRhdGEgb2YgcmVhbCBkZXZpY2VcbiAgICAvLyAgIFh0IHN0YXRzOlxuICAgIC8vICAgUGVuZGluZyBieXRlczogMFxuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W3t0eXBlPU1PQklMRSwgc3ViVHlwZT1DT01CSU5FRCwgc3Vic2NyaWJlcklkPTQ1MDA1MC4uLn1dIHVpZD0tMSBzZXQ9QUxMIHRhZz0weDBcbiAgICAvLyAgIE5ldHdvcmtTdGF0c0hpc3Rvcnk6IGJ1Y2tldER1cmF0aW9uPTM2MDBcbiAgICAvLyAgIHN0PTE0NzgwODgwMDAgcmI9MzIxMTUyOTYgcnA9MzQyOTEgdGI9Mjk1NjgwNSB0cD0yNTcwNSBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDkxNjAwIHJiPTI3MTQ2ODMgcnA9MTE4MjEgdGI9MTQyMDU2NCB0cD0xMjY1MCBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDk1MjAwIHJiPTEwMDc5MjEzIHJwPTE5OTYyIHRiPTI0ODc3MDUgdHA9MjAwMTUgb3A9MFxuICAgIC8vICAgc3Q9MTQ3ODA5ODgwMCByYj00NDQ0NDMzIHJwPTEwMjI3IHRiPTE0MzAzNTYgdHA9MTA0OTMgb3A9MFxuICAgIGxldCBpbmRleCA9IDA7XG4gICAgbGV0IGZyb21YdHN0YXRzID0gZGF0YS5pbmRleE9mKCdYdCBzdGF0czonKTtcblxuICAgIGxldCBzdGFydCA9IGRhdGEuaW5kZXhPZignUGVuZGluZyBieXRlczonLCBmcm9tWHRzdGF0cyk7XG4gICAgbGV0IGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignOicsIHN0YXJ0ICsgMSk7XG4gICAgbGV0IGVuZCA9IGRhdGEuaW5kZXhPZignXFxuJywgZGVsaW1pdGVyICsgMSk7XG4gICAgbGV0IHBlbmRpbmdCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuXG4gICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoJ2J1Y2tldER1cmF0aW9uJywgZW5kICsgMSk7XG4gICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCdcXG4nLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgIGJ1Y2tldER1cmF0aW9uID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhlbmQgKyAxLCBkYXRhLmxlbmd0aCk7XG4gICAgICBsZXQgYXJyYXlMaXN0ID0gZGF0YS5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGlmIChhcnJheUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICBzdGFydCA9IC0xO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTkVUV09SS19LRVlTLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgc3RhcnQgPSBhcnJheUxpc3RbMF0uaW5kZXhPZihORVRXT1JLX0tFWVNbal1bMF0pO1xuXG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGluZGV4ID0gajtcbiAgICAgICAgICAgIHJldHVyblZhbHVlWzBdID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgTkVUV09SS19LRVlTW2pdLmxlbmd0aDsgKytrKSB7XG4gICAgICAgICAgICAgIHJldHVyblZhbHVlWzBdW2tdID0gTkVUV09SS19LRVlTW2pdW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldHVybkluZGV4ID0gMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBkYXRhID0gYXJyYXlMaXN0W2ldO1xuICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bMF0pO1xuXG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgIGJ1Y2tldFN0YXJ0ID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVsxXSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVUaW1lID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzJdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIHJ4Qnl0ZXMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bM10sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgcnhQYWNrZXRzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzRdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIHR4Qnl0ZXMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNV0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgdHhQYWNrZXRzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzZdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm5WYWx1ZVtyZXR1cm5JbmRleCsrXSA9IFtidWNrZXRTdGFydCwgYWN0aXZlVGltZSwgcnhCeXRlcywgcnhQYWNrZXRzLCB0eEJ5dGVzLCB0eFBhY2tldHMsIG9wZXJhdGlvbnMsIGJ1Y2tldER1cmF0aW9uXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFcXVhbChwZW5kaW5nQnl0ZXMsICcnKSAmJiAhXy5pc1VuZGVmaW5lZChwZW5kaW5nQnl0ZXMpICYmICFfLmlzRXF1YWwocGVuZGluZ0J5dGVzLCAnbm9kZXgnKSkge1xuICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBuZXR3b3JrIHRyYWZmaWMgZGF0YTogJyR7ZGF0YX0nYCk7XG4gICAgfVxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHtcbiAgY29tbWFuZHMsIGhlbHBlcnMsIFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTLCBDUFVfS0VZUywgTUVNT1JZX0tFWVMsXG4gIEJBVFRFUllfS0VZUywgTkVUV09SS19LRVlTLFxufTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7O0FBRUEsTUFBTUMsWUFBWSxHQUFHLENBQ25CLENBQUMsYUFBRCxFQUFnQixZQUFoQixFQUE4QixTQUE5QixFQUF5QyxXQUF6QyxFQUFzRCxTQUF0RCxFQUFpRSxXQUFqRSxFQUE4RSxZQUE5RSxFQUE0RixnQkFBNUYsQ0FEbUIsRUFFbkIsQ0FBQyxJQUFELEVBQU8sWUFBUCxFQUFxQixJQUFyQixFQUEyQixJQUEzQixFQUFpQyxJQUFqQyxFQUF1QyxJQUF2QyxFQUE2QyxJQUE3QyxFQUFtRCxnQkFBbkQsQ0FGbUIsQ0FBckI7O0FBSUEsTUFBTUMsUUFBUSxHQUFHLENBQUMsTUFBRCxFQUFTLFFBQVQsQ0FBakI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLENBQUMsT0FBRCxDQUFyQjs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsQ0FDbEIsbUJBRGtCLEVBQ0csb0JBREgsRUFDeUIsb0JBRHpCLEVBRWxCLGlCQUZrQixFQUVD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
326
+ exports.default = _default;
327
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiTkVUV09SS19LRVlTIiwiQ1BVX0tFWVMiLCJCQVRURVJZX0tFWVMiLCJNRU1PUllfS0VZUyIsIlNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTIiwiT2JqZWN0IiwiZnJlZXplIiwiY3B1aW5mbyIsIm1lbW9yeWluZm8iLCJiYXR0ZXJ5aW5mbyIsIm5ldHdvcmtpbmZvIiwiTUVNSU5GT19USVRMRVMiLCJOQVRJVkUiLCJEQUxWSUsiLCJFR0wiLCJHTCIsIk1UUkFDSyIsIlRPVEFMIiwiSEVBUCIsIlJFVFJZX1BBVVNFX01TIiwicGFyc2VNZW1pbmZvRm9yQXBpMTlUbzI5IiwiZW50cmllcyIsInZhbERpY3QiLCJ0eXBlIiwic3ViVHlwZSIsIm5hdGl2ZVBzcyIsIm5hdGl2ZVByaXZhdGVEaXJ0eSIsIm5hdGl2ZUhlYXBTaXplIiwibmF0aXZlSGVhcEFsbG9jYXRlZFNpemUiLCJkYWx2aWtQc3MiLCJkYWx2aWtQcml2YXRlRGlydHkiLCJlZ2xQc3MiLCJlZ2xQcml2YXRlRGlydHkiLCJnbFBzcyIsImdsUHJpdmF0ZURpcnR5IiwibGVuZ3RoIiwidG90YWxQc3MiLCJ0b3RhbFByaXZhdGVEaXJ0eSIsInBhcnNlTWVtaW5mb0ZvckFwaUJlbG93MTkiLCJwYXJzZU1lbWluZm9Gb3JBcGlBYm92ZTI5IiwibmF0aXZlUnNzIiwiZGFsdmlrUnNzIiwidG90YWxSc3MiLCJnZXRQZXJmb3JtYW5jZURhdGFUeXBlcyIsIl8iLCJrZXlzIiwiZ2V0UGVyZm9ybWFuY2VEYXRhIiwicGFja2FnZU5hbWUiLCJkYXRhVHlwZSIsInJldHJpZXMiLCJ0b0xvd2VyIiwiZ2V0QmF0dGVyeUluZm8iLCJnZXRDUFVJbmZvIiwiZ2V0TWVtb3J5SW5mbyIsImdldE5ldHdvcmtUcmFmZmljSW5mbyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInJldHJ5SW50ZXJ2YWwiLCJvdXRwdXQiLCJhZGIiLCJzaGVsbCIsImUiLCJzdGRlcnIiLCJsb2ciLCJpbmZvIiwidXNhZ2VzUGF0dGVybiIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwiZXhlYyIsImRlYnVnIiwiY21kIiwiZGF0YSIsInBvd2VyIiwicGFyc2VJbnQiLCJzcGxpdCIsInRyaW0iLCJOdW1iZXIiLCJpc05hTiIsImNsb25lIiwidG9TdHJpbmciLCJhcGlMZXZlbCIsImdldEFwaUxldmVsIiwibGluZSIsImZpbHRlciIsIkJvb2xlYW4iLCJoZWFkZXJzIiwidmFsdWVzIiwibWFwIiwiaGVhZGVyIiwicmV0dXJuVmFsdWUiLCJidWNrZXREdXJhdGlvbiIsImJ1Y2tldFN0YXJ0IiwiYWN0aXZlVGltZSIsInJ4Qnl0ZXMiLCJyeFBhY2tldHMiLCJ0eEJ5dGVzIiwidHhQYWNrZXRzIiwib3BlcmF0aW9ucyIsImluZGV4IiwiZnJvbVh0c3RhdHMiLCJpbmRleE9mIiwic3RhcnQiLCJkZWxpbWl0ZXIiLCJlbmQiLCJwZW5kaW5nQnl0ZXMiLCJzdWJzdHJpbmciLCJhcnJheUxpc3QiLCJqIiwiayIsInJldHVybkluZGV4IiwiaSIsImlzRXF1YWwiLCJpc1VuZGVmaW5lZCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9wZXJmb3JtYW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IE5FVFdPUktfS0VZUyA9IFtcbiAgWydidWNrZXRTdGFydCcsICdhY3RpdmVUaW1lJywgJ3J4Qnl0ZXMnLCAncnhQYWNrZXRzJywgJ3R4Qnl0ZXMnLCAndHhQYWNrZXRzJywgJ29wZXJhdGlvbnMnLCAnYnVja2V0RHVyYXRpb24nXSxcbiAgWydzdCcsICdhY3RpdmVUaW1lJywgJ3JiJywgJ3JwJywgJ3RiJywgJ3RwJywgJ29wJywgJ2J1Y2tldER1cmF0aW9uJ11cbl07XG5jb25zdCBDUFVfS0VZUyA9IFsndXNlcicsICdrZXJuZWwnXTtcbmNvbnN0IEJBVFRFUllfS0VZUyA9IFsncG93ZXInXTtcbmNvbnN0IE1FTU9SWV9LRVlTID0gW1xuICAndG90YWxQcml2YXRlRGlydHknLCAnbmF0aXZlUHJpdmF0ZURpcnR5JywgJ2RhbHZpa1ByaXZhdGVEaXJ0eScsXG4gICdlZ2xQcml2YXRlRGlydHknLCAnZ2xQcml2YXRlRGlydHknLFxuICAndG90YWxQc3MnLCAnbmF0aXZlUHNzJywgJ2RhbHZpa1BzcycsICdlZ2xQc3MnLCAnZ2xQc3MnLFxuICAnbmF0aXZlSGVhcEFsbG9jYXRlZFNpemUnLCAnbmF0aXZlSGVhcFNpemUnLFxuICAnbmF0aXZlUnNzJywgJ2RhbHZpa1JzcycsICd0b3RhbFJzcydcbl07XG5jb25zdCBTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICBjcHVpbmZvOiAndGhlIGFtb3VudCBvZiBjcHUgYnkgdXNlciBhbmQga2VybmVsIHByb2Nlc3MgLSBjcHUgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBtZW1vcnlpbmZvOiAndGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcHJvY2VzcyAtIG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgYXBwbGljYXRpb25zIG9uIHJlYWwgZGV2aWNlcyBhbmQgc2ltdWxhdG9ycycsXG4gIGJhdHRlcnlpbmZvOiAndGhlIHJlbWFpbmluZyBiYXR0ZXJ5IHBvd2VyIC0gYmF0dGVyeSBwb3dlciBpbmZvcm1hdGlvbiBmb3IgYXBwbGljYXRpb25zIG9uIHJlYWwgZGV2aWNlcyBhbmQgc2ltdWxhdG9ycycsXG4gIG5ldHdvcmtpbmZvOiAndGhlIG5ldHdvcmsgc3RhdGlzdGljcyAtIG5ldHdvcmsgcngvdHggaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnXG59KTtcbmNvbnN0IE1FTUlORk9fVElUTEVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIE5BVElWRTogJ05hdGl2ZScsXG4gIERBTFZJSzogJ0RhbHZpaycsXG4gIEVHTDogJ0VHTCcsXG4gIEdMOiAnR0wnLFxuICBNVFJBQ0s6ICdtdHJhY2snLFxuICBUT1RBTDogJ1RPVEFMJyxcbiAgSEVBUDogJ0hlYXAnXG59KTtcbmNvbnN0IFJFVFJZX1BBVVNFX01TID0gMTAwMDtcblxuLyoqXG4gKiBBUEkgbGV2ZWwgYmV0d2VlbiAxOCBhbmQgMzBcbiAqIFsnPFN5c3RlbSBUeXBlPicsICc8TWVtb3J5IFR5cGU+JywgPHBzcyB0b3RhbD4sIDxwcml2YXRlIGRpcnR5PiwgPHByaXZhdGUgY2xlYW4+LCA8c3dhcFBzcyBkaXJ0eT4sIDxoZWFwIHNpemU+LCA8aGVhcCBhbGxvYz4sIDxoZWFwIGZyZWU+XVxuICogZXhjZXB0ICdUT1RBTCcsIHdoaWNoIHNraXBzIHRoZSBzZWNvbmQgdHlwZSBuYW1lXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpMTlUbzI5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IFt0eXBlLCBzdWJUeXBlXSA9IGVudHJpZXM7XG4gIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5OQVRJVkUgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0Lm5hdGl2ZVBzcywgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksLCwgdmFsRGljdC5uYXRpdmVIZWFwU2l6ZSwgdmFsRGljdC5uYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkRBTFZJSyAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5IRUFQKSB7XG4gICAgWywsIHZhbERpY3QuZGFsdmlrUHNzLCB2YWxEaWN0LmRhbHZpa1ByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkVHTCAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5NVFJBQ0spIHtcbiAgICBbLCwgdmFsRGljdC5lZ2xQc3MsIHZhbERpY3QuZWdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZ2xQc3MsIHZhbERpY3QuZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5UT1RBTCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gOCkge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gdG90YWxzLCBhbmQgd2Ugb25seSB3YW50IHRoZSBmdWxsIGxpc3RpbmcsIHdoaWNoIGhhcyA4IGVudHJpZXNcbiAgICBbLCB2YWxEaWN0LnRvdGFsUHNzLCB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBbJzxTeXN0ZW0gVHlwZScsICc8cHBzPicsICc8c2hhcmVkIGRpcnR5PicsICc8cHJpdmF0ZSBkaXJ0eT4nLCAnPGhlYXAgc2l6ZT4nLCAnPGhlYXAgYWxsb2M+JywgJzxoZWFwIGZyZWU+J11cbiAqICEhISB2YWxEaWN0IGdldHMgbXV0YXRlZFxuICovXG5mdW5jdGlvbiBwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IHR5cGUgPSBlbnRyaWVzWzBdO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFKSB7XG4gICAgWywgdmFsRGljdC5uYXRpdmVQc3MsLCB2YWxEaWN0Lm5hdGl2ZVByaXZhdGVEaXJ0eSwgdmFsRGljdC5uYXRpdmVIZWFwU2l6ZSwgdmFsRGljdC5uYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkRBTFZJSykge1xuICAgIFssIHZhbERpY3QuZGFsdmlrUHNzLCwgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wpIHtcbiAgICBbLCB2YWxEaWN0LmVnbFBzcywsIHZhbERpY3QuZWdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuR0wpIHtcbiAgICBbLCB2YWxEaWN0LmdsUHNzLCwgdmFsRGljdC5nbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLlRPVEFMKSB7XG4gICAgWywgdmFsRGljdC50b3RhbFBzcywsIHZhbERpY3QudG90YWxQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfVxufVxuXG4vKipcbiAqIEFQSSBsZXZlbCAzMCBhbmQgYWJvdmVcbiAqIFsnPFN5c3RlbSBUeXBlPicsICc8TWVtb3J5IFR5cGU+JywgPHBzcyB0b3RhbD4sIDxwcml2YXRlIGRpcnR5PiwgPHByaXZhdGUgY2xlYW4+LCA8c3dhcFBzcyBkaXJ0eT4sIDxyc3MgdG90YWw+LCA8aGVhcCBzaXplPiwgPGhlYXAgYWxsb2M+LCA8aGVhcCBmcmVlPl1cbiAqICEhISB2YWxEaWN0IGdldHMgbXV0YXRlZFxuICovXG5mdW5jdGlvbiBwYXJzZU1lbWluZm9Gb3JBcGlBYm92ZTI5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IFt0eXBlLCBzdWJUeXBlXSA9IGVudHJpZXM7XG4gIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5OQVRJVkUgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0Lm5hdGl2ZVBzcywgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksLCwgdmFsRGljdC5uYXRpdmVSc3MsIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUsgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0LmRhbHZpa1BzcywgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHksLCwgdmFsRGljdC5kYWx2aWtSc3NdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZWdsUHNzLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmdsUHNzLCB2YWxEaWN0LmdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuVE9UQUwgJiYgZW50cmllcy5sZW5ndGggPT09IDkpIHtcbiAgICAvLyBoYXMgOSBlbnRyaWVzXG4gICAgWywgdmFsRGljdC50b3RhbFBzcywgdmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eSwsLCB2YWxEaWN0LnRvdGFsUnNzXSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLy9cbi8vIHJldHVybnMgdGhlIGluZm9ybWF0aW9uIHR5cGUgb2YgdGhlIHN5c3RlbSBzdGF0ZSB3aGljaCBpcyBzdXBwb3J0ZWQgdG8gcmVhZCBhcyBsaWtlIGNwdSwgbWVtb3J5LCBuZXR3b3JrIHRyYWZmaWMsIGFuZCBiYXR0ZXJ5LlxuLy8gb3V0cHV0IC0gYXJyYXkgbGlrZSBiZWxvd1xuLy8gW2NwdWluZm8sIGJhdHRlcnlpbmZvLCBuZXR3b3JraW5mbywgbWVtb3J5aW5mb11cbi8vXG5jb21tYW5kcy5nZXRQZXJmb3JtYW5jZURhdGFUeXBlcyA9IGZ1bmN0aW9uIGdldFBlcmZvcm1hbmNlRGF0YVR5cGVzICgpIHtcbiAgcmV0dXJuIF8ua2V5cyhTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyk7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiB0eXBlIG9mIHRoZSBzeXN0ZW0gc3RhdGUgd2hpY2ggaXMgc3VwcG9ydGVkIHRvIHJlYWQgYXMgbGlrZSBjcHUsIG1lbW9yeSwgbmV0d29yayB0cmFmZmljLCBhbmQgYmF0dGVyeS5cbiAqIGlucHV0IC0gKHBhY2thZ2VOYW1lKSB0aGUgcGFja2FnZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvblxuICogICAgICAgIChkYXRhVHlwZSkgdGhlIHR5cGUgb2Ygc3lzdGVtIHN0YXRlIHdoaWNoIHdhbnRzIHRvIHJlYWQuIEl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTXG4gKiAgICAgICAgKGRhdGFSZWFkVGltZW91dCkgdGhlIG51bWJlciBvZiBhdHRlbXB0cyB0byByZWFkXG4gKiBvdXRwdXQgLSB0YWJsZSBvZiB0aGUgcGVyZm9ybWFuY2UgZGF0YSwgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgZGF0YS4gVGhlIHJlbWFpbmluZyBsaW5lcyByZXByZXNlbnQgdGhlIHZhbHVlcyBvZiB0aGUgZGF0YS5cbiAqXG4gKiBpbiBjYXNlIG9mIGJhdHRlcnkgaW5mbyA6IFtbcG93ZXJdLCBbMjNdXVxuICogaW4gY2FzZSBvZiBtZW1vcnkgaW5mbyA6ICBbW3RvdGFsUHJpdmF0ZURpcnR5LCBuYXRpdmVQcml2YXRlRGlydHksIGRhbHZpa1ByaXZhdGVEaXJ0eSwgZWdsUHJpdmF0ZURpcnR5LCBnbFByaXZhdGVEaXJ0eSwgdG90YWxQc3MsXG4gKiAgIG5hdGl2ZVBzcywgZGFsdmlrUHNzLCBlZ2xQc3MsIGdsUHNzLCBuYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZSwgbmF0aXZlSGVhcFNpemVdLCBbMTgzNjAsIDgyOTYsIDYxMzIsIG51bGwsIG51bGwsIDQyNTg4LCA4NDA2LCA3MDI0LCBudWxsLCBudWxsLCAyNjUxOSwgMTAzNDRdXVxuICogaW4gY2FzZSBvZiBuZXR3b3JrIGluZm8gOiBbW2J1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucywgYnVja2V0RHVyYXRpb24sXSxcbiAqICAgWzE0NzgwOTE2MDAwMDAsIG51bGwsIDEwOTkwNzUsIDYxMDk0NywgOTI4LCAxMTQzNjIsIDc2OSwgMCwgMzYwMDAwMF0sIFsxNDc4MDk1MjAwMDAwLCBudWxsLCAxMzA2MzAwLCA0MDU5OTcsIDUwOSwgNDYzNTksIDM3MCwgMCwgMzYwMDAwMF1dXG4gKiBpbiBjYXNlIG9mIG5ldHdvcmsgaW5mbyA6IFtbc3QsIGFjdGl2ZVRpbWUsIHJiLCBycCwgdGIsIHRwLCBvcCwgYnVja2V0RHVyYXRpb25dLCBbMTQ3ODA4ODAwMCwgbnVsbCwgbnVsbCwgMzIxMTUyOTYsIDM0MjkxLCAyOTU2ODA1LCAyNTcwNSwgMCwgMzYwMF0sXG4gKiAgIFsxNDc4MDkxNjAwLCBudWxsLCBudWxsLCAyNzE0NjgzLCAxMTgyMSwgMTQyMDU2NCwgMTI2NTAsIDAsIDM2MDBdLCBbMTQ3ODA5NTIwMCwgbnVsbCwgbnVsbCwgMTAwNzkyMTMsIDE5OTYyLCAyNDg3NzA1LCAyMDAxNSwgMCwgMzYwMF0sXG4gKiAgIFsxNDc4MDk4ODAwLCBudWxsLCBudWxsLCA0NDQ0NDMzLCAxMDIyNywgMTQzMDM1NiwgMTA0OTMsIDAsIDM2MDBdXVxuICogaW4gY2FzZSBvZiBjcHUgaW5mbyA6IFtbdXNlciwga2VybmVsXSwgWzAuOSwgMS4zXV1cbiAqL1xuY29tbWFuZHMuZ2V0UGVyZm9ybWFuY2VEYXRhID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGVyZm9ybWFuY2VEYXRhIChwYWNrYWdlTmFtZSwgZGF0YVR5cGUsIHJldHJpZXMgPSAyKSB7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGRhdGFUeXBlKSkge1xuICAgIGNhc2UgJ2JhdHRlcnlpbmZvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEJhdHRlcnlJbmZvKHJldHJpZXMpO1xuICAgIGNhc2UgJ2NwdWluZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q1BVSW5mbyhwYWNrYWdlTmFtZSwgcmV0cmllcyk7XG4gICAgY2FzZSAnbWVtb3J5aW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRNZW1vcnlJbmZvKHBhY2thZ2VOYW1lLCByZXRyaWVzKTtcbiAgICBjYXNlICduZXR3b3JraW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXROZXR3b3JrVHJhZmZpY0luZm8ocmV0cmllcyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcGVyZm9ybWFuY2UgZGF0YSBvZiB0eXBlICcke2RhdGFUeXBlfScgZm91bmQuIGAgK1xuICAgICAgICBgT25seSB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkOiAke0pTT04uc3RyaW5naWZ5KFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTLCAnICcsIDIpfWApO1xuICB9XG59O1xuXG5oZWxwZXJzLmdldENQVUluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRDUFVJbmZvIChwYWNrYWdlTmFtZSwgcmV0cmllcyA9IDIpIHtcbiAgLy8gVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpc1xuICAvLyBzb21ldGltZXMsIHRoZSBmdW5jdGlvbiBvZiAnYWRiLnNoZWxsJyBmYWlscy4gd2hlbiBJIHRlc3RlZCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSB0YXJnZXQgb2YgJ0dhbGF4eSBOb3RlNScsXG4gIC8vIGFkYi5zaGVsbChkdW1wc3lzIGNwdWluZm8pIHJldHVybnMgY3B1IGRhdGFzIGZvciBvdGhlciBhcHBsaWNhdGlvbiBwYWNrYWdlcywgYnV0IEkgY2FuJ3QgZmluZCB0aGUgZGF0YSBmb3IgcGFja2FnZU5hbWUuXG4gIC8vIEl0IHVzdWFsbHkgZmFpbHMgMzAgdGltZXMgYW5kIHN1Y2Nlc3MgZm9yIHRoZSBuZXh0IHRpbWUsXG4gIC8vIFNpbmNlIHRoZW4sIGhlIGhhcyBjb250aW51ZWQgdG8gc3VjY2VlZC5cbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgb3V0cHV0O1xuICAgIHRyeSB7XG4gICAgICBvdXRwdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnY3B1aW5mbyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5zdGRlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhlLnN0ZGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICAvLyBgb3V0cHV0YCB3aWxsIGJlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gICAgKzAlIDIyMDkvaW8uYXBwaXVtLmFuZHJvaWQuYXBpczogMC4xJSB1c2VyICsgMC4yJSBrZXJuZWwgLyBmYXVsdHM6IDcwIG1pbm9yXG4gICAgY29uc3QgdXNhZ2VzUGF0dGVybiA9XG4gICAgICBuZXcgUmVnRXhwKGBeLitcXFxcLyR7Xy5lc2NhcGVSZWdFeHAocGFja2FnZU5hbWUpfTpcXFxcRCsoW1xcXFxkLl0rKSVcXFxccyt1c2VyXFxcXHMrXFxcXCtcXFxccysoW1xcXFxkLl0rKSVcXFxccytrZXJuZWxgLCAnbScpO1xuICAgIGNvbnN0IG1hdGNoID0gdXNhZ2VzUGF0dGVybi5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcob3V0cHV0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGNwdSB1c2FnZSBkYXRhIGZvciAnJHtwYWNrYWdlTmFtZX0nLiBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgfVxuICAgIHJldHVybiBbQ1BVX0tFWVMsIFttYXRjaFsxXSwgbWF0Y2hbMl1dXTtcbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldEJhdHRlcnlJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0QmF0dGVyeUluZm8gKHJldHJpZXMgPSAyKSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIFJFVFJZX1BBVVNFX01TLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGNtZCA9IFsnZHVtcHN5cycsICdiYXR0ZXJ5JywgJ3wnLCAnZ3JlcCcsICdsZXZlbCddO1xuICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBmcm9tIGR1bXBzeXMnKTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICBsZXQgcG93ZXIgPSBwYXJzZUludCgoZGF0YS5zcGxpdCgnOicpWzFdIHx8ICcnKS50cmltKCksIDEwKTtcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKHBvd2VyKSkge1xuICAgICAgcmV0dXJuIFtfLmNsb25lKEJBVFRFUllfS0VZUyksIFtwb3dlci50b1N0cmluZygpXV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGJhdHRlcnkgZGF0YTogJyR7ZGF0YX0nYCk7XG4gICAgfVxuICB9KTtcbn07XG5cbmhlbHBlcnMuZ2V0TWVtb3J5SW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldE1lbW9yeUluZm8gKHBhY2thZ2VOYW1lLCByZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICdkdW1wc3lzJywgJ21lbWluZm8nLCBgJyR7cGFja2FnZU5hbWV9J2AsXG4gICAgICAnfCcsICdncmVwJywgJy1FJyxcbiAgICAgIGAnJHtNRU1JTkZPX1RJVExFUy5OQVRJVkV9fCR7TUVNSU5GT19USVRMRVMuREFMVklLfXwke01FTUlORk9fVElUTEVTLkVHTH1gICtcbiAgICAgIGB8JHtNRU1JTkZPX1RJVExFUy5HTH18JHtNRU1JTkZPX1RJVExFUy5UT1RBTH0nYFxuICAgIF07XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7XG4gICAgfVxuICAgIGNvbnN0IHZhbERpY3QgPSB7dG90YWxQcml2YXRlRGlydHk6ICcnfTtcbiAgICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGRhdGEuc3BsaXQoJ1xcbicpKSB7XG4gICAgICBjb25zdCBlbnRyaWVzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBpZiAoYXBpTGV2ZWwgPj0gMzApIHtcbiAgICAgICAgcGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOShlbnRyaWVzLCB2YWxEaWN0KTtcbiAgICAgIH0gZWxzZSBpZiAoYXBpTGV2ZWwgPiAxOCAmJiBhcGlMZXZlbCA8IDMwKSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOShlbnRyaWVzLCB2YWxEaWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaUJlbG93MTkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5ICYmIHZhbERpY3QudG90YWxQcml2YXRlRGlydHkgIT09ICdub2RleCcpIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBfLmNsb25lKE1FTU9SWV9LRVlTKTtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGhlYWRlcnMubWFwKChoZWFkZXIpID0+IHZhbERpY3RbaGVhZGVyXSk7XG4gICAgICByZXR1cm4gW2hlYWRlcnMsIHZhbHVlc107XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVtb3J5IGRhdGE6ICcke2RhdGF9J2ApO1xuICB9KTtcbn07XG5cbmhlbHBlcnMuZ2V0TmV0d29ya1RyYWZmaWNJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV0d29ya1RyYWZmaWNJbmZvIChyZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IFtdO1xuICAgIGxldCBidWNrZXREdXJhdGlvbiwgYnVja2V0U3RhcnQsIGFjdGl2ZVRpbWUsIHJ4Qnl0ZXMsIHJ4UGFja2V0cywgdHhCeXRlcywgdHhQYWNrZXRzLCBvcGVyYXRpb25zO1xuXG4gICAgbGV0IGNtZCA9IFsnZHVtcHN5cycsICduZXRzdGF0cyddO1xuICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBmcm9tIGR1bXBzeXMnKTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAvLyBJbiBjYXNlIG9mIG5ldHdvcmsgdHJhZmZpYyBpbmZvcm1hdGlvbiwgaXQgaXMgZGlmZmVyZW50IGZvciB0aGUgcmV0dXJuIGRhdGEgYmV0d2VlbiBlbXVsYXRvciBhbmQgcmVhbCBkZXZpY2UuXG4gICAgLy8gdGhlIHJldHVybiBkYXRhIG9mIGVtdWxhdG9yXG4gICAgLy8gICBYdCBzdGF0czpcbiAgICAvLyAgIFBlbmRpbmcgYnl0ZXM6IDM5MjUwXG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1bW3R5cGU9V0lGSSwgc3ViVHlwZT1DT01CSU5FRCwgbmV0d29ya0lkPVwiV2lyZWRTU0lEXCJdXSB1aWQ9LTEgc2V0PUFMTCB0YWc9MHgwXG4gICAgLy8gICBOZXR3b3JrU3RhdHNIaXN0b3J5OiBidWNrZXREdXJhdGlvbj0zNjAwMDAwXG4gICAgLy8gICBidWNrZXRTdGFydD0xNDc4MDk4ODAwMDAwIGFjdGl2ZVRpbWU9MzE4MjQgcnhCeXRlcz0yMTUwMiByeFBhY2tldHM9NzggdHhCeXRlcz0xNzc0OCB0eFBhY2tldHM9OTAgb3BlcmF0aW9ucz0wXG4gICAgLy9cbiAgICAvLyA3LjFcbiAgICAvLyAgIFh0IHN0YXRzOlxuICAgIC8vICAgUGVuZGluZyBieXRlczogNDgxNDg3XG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1be3R5cGU9TU9CSUxFLCBzdWJUeXBlPUNPTUJJTkVELCBzdWJzY3JpYmVySWQ9MzEwMjYwLi4uLCBtZXRlcmVkPXRydWV9XSB1aWQ9LTEgc2V0PUFMTCB0YWc9MHgwXG4gICAgLy8gICAgIE5ldHdvcmtTdGF0c0hpc3Rvcnk6IGJ1Y2tldER1cmF0aW9uPTM2MDBcbiAgICAvLyAgICAgICBzdD0xNDgzOTg0ODAwIHJiPTAgcnA9MCB0Yj0xMjAzMSB0cD0xODQgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODM5ODg0MDAgcmI9MCBycD0wIHRiPTM4NDc2IHRwPTU4NyBvcD0wXG4gICAgLy8gICAgICAgc3Q9MTQ4Mzk5OTIwMCByYj0zMTU2MTYgcnA9NDAwIHRiPTk0ODAwIHRwPTM2MiBvcD0wXG4gICAgLy8gICAgICAgc3Q9MTQ4NDAwMjgwMCByYj0xNTgyNiBycD0yMCB0Yj00NzM4IHRwPTE2IG9wPTBcbiAgICAvL1xuICAgIC8vIHRoZSByZXR1cm4gZGF0YSBvZiByZWFsIGRldmljZVxuICAgIC8vICAgWHQgc3RhdHM6XG4gICAgLy8gICBQZW5kaW5nIGJ5dGVzOiAwXG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1be3R5cGU9TU9CSUxFLCBzdWJUeXBlPUNPTUJJTkVELCBzdWJzY3JpYmVySWQ9NDUwMDUwLi4ufV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgTmV0d29ya1N0YXRzSGlzdG9yeTogYnVja2V0RHVyYXRpb249MzYwMFxuICAgIC8vICAgc3Q9MTQ3ODA4ODAwMCByYj0zMjExNTI5NiBycD0zNDI5MSB0Yj0yOTU2ODA1IHRwPTI1NzA1IG9wPTBcbiAgICAvLyAgIHN0PTE0NzgwOTE2MDAgcmI9MjcxNDY4MyBycD0xMTgyMSB0Yj0xNDIwNTY0IHRwPTEyNjUwIG9wPTBcbiAgICAvLyAgIHN0PTE0NzgwOTUyMDAgcmI9MTAwNzkyMTMgcnA9MTk5NjIgdGI9MjQ4NzcwNSB0cD0yMDAxNSBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDk4ODAwIHJiPTQ0NDQ0MzMgcnA9MTAyMjcgdGI9MTQzMDM1NiB0cD0xMDQ5MyBvcD0wXG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgZnJvbVh0c3RhdHMgPSBkYXRhLmluZGV4T2YoJ1h0IHN0YXRzOicpO1xuXG4gICAgbGV0IHN0YXJ0ID0gZGF0YS5pbmRleE9mKCdQZW5kaW5nIGJ5dGVzOicsIGZyb21YdHN0YXRzKTtcbiAgICBsZXQgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc6Jywgc3RhcnQgKyAxKTtcbiAgICBsZXQgZW5kID0gZGF0YS5pbmRleE9mKCdcXG4nLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICBsZXQgcGVuZGluZ0J5dGVzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG5cbiAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZignYnVja2V0RHVyYXRpb24nLCBlbmQgKyAxKTtcbiAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJ1xcbicsIGRlbGltaXRlciArIDEpO1xuICAgICAgYnVja2V0RHVyYXRpb24gPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKGVuZCArIDEsIGRhdGEubGVuZ3RoKTtcbiAgICAgIGxldCBhcnJheUxpc3QgPSBkYXRhLnNwbGl0KCdcXG4nKTtcblxuICAgICAgaWYgKGFycmF5TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBORVRXT1JLX0tFWVMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICBzdGFydCA9IGFycmF5TGlzdFswXS5pbmRleE9mKE5FVFdPUktfS0VZU1tqXVswXSk7XG5cbiAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgaW5kZXggPSBqO1xuICAgICAgICAgICAgcmV0dXJuVmFsdWVbMF0gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBORVRXT1JLX0tFWVNbal0ubGVuZ3RoOyArK2spIHtcbiAgICAgICAgICAgICAgcmV0dXJuVmFsdWVbMF1ba10gPSBORVRXT1JLX0tFWVNbal1ba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmV0dXJuSW5kZXggPSAxO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5TGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGRhdGEgPSBhcnJheUxpc3RbaV07XG4gICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVswXSk7XG5cbiAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgYnVja2V0U3RhcnQgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzFdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRpbWUgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bMl0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgcnhCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVszXSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICByeFBhY2tldHMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNF0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgdHhCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVs1XSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICB0eFBhY2tldHMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNl0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9ucyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVyblZhbHVlW3JldHVybkluZGV4KytdID0gW2J1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucywgYnVja2V0RHVyYXRpb25dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VxdWFsKHBlbmRpbmdCeXRlcywgJycpICYmICFfLmlzVW5kZWZpbmVkKHBlbmRpbmdCeXRlcykgJiYgIV8uaXNFcXVhbChwZW5kaW5nQnl0ZXMsICdub2RleCcpKSB7XG4gICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG5ldHdvcmsgdHJhZmZpYyBkYXRhOiAnJHtkYXRhfSdgKTtcbiAgICB9XG4gIH0pO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQge1xuICBjb21tYW5kcywgaGVscGVycywgU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMsIENQVV9LRVlTLCBNRU1PUllfS0VZUyxcbiAgQkFUVEVSWV9LRVlTLCBORVRXT1JLX0tFWVMsXG59O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUFBLE1BQXFCQyxPQUFPLEdBQUcsRUFBL0I7QUFBQSxNQUFtQ0MsVUFBVSxHQUFHLEVBQWhEOzs7QUFFQSxNQUFNQyxZQUFZLEdBQUcsQ0FDbkIsQ0FBQyxhQUFELEVBQWdCLFlBQWhCLEVBQThCLFNBQTlCLEVBQXlDLFdBQXpDLEVBQXNELFNBQXRELEVBQWlFLFdBQWpFLEVBQThFLFlBQTlFLEVBQTRGLGdCQUE1RixDQURtQixFQUVuQixDQUFDLElBQUQsRUFBTyxZQUFQLEVBQXFCLElBQXJCLEVBQTJCLElBQTNCLEVBQWlDLElBQWpDLEVBQXVDLElBQXZDLEVBQTZDLElBQTdDLEVBQW1ELGdCQUFuRCxDQUZtQixDQUFyQjs7QUFJQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVMsUUFBVCxDQUFqQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsQ0FBQyxPQUFELENBQXJCOztBQUNBLE1BQU1DLFdBQVcsR0FBRyxDQUNsQixtQkFEa0IsRUFDRyxvQkFESCxFQUN5QixvQkFEekIsRUFFbEIsaUJBRmtCLEVBRUMsZ0JBRkQsRUFHbEIsVUFIa0IsRUFHTixXQUhNLEVBR08sV0FIUCxFQUdvQixRQUhwQixF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
@@ -304,7 +304,5 @@ commands.stopRecordingScreen = async function stopRecordingScreen(options = {})
304
304
  };
305
305
 
306
306
  var _default = commands;
307
- exports.default = _default;require('source-map-support').install();
308
-
309
-
310
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVUUllfUEFVU0UiLCJSRVRSWV9USU1FT1VUIiwiTUFYX1JFQ09SRElOR19USU1FX1NFQyIsIk1BWF9USU1FX1NFQyIsIkRFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDIiwiUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUIiwiU0NSRUVOUkVDT1JEX0JJTkFSWSIsIkRFRkFVTFRfRVhUIiwiTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCIsIkZGTVBFR19CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsInZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIiwiYWRiIiwiaXNFbXVsYXRvciIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJFcnJvciIsInNjaGVkdWxlU2NyZWVuUmVjb3JkIiwicmVjb3JkaW5nUHJvcGVydGllcyIsImxvZyIsInN0b3BwZWQiLCJ0aW1lciIsInZpZGVvU2l6ZSIsImJpdFJhdGUiLCJ0aW1lTGltaXQiLCJidWdSZXBvcnQiLCJjdXJyZW50VGltZUxpbWl0IiwiaGFzVmFsdWUiLCJjdXJyZW50VGltZUxpbWl0SW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBhdGhPbkRldmljZSIsInV1aWRWNCIsInN1YnN0cmluZyIsInJlY29yZGluZ1Byb2MiLCJzY3JlZW5yZWNvcmQiLCJvbiIsImN1cnJlbnREdXJhdGlvbiIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwidG9GaXhlZCIsImRlYnVnIiwidGltZUxpbWl0SW50IiwiY2h1bmtEdXJhdGlvbiIsImNhdGNoIiwiZSIsImVycm9yIiwic3RhY2siLCJzdGFydCIsIndhaXRGb3JDb25kaXRpb24iLCJmaWxlRXhpc3RzIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInJlY29yZHMiLCJwdXNoIiwicmVjb3JkaW5nUHJvY2VzcyIsIm1lcmdlU2NyZWVuUmVjb3JkcyIsIm1lZGlhRmlsZXMiLCJmcyIsIndoaWNoIiwiY29uZmlnQ29udGVudCIsIm1hcCIsIngiLCJqb2luIiwiY29uZmlnRmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsInJlc3VsdCIsIk1hdGgiLCJmbG9vciIsIkRhdGUiLCJhcmdzIiwiaW5mbyIsImV4ZWMiLCJ0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nIiwiZm9yY2UiLCJwaWRzIiwiZ2V0UElEc0J5TmFtZSIsInAiLCJzaGVsbCIsImVyciIsIm1lc3NhZ2UiLCJzdGFydFJlY29yZGluZ1NjcmVlbiIsImZvcmNlUmVzdGFydCIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJ3YXJuIiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJyZWNvcmQiLCJyaW1yYWYiLCJ0aW1lb3V0IiwicGFyc2VGbG9hdCIsInRpbWluZyIsIlRpbWVyIiwiaXNSdW5uaW5nIiwic3RvcCIsImVycm9yQW5kVGhyb3ciLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJsb2NhbFJlY29yZHMiLCJwb3NpeCIsImJhc2VuYW1lIiwicHVsbCIsImxhc3QiLCJyZXN1bHRGaWxlUGF0aCIsImxlbmd0aCIsInNpemUiLCJzdGF0IiwidG9SZWFkYWJsZVNpemVTdHJpbmciXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvcmVjb3Jkc2NyZWVuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCwgZnMsIG5ldCwgdGVtcERpciwgc3lzdGVtLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbnN0IFJFVFJZX1BBVVNFID0gMzAwO1xuY29uc3QgUkVUUllfVElNRU9VVCA9IDUwMDA7XG5jb25zdCBNQVhfUkVDT1JESU5HX1RJTUVfU0VDID0gNjAgKiAzO1xuY29uc3QgTUFYX1RJTUVfU0VDID0gNjAgKiAzMDtcbmNvbnN0IERFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDID0gTUFYX1JFQ09SRElOR19USU1FX1NFQztcbmNvbnN0IFBST0NFU1NfU0hVVERPV05fVElNRU9VVCA9IDEwICogMTAwMDtcbmNvbnN0IFNDUkVFTlJFQ09SRF9CSU5BUlkgPSAnc2NyZWVucmVjb3JkJztcbmNvbnN0IERFRkFVTFRfRVhUID0gJy5tcDQnO1xuY29uc3QgTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCA9IDI3O1xuY29uc3QgRkZNUEVHX0JJTkFSWSA9IGBmZm1wZWcke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5cbmFzeW5jIGZ1bmN0aW9uIHVwbG9hZFJlY29yZGVkTWVkaWEgKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCA9IG51bGwsIHVwbG9hZE9wdGlvbnMgPSB7fSkge1xuICBpZiAoXy5pc0VtcHR5KHJlbW90ZVBhdGgpKSB7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGNvbnN0IHt1c2VyLCBwYXNzLCBtZXRob2QsIGhlYWRlcnMsIGZpbGVGaWVsZE5hbWUsIGZvcm1GaWVsZHN9ID0gdXBsb2FkT3B0aW9ucztcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBtZXRob2Q6IG1ldGhvZCB8fCAnUFVUJyxcbiAgICBoZWFkZXJzLFxuICAgIGZpbGVGaWVsZE5hbWUsXG4gICAgZm9ybUZpZWxkcyxcbiAgfTtcbiAgaWYgKHVzZXIgJiYgcGFzcykge1xuICAgIG9wdGlvbnMuYXV0aCA9IHt1c2VyLCBwYXNzfTtcbiAgfVxuICBhd2FpdCBuZXQudXBsb2FkRmlsZShsb2NhbEZpbGUsIHJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICByZXR1cm4gJyc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIChhZGIsIGlzRW11bGF0b3IpIHtcbiAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCBhZGIuZ2V0QXBpTGV2ZWwoKTtcbiAgaWYgKGlzRW11bGF0b3IgJiYgYXBpTGV2ZWwgPCBNSU5fRU1VTEFUT1JfQVBJX0xFVkVMKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTY3JlZW4gcmVjb3JkaW5nIGRvZXMgbm90IHdvcmsgb24gZW11bGF0b3JzIHJ1bm5pbmcgQW5kcm9pZCBBUEkgbGV2ZWwgbGVzcyB0aGFuICR7TUlOX0VNVUxBVE9SX0FQSV9MRVZFTH1gKTtcbiAgfVxuICBpZiAoYXBpTGV2ZWwgPCAxOSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBub3QgYXZhaWxhYmxlIG9uIEFQSSBMZXZlbCAke2FwaUxldmVsfS4gTWluaW11bSBBUEkgTGV2ZWwgaXMgMTkuYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NoZWR1bGVTY3JlZW5SZWNvcmQgKGFkYiwgcmVjb3JkaW5nUHJvcGVydGllcywgbG9nID0gbnVsbCkge1xuICBpZiAocmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIHRpbWVyLFxuICAgIHZpZGVvU2l6ZSxcbiAgICBiaXRSYXRlLFxuICAgIHRpbWVMaW1pdCxcbiAgICBidWdSZXBvcnQsXG4gIH0gPSByZWNvcmRpbmdQcm9wZXJ0aWVzO1xuXG4gIGxldCBjdXJyZW50VGltZUxpbWl0ID0gTUFYX1JFQ09SRElOR19USU1FX1NFQztcbiAgaWYgKHV0aWwuaGFzVmFsdWUocmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0KSkge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lTGltaXRJbnQgPSBwYXJzZUludChyZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQsIDEwKTtcbiAgICBpZiAoIWlzTmFOKGN1cnJlbnRUaW1lTGltaXRJbnQpICYmIGN1cnJlbnRUaW1lTGltaXRJbnQgPCBNQVhfUkVDT1JESU5HX1RJTUVfU0VDKSB7XG4gICAgICBjdXJyZW50VGltZUxpbWl0ID0gY3VycmVudFRpbWVMaW1pdEludDtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGF0aE9uRGV2aWNlID0gYC9zZGNhcmQvJHt1dGlsLnV1aWRWNCgpLnN1YnN0cmluZygwLCA4KX0ke0RFRkFVTFRfRVhUfWA7XG4gIGNvbnN0IHJlY29yZGluZ1Byb2MgPSBhZGIuc2NyZWVucmVjb3JkKHBhdGhPbkRldmljZSwge1xuICAgIHZpZGVvU2l6ZSxcbiAgICBiaXRSYXRlLFxuICAgIHRpbWVMaW1pdDogY3VycmVudFRpbWVMaW1pdCxcbiAgICBidWdSZXBvcnQsXG4gIH0pO1xuXG4gIHJlY29yZGluZ1Byb2Mub24oJ2VuZCcsICgpID0+IHtcbiAgICBpZiAocmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkIHx8ICF1dGlsLmhhc1ZhbHVlKHRpbWVMaW1pdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudER1cmF0aW9uID0gdGltZXIuZ2V0RHVyYXRpb24oKS5hc1NlY29uZHMudG9GaXhlZCgwKTtcbiAgICBsb2c/LmRlYnVnKGBUaGUgb3ZlcmFsbCBzY3JlZW4gcmVjb3JkaW5nIGR1cmF0aW9uIGlzICR7Y3VycmVudER1cmF0aW9ufXMgc28gZmFyYCk7XG4gICAgY29uc3QgdGltZUxpbWl0SW50ID0gcGFyc2VJbnQodGltZUxpbWl0LCAxMCk7XG4gICAgaWYgKGlzTmFOKHRpbWVMaW1pdEludCkgfHwgY3VycmVudER1cmF0aW9uID49IHRpbWVMaW1pdEludCkge1xuICAgICAgbG9nPy5kZWJ1ZygnVGhlcmUgaXMgbm8gbmVlZCB0byBzdGFydCB0aGUgbmV4dCByZWNvcmRpbmcgY2h1bmsnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQgPSB0aW1lTGltaXRJbnQgLSBjdXJyZW50RHVyYXRpb247XG4gICAgY29uc3QgY2h1bmtEdXJhdGlvbiA9IHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCA8IE1BWF9SRUNPUkRJTkdfVElNRV9TRUNcbiAgICAgID8gcmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0XG4gICAgICA6IE1BWF9SRUNPUkRJTkdfVElNRV9TRUM7XG4gICAgbG9nPy5kZWJ1ZyhgU3RhcnRpbmcgdGhlIG5leHQgJHtjaHVua0R1cmF0aW9ufXMtY2h1bmsgYCArXG4gICAgICBgb2Ygc2NyZWVuIHJlY29yZGluZyBpbiBvcmRlciB0byBhY2hpZXZlICR7dGltZUxpbWl0SW50fXMgdG90YWwgZHVyYXRpb25gKTtcbiAgICBzY2hlZHVsZVNjcmVlblJlY29yZChhZGIsIHJlY29yZGluZ1Byb3BlcnRpZXMsIGxvZylcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBsb2c/LmVycm9yKGUuc3RhY2spO1xuICAgICAgICByZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGF3YWl0IHJlY29yZGluZ1Byb2Muc3RhcnQoMCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiBhd2FpdCBhZGIuZmlsZUV4aXN0cyhwYXRoT25EZXZpY2UpLFxuICAgICAge3dhaXRNczogUkVUUllfVElNRU9VVCwgaW50ZXJ2YWxNczogUkVUUllfUEFVU0V9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGV4cGVjdGVkIHNjcmVlbiByZWNvcmQgZmlsZSAnJHtwYXRoT25EZXZpY2V9JyBkb2VzIG5vdCBleGlzdCBhZnRlciAke1JFVFJZX1RJTUVPVVR9bXMuIGAgK1xuICAgICAgYElzICR7U0NSRUVOUkVDT1JEX0JJTkFSWX0gdXRpbGl0eSBhdmFpbGFibGUgYW5kIG9wZXJhdGlvbmFsIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdD9gKTtcbiAgfVxuXG4gIHJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3Jkcy5wdXNoKHBhdGhPbkRldmljZSk7XG4gIHJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2VzcyA9IHJlY29yZGluZ1Byb2M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1lcmdlU2NyZWVuUmVjb3JkcyAobWVkaWFGaWxlcywgbG9nID0gbnVsbCkge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndoaWNoKEZGTVBFR19CSU5BUlkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke0ZGTVBFR19CSU5BUll9IHV0aWxpdHkgaXMgbm90IGF2YWlsYWJsZSBpbiBQQVRILiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvYCk7XG4gIH1cbiAgY29uc3QgY29uZmlnQ29udGVudCA9IG1lZGlhRmlsZXNcbiAgICAubWFwKCh4KSA9PiBgZmlsZSAnJHt4fSdgKVxuICAgIC5qb2luKCdcXG4nKTtcbiAgY29uc3QgY29uZmlnRmlsZSA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUobWVkaWFGaWxlc1swXSksICdjb25maWcudHh0Jyk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShjb25maWdGaWxlLCBjb25maWdDb250ZW50LCAndXRmOCcpO1xuICBsb2c/LmRlYnVnKGBHZW5lcmF0ZWQgZmZtcGVnIG1lcmdpbmcgY29uZmlnICcke2NvbmZpZ0ZpbGV9JyB3aXRoIGl0ZW1zOlxcbiR7Y29uZmlnQ29udGVudH1gKTtcbiAgY29uc3QgcmVzdWx0ID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShtZWRpYUZpbGVzWzBdKSwgYG1lcmdlXyR7TWF0aC5mbG9vcihuZXcgRGF0ZSgpKX0ke0RFRkFVTFRfRVhUfWApO1xuICBjb25zdCBhcmdzID0gWyctc2FmZScsICcwJywgJy1mJywgJ2NvbmNhdCcsICctaScsIGNvbmZpZ0ZpbGUsICctYycsICdjb3B5JywgcmVzdWx0XTtcbiAgbG9nPy5pbmZvKGBJbml0aWF0aW5nIHNjcmVlbiByZWNvcmRzIG1lcmdpbmcgdXNpbmcgdGhlIGNvbW1hbmQgJyR7RkZNUEVHX0JJTkFSWX0gJHthcmdzLmpvaW4oJyAnKX0nYCk7XG4gIGF3YWl0IGV4ZWMoRkZNUEVHX0JJTkFSWSwgYXJncyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRlcm1pbmF0ZUJhY2tncm91bmRTY3JlZW5SZWNvcmRpbmcgKGFkYiwgZm9yY2UgPSB0cnVlKSB7XG4gIGNvbnN0IHBpZHMgPSAoYXdhaXQgYWRiLmdldFBJRHNCeU5hbWUoU0NSRUVOUkVDT1JEX0JJTkFSWSkpXG4gICAgLm1hcCgocCkgPT4gYCR7cH1gKTtcbiAgaWYgKF8uaXNFbXB0eShwaWRzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFsna2lsbCcsIGZvcmNlID8gJy0xNScgOiAnLTInLCAuLi5waWRzXSk7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiBfLmlzRW1wdHkoYXdhaXQgYWRiLmdldFBJRHNCeU5hbWUoU0NSRUVOUkVDT1JEX0JJTkFSWSkpLCB7XG4gICAgICB3YWl0TXM6IFBST0NFU1NfU0hVVERPV05fVElNRU9VVCxcbiAgICAgIGludGVydmFsTXM6IDUwMCxcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gc3RvcCB0aGUgYmFja2dyb3VuZCBzY3JlZW4gcmVjb3JkaW5nOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJlbW90ZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uLCB3aGVyZSB0aGUgY2FwdHVyZWQgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG91bnQgcmVzcG9uc2UgdmFsdWUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBvbmx5IGhhcyBhbiBlZmZlY3QgaWYgdGhlcmUgaXMgc2NyZWVuIHJlY29yZGluZyBwcm9jZXNzIGluIHByb2dyZWVzc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBmb3JjZVJlc3RhcnRgIHBhcmFtZXRlciBpcyBub3Qgc2V0IHRvIGB0cnVlYC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXNlciAtIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLiBPbmx5IHdvcmtzIGlmIGByZW1vdGVQYXRoYCBpcyBwcm92aWRlZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi4gT25seSB3b3JrcyBpZiBgcmVtb3RlUGF0aGAgaXMgcHJvdmlkZWQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1ldGhvZCBbUFVUXSAtIFRoZSBodHRwIG11bHRpcGFydCB1cGxvYWQgbWV0aG9kIG5hbWUuIE9ubHkgd29ya3MgaWYgYHJlbW90ZVBhdGhgIGlzIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIC0gQWRkaXRpb25hbCBoZWFkZXJzIG1hcHBpbmcgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZUZpZWxkTmFtZSBbZmlsZV0gLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCwgd2hlcmUgdGhlIGZpbGUgY29udGVudCBCTE9CIHNob3VsZCBiZSBzdG9yZWQgZm9yXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9PYmplY3R8QXJyYXk8UGFpcj59IGZvcm1GaWVsZHMgLSBBZGRpdGlvbmFsIGZvcm0gZmllbGRzIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZpZGVvU2l6ZSAtIFRoZSBmb3JtYXQgaXMgd2lkdGh4aGVpZ2h0LlxuICogICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgZGV2aWNlJ3MgbmF0aXZlIGRpc3BsYXkgcmVzb2x1dGlvbiAoaWYgc3VwcG9ydGVkKSxcbiAqICAgICAgICAgICAgICAgICAgMTI4MHg3MjAgaWYgbm90LiBGb3IgYmVzdCByZXN1bHRzLFxuICogICAgICAgICAgICAgICAgICB1c2UgYSBzaXplIHN1cHBvcnRlZCBieSB5b3VyIGRldmljZSdzIEFkdmFuY2VkIFZpZGVvIENvZGluZyAoQVZDKSBlbmNvZGVyLlxuICogICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgXCIxMjgweDcyMFwiXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBidWdSZXBvcnQgLSBTZXQgaXQgdG8gYHRydWVgIGluIG9yZGVyIHRvIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgdmlkZW8gb3ZlcmxheSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgYSB0aW1lc3RhbXAsIHRoYXQgaXMgaGVscGZ1bCBpbiB2aWRlb3MgY2FwdHVyZWQgdG8gaWxsdXN0cmF0ZSBidWdzLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgc2luY2UgQVBJIGxldmVsIDI3IChBbmRyb2lkIFApLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdGltZUxpbWl0IC0gVGhlIG1heGltdW0gcmVjb3JkaW5nIHRpbWUsIGluIHNlY29uZHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE4MCAoMyBtaW51dGVzKS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYXhpbXVtIHZhbHVlIGlzIDE4MDAgKDMwIG1pbnV0ZXMpLiBJZiB0aGUgcGFzc2VkIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAxODAgdGhlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFsZ29yaXRobSB3aWxsIHRyeSB0byBzY2hlZHVsZSBtdWx0aXBsZSBzY3JlZW4gcmVjb3JkaW5nIGNodW5rcyBhbmQgbWVyZ2UgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmcgdmlkZW9zIGludG8gYSBzaW5nbGUgbWVkaWEgZmlsZSB1c2luZyBgZmZtcGVnYCB1dGlsaXR5LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHV0aWxpdHkgaXMgbm90IGF2YWlsYWJsZSBpbiBQQVRIIHRoZW4gdGhlIG1vc3QgcmVjZW50IHNjcmVlbiByZWNvcmRpbmcgY2h1bmsgaXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvaW5nIHRvIGJlIHJldHVybmVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gYml0UmF0ZSAtIFRoZSB2aWRlbyBiaXQgcmF0ZSBmb3IgdGhlIHZpZGVvLCBpbiBiaXRzIHBlciBzZWNvbmQuXG4gKiAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA0MDAwMDAwICg0IE1iaXQvcykuIFlvdSBjYW4gaW5jcmVhc2UgdGhlIGJpdCByYXRlIHRvIGltcHJvdmUgdmlkZW8gcXVhbGl0eSxcbiAqICAgICAgICAgICAgICAgIGJ1dCBkb2luZyBzbyByZXN1bHRzIGluIGxhcmdlciBtb3ZpZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmNlUmVzdGFydCAtIFdoZXRoZXIgdG8gdHJ5IHRvIGNhdGNoIGFuZCB1cGxvYWQvcmV0dXJuIHRoZSBjdXJyZW50bHkgcnVubmluZyBzY3JlZW4gcmVjb3JkaW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYGZhbHNlYCwgdGhlIGRlZmF1bHQgc2V0dGluZykgb3IgaWdub3JlIHRoZSByZXN1bHQgb2YgaXQgYW5kIHN0YXJ0IGEgbmV3IHJlY29yZGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkgKGB0cnVlYCkuXG4gKi9cblxuLyoqXG4gKiBSZWNvcmQgdGhlIGRpc3BsYXkgb2YgYSByZWFsIGRldmljZXMgcnVubmluZyBBbmRyb2lkIDQuNCAoQVBJIGxldmVsIDE5KSBhbmQgaGlnaGVyLlxuICogRW11bGF0b3JzIGFyZSBzdXBwb3J0ZWQgc2luY2UgQVBJIGxldmVsIDI3IChBbmRyb2lkIFApLlxuICogSXQgcmVjb3JkcyBzY3JlZW4gYWN0aXZpdHkgdG8gYW4gTVBFRy00IGZpbGUuIEF1ZGlvIGlzIG5vdCByZWNvcmRlZCB3aXRoIHRoZSB2aWRlbyBmaWxlLlxuICogSWYgc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBhbHJlYWR5IHN0YXJ0ZWQgdGhlbiB0aGUgY29tbWFuZCB3aWxsIHN0b3AgaXQgZm9yY2VmdWxseSBhbmQgc3RhcnQgYSBuZXcgb25lLlxuICogVGhlIHByZXZpb3VzbHkgcmVjb3JkZWQgdmlkZW8gZmlsZSB3aWxsIGJlIGRlbGV0ZWQuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcmVjb3JkZWQgbWVkaWEgZmlsZSBpZlxuICogICAgICAgICAgICAgICAgICAgYW55IHNjcmVlbiByZWNvcmRpbmcgaXMgY3VycmVudGx5IHJ1bm5pbmcgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdGFydCBvciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RhcnRSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdGFydFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGF3YWl0IHZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkKHRoaXMuYWRiLCB0aGlzLmlzRW11bGF0b3IoKSk7XG5cbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBjb25zdCB7dmlkZW9TaXplLCB0aW1lTGltaXQgPSBERUZBVUxUX1JFQ09SRElOR19USU1FX1NFQywgYnVnUmVwb3J0LCBiaXRSYXRlLCBmb3JjZVJlc3RhcnR9ID0gb3B0aW9ucztcbiAgaWYgKCFmb3JjZVJlc3RhcnQpIHtcbiAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnN0b3BSZWNvcmRpbmdTY3JlZW4ob3B0aW9ucyk7XG4gIH1cblxuICBpZiAoYXdhaXQgdGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyh0aGlzLmFkYiwgdHJ1ZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBUaGVyZSB3ZXJlIHNvbWUgJHtTQ1JFRU5SRUNPUkRfQklOQVJZfSBwcm9jZXNzIGxlZnRvdmVycyBydW5uaW5nIGAgK1xuICAgICAgYGluIHRoZSBiYWNrZ3JvdW5kLiBNYWtlIHN1cmUgeW91IHN0b3Agc2NyZWVuIHJlY29yZGluZyBlYWNoIHRpbWUgYWZ0ZXIgaXQgaXMgc3RhcnRlZCwgYCArXG4gICAgICBgb3RoZXJ3aXNlIHRoZSByZWNvcmRlZCBtZWRpYSBtaWdodCBxdWlja2x5IGV4Y2VlZCBhbGwgdGhlIGZyZWUgc3BhY2Ugb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LmApO1xuICB9XG5cbiAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiAodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzIHx8IFtdKSkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmltcmFmKHJlY29yZCk7XG4gICAgfVxuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgdGltZW91dCA9IHBhcnNlRmxvYXQodGltZUxpbWl0KTtcbiAgaWYgKGlzTmFOKHRpbWVvdXQpIHx8IHRpbWVvdXQgPiBNQVhfVElNRV9TRUMgfHwgdGltZW91dCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGltZUxpbWl0IHZhbHVlIG11c3QgYmUgaW4gcmFuZ2UgWzEsICR7TUFYX1RJTUVfU0VDfV0gc2Vjb25kcy4gYCArXG4gICAgICBgVGhlIHZhbHVlIG9mICcke3RpbWVMaW1pdH0nIGhhcyBiZWVuIHBhc3NlZCBpbnN0ZWFkLmApO1xuICB9XG5cbiAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyA9IHtcbiAgICB0aW1lcjogbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCksXG4gICAgdmlkZW9TaXplLFxuICAgIHRpbWVMaW1pdCxcbiAgICBjdXJyZW50VGltZUxpbWl0OiB0aW1lTGltaXQsXG4gICAgYml0UmF0ZSxcbiAgICBidWdSZXBvcnQsXG4gICAgcmVjb3JkczogW10sXG4gICAgcmVjb3JkaW5nUHJvY2VzczogbnVsbCxcbiAgICBzdG9wcGVkOiBmYWxzZSxcbiAgfTtcbiAgYXdhaXQgc2NoZWR1bGVTY3JlZW5SZWNvcmQodGhpcy5hZGIsIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMsIHRoaXMubG9nKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJlbW90ZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uLCB3aGVyZSB0aGUgcmVzdWx0aW5nIHZpZGVvIHNob3VsZCBiZSB1cGxvYWRlZC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ6IGh0dHAvaHR0cHMsIGZ0cC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGwgb3IgZW1wdHkgc3RyaW5nIHZhbHVlICh0aGUgZGVmYXVsdCBzZXR0aW5nKSBtZWFucyB0aGUgY29udGVudCBvZiByZXN1bHRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIGVuY29kZWQgYXMgQmFzZTY0IGFuZCBwYXNzZWQgYXMgdGhlIGVuZHBvdW50IHJlc3BvbnNlIHZhbHVlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHRoZSBnZW5lcmF0ZWQgbWVkaWEgZmlsZSBpcyB0b28gYmlnIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXQgaW50byB0aGUgYXZhaWxhYmxlIHByb2Nlc3MgbWVtb3J5LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1c2VyIC0gVGhlIG5hbWUgb2YgdGhlIHVzZXIgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhc3MgLSBUaGUgcGFzc3dvcmQgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1ldGhvZCAtIFRoZSBodHRwIG11bHRpcGFydCB1cGxvYWQgbWV0aG9kIG5hbWUuIFRoZSAnUFVUJyBvbmUgaXMgdXNlZCBieSBkZWZhdWx0LlxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIC0gQWRkaXRpb25hbCBoZWFkZXJzIG1hcHBpbmcgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZUZpZWxkTmFtZSBbZmlsZV0gLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCwgd2hlcmUgdGhlIGZpbGUgY29udGVudCBCTE9CIHNob3VsZCBiZSBzdG9yZWQgZm9yXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9PYmplY3R8QXJyYXk8UGFpcj59IGZvcm1GaWVsZHMgLSBBZGRpdGlvbmFsIGZvcm0gZmllbGRzIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKi9cblxuLyoqXG4gKiBTdG9wIHJlY29yZGluZyB0aGUgc2NyZWVuLlxuICogSWYgbm8gc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBzdGFydGVkIGJlZm9yZSB0aGVuIHRoZSBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHs/U3RvcFJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBtZWRpYSBmaWxlIGlmICdyZW1vdGVQYXRoJ1xuICogICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlzIGZhbHN5IG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgbmFtZSBvZiBhIG1lZGlhIGZpbGVcbiAqICAgICAgICAgICAgICAgICBvciB0aGUgZmlsZSBjb250ZW50IGNhbm5vdCBiZSB1cGxvYWRlZCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uXG4gKiAgICAgICAgICAgICAgICAgb3Igc2NyZWVuIHJlY29yZGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RvcFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBhd2FpdCB2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCh0aGlzLmFkYiwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuXG4gIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyh0aGlzLmFkYiwgZmFsc2UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy53YXJuKGVyci5tZXNzYWdlKTtcbiAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgICAgdGhpcy5sb2cud2FybignVGhlIHJlc3VsdGluZyB2aWRlbyBtaWdodCBiZSBjb3JydXB0ZWQnKTtcbiAgICB9XG4gIH1cblxuICBpZiAoXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgU2NyZWVuIHJlY29yZGluZyBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBzdGFydGVkIGJ5IEFwcGl1bS4gVGhlcmUgaXMgbm90aGluZyB0byBzdG9wYCk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2VzcyAmJiB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MuaXNSdW5uaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2Vzcy5zdG9wKCdTSUdJTlQnLCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFVuYWJsZSB0byBzdG9wIHNjcmVlbiByZWNvcmRpbmcgd2l0aGluICR7UFJPQ0VTU19TSFVURE9XTl9USU1FT1VUfW1zYCk7XG4gICAgfVxuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2VzcyA9IG51bGw7XG4gIH1cblxuICBpZiAoXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkcykpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBObyBzY3JlZW4gcmVjb3JkaW5ncyBoYXZlIGJlZW4gc3RvcmVkIG9uIHRoZSBkZXZpY2Ugc28gZmFyLiBgICtcbiAgICAgIGBBcmUgeW91IHN1cmUgdGhlICR7U0NSRUVOUkVDT1JEX0JJTkFSWX0gdXRpbGl0eSB3b3JrcyBhcyBleHBlY3RlZD9gKTtcbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2NhbFJlY29yZHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhdGhPbkRldmljZSBvZiB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMpIHtcbiAgICAgIGxvY2FsUmVjb3Jkcy5wdXNoKHBhdGgucmVzb2x2ZSh0bXBSb290LCBwYXRoLnBvc2l4LmJhc2VuYW1lKHBhdGhPbkRldmljZSkpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1bGwocGF0aE9uRGV2aWNlLCBfLmxhc3QobG9jYWxSZWNvcmRzKSk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yaW1yYWYocGF0aE9uRGV2aWNlKTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdEZpbGVQYXRoID0gXy5sYXN0KGxvY2FsUmVjb3Jkcyk7XG4gICAgaWYgKGxvY2FsUmVjb3Jkcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBHb3QgJHtsb2NhbFJlY29yZHMubGVuZ3RofSBzY3JlZW4gcmVjb3JkaW5ncy4gVHJ5aW5nIHRvIG1lcmdlIHRoZW1gKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdEZpbGVQYXRoID0gYXdhaXQgbWVyZ2VTY3JlZW5SZWNvcmRzKGxvY2FsUmVjb3JkcywgdGhpcy5sb2cpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgbWVyZ2UgdGhlIHJlY29yZGVkIGZpbGVzLiBUaGUgbW9zdCByZWNlbnQgc2NyZWVuIHJlY29yZGluZyBpcyBnb2luZyB0byBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LiBgICtcbiAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KG9wdGlvbnMucmVtb3RlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQocmVzdWx0RmlsZVBhdGgpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc2NyZWVuIHJlY29yZGluZyBpcyAke3V0aWwudG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9YCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB1cGxvYWRSZWNvcmRlZE1lZGlhKHJlc3VsdEZpbGVQYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzID0gbnVsbDtcbiAgfVxufTtcblxuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQUVBLE1BQU1DLFdBQVcsR0FBRyxHQUFwQjtBQUNBLE1BQU1DLGFBQWEsR0FBRyxJQUF0QjtBQUNBLE1BQU1DLHNCQUFzQixH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
307
+ exports.default = _default;
308
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsIlJFVFJZX1BBVVNFIiwiUkVUUllfVElNRU9VVCIsIk1BWF9SRUNPUkRJTkdfVElNRV9TRUMiLCJNQVhfVElNRV9TRUMiLCJERUZBVUxUX1JFQ09SRElOR19USU1FX1NFQyIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVCIsIlNDUkVFTlJFQ09SRF9CSU5BUlkiLCJERUZBVUxUX0VYVCIsIk1JTl9FTVVMQVRPUl9BUElfTEVWRUwiLCJGRk1QRUdfQklOQVJZIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwidXBsb2FkUmVjb3JkZWRNZWRpYSIsImxvY2FsRmlsZSIsInJlbW90ZVBhdGgiLCJ1cGxvYWRPcHRpb25zIiwiXyIsImlzRW1wdHkiLCJ1dGlsIiwidG9Jbk1lbW9yeUJhc2U2NCIsInRvU3RyaW5nIiwidXNlciIsInBhc3MiLCJtZXRob2QiLCJoZWFkZXJzIiwiZmlsZUZpZWxkTmFtZSIsImZvcm1GaWVsZHMiLCJvcHRpb25zIiwiYXV0aCIsIm5ldCIsInVwbG9hZEZpbGUiLCJ2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCIsImFkYiIsImlzRW11bGF0b3IiLCJhcGlMZXZlbCIsImdldEFwaUxldmVsIiwiRXJyb3IiLCJzY2hlZHVsZVNjcmVlblJlY29yZCIsInJlY29yZGluZ1Byb3BlcnRpZXMiLCJsb2ciLCJzdG9wcGVkIiwidGltZXIiLCJ2aWRlb1NpemUiLCJiaXRSYXRlIiwidGltZUxpbWl0IiwiYnVnUmVwb3J0IiwiY3VycmVudFRpbWVMaW1pdCIsImhhc1ZhbHVlIiwiY3VycmVudFRpbWVMaW1pdEludCIsInBhcnNlSW50IiwiaXNOYU4iLCJwYXRoT25EZXZpY2UiLCJ1dWlkVjQiLCJzdWJzdHJpbmciLCJyZWNvcmRpbmdQcm9jIiwic2NyZWVucmVjb3JkIiwib24iLCJjdXJyZW50RHVyYXRpb24iLCJnZXREdXJhdGlvbiIsImFzU2Vjb25kcyIsInRvRml4ZWQiLCJkZWJ1ZyIsInRpbWVMaW1pdEludCIsImNodW5rRHVyYXRpb24iLCJjYXRjaCIsImUiLCJlcnJvciIsInN0YWNrIiwic3RhcnQiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwiZmlsZUV4aXN0cyIsIndhaXRNcyIsImludGVydmFsTXMiLCJyZWNvcmRzIiwicHVzaCIsInJlY29yZGluZ1Byb2Nlc3MiLCJtZXJnZVNjcmVlblJlY29yZHMiLCJtZWRpYUZpbGVzIiwiZnMiLCJ3aGljaCIsImNvbmZpZ0NvbnRlbnQiLCJtYXAiLCJ4Iiwiam9pbiIsImNvbmZpZ0ZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImRpcm5hbWUiLCJ3cml0ZUZpbGUiLCJyZXN1bHQiLCJNYXRoIiwiZmxvb3IiLCJEYXRlIiwiYXJncyIsImluZm8iLCJleGVjIiwidGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyIsImZvcmNlIiwicGlkcyIsImdldFBJRHNCeU5hbWUiLCJwIiwic2hlbGwiLCJlcnIiLCJtZXNzYWdlIiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJmb3JjZVJlc3RhcnQiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwid2FybiIsIl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzIiwicmVjb3JkIiwicmltcmFmIiwidGltZW91dCIsInBhcnNlRmxvYXQiLCJ0aW1pbmciLCJUaW1lciIsImlzUnVubmluZyIsInN0b3AiLCJlcnJvckFuZFRocm93IiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwibG9jYWxSZWNvcmRzIiwicG9zaXgiLCJiYXNlbmFtZSIsInB1bGwiLCJsYXN0IiwicmVzdWx0RmlsZVBhdGgiLCJsZW5ndGgiLCJzaXplIiwic3RhdCIsInRvUmVhZGFibGVTaXplU3RyaW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IHV0aWwsIGZzLCBuZXQsIHRlbXBEaXIsIHN5c3RlbSwgdGltaW5nIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBSRVRSWV9QQVVTRSA9IDMwMDtcbmNvbnN0IFJFVFJZX1RJTUVPVVQgPSA1MDAwO1xuY29uc3QgTUFYX1JFQ09SRElOR19USU1FX1NFQyA9IDYwICogMztcbmNvbnN0IE1BWF9USU1FX1NFQyA9IDYwICogMzA7XG5jb25zdCBERUZBVUxUX1JFQ09SRElOR19USU1FX1NFQyA9IE1BWF9SRUNPUkRJTkdfVElNRV9TRUM7XG5jb25zdCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQgPSAxMCAqIDEwMDA7XG5jb25zdCBTQ1JFRU5SRUNPUkRfQklOQVJZID0gJ3NjcmVlbnJlY29yZCc7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcubXA0JztcbmNvbnN0IE1JTl9FTVVMQVRPUl9BUElfTEVWRUwgPSAyNztcbmNvbnN0IEZGTVBFR19CSU5BUlkgPSBgZmZtcGVnJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRSZWNvcmRlZE1lZGlhIChsb2NhbEZpbGUsIHJlbW90ZVBhdGggPSBudWxsLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eShyZW1vdGVQYXRoKSkge1xuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGxvY2FsRmlsZSkpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCB7dXNlciwgcGFzcywgbWV0aG9kLCBoZWFkZXJzLCBmaWxlRmllbGROYW1lLCBmb3JtRmllbGRzfSA9IHVwbG9hZE9wdGlvbnM7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgbWV0aG9kOiBtZXRob2QgfHwgJ1BVVCcsXG4gICAgaGVhZGVycyxcbiAgICBmaWxlRmllbGROYW1lLFxuICAgIGZvcm1GaWVsZHMsXG4gIH07XG4gIGlmICh1c2VyICYmIHBhc3MpIHtcbiAgICBvcHRpb25zLmF1dGggPSB7dXNlciwgcGFzc307XG4gIH1cbiAgYXdhaXQgbmV0LnVwbG9hZEZpbGUobG9jYWxGaWxlLCByZW1vdGVQYXRoLCBvcHRpb25zKTtcbiAgcmV0dXJuICcnO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCAoYWRiLCBpc0VtdWxhdG9yKSB7XG4gIGNvbnN0IGFwaUxldmVsID0gYXdhaXQgYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmIChpc0VtdWxhdG9yICYmIGFwaUxldmVsIDwgTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBkb2VzIG5vdCB3b3JrIG9uIGVtdWxhdG9ycyBydW5uaW5nIEFuZHJvaWQgQVBJIGxldmVsIGxlc3MgdGhhbiAke01JTl9FTVVMQVRPUl9BUElfTEVWRUx9YCk7XG4gIH1cbiAgaWYgKGFwaUxldmVsIDwgMTkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbiByZWNvcmRpbmcgbm90IGF2YWlsYWJsZSBvbiBBUEkgTGV2ZWwgJHthcGlMZXZlbH0uIE1pbmltdW0gQVBJIExldmVsIGlzIDE5LmApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjaGVkdWxlU2NyZWVuUmVjb3JkIChhZGIsIHJlY29yZGluZ1Byb3BlcnRpZXMsIGxvZyA9IG51bGwpIHtcbiAgaWYgKHJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICB0aW1lcixcbiAgICB2aWRlb1NpemUsXG4gICAgYml0UmF0ZSxcbiAgICB0aW1lTGltaXQsXG4gICAgYnVnUmVwb3J0LFxuICB9ID0gcmVjb3JkaW5nUHJvcGVydGllcztcblxuICBsZXQgY3VycmVudFRpbWVMaW1pdCA9IE1BWF9SRUNPUkRJTkdfVElNRV9TRUM7XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCkpIHtcbiAgICBjb25zdCBjdXJyZW50VGltZUxpbWl0SW50ID0gcGFyc2VJbnQocmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0LCAxMCk7XG4gICAgaWYgKCFpc05hTihjdXJyZW50VGltZUxpbWl0SW50KSAmJiBjdXJyZW50VGltZUxpbWl0SW50IDwgTUFYX1JFQ09SRElOR19USU1FX1NFQykge1xuICAgICAgY3VycmVudFRpbWVMaW1pdCA9IGN1cnJlbnRUaW1lTGltaXRJbnQ7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhdGhPbkRldmljZSA9IGAvc2RjYXJkLyR7dXRpbC51dWlkVjQoKS5zdWJzdHJpbmcoMCwgOCl9JHtERUZBVUxUX0VYVH1gO1xuICBjb25zdCByZWNvcmRpbmdQcm9jID0gYWRiLnNjcmVlbnJlY29yZChwYXRoT25EZXZpY2UsIHtcbiAgICB2aWRlb1NpemUsXG4gICAgYml0UmF0ZSxcbiAgICB0aW1lTGltaXQ6IGN1cnJlbnRUaW1lTGltaXQsXG4gICAgYnVnUmVwb3J0LFxuICB9KTtcblxuICByZWNvcmRpbmdQcm9jLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgaWYgKHJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCB8fCAhdXRpbC5oYXNWYWx1ZSh0aW1lTGltaXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnREdXJhdGlvbiA9IHRpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMCk7XG4gICAgbG9nPy5kZWJ1ZyhgVGhlIG92ZXJhbGwgc2NyZWVuIHJlY29yZGluZyBkdXJhdGlvbiBpcyAke2N1cnJlbnREdXJhdGlvbn1zIHNvIGZhcmApO1xuICAgIGNvbnN0IHRpbWVMaW1pdEludCA9IHBhcnNlSW50KHRpbWVMaW1pdCwgMTApO1xuICAgIGlmIChpc05hTih0aW1lTGltaXRJbnQpIHx8IGN1cnJlbnREdXJhdGlvbiA+PSB0aW1lTGltaXRJbnQpIHtcbiAgICAgIGxvZz8uZGVidWcoJ1RoZXJlIGlzIG5vIG5lZWQgdG8gc3RhcnQgdGhlIG5leHQgcmVjb3JkaW5nIGNodW5rJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0ID0gdGltZUxpbWl0SW50IC0gY3VycmVudER1cmF0aW9uO1xuICAgIGNvbnN0IGNodW5rRHVyYXRpb24gPSByZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQgPCBNQVhfUkVDT1JESU5HX1RJTUVfU0VDXG4gICAgICA/IHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdFxuICAgICAgOiBNQVhfUkVDT1JESU5HX1RJTUVfU0VDO1xuICAgIGxvZz8uZGVidWcoYFN0YXJ0aW5nIHRoZSBuZXh0ICR7Y2h1bmtEdXJhdGlvbn1zLWNodW5rIGAgK1xuICAgICAgYG9mIHNjcmVlbiByZWNvcmRpbmcgaW4gb3JkZXIgdG8gYWNoaWV2ZSAke3RpbWVMaW1pdEludH1zIHRvdGFsIGR1cmF0aW9uYCk7XG4gICAgc2NoZWR1bGVTY3JlZW5SZWNvcmQoYWRiLCByZWNvcmRpbmdQcm9wZXJ0aWVzLCBsb2cpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgbG9nPy5lcnJvcihlLnN0YWNrKTtcbiAgICAgICAgcmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBhd2FpdCByZWNvcmRpbmdQcm9jLnN0YXJ0KDApO1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gYXdhaXQgYWRiLmZpbGVFeGlzdHMocGF0aE9uRGV2aWNlKSxcbiAgICAgIHt3YWl0TXM6IFJFVFJZX1RJTUVPVVQsIGludGVydmFsTXM6IFJFVFJZX1BBVVNFfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBleHBlY3RlZCBzY3JlZW4gcmVjb3JkIGZpbGUgJyR7cGF0aE9uRGV2aWNlfScgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgJHtSRVRSWV9USU1FT1VUfW1zLiBgICtcbiAgICAgIGBJcyAke1NDUkVFTlJFQ09SRF9CSU5BUll9IHV0aWxpdHkgYXZhaWxhYmxlIGFuZCBvcGVyYXRpb25hbCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3Q/YCk7XG4gIH1cblxuICByZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMucHVzaChwYXRoT25EZXZpY2UpO1xuICByZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MgPSByZWNvcmRpbmdQcm9jO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtZXJnZVNjcmVlblJlY29yZHMgKG1lZGlhRmlsZXMsIGxvZyA9IG51bGwpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy53aGljaChGRk1QRUdfQklOQVJZKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtGRk1QRUdfQklOQVJZfSB1dGlsaXR5IGlzIG5vdCBhdmFpbGFibGUgaW4gUEFUSC4gUGxlYXNlIGluc3RhbGwgaXQgZnJvbSBodHRwczovL3d3dy5mZm1wZWcub3JnL2ApO1xuICB9XG4gIGNvbnN0IGNvbmZpZ0NvbnRlbnQgPSBtZWRpYUZpbGVzXG4gICAgLm1hcCgoeCkgPT4gYGZpbGUgJyR7eH0nYClcbiAgICAuam9pbignXFxuJyk7XG4gIGNvbnN0IGNvbmZpZ0ZpbGUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKG1lZGlhRmlsZXNbMF0pLCAnY29uZmlnLnR4dCcpO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoY29uZmlnRmlsZSwgY29uZmlnQ29udGVudCwgJ3V0ZjgnKTtcbiAgbG9nPy5kZWJ1ZyhgR2VuZXJhdGVkIGZmbXBlZyBtZXJnaW5nIGNvbmZpZyAnJHtjb25maWdGaWxlfScgd2l0aCBpdGVtczpcXG4ke2NvbmZpZ0NvbnRlbnR9YCk7XG4gIGNvbnN0IHJlc3VsdCA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUobWVkaWFGaWxlc1swXSksIGBtZXJnZV8ke01hdGguZmxvb3IobmV3IERhdGUoKSl9JHtERUZBVUxUX0VYVH1gKTtcbiAgY29uc3QgYXJncyA9IFsnLXNhZmUnLCAnMCcsICctZicsICdjb25jYXQnLCAnLWknLCBjb25maWdGaWxlLCAnLWMnLCAnY29weScsIHJlc3VsdF07XG4gIGxvZz8uaW5mbyhgSW5pdGlhdGluZyBzY3JlZW4gcmVjb3JkcyBtZXJnaW5nIHVzaW5nIHRoZSBjb21tYW5kICcke0ZGTVBFR19CSU5BUll9ICR7YXJncy5qb2luKCcgJyl9J2ApO1xuICBhd2FpdCBleGVjKEZGTVBFR19CSU5BUlksIGFyZ3MpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiB0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nIChhZGIsIGZvcmNlID0gdHJ1ZSkge1xuICBjb25zdCBwaWRzID0gKGF3YWl0IGFkYi5nZXRQSURzQnlOYW1lKFNDUkVFTlJFQ09SRF9CSU5BUlkpKVxuICAgIC5tYXAoKHApID0+IGAke3B9YCk7XG4gIGlmIChfLmlzRW1wdHkocGlkcykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFkYi5zaGVsbChbJ2tpbGwnLCBmb3JjZSA/ICctMTUnIDogJy0yJywgLi4ucGlkc10pO1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gXy5pc0VtcHR5KGF3YWl0IGFkYi5nZXRQSURzQnlOYW1lKFNDUkVFTlJFQ09SRF9CSU5BUlkpKSwge1xuICAgICAgd2FpdE1zOiBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQsXG4gICAgICBpbnRlcnZhbE1zOiA1MDAsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHN0b3AgdGhlIGJhY2tncm91bmQgc2NyZWVuIHJlY29yZGluZzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZW1vdGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIHJlbW90ZSBsb2NhdGlvbiwgd2hlcmUgdGhlIGNhcHR1cmVkIHZpZGVvIHNob3VsZCBiZSB1cGxvYWRlZC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ6IGh0dHAvaHR0cHMsIGZ0cC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGwgb3IgZW1wdHkgc3RyaW5nIHZhbHVlICh0aGUgZGVmYXVsdCBzZXR0aW5nKSBtZWFucyB0aGUgY29udGVudCBvZiByZXN1bHRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIGVuY29kZWQgYXMgQmFzZTY0IGFuZCBwYXNzZWQgYXMgdGhlIGVuZHBvdW50IHJlc3BvbnNlIHZhbHVlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHRoZSBnZW5lcmF0ZWQgbWVkaWEgZmlsZSBpcyB0b28gYmlnIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXQgaW50byB0aGUgYXZhaWxhYmxlIHByb2Nlc3MgbWVtb3J5LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gb25seSBoYXMgYW4gZWZmZWN0IGlmIHRoZXJlIGlzIHNjcmVlbiByZWNvcmRpbmcgcHJvY2VzcyBpbiBwcm9ncmVlc3NcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgZm9yY2VSZXN0YXJ0YCBwYXJhbWV0ZXIgaXMgbm90IHNldCB0byBgdHJ1ZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi4gT25seSB3b3JrcyBpZiBgcmVtb3RlUGF0aGAgaXMgcHJvdmlkZWQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhc3MgLSBUaGUgcGFzc3dvcmQgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uIE9ubHkgd29ya3MgaWYgYHJlbW90ZVBhdGhgIGlzIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZXRob2QgW1BVVF0gLSBUaGUgaHR0cCBtdWx0aXBhcnQgdXBsb2FkIG1ldGhvZCBuYW1lLiBPbmx5IHdvcmtzIGlmIGByZW1vdGVQYXRoYCBpcyBwcm92aWRlZC5cbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyAtIEFkZGl0aW9uYWwgaGVhZGVycyBtYXBwaW5nIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZpbGVGaWVsZE5hbWUgW2ZpbGVdIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQsIHdoZXJlIHRoZSBmaWxlIGNvbnRlbnQgQkxPQiBzaG91bGQgYmUgc3RvcmVkIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fEFycmF5PFBhaXI+fSBmb3JtRmllbGRzIC0gQWRkaXRpb25hbCBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2aWRlb1NpemUgLSBUaGUgZm9ybWF0IGlzIHdpZHRoeGhlaWdodC5cbiAqICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIGRldmljZSdzIG5hdGl2ZSBkaXNwbGF5IHJlc29sdXRpb24gKGlmIHN1cHBvcnRlZCksXG4gKiAgICAgICAgICAgICAgICAgIDEyODB4NzIwIGlmIG5vdC4gRm9yIGJlc3QgcmVzdWx0cyxcbiAqICAgICAgICAgICAgICAgICAgdXNlIGEgc2l6ZSBzdXBwb3J0ZWQgYnkgeW91ciBkZXZpY2UncyBBZHZhbmNlZCBWaWRlbyBDb2RpbmcgKEFWQykgZW5jb2Rlci5cbiAqICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIFwiMTI4MHg3MjBcIlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gYnVnUmVwb3J0IC0gU2V0IGl0IHRvIGB0cnVlYCBpbiBvcmRlciB0byBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIHZpZGVvIG92ZXJsYXksXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGEgdGltZXN0YW1wLCB0aGF0IGlzIGhlbHBmdWwgaW4gdmlkZW9zIGNhcHR1cmVkIHRvIGlsbHVzdHJhdGUgYnVncy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIHNpbmNlIEFQSSBsZXZlbCAyNyAoQW5kcm9pZCBQKS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdCAtIFRoZSBtYXhpbXVtIHJlY29yZGluZyB0aW1lLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxODAgKDMgbWludXRlcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWF4aW11bSB2YWx1ZSBpcyAxODAwICgzMCBtaW51dGVzKS4gSWYgdGhlIHBhc3NlZCB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMTgwIHRoZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhbGdvcml0aG0gd2lsbCB0cnkgdG8gc2NoZWR1bGUgbXVsdGlwbGUgc2NyZWVuIHJlY29yZGluZyBjaHVua3MgYW5kIG1lcmdlIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIHZpZGVvcyBpbnRvIGEgc2luZ2xlIG1lZGlhIGZpbGUgdXNpbmcgYGZmbXBlZ2AgdXRpbGl0eS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB1dGlsaXR5IGlzIG5vdCBhdmFpbGFibGUgaW4gUEFUSCB0aGVuIHRoZSBtb3N0IHJlY2VudCBzY3JlZW4gcmVjb3JkaW5nIGNodW5rIGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2luZyB0byBiZSByZXR1cm5lZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IGJpdFJhdGUgLSBUaGUgdmlkZW8gYml0IHJhdGUgZm9yIHRoZSB2aWRlbywgaW4gYml0cyBwZXIgc2Vjb25kLlxuICogICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgNDAwMDAwMCAoNCBNYml0L3MpLiBZb3UgY2FuIGluY3JlYXNlIHRoZSBiaXQgcmF0ZSB0byBpbXByb3ZlIHZpZGVvIHF1YWxpdHksXG4gKiAgICAgICAgICAgICAgICBidXQgZG9pbmcgc28gcmVzdWx0cyBpbiBsYXJnZXIgbW92aWUgZmlsZXMuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBmb3JjZVJlc3RhcnQgLSBXaGV0aGVyIHRvIHRyeSB0byBjYXRjaCBhbmQgdXBsb2FkL3JldHVybiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgc2NyZWVuIHJlY29yZGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGBmYWxzZWAsIHRoZSBkZWZhdWx0IHNldHRpbmcpIG9yIGlnbm9yZSB0aGUgcmVzdWx0IG9mIGl0IGFuZCBzdGFydCBhIG5ldyByZWNvcmRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZWx5IChgdHJ1ZWApLlxuICovXG5cbi8qKlxuICogUmVjb3JkIHRoZSBkaXNwbGF5IG9mIGEgcmVhbCBkZXZpY2VzIHJ1bm5pbmcgQW5kcm9pZCA0LjQgKEFQSSBsZXZlbCAxOSkgYW5kIGhpZ2hlci5cbiAqIEVtdWxhdG9ycyBhcmUgc3VwcG9ydGVkIHNpbmNlIEFQSSBsZXZlbCAyNyAoQW5kcm9pZCBQKS5cbiAqIEl0IHJlY29yZHMgc2NyZWVuIGFjdGl2aXR5IHRvIGFuIE1QRUctNCBmaWxlLiBBdWRpbyBpcyBub3QgcmVjb3JkZWQgd2l0aCB0aGUgdmlkZW8gZmlsZS5cbiAqIElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gYWxyZWFkeSBzdGFydGVkIHRoZW4gdGhlIGNvbW1hbmQgd2lsbCBzdG9wIGl0IGZvcmNlZnVsbHkgYW5kIHN0YXJ0IGEgbmV3IG9uZS5cbiAqIFRoZSBwcmV2aW91c2x5IHJlY29yZGVkIHZpZGVvIGZpbGUgd2lsbCBiZSBkZWxldGVkLlxuICpcbiAqIEBwYXJhbSB7P1N0YXJ0UmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWZcbiAqICAgICAgICAgICAgICAgICAgIGFueSBzY3JlZW4gcmVjb3JkaW5nIGlzIGN1cnJlbnRseSBydW5uaW5nIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzY3JlZW4gcmVjb3JkaW5nIGhhcyBmYWlsZWQgdG8gc3RhcnQgb3IgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuXG4gKi9cbmNvbW1hbmRzLnN0YXJ0UmVjb3JkaW5nU2NyZWVuID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBhd2FpdCB2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCh0aGlzLmFkYiwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuXG4gIGxldCByZXN1bHQgPSAnJztcbiAgY29uc3Qge3ZpZGVvU2l6ZSwgdGltZUxpbWl0ID0gREVGQVVMVF9SRUNPUkRJTkdfVElNRV9TRUMsIGJ1Z1JlcG9ydCwgYml0UmF0ZSwgZm9yY2VSZXN0YXJ0fSA9IG9wdGlvbnM7XG4gIGlmICghZm9yY2VSZXN0YXJ0KSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdG9wUmVjb3JkaW5nU2NyZWVuKG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKGF3YWl0IHRlcm1pbmF0ZUJhY2tncm91bmRTY3JlZW5SZWNvcmRpbmcodGhpcy5hZGIsIHRydWUpKSB7XG4gICAgdGhpcy5sb2cud2FybihgVGhlcmUgd2VyZSBzb21lICR7U0NSRUVOUkVDT1JEX0JJTkFSWX0gcHJvY2VzcyBsZWZ0b3ZlcnMgcnVubmluZyBgICtcbiAgICAgIGBpbiB0aGUgYmFja2dyb3VuZC4gTWFrZSBzdXJlIHlvdSBzdG9wIHNjcmVlbiByZWNvcmRpbmcgZWFjaCB0aW1lIGFmdGVyIGl0IGlzIHN0YXJ0ZWQsIGAgK1xuICAgICAgYG90aGVyd2lzZSB0aGUgcmVjb3JkZWQgbWVkaWEgbWlnaHQgcXVpY2tseSBleGNlZWQgYWxsIHRoZSBmcmVlIHNwYWNlIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5gKTtcbiAgfVxuXG4gIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgKHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkcyB8fCBbXSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJpbXJhZihyZWNvcmQpO1xuICAgIH1cbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzID0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRpbWVvdXQgPSBwYXJzZUZsb2F0KHRpbWVMaW1pdCk7XG4gIGlmIChpc05hTih0aW1lb3V0KSB8fCB0aW1lb3V0ID4gTUFYX1RJTUVfU0VDIHx8IHRpbWVvdXQgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRpbWVMaW1pdCB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIFsxLCAke01BWF9USU1FX1NFQ31dIHNlY29uZHMuIGAgK1xuICAgICAgYFRoZSB2YWx1ZSBvZiAnJHt0aW1lTGltaXR9JyBoYXMgYmVlbiBwYXNzZWQgaW5zdGVhZC5gKTtcbiAgfVxuXG4gIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMgPSB7XG4gICAgdGltZXI6IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpLFxuICAgIHZpZGVvU2l6ZSxcbiAgICB0aW1lTGltaXQsXG4gICAgY3VycmVudFRpbWVMaW1pdDogdGltZUxpbWl0LFxuICAgIGJpdFJhdGUsXG4gICAgYnVnUmVwb3J0LFxuICAgIHJlY29yZHM6IFtdLFxuICAgIHJlY29yZGluZ1Byb2Nlc3M6IG51bGwsXG4gICAgc3RvcHBlZDogZmFsc2UsXG4gIH07XG4gIGF3YWl0IHNjaGVkdWxlU2NyZWVuUmVjb3JkKHRoaXMuYWRiLCB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLCB0aGlzLmxvZyk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0b3BSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZW1vdGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIHJlbW90ZSBsb2NhdGlvbiwgd2hlcmUgdGhlIHJlc3VsdGluZyB2aWRlbyBzaG91bGQgYmUgdXBsb2FkZWQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHByb3RvY29scyBhcmUgc3VwcG9ydGVkOiBodHRwL2h0dHBzLCBmdHAuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdWxsIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSAodGhlIGRlZmF1bHQgc2V0dGluZykgbWVhbnMgdGhlIGNvbnRlbnQgb2YgcmVzdWx0aW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBiZSBlbmNvZGVkIGFzIEJhc2U2NCBhbmQgcGFzc2VkIGFzIHRoZSBlbmRwb3VudCByZXNwb25zZSB2YWx1ZS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgZ2VuZXJhdGVkIG1lZGlhIGZpbGUgaXMgdG9vIGJpZyB0b1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml0IGludG8gdGhlIGF2YWlsYWJsZSBwcm9jZXNzIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXNlciAtIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZXRob2QgLSBUaGUgaHR0cCBtdWx0aXBhcnQgdXBsb2FkIG1ldGhvZCBuYW1lLiBUaGUgJ1BVVCcgb25lIGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyAtIEFkZGl0aW9uYWwgaGVhZGVycyBtYXBwaW5nIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZpbGVGaWVsZE5hbWUgW2ZpbGVdIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQsIHdoZXJlIHRoZSBmaWxlIGNvbnRlbnQgQkxPQiBzaG91bGQgYmUgc3RvcmVkIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fEFycmF5PFBhaXI+fSBmb3JtRmllbGRzIC0gQWRkaXRpb25hbCBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICovXG5cbi8qKlxuICogU3RvcCByZWNvcmRpbmcgdGhlIHNjcmVlbi5cbiAqIElmIG5vIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUgdGhlbiB0aGUgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7P1N0b3BSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcmVjb3JkZWQgbWVkaWEgZmlsZSBpZiAncmVtb3RlUGF0aCdcbiAqICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpcyBmYWxzeSBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIG5hbWUgb2YgYSBtZWRpYSBmaWxlXG4gKiAgICAgICAgICAgICAgICAgb3IgdGhlIGZpbGUgY29udGVudCBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gdGhlIHJlbW90ZSBsb2NhdGlvblxuICogICAgICAgICAgICAgICAgIG9yIHNjcmVlbiByZWNvcmRpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuXG4gKi9cbmNvbW1hbmRzLnN0b3BSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdG9wUmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgYXdhaXQgdmVyaWZ5U2NyZWVuUmVjb3JkSXNTdXBwb3J0ZWQodGhpcy5hZGIsIHRoaXMuaXNFbXVsYXRvcigpKTtcblxuICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCA9IHRydWU7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHRlcm1pbmF0ZUJhY2tncm91bmRTY3JlZW5SZWNvcmRpbmcodGhpcy5hZGIsIGZhbHNlKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cud2FybihlcnIubWVzc2FnZSk7XG4gICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ1RoZSByZXN1bHRpbmcgdmlkZW8gbWlnaHQgYmUgY29ycnVwdGVkJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgIHRoaXMubG9nLmluZm8oYFNjcmVlbiByZWNvcmRpbmcgaGFzIG5vdCBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBieSBBcHBpdW0uIFRoZXJlIGlzIG5vdGhpbmcgdG8gc3RvcGApO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MgJiYgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3Muc3RvcCgnU0lHSU5UJywgUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBVbmFibGUgdG8gc3RvcCBzY3JlZW4gcmVjb3JkaW5nIHdpdGhpbiAke1BST0NFU1NfU0hVVERPV05fVElNRU9VVH1tc2ApO1xuICAgIH1cbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MgPSBudWxsO1xuICB9XG5cbiAgaWYgKF8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgTm8gc2NyZWVuIHJlY29yZGluZ3MgaGF2ZSBiZWVuIHN0b3JlZCBvbiB0aGUgZGV2aWNlIHNvIGZhci4gYCArXG4gICAgICBgQXJlIHlvdSBzdXJlIHRoZSAke1NDUkVFTlJFQ09SRF9CSU5BUll9IHV0aWxpdHkgd29ya3MgYXMgZXhwZWN0ZWQ/YCk7XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYWxSZWNvcmRzID0gW107XG4gICAgZm9yIChjb25zdCBwYXRoT25EZXZpY2Ugb2YgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzKSB7XG4gICAgICBsb2NhbFJlY29yZHMucHVzaChwYXRoLnJlc29sdmUodG1wUm9vdCwgcGF0aC5wb3NpeC5iYXNlbmFtZShwYXRoT25EZXZpY2UpKSk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5wdWxsKHBhdGhPbkRldmljZSwgXy5sYXN0KGxvY2FsUmVjb3JkcykpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmltcmFmKHBhdGhPbkRldmljZSk7XG4gICAgfVxuICAgIGxldCByZXN1bHRGaWxlUGF0aCA9IF8ubGFzdChsb2NhbFJlY29yZHMpO1xuICAgIGlmIChsb2NhbFJlY29yZHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgR290ICR7bG9jYWxSZWNvcmRzLmxlbmd0aH0gc2NyZWVuIHJlY29yZGluZ3MuIFRyeWluZyB0byBtZXJnZSB0aGVtYCk7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHRGaWxlUGF0aCA9IGF3YWl0IG1lcmdlU2NyZWVuUmVjb3Jkcyhsb2NhbFJlY29yZHMsIHRoaXMubG9nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IG1lcmdlIHRoZSByZWNvcmRlZCBmaWxlcy4gVGhlIG1vc3QgcmVjZW50IHNjcmVlbiByZWNvcmRpbmcgaXMgZ29pbmcgdG8gYmUgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdC4gYCArXG4gICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eShvcHRpb25zLnJlbW90ZVBhdGgpKSB7XG4gICAgICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KHJlc3VsdEZpbGVQYXRoKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIHNjcmVlbiByZWNvcmRpbmcgaXMgJHt1dGlsLnRvUmVhZGFibGVTaXplU3RyaW5nKHNpemUpfWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdXBsb2FkUmVjb3JkZWRNZWRpYShyZXN1bHRGaWxlUGF0aCwgb3B0aW9ucy5yZW1vdGVQYXRoLCBvcHRpb25zKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyA9IG51bGw7XG4gIH1cbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFFQSxNQUFNQyxXQUFXLEdBQUcsR0FBcEI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsSUFBdEI7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxLQUFLLENBQXBDO0FBQ0EsTUFBTUMsWUFBWSxHQUFHLEtBQUssRUFBMUI7QUFDQSxN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
@@ -59,7 +59,5 @@ commands.mobileShell = async function mobileShell(opts = {}) {
59
59
  };
60
60
 
61
61
  var _default = commands;
62
- exports.default = _default;require('source-map-support').install();
63
-
64
-
65
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3NoZWxsLmpzIiwibmFtZXMiOlsiQURCX1NIRUxMX0ZFQVRVUkUiLCJjb21tYW5kcyIsIm1vYmlsZVNoZWxsIiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiY29tbWFuZCIsImFyZ3MiLCJ0aW1lb3V0IiwiaW5jbHVkZVN0ZGVyciIsIl8iLCJpc1N0cmluZyIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYWRiQXJncyIsImFkYiIsImV4ZWN1dGFibGUiLCJkZWZhdWx0QXJncyIsImlzQXJyYXkiLCJsb2ciLCJkZWJ1ZyIsInBhdGgiLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJleGVjIiwiZXJyIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvc2hlbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5jb25zdCBBREJfU0hFTExfRkVBVFVSRSA9ICdhZGJfc2hlbGwnO1xuXG5sZXQgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMubW9iaWxlU2hlbGwgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTaGVsbCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQURCX1NIRUxMX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICBjb21tYW5kLFxuICAgIGFyZ3MgPSBbXSxcbiAgICB0aW1lb3V0ID0gMjAwMDAsXG4gICAgaW5jbHVkZVN0ZGVycixcbiAgfSA9IG9wdHM7XG5cbiAgaWYgKCFfLmlzU3RyaW5nKGNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdjb21tYW5kJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuXG4gIGNvbnN0IGFkYkFyZ3MgPSBbXG4gICAgLi4udGhpcy5hZGIuZXhlY3V0YWJsZS5kZWZhdWx0QXJncyxcbiAgICAnc2hlbGwnLFxuICAgIGNvbW1hbmQsXG4gICAgLi4uKF8uaXNBcnJheShhcmdzKSA/IGFyZ3MgOiBbYXJnc10pXG4gIF07XG4gIHRoaXMubG9nLmRlYnVnKGBSdW5uaW5nICcke3RoaXMuYWRiLmV4ZWN1dGFibGUucGF0aH0gJHt1dGlsLnF1b3RlKGFkYkFyZ3MpfSdgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0LCBzdGRlcnJ9ID0gYXdhaXQgZXhlYyh0aGlzLmFkYi5leGVjdXRhYmxlLnBhdGgsIGFkYkFyZ3MsIHt0aW1lb3V0fSk7XG4gICAgaWYgKGluY2x1ZGVTdGRlcnIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0ZG91dCxcbiAgICAgICAgc3RkZXJyXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3Rkb3V0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgZXhlY3V0ZSB0aGUgJyR7Y29tbWFuZH0nIHNoZWxsIGNvbW1hbmQuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfS4gYCArXG4gICAgICBgU3RkT3V0OiAke2Vyci5zdGRvdXR9LiBTdGRFcnI6ICR7ZXJyLnN0ZGVycn1gKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLFdBQTFCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7OztBQUVBQSxRQUFRLENBQUNDLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QkMsSUFBSSxHQUFHLEVBQW5DLEVBQXVDO0VBQzVELEtBQUtDLG9CQUFMLENBQTBCSixpQkFBMUI7RUFFQSxNQUFNO0lBQ0pLLE9BREk7SUFFSkMsSUFBSSxHQUFHLEVBRkg7SUFHSkMsT0FBTyxHQUFHLEtBSE47SUFJSkM7RUFKSSxJQUtGTCxJQUxKOztFQU9BLElBQUksQ0FBQ00sZUFBQSxDQUFFQyxRQUFGLENBQVdMLE9BQVgsQ0FBTCxFQUEwQjtJQUN4QixNQUFNLElBQUlNLGNBQUEsQ0FBT0Msb0JBQVgsQ0FBaUMscUNBQWpDLENBQU47RUFDRDs7RUFFRCxNQUFNQyxPQUFPLEdBQUcsQ0FDZCxHQUFHLEtBQUtDLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkMsV0FEVCxFQUVkLE9BRmMsRUFHZFgsT0FIYyxFQUlkLElBQUlJLGVBQUEsQ0FBRVEsT0FBRixDQUFVWCxJQUFWLElBQWtCQSxJQUFsQixHQUF5QixDQUFDQSxJQUFELENBQTdCLENBSmMsQ0FBaEI7RUFNQSxLQUFLWSxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBVyxLQUFLTCxHQUFMLENBQVNDLFVBQVQsQ0FBb0JLLElBQUssSUFBR0MsYUFBQSxDQUFLQyxLQUFMLENBQVdULE9BQVgsQ0FBb0IsR0FBM0U7O0VBQ0EsSUFBSTtJQUNGLE1BQU07TUFBQ1UsTUFBRDtNQUFTQztJQUFULElBQW1CLE1BQU0sSUFBQUMsa0JBQUEsRUFBSyxLQUFLWCxHQUFMLENBQVNDLFVBQVQsQ0FBb0JLLElBQXpCLEVBQStCUCxPQUEvQixFQUF3QztNQUFDTjtJQUFELENBQXhDLENBQS9COztJQUNBLElBQUlDLGFBQUosRUFBbUI7TUFDakIsT0FBTztRQUNMZSxNQURLO1FBRUxDO01BRkssQ0FBUDtJQUlEOztJQUNELE9BQU9ELE1BQVA7RUFDRCxDQVRELENBU0UsT0FBT0csR0FBUCxFQUFZO0lBQ1osS0FBS1IsR0FBTCxDQUFTUyxhQUFULENBQXdCLHVCQUFzQnRCLE9BQVEsbUJBQS9CLEdBQ3BCLG1CQUFrQnFCLEdBQUcsQ0FBQ0UsT0FBUSxJQURWLEdBRXBCLFdBQVVGLEdBQUcsQ0FBQ0gsTUFBTyxhQUFZRyxHQUFHLENBQUNGLE1BQU8sRUFGL0M7RUFHRDtBQUNGLENBbkNEOztlQXNDZXZCLFEifQ==
62
+ exports.default = _default;
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBREJfU0hFTExfRkVBVFVSRSIsImNvbW1hbmRzIiwibW9iaWxlU2hlbGwiLCJvcHRzIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJjb21tYW5kIiwiYXJncyIsInRpbWVvdXQiLCJpbmNsdWRlU3RkZXJyIiwiXyIsImlzU3RyaW5nIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJhZGJBcmdzIiwiYWRiIiwiZXhlY3V0YWJsZSIsImRlZmF1bHRBcmdzIiwiaXNBcnJheSIsImxvZyIsImRlYnVnIiwicGF0aCIsInV0aWwiLCJxdW90ZSIsInN0ZG91dCIsInN0ZGVyciIsImV4ZWMiLCJlcnIiLCJlcnJvckFuZFRocm93IiwibWVzc2FnZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9zaGVsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IEFEQl9TSEVMTF9GRUFUVVJFID0gJ2FkYl9zaGVsbCc7XG5cbmxldCBjb21tYW5kcyA9IHt9O1xuXG5jb21tYW5kcy5tb2JpbGVTaGVsbCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNoZWxsIChvcHRzID0ge30pIHtcbiAgdGhpcy5lbnN1cmVGZWF0dXJlRW5hYmxlZChBREJfU0hFTExfRkVBVFVSRSk7XG5cbiAgY29uc3Qge1xuICAgIGNvbW1hbmQsXG4gICAgYXJncyA9IFtdLFxuICAgIHRpbWVvdXQgPSAyMDAwMCxcbiAgICBpbmNsdWRlU3RkZXJyLFxuICB9ID0gb3B0cztcblxuICBpZiAoIV8uaXNTdHJpbmcoY29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBUaGUgJ2NvbW1hbmQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeWApO1xuICB9XG5cbiAgY29uc3QgYWRiQXJncyA9IFtcbiAgICAuLi50aGlzLmFkYi5leGVjdXRhYmxlLmRlZmF1bHRBcmdzLFxuICAgICdzaGVsbCcsXG4gICAgY29tbWFuZCxcbiAgICAuLi4oXy5pc0FycmF5KGFyZ3MpID8gYXJncyA6IFthcmdzXSlcbiAgXTtcbiAgdGhpcy5sb2cuZGVidWcoYFJ1bm5pbmcgJyR7dGhpcy5hZGIuZXhlY3V0YWJsZS5wYXRofSAke3V0aWwucXVvdGUoYWRiQXJncyl9J2ApO1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCBleGVjKHRoaXMuYWRiLmV4ZWN1dGFibGUucGF0aCwgYWRiQXJncywge3RpbWVvdXR9KTtcbiAgICBpZiAoaW5jbHVkZVN0ZGVycikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3Rkb3V0LFxuICAgICAgICBzdGRlcnJcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGRvdXQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBleGVjdXRlIHRoZSAnJHtjb21tYW5kfScgc2hlbGwgY29tbWFuZC4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9LiBgICtcbiAgICAgIGBTdGRPdXQ6ICR7ZXJyLnN0ZG91dH0uIFN0ZEVycjogJHtlcnIuc3RkZXJyfWApO1xuICB9XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsV0FBMUI7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjs7O0FBRUFBLFFBQVEsQ0FBQ0MsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCQyxJQUFJLEdBQUcsRUFBbkMsRUFBdUM7RUFDNUQsS0FBS0Msb0JBQUwsQ0FBMEJKLGlCQUExQjtFQUVBLE1BQU07SUFDSkssT0FESTtJQUVKQyxJQUFJLEdBQUcsRUFGSDtJQUdKQyxPQUFPLEdBQUcsS0FITjtJQUlKQztFQUpJLElBS0ZMLElBTEo7O0VBT0EsSUFBSSxDQUFDTSxlQUFBLENBQUVDLFFBQUYsQ0FBV0wsT0FBWCxDQUFMLEVBQTBCO0lBQ3hCLE1BQU0sSUFBSU0sY0FBQSxDQUFPQyxvQkFBWCxDQUFpQyxxQ0FBakMsQ0FBTjtFQUNEOztFQUVELE1BQU1DLE9BQU8sR0FBRyxDQUNkLEdBQUcsS0FBS0MsR0FBTCxDQUFTQyxVQUFULENBQW9CQyxXQURULEVBRWQsT0FGYyxFQUdkWCxPQUhjLEVBSWQsSUFBSUksZUFBQSxDQUFFUSxPQUFGLENBQVVYLElBQVYsSUFBa0JBLElBQWxCLEdBQXlCLENBQUNBLElBQUQsQ0FBN0IsQ0FKYyxDQUFoQjtFQU1BLEtBQUtZLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQixZQUFXLEtBQUtMLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkssSUFBSyxJQUFHQyxhQUFBLENBQUtDLEtBQUwsQ0FBV1QsT0FBWCxDQUFvQixHQUEzRTs7RUFDQSxJQUFJO0lBQ0YsTUFBTTtNQUFDVSxNQUFEO01BQVNDO0lBQVQsSUFBbUIsTUFBTSxJQUFBQyxrQkFBQSxFQUFLLEtBQUtYLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkssSUFBekIsRUFBK0JQLE9BQS9CLEVBQXdDO01BQUNOO0lBQUQsQ0FBeEMsQ0FBL0I7O0lBQ0EsSUFBSUMsYUFBSixFQUFtQjtNQUNqQixPQUFPO1FBQ0xlLE1BREs7UUFFTEM7TUFGSyxDQUFQO0lBSUQ7O0lBQ0QsT0FBT0QsTUFBUDtFQUNELENBVEQsQ0FTRSxPQUFPRyxHQUFQLEVBQVk7SUFDWixLQUFLUixHQUFMLENBQVNTLGFBQVQsQ0FBd0IsdUJBQXNCdEIsT0FBUSxtQkFBL0IsR0FDcEIsbUJBQWtCcUIsR0FBRyxDQUFDRSxPQUFRLElBRFYsR0FFcEIsV0FBVUYsR0FBRyxDQUFDSCxNQUFPLGFBQVlHLEdBQUcsQ0FBQ0YsTUFBTyxFQUYvQztFQUdEO0FBQ0YsQ0FuQ0Q7O2VBc0NldkIsUSJ9