appium-android-driver 4.52.0 → 4.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap/README.md +19 -0
- package/build/index.js +4 -6
- package/build/lib/android-helpers.js +5 -8
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/context.js +4 -6
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +2 -2
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/performance.js +107 -89
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/lib/.DS_Store +0 -0
- package/lib/commands/performance.js +146 -115
- package/package.json +1 -1
- package/lib/.android-helpers.js.un~ +0 -0
- package/lib/.desired-caps.js.un~ +0 -0
- package/lib/.driver.js.un~ +0 -0
- package/lib/.server.js.un~ +0 -0
- package/lib/.webview-helpers.js.un~ +0 -0
- package/lib/commands/.alert.js.un~ +0 -0
- package/lib/commands/.context.js.un~ +0 -0
- package/lib/commands/.element.js.un~ +0 -0
- package/lib/commands/.find.js.un~ +0 -0
- package/lib/commands/.general.js.un~ +0 -0
- package/lib/commands/.ime.js.un~ +0 -0
- package/lib/commands/.index.js.un~ +0 -0
- package/lib/commands/.network.js.un~ +0 -0
- package/lib/commands/.touch.js.un~ +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
3
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
6
|
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
8
|
-
exports.
|
|
10
|
+
exports.default = exports.setupNewChromedriver = exports.helpers = exports.commands = void 0;
|
|
9
11
|
|
|
10
12
|
require("source-map-support/register");
|
|
11
13
|
|
|
@@ -27,10 +29,6 @@ var _webviewHelpers = _interopRequireWildcard(require("../webview-helpers"));
|
|
|
27
29
|
|
|
28
30
|
var _androidHelpers = require("../android-helpers");
|
|
29
31
|
|
|
30
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
-
|
|
32
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
-
|
|
34
32
|
const CHROMEDRIVER_AUTODOWNLOAD_FEATURE = 'chromedriver_autodownload';
|
|
35
33
|
let commands = {},
|
|
36
34
|
helpers = {},
|
|
@@ -425,4 +423,4 @@ var _default = extensions;
|
|
|
425
423
|
exports.default = _default;require('source-map-support').install();
|
|
426
424
|
|
|
427
425
|
|
|
428
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jb250ZXh0LmpzIl0sIm5hbWVzIjpbIkNIUk9NRURSSVZFUl9BVVRPRE9XTkxPQURfRkVBVFVSRSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJnZXRDdXJyZW50Q29udGV4dCIsImN1ckNvbnRleHQiLCJkZWZhdWx0Q29udGV4dE5hbWUiLCJnZXRDb250ZXh0cyIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJpc0Nocm9tZVNlc3Npb24iLCJ3ZWJ2aWV3c01hcHBpbmciLCJ3ZWJ2aWV3SGVscGVycyIsImdldFdlYlZpZXdzTWFwcGluZyIsImFkYiIsImFzc2lnbkNvbnRleHRzIiwic2V0Q29udGV4dCIsIm5hbWUiLCJ1dGlsIiwiaGFzVmFsdWUiLCJXRUJWSUVXX1dJTiIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImNvbnRleHRzIiwiXyIsImluY2x1ZGVzIiwiZXJyb3JzIiwiTm9TdWNoQ29udGV4dEVycm9yIiwic3dpdGNoQ29udGV4dCIsIm1vYmlsZUdldENvbnRleHRzIiwiYW5kcm9pZERldmljZVNvY2tldCIsImVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIiwid2Vidmlld0RldnRvb2xzUG9ydCIsImVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiIsIndlYnZpZXdzIiwicGFyc2VXZWJ2aWV3TmFtZXMiLCJOQVRJVkVfV0lOIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwiaXNDaHJvbWVkcml2ZXJDb250ZXh0Iiwic3RhcnRDaHJvbWVkcml2ZXJQcm94eSIsInJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMiLCJzdG9wQ2hyb21lZHJpdmVyUHJveGllcyIsInN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSIsIkVycm9yIiwiV0VCVklFV19CQVNFIiwiYXBwUGFja2FnZSIsImlzV2ViQ29udGV4dCIsImNvbnRleHQiLCJjZCIsInNlc3Npb25DaHJvbWVkcml2ZXJzIiwic2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlciIsImNsb25lRGVlcCIsImNocm9tZVVzZVJ1bm5pbmdBcHAiLCJleHRyYWN0Q2hyb21lQW5kcm9pZFBhY2thZ2VGcm9tQ29udGV4dE5hbWUiLCJhbmRyb2lkUGFja2FnZSIsIm1hdGNoIiwibGVuZ3RoIiwiY2hyb21lQW5kcm9pZFBhY2thZ2UiLCJoYXMiLCJtYXAiLCJ3bSIsIndlYnZpZXdOYW1lIiwia25vd25QYWNrYWdlIiwiS05PV05fQ0hST01FX1BBQ0tBR0VfTkFNRVMiLCJhcHBTdGF0ZSIsInF1ZXJ5QXBwU3RhdGUiLCJBUFBfU1RBVEUiLCJSVU5OSU5HX0lOX0JBQ0tHUk9VTkQiLCJSVU5OSU5HX0lOX0ZPUkVHUk9VTkQiLCJpbmZvIiwic2V0dXBOZXdDaHJvbWVkcml2ZXIiLCJjdXJEZXZpY2VJZCIsIm9uIiwiQ2hyb21lZHJpdmVyIiwiRVZFTlRfQ0hBTkdFRCIsIm1zZyIsInN0YXRlIiwiU1RBVEVfU1RPUFBFRCIsIm9uQ2hyb21lZHJpdmVyU3RvcCIsImNocm9tZWRyaXZlciIsInByb3h5UmVxUmVzIiwicHJveHlSZXEiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwcm94eSIsImNvbW1hbmQiLCJqd3BQcm94eUFjdGl2ZSIsIndhcm4iLCJlcnIiLCJzdGFydFVuZXhwZWN0ZWRTaHV0ZG93biIsImtleXMiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdG9wIiwibWVzc2FnZSIsInZpZXdOYW1lIiwiQ0hST01JVU1fV0lOIiwic2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUiLCJjaHJvbWVPcHRpb25zIiwiaXNBcnJheSIsImFyZ3MiLCJkaXNtaXNzQ2hyb21lV2VsY29tZSIsImFjdGl2aXR5IiwiZ2V0Q3VycmVudEFjdGl2aXR5IiwiZWwiLCJmaW5kRWxPckVscyIsImNsaWNrIiwiRUxFTUVOVCIsImUiLCJzdGFydENocm9tZVNlc3Npb24iLCJrbm93blBhY2thZ2VzIiwiY2hyb21lQnVuZGxlSWQiLCJjaHJvbWVBbmRyb2lkQWN0aXZpdHkiLCJhcHBBY3Rpdml0eSIsImhhc1dvcmtpbmdXZWJ2aWV3IiwicmVzdGFydCIsImdldENocm9tZWRyaXZlclBvcnQiLCJwb3J0U3BlYyIsImdldFBvcnQiLCJCIiwicHJvbWlzaWZ5IiwiUG9ydEZpbmRlciIsInBvcnQiLCJmb3VuZFBvcnQiLCJwb3RlbnRpYWxQb3J0Iiwic3RvcFBvcnQiLCJwYXJzZUludCIsImlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCIsImlzRmVhdHVyZUVuYWJsZWQiLCJjaHJvbWVEcml2ZXJQb3J0IiwiY2hyb21lZHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnRzIiwiZGV0YWlscyIsImdldFdlYnZpZXdEZXRhaWxzIiwidW5kZWZpbmVkIiwiaXNFbXB0eSIsImV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJFeGVjdXRhYmxlIiwiY21kQXJncyIsImNocm9tZWRyaXZlckFyZ3MiLCJ2ZXJib3NlIiwic2hvd0Nocm9tZWRyaXZlckxvZyIsImV4ZWN1dGFibGVEaXIiLCJjaHJvbWVkcml2ZXJFeGVjdXRhYmxlRGlyIiwibWFwcGluZ1BhdGgiLCJjaHJvbWVkcml2ZXJDaHJvbWVNYXBwaW5nRmlsZSIsImJ1bmRsZUlkIiwidXNlU3lzdGVtRXhlY3V0YWJsZSIsImNocm9tZWRyaXZlclVzZVN5c3RlbUV4ZWN1dGFibGUiLCJkaXNhYmxlQnVpbGRDaGVjayIsImNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrIiwiaXNBdXRvZG93bmxvYWRFbmFibGVkIiwib3B0IiwiZW5kc1dpdGgiLCJtZXJnZSIsImNhcHMiLCJjcmVhdGVDaHJvbWVkcml2ZXJDYXBzIiwic3RhcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7Ozs7OztBQUVBLE1BQU1BLGlDQUFpQyxHQUFHLDJCQUExQztBQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlD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QUFULEVBQWF4QixpQ0FBYixHQUNuQixLQUFLQSxpQ0FBTCxFQURtQixHQUN3Qk87QUFiWCxHQUFqQixDQUFyQjtBQWlCQWhJLEVBQUFBLElBQUksQ0FBQzRGLGFBQUwsR0FBcUI1RixJQUFJLENBQUM0RixhQUFMLElBQXNCLEVBQTNDOztBQUdBLE9BQUssTUFBTXNELEdBQVgsSUFBa0JsSSxnQkFBRXFFLElBQUYsQ0FBT3JGLElBQVAsQ0FBbEIsRUFBZ0M7QUFDOUIsUUFBSWtKLEdBQUcsQ0FBQ0MsUUFBSixDQUFhLGdCQUFiLENBQUosRUFBb0M7QUFDbEN0SCxzQkFBSXFELElBQUosQ0FBVSxZQUFXZ0UsR0FBSSw0REFBekI7O0FBQ0FsSSxzQkFBRW9JLEtBQUYsQ0FBUXBKLElBQUksQ0FBQzRGLGFBQWIsRUFBNEI1RixJQUFJLENBQUNrSixHQUFELENBQWhDO0FBQ0Q7QUFDRjs7QUFFRCxRQUFNRyxJQUFJLEdBQUdoSix3QkFBZWlKLHNCQUFmLENBQXNDdEosSUFBdEMsRUFBNENrRSxXQUE1QyxFQUF5RDRELE9BQXpELENBQWI7O0FBQ0FqRyxrQkFBSUMsS0FBSixDQUFXLG9EQUFtRHVILElBQUksQ0FBQ3pELGFBQUwsQ0FBbUIzQyxjQUFlLEdBQWhHOztBQUNBLFFBQU15QixZQUFZLENBQUM2RSxLQUFiLENBQW1CRixJQUFuQixDQUFOO0FBQ0EsU0FBTzNFLFlBQVA7QUFDRCxDQWxERDs7QUFtREEsTUFBTVQsb0JBQW9CLEdBQUd2RSxPQUFPLENBQUN1RSxvQkFBckM7O0FBR0FoRSxNQUFNLENBQUNDLE1BQVAsQ0FBY1AsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IENocm9tZWRyaXZlciBmcm9tICdhcHBpdW0tY2hyb21lZHJpdmVyJztcbmltcG9ydCBQb3J0RmluZGVyIGZyb20gJ3BvcnRmaW5kZXInO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBkZWZhdWx0IGFzIHdlYnZpZXdIZWxwZXJzLFxuICBOQVRJVkVfV0lOLCBXRUJWSUVXX0JBU0UsIFdFQlZJRVdfV0lOLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTXG59IGZyb20gJy4uL3dlYnZpZXctaGVscGVycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuXG5jb25zdCBDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUgPSAnY2hyb21lZHJpdmVyX2F1dG9kb3dubG9hZCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBY3R1YWwgTUpTT05XUCBjb21tYW5kIGhhbmRsZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5jb21tYW5kcy5nZXRDdXJyZW50Q29udGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDb250ZXh0ICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIC8vIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgYG51bGxgLCBpbmRpY2F0aW5nIG5vIGNvbnRleHRcbiAgLy8gZXhwbGljaXRseSBzZXQsIGl0IGlzIHRoZSBkZWZhdWx0IGNvbnRleHRcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCB8fCB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xufTtcblxuY29tbWFuZHMuZ2V0Q29udGV4dHMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0cyAoKSB7XG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9ufSwgdGhpcy5vcHRzKTtcbiAgY29uc3Qgd2Vidmlld3NNYXBwaW5nID0gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCBvcHRzKTtcbiAgcmV0dXJuIHRoaXMuYXNzaWduQ29udGV4dHMod2Vidmlld3NNYXBwaW5nKTtcbn07XG5cbmNvbW1hbmRzLnNldENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzZXRDb250ZXh0IChuYW1lKSB7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShuYW1lKSkge1xuICAgIG5hbWUgPSB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xuICB9IGVsc2UgaWYgKG5hbWUgPT09IFdFQlZJRVdfV0lOKSB7XG4gICAgLy8gaGFuZGxlIHNldENvbnRleHQgXCJXRUJWSUVXXCJcbiAgICBuYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgfVxuICAvLyBpZiB3ZSdyZSBhbHJlYWR5IGluIHRoZSBjb250ZXh0IHdlIHdhbnQsIGRvIG5vdGhpbmdcbiAgaWYgKG5hbWUgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9ufSwgdGhpcy5vcHRzKTtcbiAgY29uc3Qgd2Vidmlld3NNYXBwaW5nID0gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCBvcHRzKTtcbiAgY29uc3QgY29udGV4dHMgPSB0aGlzLmFzc2lnbkNvbnRleHRzKHdlYnZpZXdzTWFwcGluZyk7XG4gIC8vIGlmIHRoZSBjb250ZXh0IHdlIHdhbnQgZG9lc24ndCBleGlzdCwgZmFpbFxuICBpZiAoIV8uaW5jbHVkZXMoY29udGV4dHMsIG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuc3dpdGNoQ29udGV4dChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB0aGlzLmN1ckNvbnRleHQgPSBuYW1lO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3c01hcHBpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFRoZSBuYW1lIG9mIHRoZSBEZXZ0b29scyBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgVGhlIHdlYiB2aWV3IGFsaWFzLiBMb29rcyBsaWtlIGBXRUJWSUVXX2BcbiAqIHByZWZpeCBwbHVzIFBJRCBvciBwYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBXZWJ2aWV3IGluZm9ybWF0aW9uIGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFdlYnZpZXcgcGFnZXMgbGlzdCBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL2xpc3QgQ0RQIGVuZHBvaW50XG4gKiBAcHJvcGVyeSB7P3N0cmluZ30gd2Vidmlld05hbWUgQW4gYWN0dWFsIHdlYnZpZXcgbmFtZSBmb3Igc3dpdGNoaW5nIGNvbnRleHQuXG4gKiBUaGlzIHZhbHVlIGJlY29tZXMgbnVsbCB3aGVuIGZhaWxpbmcgdG8gZmluZCBhIFBJRCBmb3IgYSB3ZWJ2aWV3LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcganNvbiBkZW1vbnN0cmF0ZXMgdGhlIGV4YW1wbGUgb2YgV2Vidmlld3NNYXBwaW5nIG9iamVjdC5cbiAqIE5vdGUgdGhhdCBgZGVzY3JpcHRpb25gIGluIGBwYWdlYCBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nIG1vc3QgbGlrZWx5IHdoZW4gaXQgY29tZXMgdG8gTW9iaWxlIENocm9tZSlcbiAqIHtcbiAqICAgXCJwcm9jXCI6IFwiQHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlXzIyMTM4XCIsXG4gKiAgIFwid2Vidmlld1wiOiBcIldFQlZJRVdfMjIxMzhcIixcbiAqICAgXCJpbmZvXCI6IHtcbiAqICAgICBcIkFuZHJvaWQtUGFja2FnZVwiOiBcImlvLmFwcGl1bS5zZXR0aW5nc1wiLFxuICogICAgIFwiQnJvd3NlclwiOiBcIkNocm9tZS83NC4wLjM3MjkuMTg1XCIsXG4gKiAgICAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4zXCIsXG4gKiAgICAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBBbmRyb2lkIFNESyBidWlsdCBmb3IgeDg2IEJ1aWxkL1FTUjEuMTkwOTIwLjAwMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83NC4wLjM3MjkuMTg1IE1vYmlsZSBTYWZhcmkvNTM3LjM2XCIsXG4gKiAgICAgXCJWOC1WZXJzaW9uXCI6IFwiNy40LjI4OC4yOFwiLFxuICogICAgIFwiV2ViS2l0LVZlcnNpb25cIjogXCI1MzcuMzYgKEAyMjk1NTY4MmY5NGNlMDkzMzYxOTdiZmI4ZGZmZWE5OTFmYTMyZjBkKVwiLFxuICogICAgIFwid2ViU29ja2V0RGVidWdnZXJVcmxcIjogXCJ3czovLzEyNy4wLjAuMToxMDkwMC9kZXZ0b29scy9icm93c2VyXCJcbiAqICAgfSxcbiAqICAgXCJwYWdlc1wiOiBbXG4gKiAgICAge1xuICogICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIntcXFwiYXR0YWNoZWRcXFwiOnRydWUsXFxcImVtcHR5XFxcIjpmYWxzZSxcXFwiaGVpZ2h0XFxcIjoxNDU4LFxcXCJzY3JlZW5YXFxcIjowLFxcXCJzY3JlZW5ZXFxcIjozMzYsXFxcInZpc2libGVcXFwiOnRydWUsXFxcIndpZHRoXFxcIjoxMDgwfVwiLFxuICogICAgICAgXCJkZXZ0b29sc0Zyb250ZW5kVXJsXCI6IFwiaHR0cDovL2Nocm9tZS1kZXZ0b29scy1mcm9udGVuZC5hcHBzcG90LmNvbS9zZXJ2ZV9yZXYvQDIyOTU1NjgyZjk0Y2UwOTMzNjE5N2JmYjhkZmZlYTk5MWZhMzJmMGQvaW5zcGVjdG9yLmh0bWw/d3M9MTI3LjAuMC4xOjEwOTAwL2RldnRvb2xzL3BhZ2UvMjczMjVDQzUwQjYwMEQzMUIyMzNGNDVFMDk0ODdCMUZcIixcbiAqICAgICAgIFwiaWRcIjogXCIyNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiLFxuICogICAgICAgXCJ0aXRsZVwiOiBcIlJlbGVhc2VzIMK3IGFwcGl1bS9hcHBpdW0gwrcgR2l0SHViXCIsXG4gKiAgICAgICBcInR5cGVcIjogXCJwYWdlXCIsXG4gKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL3JlbGVhc2VzXCIsXG4gKiAgICAgICBcIndlYlNvY2tldERlYnVnZ2VyVXJsXCI6IFwid3M6Ly8xMjcuMC4wLjE6MTA5MDAvZGV2dG9vbHMvcGFnZS8yNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiXG4gKiAgICAgfVxuICogICBdLFxuICogICBcIndlYnZpZXdOYW1lXCI6IFwiV0VCVklFV19jb20uaW8uYXBwaXVtLnNldHRpbmdcIlxuICogfVxuICovXG5cbi8qKlxuICogUmV0dXJucyBhIHdlYnZpZXdzTWFwcGluZyBiYXNlZCBvbiBDRFAgZW5kcG9pbnRzXG4gKlxuICogQHJldHVybiB7QXJyYXk8V2Vidmlld3NNYXBwaW5nPn0gd2Vidmlld3NNYXBwaW5nXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0Q29udGV4dHMgKCkge1xuICBjb25zdCBvcHRzID0ge1xuICAgIGFuZHJvaWREZXZpY2VTb2NrZXQ6IHRoaXMub3B0cy5hbmRyb2lkRGV2aWNlU29ja2V0LFxuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzOiB0cnVlLFxuICAgIHdlYnZpZXdEZXZ0b29sc1BvcnQ6IHRoaXMub3B0cy53ZWJ2aWV3RGV2dG9vbHNQb3J0LFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbjogdHJ1ZSxcbiAgICBpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9uXG4gIH07XG4gIHJldHVybiBhd2FpdCB3ZWJ2aWV3SGVscGVycy5nZXRXZWJWaWV3c01hcHBpbmcodGhpcy5hZGIsIG9wdHMpO1xufTtcblxuaGVscGVycy5hc3NpZ25Db250ZXh0cyA9IGZ1bmN0aW9uIGFzc2lnbkNvbnRleHRzICh3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe2lzQ2hyb21lU2Vzc2lvbjogdGhpcy5pc0Nocm9tZVNlc3Npb259LCB0aGlzLm9wdHMpO1xuICBjb25zdCB3ZWJ2aWV3cyA9IHdlYnZpZXdIZWxwZXJzLnBhcnNlV2Vidmlld05hbWVzKHdlYnZpZXdzTWFwcGluZywgb3B0cyk7XG4gIHRoaXMuY29udGV4dHMgPSBbTkFUSVZFX1dJTiwgLi4ud2Vidmlld3NdO1xuICBsb2cuZGVidWcoYEF2YWlsYWJsZSBjb250ZXh0czogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnRleHRzKX1gKTtcbiAgcmV0dXJuIHRoaXMuY29udGV4dHM7XG59O1xuXG5oZWxwZXJzLnN3aXRjaENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzd2l0Y2hDb250ZXh0IChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgLy8gV2UgaGF2ZSBzb21lIG9wdGlvbnMgd2hlbiBpdCBjb21lcyB0byB3ZWJ2aWV3cy4gSWYgd2Ugd2FudCBhXG4gIC8vIENocm9tZWRyaXZlciB3ZWJ2aWV3LCB3ZSBjYW4gb25seSBjb250cm9sIG9uZSBhdCBhIHRpbWUuXG4gIGlmICh0aGlzLmlzQ2hyb21lZHJpdmVyQ29udGV4dChuYW1lKSkge1xuICAgIC8vIHN0YXJ0IHByb3h5aW5nIGNvbW1hbmRzIGRpcmVjdGx5IHRvIGNocm9tZWRyaXZlclxuICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVkcml2ZXJQcm94eShuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNDaHJvbWVkcml2ZXJDb250ZXh0KHRoaXMuY3VyQ29udGV4dCkpIHtcbiAgICAvLyBpZiB3ZSdyZSBtb3ZpbmcgdG8gYSBub24tY2hyb21lZHJpdmVyIHdlYnZpZXcsIGFuZCBvdXIgY3VycmVudCBjb250ZXh0XG4gICAgLy8gX2lzXyBhIGNocm9tZWRyaXZlciB3ZWJ2aWV3LCBpZiBjYXBzIHJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMgaXMgc2V0XG4gICAgLy8gdG8gdHJ1ZSB0aGVuIGtpbGwgY2hyb21lZHJpdmVyIHNlc3Npb24gdXNpbmcgc3RvcENocm9tZWRyaXZlclByb3hpZXMgb3JcbiAgICAvLyBlbHNlIHNpbXBseSBzdXNwZW5kIHByb3h5aW5nIHRvIHRoZSBsYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRzLnJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMpIHtcbiAgICAgIGxvZy5kZWJ1ZygncmVjcmVhdGVDaHJvbWVEcml2ZXJTZXNzaW9ucyBzZXQgdG8gdHJ1ZTsga2lsbGluZyBleGlzdGluZyBjaHJvbWVkcml2ZXJzJyk7XG4gICAgICBhd2FpdCB0aGlzLnN0b3BDaHJvbWVkcml2ZXJQcm94aWVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5KCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGlkbid0IGtub3cgaG93IHRvIGhhbmRsZSBzd2l0Y2hpbmcgdG8gY29udGV4dCAnJHtuYW1lfSdgKTtcbiAgfVxufTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE9uLW9iamVjdCBjb250ZXh0LXJlbGF0ZWQgaGVscGVyc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIFRoZSByZWFzb24gdGhpcyBpcyBhIGZ1bmN0aW9uIGFuZCBub3QganVzdCBhIGNvbnN0YW50IGlzIHRoYXQgYm90aCBhbmRyb2lkLVxuLy8gZHJpdmVyIGFuZCBzZWxlbmRyb2lkLWRyaXZlciB1c2UgdGhpcyBsb2dpYywgYW5kIGVhY2ggb25lIHJldHVybnNcbi8vIGEgZGlmZmVyZW50IGRlZmF1bHQgY29udGV4dCBuYW1lXG5oZWxwZXJzLmRlZmF1bHRDb250ZXh0TmFtZSA9IGZ1bmN0aW9uIGRlZmF1bHRDb250ZXh0TmFtZSAoKSB7XG4gIHJldHVybiBOQVRJVkVfV0lOO1xufTtcblxuaGVscGVycy5kZWZhdWx0V2Vidmlld05hbWUgPSBmdW5jdGlvbiBkZWZhdWx0V2Vidmlld05hbWUgKCkge1xuICByZXR1cm4gV0VCVklFV19CQVNFICsgdGhpcy5vcHRzLmFwcFBhY2thZ2U7XG59O1xuXG5oZWxwZXJzLmlzV2ViQ29udGV4dCA9IGZ1bmN0aW9uIGlzV2ViQ29udGV4dCAoKSB7XG4gIHJldHVybiB0aGlzLmN1ckNvbnRleHQgIT09IG51bGwgJiYgdGhpcy5jdXJDb250ZXh0ICE9PSBOQVRJVkVfV0lOO1xufTtcblxuLy8gVHVybiBvbiBwcm94eWluZyB0byBhbiBleGlzdGluZyBDaHJvbWVkcml2ZXIgc2Vzc2lvbiBvciBhIG5ldyBvbmVcbmhlbHBlcnMuc3RhcnRDaHJvbWVkcml2ZXJQcm94eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0Q2hyb21lZHJpdmVyUHJveHkgKGNvbnRleHQsIHdlYnZpZXdzTWFwcGluZykge1xuICBsb2cuZGVidWcoYENvbm5lY3RpbmcgdG8gY2hyb21lLWJhY2tlZCB3ZWJ2aWV3IGNvbnRleHQgJyR7Y29udGV4dH0nYCk7XG5cbiAgbGV0IGNkO1xuICBpZiAodGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XSkge1xuICAgIC8vIGluIHRoZSBjYXNlIHdoZXJlIHdlJ3ZlIGFscmVhZHkgc2V0IHVwIGEgY2hyb21lZHJpdmVyIGZvciBhIGNvbnRleHQsXG4gICAgLy8gd2Ugd2FudCB0byByZWNvbm5lY3QgdG8gaXQsIG5vdCBjcmVhdGUgYSB3aG9sZSBuZXcgb25lXG4gICAgbG9nLmRlYnVnKGBGb3VuZCBleGlzdGluZyBDaHJvbWVkcml2ZXIgZm9yIGNvbnRleHQgJyR7Y29udGV4dH0nLiBVc2luZyBpdC5gKTtcbiAgICBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgYXdhaXQgc2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlcihjZCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IG9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLm9wdHMpO1xuICAgIG9wdHMuY2hyb21lVXNlUnVubmluZ0FwcCA9IHRydWU7XG5cbiAgICAvLyBpZiByZXF1ZXN0ZWQsIHRlbGwgY2hyb21lZHJpdmVyIHRvIGF0dGFjaCB0byB0aGUgYW5kcm9pZCBwYWNrYWdlIHdlIGhhdmVcbiAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgbmFtZSwgcmF0aGVyIHRoYW4gdGhlIHBhY2thZ2Ugb2YgdGhlIEFVVC5cbiAgICAvLyBBbmQgdHVybiB0aGlzIG9uIGJ5IGRlZmF1bHQgZm9yIGNocm9tZS0taWYgY2hyb21lIHBvcHMgdXAgd2l0aCBhIHdlYnZpZXdcbiAgICAvLyBhbmQgc29tZW9uZSB3YW50cyB0byBzd2l0Y2ggdG8gaXQsIHdlIHNob3VsZCBsZXQgY2hyb21lZHJpdmVyIGNvbm5lY3QgdG9cbiAgICAvLyBjaHJvbWUgcmF0aGVyIHRoYW4gc3RheWluZyBzdHVjayBvbiB0aGUgQVVUXG4gICAgaWYgKG9wdHMuZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIHx8IGNvbnRleHQgPT09IGAke1dFQlZJRVdfQkFTRX1jaHJvbWVgKSB7XG4gICAgICBsZXQgYW5kcm9pZFBhY2thZ2UgPSBjb250ZXh0Lm1hdGNoKGAke1dFQlZJRVdfQkFTRX0oLispYCk7XG4gICAgICBpZiAoYW5kcm9pZFBhY2thZ2UgJiYgYW5kcm9pZFBhY2thZ2UubGVuZ3RoID4gMCkge1xuICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0gYW5kcm9pZFBhY2thZ2VbMV07XG4gICAgICB9XG4gICAgICBpZiAoIW9wdHMuZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lKSB7XG4gICAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICdlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24nKSAmJiAhdGhpcy5vcHRzLmVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgICAgICAgIC8vIFdoZW4gZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIGNhcGFiaWxpdHkgaXMgZXhwbGljaXRseSBkaXNhYmxlZCwgdHJ5IHRvIGlkZW50aWZ5XG4gICAgICAgICAgLy8gY2hyb21lQW5kcm9pZFBhY2thZ2UgYmFzZWQgb24gY29udGV4dHMsIGtub3duIGNocm9tZSB2YXJpYW50IHBhY2thZ2VzIGFuZCBxdWVyeUFwcFN0YXRlIHJlc3VsdFxuICAgICAgICAgIC8vIHNpbmNlIHdlYnZpZXdzTWFwcGluZyBkb2VzIG5vdCBoYXZlIGluZm8gb2JqZWN0XG4gICAgICAgICAgY29uc3QgY29udGV4dHMgPSB3ZWJ2aWV3c01hcHBpbmcubWFwKCh3bSkgPT4gd20ud2Vidmlld05hbWUpO1xuICAgICAgICAgIGZvciAoY29uc3Qga25vd25QYWNrYWdlIG9mIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTKSB7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjb250ZXh0cywgYCR7V0VCVklFV19CQVNFfSR7a25vd25QYWNrYWdlfWApKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYXBwU3RhdGUgPSBhd2FpdCB0aGlzLnF1ZXJ5QXBwU3RhdGUoa25vd25QYWNrYWdlKTtcbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKFtBUFBfU1RBVEUuUlVOTklOR19JTl9CQUNLR1JPVU5ELCBBUFBfU1RBVEUuUlVOTklOR19JTl9GT1JFR1JPVU5EXSwgYXBwU3RhdGUpKSB7XG4gICAgICAgICAgICAgIG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UgPSBrbm93blBhY2thZ2U7XG4gICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgSWRlbnRpZmllZCBjaHJvbWVBbmRyb2lkUGFja2FnZSBhcyAnJHtvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlfScgYCArXG4gICAgICAgICAgICAgICAgYGZvciBjb250ZXh0ICcke2NvbnRleHR9JyBieSBxdWVyeWluZyBzdGF0ZXMgb2YgQ2hyb21lIGFwcCBwYWNrYWdlc2ApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCB3bSBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICAgICAgICAgIGlmICh3bS53ZWJ2aWV3TmFtZSA9PT0gY29udGV4dCAmJiBfLmhhcyh3bT8uaW5mbywgJ0FuZHJvaWQtUGFja2FnZScpKSB7XG4gICAgICAgICAgICAgIG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UgPSB3bS5pbmZvWydBbmRyb2lkLVBhY2thZ2UnXTtcbiAgICAgICAgICAgICAgbG9nLmRlYnVnKGBJZGVudGlmaWVkIGNocm9tZUFuZHJvaWRQYWNrYWdlIGFzICcke29wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2V9JyBgICtcbiAgICAgICAgICAgICAgICBgZm9yIGNvbnRleHQgJyR7Y29udGV4dH0nIGJ5IENEUGApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjZCA9IGF3YWl0IHRoaXMuc2V0dXBOZXdDaHJvbWVkcml2ZXIob3B0cywgdGhpcy5hZGIuY3VyRGV2aWNlSWQsIHRoaXMuYWRiLCBjb250ZXh0KTtcbiAgICAvLyBiaW5kIG91ciBzdG9wL2V4aXQgaGFuZGxlciwgcGFzc2luZyBpbiBjb250ZXh0IHNvIHdlIGtub3cgd2hpY2hcbiAgICAvLyBvbmUgc3RvcHBlZCB1bmV4cGVjdGVkbHlcbiAgICBjZC5vbihDaHJvbWVkcml2ZXIuRVZFTlRfQ0hBTkdFRCwgKG1zZykgPT4ge1xuICAgICAgaWYgKG1zZy5zdGF0ZSA9PT0gQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQRUQpIHtcbiAgICAgICAgdGhpcy5vbkNocm9tZWRyaXZlclN0b3AoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gc2F2ZSB0aGUgY2hyb21lZHJpdmVyIG9iamVjdCB1bmRlciB0aGUgY29udGV4dFxuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF0gPSBjZDtcbiAgfVxuICAvLyBob29rIHVwIHRoZSBsb2NhbCB2YXJpYWJsZXMgc28gd2UgY2FuIHByb3h5IHRoaXMgYml6XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gY2Q7XG4gIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmNocm9tZWRyaXZlci5wcm94eVJlcS5iaW5kKHRoaXMuY2hyb21lZHJpdmVyKTtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQuYmluZCh0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5KTtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG59O1xuXG4vLyBTdG9wIHByb3h5aW5nIHRvIGFueSBDaHJvbWVkcml2ZXJcbmhlbHBlcnMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5ID0gZnVuY3Rpb24gc3VzcGVuZENocm9tZWRyaXZlclByb3h5ICgpIHtcbiAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICB0aGlzLnByb3h5UmVxUmVzID0gbnVsbDtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSBudWxsO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG59O1xuXG4vLyBIYW5kbGUgYW4gb3V0LW9mLWJhbmQgQ2hyb21lZHJpdmVyIHN0b3AgZXZlbnRcbmhlbHBlcnMub25DaHJvbWVkcml2ZXJTdG9wID0gYXN5bmMgZnVuY3Rpb24gb25DaHJvbWVkcml2ZXJTdG9wIChjb250ZXh0KSB7XG4gIGxvZy53YXJuKGBDaHJvbWVkcml2ZXIgZm9yIGNvbnRleHQgJHtjb250ZXh0fSBzdG9wcGVkIHVuZXhwZWN0ZWRseWApO1xuICBpZiAoY29udGV4dCA9PT0gdGhpcy5jdXJDb250ZXh0KSB7XG4gICAgLy8gd2UgZXhpdGVkIHVuZXhwZWN0ZWRseSB3aGlsZSBhdXRvbWF0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHNvIHdhbnRcbiAgICAvLyB0byBzaHV0IGRvd24gdGhlIHNlc3Npb24gYW5kIHJlc3BvbmQgd2l0aCBhbiBlcnJvclxuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoJ0Nocm9tZWRyaXZlciBxdWl0IHVuZXhwZWN0ZWRseSBkdXJpbmcgc2Vzc2lvbicpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24oZXJyKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBpZiBhIENocm9tZWRyaXZlciBpbiB0aGUgbm9uLWFjdGl2ZSBjb250ZXh0IGJhcmZzLCB3ZSBkb24ndCByZWFsbHlcbiAgICAvLyBjYXJlLCB3ZSdsbCBqdXN0IG1ha2UgYSBuZXcgb25lIG5leHQgdGltZSB3ZSBuZWVkIHRoZSBjb250ZXh0LlxuICAgIGxvZy53YXJuKFwiQ2hyb21lZHJpdmVyIHF1aXQgdW5leHBlY3RlZGx5LCBidXQgaXQgd2Fzbid0IHRoZSBhY3RpdmUgXCIgK1xuICAgICAgICAgICAgICAgICdjb250ZXh0LCBpZ25vcmluZycpO1xuICAgIGRlbGV0ZSB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW2NvbnRleHRdO1xuICB9XG59O1xuXG4vLyBJbnRlbnRpb25hbGx5IHN0b3AgYWxsIHRoZSBjaHJvbWVkcml2ZXJzIGN1cnJlbnRseSBhY3RpdmUsIGFuZCBpZ25vcmVcbi8vIHRoZWlyIGV4aXQgZXZlbnRzXG5oZWxwZXJzLnN0b3BDaHJvbWVkcml2ZXJQcm94aWVzID0gYXN5bmMgZnVuY3Rpb24gc3RvcENocm9tZWRyaXZlclByb3hpZXMgKCkge1xuICB0aGlzLnN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSgpOyAvLyBtYWtlIHN1cmUgd2UgdHVybiBvZmYgdGhlIHByb3h5IGZsYWdcbiAgZm9yIChsZXQgY29udGV4dCBvZiBfLmtleXModGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVycykpIHtcbiAgICBsZXQgY2QgPSB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW2NvbnRleHRdO1xuICAgIGxvZy5kZWJ1ZyhgU3RvcHBpbmcgY2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICR7Y29udGV4dH1gKTtcbiAgICAvLyBzdG9wIGxpc3RlbmluZyBmb3IgdGhlIHN0b3BwZWQgc3RhdGUgZXZlbnRcbiAgICBjZC5yZW1vdmVBbGxMaXN0ZW5lcnMoQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjZC5zdG9wKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgRXJyb3Igc3RvcHBpbmcgQ2hyb21lZHJpdmVyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgfVxufTtcblxuaGVscGVycy5pc0Nocm9tZWRyaXZlckNvbnRleHQgPSBmdW5jdGlvbiBpc0Nocm9tZWRyaXZlckNvbnRleHQgKHZpZXdOYW1lKSB7XG4gIHJldHVybiBfLmluY2x1ZGVzKHZpZXdOYW1lLCBXRUJWSUVXX1dJTikgfHwgdmlld05hbWUgPT09IENIUk9NSVVNX1dJTjtcbn07XG5cbmhlbHBlcnMuc2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUgPSBmdW5jdGlvbiBzaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSAoKSB7XG4gIHJldHVybiAhIXRoaXMub3B0cy5jaHJvbWVPcHRpb25zICYmXG4gICAgICAgICBfLmlzQXJyYXkodGhpcy5vcHRzLmNocm9tZU9wdGlvbnMuYXJncykgJiZcbiAgICAgICAgIHRoaXMub3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MuaW5jbHVkZXMoJy0tbm8tZmlyc3QtcnVuJyk7XG59O1xuXG5oZWxwZXJzLmRpc21pc3NDaHJvbWVXZWxjb21lID0gYXN5bmMgZnVuY3Rpb24gZGlzbWlzc0Nocm9tZVdlbGNvbWUgKCkge1xuICBsb2cuaW5mbygnVHJ5aW5nIHRvIGRpc21pc3MgQ2hyb21lIHdlbGNvbWUnKTtcbiAgbGV0IGFjdGl2aXR5ID0gYXdhaXQgdGhpcy5nZXRDdXJyZW50QWN0aXZpdHkoKTtcbiAgaWYgKGFjdGl2aXR5ICE9PSAnb3JnLmNocm9taXVtLmNocm9tZS5icm93c2VyLmZpcnN0cnVuLkZpcnN0UnVuQWN0aXZpdHknKSB7XG4gICAgbG9nLmluZm8oJ0Nocm9tZSB3ZWxjb21lIGRpYWxvZyBuZXZlciBzaG93ZWQgdXAhIENvbnRpbnVpbmcnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxPckVscygnaWQnLCAnY29tLmFuZHJvaWQuY2hyb21lOmlkL3Rlcm1zX2FjY2VwdCcsIGZhbHNlKTtcbiAgYXdhaXQgdGhpcy5jbGljayhlbC5FTEVNRU5UKTtcbiAgdHJ5IHtcbiAgICBsZXQgZWwgPSBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzKCdpZCcsICdjb20uYW5kcm9pZC5jaHJvbWU6aWQvbmVnYXRpdmVfYnV0dG9uJywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuY2xpY2soZWwuRUxFTUVOVCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBETyBOT1RISU5HLCBUSElTIERFVklDRSBESUROVCBMQVVOQ0ggVEhFIFNJR05JTiBESUFMT0dcbiAgICAvLyBJVCBNVVNUIEJFIEEgTk9OIEdNUyBERVZJQ0VcbiAgICBsb2cud2FybihgVGhpcyBkZXZpY2UgZGlkIG5vdCBzaG93IENocm9tZSBTaWduSW4gZGlhbG9nLCAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5zdGFydENocm9tZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBzdGFydENocm9tZVNlc3Npb24gKCkge1xuICBsb2cuaW5mbygnU3RhcnRpbmcgYSBjaHJvbWUtYmFzZWQgYnJvd3NlciBzZXNzaW9uJyk7XG4gIGxldCBvcHRzID0gXy5jbG9uZURlZXAodGhpcy5vcHRzKTtcblxuICBjb25zdCBrbm93blBhY2thZ2VzID0gW1xuICAgICdvcmcuY2hyb21pdW0uY2hyb21lLnNoZWxsJyxcbiAgICAnY29tLmFuZHJvaWQuY2hyb21lJyxcbiAgICAnY29tLmNocm9tZS5iZXRhJyxcbiAgICAnb3JnLmNocm9taXVtLmNocm9tZScsXG4gICAgJ29yZy5jaHJvbWl1bS53ZWJ2aWV3X3NoZWxsJyxcbiAgXTtcblxuICBpZiAoXy5pbmNsdWRlcyhrbm93blBhY2thZ2VzLCB0aGlzLm9wdHMuYXBwUGFja2FnZSkpIHtcbiAgICBvcHRzLmNocm9tZUJ1bmRsZUlkID0gdGhpcy5vcHRzLmFwcFBhY2thZ2U7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5jaHJvbWVBbmRyb2lkQWN0aXZpdHkgPSB0aGlzLm9wdHMuYXBwQWN0aXZpdHk7XG4gIH1cbiAgdGhpcy5jaHJvbWVkcml2ZXIgPSBhd2FpdCB0aGlzLnNldHVwTmV3Q2hyb21lZHJpdmVyKG9wdHMsIHRoaXMuYWRiLmN1ckRldmljZUlkLCB0aGlzLmFkYik7XG4gIHRoaXMuY2hyb21lZHJpdmVyLm9uKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VELCAobXNnKSA9PiB7XG4gICAgaWYgKG1zZy5zdGF0ZSA9PT0gQ2hyb21lZHJpdmVyLlNUQVRFX1NUT1BQRUQpIHtcbiAgICAgIHRoaXMub25DaHJvbWVkcml2ZXJTdG9wKENIUk9NSVVNX1dJTik7XG4gICAgfVxuICB9KTtcblxuICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgQ2hyb21lIHNlc3Npb24sIHdlIGVuc3VyZSB0aGF0IHRoZSBjb250ZXh0IGlzXG4gIC8vIGFwcHJvcHJpYXRlbHkgc2V0IGFuZCB0aGF0IHRoaXMgY2hyb21lZHJpdmVyIGlzIGFkZGVkIHRvIHRoZSBsaXN0XG4gIC8vIG9mIHNlc3Npb24gY2hyb21lZHJpdmVycyBzbyB3ZSBjYW4gc3dpdGNoIGJhY2sgYW5kIGZvcnRoXG4gIHRoaXMuY3VyQ29udGV4dCA9IENIUk9NSVVNX1dJTjtcbiAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tDSFJPTUlVTV9XSU5dID0gdGhpcy5jaHJvbWVkcml2ZXI7XG4gIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmNocm9tZWRyaXZlci5wcm94eVJlcS5iaW5kKHRoaXMuY2hyb21lZHJpdmVyKTtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQuYmluZCh0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5KTtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG5cbiAgaWYgKHRoaXMuc2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUoKSkge1xuICAgIC8vIGRpc21pc3MgQ2hyb21lIHdlbGNvbWUgZGlhbG9nXG4gICAgYXdhaXQgdGhpcy5kaXNtaXNzQ2hyb21lV2VsY29tZSgpO1xuICB9XG59O1xuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBJbnRlcm5hbCBsaWJyYXJ5IGZ1bmN0aW9uc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuYXN5bmMgZnVuY3Rpb24gc2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlciAoY2hyb21lZHJpdmVyKSB7XG4gIC8vIGNoZWNrIHRoZSBzdGF0dXMgYnkgc2VuZGluZyBhIHNpbXBsZSB3aW5kb3ctYmFzZWQgY29tbWFuZCB0byBDaHJvbWVEcml2ZXJcbiAgLy8gaWYgdGhlcmUgaXMgYW4gZXJyb3IsIHdlIHdhbnQgdG8gcmVjcmVhdGUgdGhlIENocm9tZURyaXZlciBzZXNzaW9uXG4gIGlmICghYXdhaXQgY2hyb21lZHJpdmVyLmhhc1dvcmtpbmdXZWJ2aWV3KCkpIHtcbiAgICBsb2cuZGVidWcoJ0Nocm9tZURyaXZlciBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93LiAnICtcbiAgICAgICAgICAgICAgICAgJ1JlLWluaXRpYWxpemluZyB0aGUgc2Vzc2lvbi4nKTtcbiAgICBhd2FpdCBjaHJvbWVkcml2ZXIucmVzdGFydCgpO1xuICB9XG4gIHJldHVybiBjaHJvbWVkcml2ZXI7XG59XG5cbi8qKlxuICogRmluZCBhIGZyZWUgcG9ydCB0byBoYXZlIENocm9tZWRyaXZlciBsaXN0ZW4gb24uXG4gKlxuICogQHBhcmFtIHthcnJheX0gW3BvcnRTcGVjXSAtIEFycmF5IHdoaWNoIGlzIGEgbGlzdCBvZiBwb3J0cy4gQSBsaXN0IGl0ZW0gbWF5XG4gKiBhbHNvIGl0c2VsZiBiZSBhbiBhcnJheSBvZiBsZW5ndGggMiBzcGVjaWZ5aW5nIGEgc3RhcnQgYW5kIGVuZCBwb3J0IG9mXG4gKiBhIHJhbmdlLiBTb21lIHZhbGlkIHBvcnQgc3BlY3M6XG4gKiAgICAtIFs4MDAwLCA4MDAxLCA4MDAyXVxuICogICAgLSBbWzgwMDAsIDgwMDVdXVxuICogICAgLSBbODAwMCwgWzkwMDAsIDkxMDBdXVxuICpcbiAqIEByZXR1cm4ge251bWJlcn0gQSBmcmVlIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q2hyb21lZHJpdmVyUG9ydCAocG9ydFNwZWMpIHtcbiAgY29uc3QgZ2V0UG9ydCA9IEIucHJvbWlzaWZ5KFBvcnRGaW5kZXIuZ2V0UG9ydCwge2NvbnRleHQ6IFBvcnRGaW5kZXJ9KTtcblxuICAvLyBpZiB0aGUgdXNlciBkaWRuJ3QgZ2l2ZSB1cyBhbnkgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgY2hyb21lZHJpdmVyXG4gIC8vIHBvcnQgcmFuZ2VzLCBqdXN0IGZpbmQgYW55IGZyZWUgcG9ydFxuICBpZiAoIXBvcnRTcGVjKSB7XG4gICAgY29uc3QgcG9ydCA9IGF3YWl0IGdldFBvcnQoKTtcbiAgICBsb2cuZGVidWcoYEEgcG9ydCB3YXMgbm90IGdpdmVuLCB1c2luZyByYW5kb20gZnJlZSBwb3J0OiAke3BvcnR9YCk7XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cblxuICAvLyBvdGhlcndpc2UgZmluZCB0aGUgZnJlZSBwb3J0IGJhc2VkIG9uIGEgbGlzdCBvciByYW5nZSBwcm92aWRlZCBieSB0aGUgdXNlclxuICBsb2cuZGVidWcoYEZpbmRpbmcgYSBmcmVlIHBvcnQgZm9yIGNocm9tZWRyaXZlciB1c2luZyBzcGVjICR7SlNPTi5zdHJpbmdpZnkocG9ydFNwZWMpfWApO1xuICBsZXQgZm91bmRQb3J0ID0gbnVsbDtcbiAgZm9yIChjb25zdCBwb3RlbnRpYWxQb3J0IG9mIHBvcnRTcGVjKSB7XG4gICAgbGV0IHBvcnQsIHN0b3BQb3J0O1xuICAgIGlmIChfLmlzQXJyYXkocG90ZW50aWFsUG9ydCkpIHtcbiAgICAgIChbcG9ydCwgc3RvcFBvcnRdID0gcG90ZW50aWFsUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcnQgPSBwYXJzZUludChwb3RlbnRpYWxQb3J0LCAxMCk7IC8vIGVuc3VyZSB3ZSBoYXZlIGEgbnVtYmVyIGFuZCBub3QgYSBzdHJpbmdcbiAgICAgIHN0b3BQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgcG9ydCByYW5nZSAke3BvcnR9OiR7c3RvcFBvcnR9YCk7XG4gICAgICBmb3VuZFBvcnQgPSBhd2FpdCBnZXRQb3J0KHtwb3J0LCBzdG9wUG9ydH0pO1xuICAgICAgYnJlYWs7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLmRlYnVnKGBOb3RoaW5nIGluIHBvcnQgcmFuZ2UgJHtwb3J0fToke3N0b3BQb3J0fSB3YXMgYXZhaWxhYmxlYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZvdW5kUG9ydCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYSBmcmVlIHBvcnQgZm9yIGNocm9tZWRyaXZlciB1c2luZyBgICtcbiAgICAgICAgICAgICAgICAgICAgYGNocm9tZWRyaXZlclBvcnRzIHNwZWMgJHtKU09OLnN0cmluZ2lmeShwb3J0U3BlYyl9YCk7XG4gIH1cblxuICBsb2cuZGVidWcoYFVzaW5nIGZyZWUgcG9ydCAke2ZvdW5kUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICByZXR1cm4gZm91bmRQb3J0O1xufVxuXG5oZWxwZXJzLmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCA9IGZ1bmN0aW9uIGlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCAoKSB7XG4gIGlmICh0aGlzLmlzRmVhdHVyZUVuYWJsZWQoQ0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxvZy5kZWJ1ZyhgQXV0b21hdGVkIENocm9tZWRyaXZlciBkb3dubG9hZCBpcyBkaXNhYmxlZC4gYCArXG4gICAgYFVzZSAnJHtDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkV9JyBzZXJ2ZXIgZmVhdHVyZSB0byBlbmFibGUgaXRgKTtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuaGVscGVycy5zZXR1cE5ld0Nocm9tZWRyaXZlciA9IGFzeW5jIGZ1bmN0aW9uIHNldHVwTmV3Q2hyb21lZHJpdmVyIChvcHRzLCBjdXJEZXZpY2VJZCwgYWRiLCBjb250ZXh0ID0gbnVsbCkge1xuICBpZiAob3B0cy5jaHJvbWVEcml2ZXJQb3J0KSB7XG4gICAgbG9nLndhcm4oYFRoZSAnY2hyb21lRHJpdmVyUG9ydCcgY2FwYWJpbGl0eSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICdjaHJvbWVkcml2ZXJQb3J0JyBpbnN0ZWFkYCk7XG4gICAgb3B0cy5jaHJvbWVkcml2ZXJQb3J0ID0gb3B0cy5jaHJvbWVEcml2ZXJQb3J0O1xuICB9XG5cbiAgaWYgKG9wdHMuY2hyb21lZHJpdmVyUG9ydCkge1xuICAgIGxvZy5kZWJ1ZyhgVXNpbmcgdXNlci1zcGVjaWZpZWQgcG9ydCAke29wdHMuY2hyb21lZHJpdmVyUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICB9IGVsc2Uge1xuICAgIC8vIGlmIGEgc2luZ2xlIHBvcnQgd2Fzbid0IGdpdmVuLCB3ZSdsbCBsb29rIGZvciBhIGZyZWUgb25lXG4gICAgb3B0cy5jaHJvbWVkcml2ZXJQb3J0ID0gYXdhaXQgZ2V0Q2hyb21lZHJpdmVyUG9ydChvcHRzLmNocm9tZWRyaXZlclBvcnRzKTtcbiAgfVxuXG4gIGNvbnN0IGRldGFpbHMgPSBjb250ZXh0ID8gd2Vidmlld0hlbHBlcnMuZ2V0V2Vidmlld0RldGFpbHMoYWRiLCBjb250ZXh0KSA6IHVuZGVmaW5lZDtcbiAgaWYgKCFfLmlzRW1wdHkoZGV0YWlscykpIHtcbiAgICBsb2cuZGVidWcoJ1Bhc3Npbmcgd2ViIHZpZXcgZGV0YWlscyB0byB0aGUgQ2hyb21lZHJpdmVyIGNvbnN0cnVjdG9yOiAnICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRldGFpbHMsIG51bGwsIDIpKTtcbiAgfVxuXG4gIGNvbnN0IGNocm9tZWRyaXZlciA9IG5ldyBDaHJvbWVkcml2ZXIoe1xuICAgIHBvcnQ6IG9wdHMuY2hyb21lZHJpdmVyUG9ydCxcbiAgICBleGVjdXRhYmxlOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGUsXG4gICAgYWRiLFxuICAgIGNtZEFyZ3M6IG9wdHMuY2hyb21lZHJpdmVyQXJncyxcbiAgICB2ZXJib3NlOiAhIW9wdHMuc2hvd0Nocm9tZWRyaXZlckxvZyxcbiAgICBleGVjdXRhYmxlRGlyOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXIsXG4gICAgbWFwcGluZ1BhdGg6IG9wdHMuY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUsXG4gICAgYnVuZGxlSWQ6IG9wdHMuY2hyb21lQnVuZGxlSWQsXG4gICAgdXNlU3lzdGVtRXhlY3V0YWJsZTogb3B0cy5jaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlLFxuICAgIGRpc2FibGVCdWlsZENoZWNrOiBvcHRzLmNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrLFxuICAgIGRldGFpbHMsXG4gICAgaXNBdXRvZG93bmxvYWRFbmFibGVkOiAodGhpcyB8fCB7fSkuaXNDaHJvbWVkcml2ZXJBdXRvZG93bmxvYWRFbmFibGVkXG4gICAgICA/IHRoaXMuaXNDaHJvbWVkcml2ZXJBdXRvZG93bmxvYWRFbmFibGVkKCkgOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGVyZSBhcmUgY2hyb21lT3B0aW9uc1xuICBvcHRzLmNocm9tZU9wdGlvbnMgPSBvcHRzLmNocm9tZU9wdGlvbnMgfHwge307XG4gIC8vIHRyeSBvdXQgYW55IHByZWZpeGVkIGNocm9tZU9wdGlvbnMsXG4gIC8vIGFuZCBzdHJpcCB0aGUgcHJlZml4XG4gIGZvciAoY29uc3Qgb3B0IG9mIF8ua2V5cyhvcHRzKSkge1xuICAgIGlmIChvcHQuZW5kc1dpdGgoJzpjaHJvbWVPcHRpb25zJykpIHtcbiAgICAgIGxvZy53YXJuKGBNZXJnaW5nICcke29wdH0nIGludG8gJ2Nocm9tZU9wdGlvbnMnLiBUaGlzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yYCk7XG4gICAgICBfLm1lcmdlKG9wdHMuY2hyb21lT3B0aW9ucywgb3B0c1tvcHRdKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBjYXBzID0gd2Vidmlld0hlbHBlcnMuY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyhvcHRzLCBjdXJEZXZpY2VJZCwgZGV0YWlscyk7XG4gIGxvZy5kZWJ1ZyhgQmVmb3JlIHN0YXJ0aW5nIGNocm9tZWRyaXZlciwgYW5kcm9pZFBhY2thZ2UgaXMgJyR7Y2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlfSdgKTtcbiAgYXdhaXQgY2hyb21lZHJpdmVyLnN0YXJ0KGNhcHMpO1xuICByZXR1cm4gY2hyb21lZHJpdmVyO1xufTtcbmNvbnN0IHNldHVwTmV3Q2hyb21lZHJpdmVyID0gaGVscGVycy5zZXR1cE5ld0Nocm9tZWRyaXZlcjtcblxuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzLCBzZXR1cE5ld0Nocm9tZWRyaXZlciB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
426
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jb250ZXh0LmpzIl0sIm5hbWVzIjpbIkNIUk9NRURSSVZFUl9BVVRPRE9XTkxPQURfRkVBVFVSRSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJnZXRDdXJyZW50Q29udGV4dCIsImN1ckNvbnRleHQiLCJkZWZhdWx0Q29udGV4dE5hbWUiLCJnZXRDb250ZXh0cyIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJpc0Nocm9tZVNlc3Npb24iLCJ3ZWJ2aWV3c01hcHBpbmciLCJ3ZWJ2aWV3SGVscGVycyIsImdldFdlYlZpZXdzTWFwcGluZyIsImFkYiIsImFzc2lnbkNvbnRleHRzIiwic2V0Q29udGV4dCIsIm5hbWUiLCJ1dGlsIiwiaGFzVmFsdWUiLCJXRUJWSUVXX1dJTiIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImNvbnRleHRzIiwiXyIsImluY2x1ZGVzIiwiZXJyb3JzIiwiTm9TdWNoQ29udGV4dEVycm9yIiwic3dpdGNoQ29udGV4dCIsIm1vYmlsZUdldENvbnRleHRzIiwiYW5kcm9pZERldmljZVNvY2tldCIsImVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIiwid2Vidmlld0RldnRvb2xzUG9ydCIsImVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiIsIndlYnZpZXdzIiwicGFyc2VXZWJ2aWV3TmFtZXMiLCJOQVRJVkVfV0lOIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwiaXNDaHJvbWVkcml2ZXJDb250ZXh0Iiwic3RhcnRDaHJvbWVkcml2ZXJQcm94eSIsInJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMiLCJzdG9wQ2hyb21lZHJpdmVyUHJveGllcyIsInN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSIsIkVycm9yIiwiV0VCVklFV19CQVNFIiwiYXBwUGFja2FnZSIsImlzV2ViQ29udGV4dCIsImNvbnRleHQiLCJjZCIsInNlc3Npb25DaHJvbWVkcml2ZXJzIiwic2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlciIsImNsb25lRGVlcCIsImNocm9tZVVzZVJ1bm5pbmdBcHAiLCJleHRyYWN0Q2hyb21lQW5kcm9pZFBhY2thZ2VGcm9tQ29udGV4dE5hbWUiLCJhbmRyb2lkUGFja2FnZSIsIm1hdGNoIiwibGVuZ3RoIiwiY2hyb21lQW5kcm9pZFBhY2thZ2UiLCJoYXMiLCJtYXAiLCJ3bSIsIndlYnZpZXdOYW1lIiwia25vd25QYWNrYWdlIiwiS05PV05fQ0hST01FX1BBQ0tBR0VfTkFNRVMiLCJhcHBTdGF0ZSIsInF1ZXJ5QXBwU3RhdGUiLCJBUFBfU1RBVEUiLCJSVU5OSU5HX0lOX0JBQ0tHUk9VTkQiLCJSVU5OSU5HX0lOX0ZPUkVHUk9VTkQiLCJpbmZvIiwic2V0dXBOZXdDaHJvbWVkcml2ZXIiLCJjdXJEZXZpY2VJZCIsIm9uIiwiQ2hyb21lZHJpdmVyIiwiRVZFTlRfQ0hBTkdFRCIsIm1zZyIsInN0YXRlIiwiU1RBVEVfU1RPUFBFRCIsIm9uQ2hyb21lZHJpdmVyU3RvcCIsImNocm9tZWRyaXZlciIsInByb3h5UmVxUmVzIiwicHJveHlSZXEiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwcm94eSIsImNvbW1hbmQiLCJqd3BQcm94eUFjdGl2ZSIsIndhcm4iLCJlcnIiLCJzdGFydFVuZXhwZWN0ZWRTaHV0ZG93biIsImtleXMiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdG9wIiwibWVzc2FnZSIsInZpZXdOYW1lIiwiQ0hST01JVU1fV0lOIiwic2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUiLCJjaHJvbWVPcHRpb25zIiwiaXNBcnJheSIsImFyZ3MiLCJkaXNtaXNzQ2hyb21lV2VsY29tZSIsImFjdGl2aXR5IiwiZ2V0Q3VycmVudEFjdGl2aXR5IiwiZWwiLCJmaW5kRWxPckVscyIsImNsaWNrIiwiRUxFTUVOVCIsImUiLCJzdGFydENocm9tZVNlc3Npb24iLCJrbm93blBhY2thZ2VzIiwiY2hyb21lQnVuZGxlSWQiLCJjaHJvbWVBbmRyb2lkQWN0aXZpdHkiLCJhcHBBY3Rpdml0eSIsImhhc1dvcmtpbmdXZWJ2aWV3IiwicmVzdGFydCIsImdldENocm9tZWRyaXZlclBvcnQiLCJwb3J0U3BlYyIsImdldFBvcnQiLCJCIiwicHJvbWlzaWZ5IiwiUG9ydEZpbmRlciIsInBvcnQiLCJmb3VuZFBvcnQiLCJwb3RlbnRpYWxQb3J0Iiwic3RvcFBvcnQiLCJwYXJzZUludCIsImlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCIsImlzRmVhdHVyZUVuYWJsZWQiLCJjaHJvbWVEcml2ZXJQb3J0IiwiY2hyb21lZHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnRzIiwiZGV0YWlscyIsImdldFdlYnZpZXdEZXRhaWxzIiwidW5kZWZpbmVkIiwiaXNFbXB0eSIsImV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJFeGVjdXRhYmxlIiwiY21kQXJncyIsImNocm9tZWRyaXZlckFyZ3MiLCJ2ZXJib3NlIiwic2hvd0Nocm9tZWRyaXZlckxvZyIsImV4ZWN1dGFibGVEaXIiLCJjaHJvbWVkcml2ZXJFeGVjdXRhYmxlRGlyIiwibWFwcGluZ1BhdGgiLCJjaHJvbWVkcml2ZXJDaHJvbWVNYXBwaW5nRmlsZSIsImJ1bmRsZUlkIiwidXNlU3lzdGVtRXhlY3V0YWJsZSIsImNocm9tZWRyaXZlclVzZVN5c3RlbUV4ZWN1dGFibGUiLCJkaXNhYmxlQnVpbGRDaGVjayIsImNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrIiwiaXNBdXRvZG93bmxvYWRFbmFibGVkIiwib3B0IiwiZW5kc1dpdGgiLCJtZXJnZSIsImNhcHMiLCJjcmVhdGVDaHJvbWVkcml2ZXJDYXBzIiwic3RhcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFFQSxNQUFNQSxpQ0FBaUMsR0FBRywyQkFBMUM7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0Ms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VCxFQUFheEIsaUNBQWIsR0FDbkIsS0FBS0EsaUNBQUwsRUFEbUIsR0FDd0JPO0FBYlgsR0FBakIsQ0FBckI7QUFpQkFoSSxFQUFBQSxJQUFJLENBQUM0RixhQUFMLEdBQXFCNUYsSUFBSSxDQUFDNEYsYUFBTCxJQUFzQixFQUEzQzs7QUFHQSxPQUFLLE1BQU1zRCxHQUFYLElBQWtCbEksZ0JBQUVxRSxJQUFGLENBQU9yRixJQUFQLENBQWxCLEVBQWdDO0FBQzlCLFFBQUlrSixHQUFHLENBQUNDLFFBQUosQ0FBYSxnQkFBYixDQUFKLEVBQW9DO0FBQ2xDdEgsc0JBQUlxRCxJQUFKLENBQVUsWUFBV2dFLEdBQUksNERBQXpCOztBQUNBbEksc0JBQUVvSSxLQUFGLENBQVFwSixJQUFJLENBQUM0RixhQUFiLEVBQTRCNUYsSUFBSSxDQUFDa0osR0FBRCxDQUFoQztBQUNEO0FBQ0Y7O0FBRUQsUUFBTUcsSUFBSSxHQUFHaEosd0JBQWVpSixzQkFBZixDQUFzQ3RKLElBQXRDLEVBQTRDa0UsV0FBNUMsRUFBeUQ0RCxPQUF6RCxDQUFiOztBQUNBakcsa0JBQUlDLEtBQUosQ0FBVyxvREFBbUR1SCxJQUFJLENBQUN6RCxhQUFMLENBQW1CM0MsY0FBZSxHQUFoRzs7QUFDQSxRQUFNeUIsWUFBWSxDQUFDNkUsS0FBYixDQUFtQkYsSUFBbkIsQ0FBTjtBQUNBLFNBQU8zRSxZQUFQO0FBQ0QsQ0FsREQ7O0FBbURBLE1BQU1ULG9CQUFvQixHQUFHdkUsT0FBTyxDQUFDdUUsb0JBQXJDOztBQUdBaEUsTUFBTSxDQUFDQyxNQUFQLENBQWNQLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBDaHJvbWVkcml2ZXIgZnJvbSAnYXBwaXVtLWNocm9tZWRyaXZlcic7XG5pbXBvcnQgUG9ydEZpbmRlciBmcm9tICdwb3J0ZmluZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHtcbiAgZGVmYXVsdCBhcyB3ZWJ2aWV3SGVscGVycyxcbiAgTkFUSVZFX1dJTiwgV0VCVklFV19CQVNFLCBXRUJWSUVXX1dJTiwgQ0hST01JVU1fV0lOLCBLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FU1xufSBmcm9tICcuLi93ZWJ2aWV3LWhlbHBlcnMnO1xuaW1wb3J0IHsgQVBQX1NUQVRFIH0gZnJvbSAnLi4vYW5kcm9pZC1oZWxwZXJzJztcblxuY29uc3QgQ0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFID0gJ2Nocm9tZWRyaXZlcl9hdXRvZG93bmxvYWQnO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWN0dWFsIE1KU09OV1AgY29tbWFuZCBoYW5kbGVyc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuY29tbWFuZHMuZ2V0Q3VycmVudENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50Q29udGV4dCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAvLyBpZiB0aGUgY3VycmVudCBjb250ZXh0IGlzIGBudWxsYCwgaW5kaWNhdGluZyBubyBjb250ZXh0XG4gIC8vIGV4cGxpY2l0bHkgc2V0LCBpdCBpcyB0aGUgZGVmYXVsdCBjb250ZXh0XG4gIHJldHVybiB0aGlzLmN1ckNvbnRleHQgfHwgdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcbn07XG5cbmNvbW1hbmRzLmdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29udGV4dHMgKCkge1xuICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7aXNDaHJvbWVTZXNzaW9uOiB0aGlzLmlzQ2hyb21lU2Vzc2lvbn0sIHRoaXMub3B0cyk7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgb3B0cyk7XG4gIHJldHVybiB0aGlzLmFzc2lnbkNvbnRleHRzKHdlYnZpZXdzTWFwcGluZyk7XG59O1xuXG5jb21tYW5kcy5zZXRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0Q29udGV4dCAobmFtZSkge1xuICBpZiAoIXV0aWwuaGFzVmFsdWUobmFtZSkpIHtcbiAgICBuYW1lID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcbiAgfSBlbHNlIGlmIChuYW1lID09PSBXRUJWSUVXX1dJTikge1xuICAgIC8vIGhhbmRsZSBzZXRDb250ZXh0IFwiV0VCVklFV1wiXG4gICAgbmFtZSA9IHRoaXMuZGVmYXVsdFdlYnZpZXdOYW1lKCk7XG4gIH1cbiAgLy8gaWYgd2UncmUgYWxyZWFkeSBpbiB0aGUgY29udGV4dCB3ZSB3YW50LCBkbyBub3RoaW5nXG4gIGlmIChuYW1lID09PSB0aGlzLmN1ckNvbnRleHQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7aXNDaHJvbWVTZXNzaW9uOiB0aGlzLmlzQ2hyb21lU2Vzc2lvbn0sIHRoaXMub3B0cyk7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgb3B0cyk7XG4gIGNvbnN0IGNvbnRleHRzID0gdGhpcy5hc3NpZ25Db250ZXh0cyh3ZWJ2aWV3c01hcHBpbmcpO1xuICAvLyBpZiB0aGUgY29udGV4dCB3ZSB3YW50IGRvZXNuJ3QgZXhpc3QsIGZhaWxcbiAgaWYgKCFfLmluY2x1ZGVzKGNvbnRleHRzLCBuYW1lKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm9TdWNoQ29udGV4dEVycm9yKCk7XG4gIH1cblxuICBhd2FpdCB0aGlzLnN3aXRjaENvbnRleHQobmFtZSwgd2Vidmlld3NNYXBwaW5nKTtcbiAgdGhpcy5jdXJDb250ZXh0ID0gbmFtZTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2Vidmlld3NNYXBwaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvYyBUaGUgbmFtZSBvZiB0aGUgRGV2dG9vbHMgVW5peCBzb2NrZXRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3ZWJ2aWV3IFRoZSB3ZWIgdmlldyBhbGlhcy4gTG9va3MgbGlrZSBgV0VCVklFV19gXG4gKiBwcmVmaXggcGx1cyBQSUQgb3IgcGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGluZm8gV2VidmlldyBpbmZvcm1hdGlvbiBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL3ZlcnNpb24gQ0RQIGVuZHBvaW50XG4gKiBAcHJvcGVydHkgez9BcnJheTxPYmplY3Q+fSBwYWdlcyBXZWJ2aWV3IHBhZ2VzIGxpc3QgYXMgaXQgaXMgcmV0cmlldmVkIGJ5XG4gKiAvanNvbi9saXN0IENEUCBlbmRwb2ludFxuICogQHByb3Blcnkgez9zdHJpbmd9IHdlYnZpZXdOYW1lIEFuIGFjdHVhbCB3ZWJ2aWV3IG5hbWUgZm9yIHN3aXRjaGluZyBjb250ZXh0LlxuICogVGhpcyB2YWx1ZSBiZWNvbWVzIG51bGwgd2hlbiBmYWlsaW5nIHRvIGZpbmQgYSBQSUQgZm9yIGEgd2Vidmlldy5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIGpzb24gZGVtb25zdHJhdGVzIHRoZSBleGFtcGxlIG9mIFdlYnZpZXdzTWFwcGluZyBvYmplY3QuXG4gKiBOb3RlIHRoYXQgYGRlc2NyaXB0aW9uYCBpbiBgcGFnZWAgY2FuIGJlIGFuIGVtcHR5IHN0cmluZyBtb3N0IGxpa2VseSB3aGVuIGl0IGNvbWVzIHRvIE1vYmlsZSBDaHJvbWUpXG4gKiB7XG4gKiAgIFwicHJvY1wiOiBcIkB3ZWJ2aWV3X2RldnRvb2xzX3JlbW90ZV8yMjEzOFwiLFxuICogICBcIndlYnZpZXdcIjogXCJXRUJWSUVXXzIyMTM4XCIsXG4gKiAgIFwiaW5mb1wiOiB7XG4gKiAgICAgXCJBbmRyb2lkLVBhY2thZ2VcIjogXCJpby5hcHBpdW0uc2V0dGluZ3NcIixcbiAqICAgICBcIkJyb3dzZXJcIjogXCJDaHJvbWUvNzQuMC4zNzI5LjE4NVwiLFxuICogICAgIFwiUHJvdG9jb2wtVmVyc2lvblwiOiBcIjEuM1wiLFxuICogICAgIFwiVXNlci1BZ2VudFwiOiBcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgQW5kcm9pZCBTREsgYnVpbHQgZm9yIHg4NiBCdWlsZC9RU1IxLjE5MDkyMC4wMDE7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzQuMC4zNzI5LjE4NSBNb2JpbGUgU2FmYXJpLzUzNy4zNlwiLFxuICogICAgIFwiVjgtVmVyc2lvblwiOiBcIjcuNC4yODguMjhcIixcbiAqICAgICBcIldlYktpdC1WZXJzaW9uXCI6IFwiNTM3LjM2IChAMjI5NTU2ODJmOTRjZTA5MzM2MTk3YmZiOGRmZmVhOTkxZmEzMmYwZClcIixcbiAqICAgICBcIndlYlNvY2tldERlYnVnZ2VyVXJsXCI6IFwid3M6Ly8xMjcuMC4wLjE6MTA5MDAvZGV2dG9vbHMvYnJvd3NlclwiXG4gKiAgIH0sXG4gKiAgIFwicGFnZXNcIjogW1xuICogICAgIHtcbiAqICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJ7XFxcImF0dGFjaGVkXFxcIjp0cnVlLFxcXCJlbXB0eVxcXCI6ZmFsc2UsXFxcImhlaWdodFxcXCI6MTQ1OCxcXFwic2NyZWVuWFxcXCI6MCxcXFwic2NyZWVuWVxcXCI6MzM2LFxcXCJ2aXNpYmxlXFxcIjp0cnVlLFxcXCJ3aWR0aFxcXCI6MTA4MH1cIixcbiAqICAgICAgIFwiZGV2dG9vbHNGcm9udGVuZFVybFwiOiBcImh0dHA6Ly9jaHJvbWUtZGV2dG9vbHMtZnJvbnRlbmQuYXBwc3BvdC5jb20vc2VydmVfcmV2L0AyMjk1NTY4MmY5NGNlMDkzMzYxOTdiZmI4ZGZmZWE5OTFmYTMyZjBkL2luc3BlY3Rvci5odG1sP3dzPTEyNy4wLjAuMToxMDkwMC9kZXZ0b29scy9wYWdlLzI3MzI1Q0M1MEI2MDBEMzFCMjMzRjQ1RTA5NDg3QjFGXCIsXG4gKiAgICAgICBcImlkXCI6IFwiMjczMjVDQzUwQjYwMEQzMUIyMzNGNDVFMDk0ODdCMUZcIixcbiAqICAgICAgIFwidGl0bGVcIjogXCJSZWxlYXNlcyDCtyBhcHBpdW0vYXBwaXVtIMK3IEdpdEh1YlwiLFxuICogICAgICAgXCJ0eXBlXCI6IFwicGFnZVwiLFxuICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9yZWxlYXNlc1wiLFxuICogICAgICAgXCJ3ZWJTb2NrZXREZWJ1Z2dlclVybFwiOiBcIndzOi8vMTI3LjAuMC4xOjEwOTAwL2RldnRvb2xzL3BhZ2UvMjczMjVDQzUwQjYwMEQzMUIyMzNGNDVFMDk0ODdCMUZcIlxuICogICAgIH1cbiAqICAgXSxcbiAqICAgXCJ3ZWJ2aWV3TmFtZVwiOiBcIldFQlZJRVdfY29tLmlvLmFwcGl1bS5zZXR0aW5nXCJcbiAqIH1cbiAqL1xuXG4vKipcbiAqIFJldHVybnMgYSB3ZWJ2aWV3c01hcHBpbmcgYmFzZWQgb24gQ0RQIGVuZHBvaW50c1xuICpcbiAqIEByZXR1cm4ge0FycmF5PFdlYnZpZXdzTWFwcGluZz59IHdlYnZpZXdzTWFwcGluZ1xuICovXG5jb21tYW5kcy5tb2JpbGVHZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldENvbnRleHRzICgpIHtcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICBhbmRyb2lkRGV2aWNlU29ja2V0OiB0aGlzLm9wdHMuYW5kcm9pZERldmljZVNvY2tldCxcbiAgICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlczogdHJ1ZSxcbiAgICB3ZWJ2aWV3RGV2dG9vbHNQb3J0OiB0aGlzLm9wdHMud2Vidmlld0RldnRvb2xzUG9ydCxcbiAgICBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb246IHRydWUsXG4gICAgaXNDaHJvbWVTZXNzaW9uOiB0aGlzLmlzQ2hyb21lU2Vzc2lvblxuICB9O1xuICByZXR1cm4gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCBvcHRzKTtcbn07XG5cbmhlbHBlcnMuYXNzaWduQ29udGV4dHMgPSBmdW5jdGlvbiBhc3NpZ25Db250ZXh0cyAod2Vidmlld3NNYXBwaW5nKSB7XG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9ufSwgdGhpcy5vcHRzKTtcbiAgY29uc3Qgd2Vidmlld3MgPSB3ZWJ2aWV3SGVscGVycy5wYXJzZVdlYnZpZXdOYW1lcyh3ZWJ2aWV3c01hcHBpbmcsIG9wdHMpO1xuICB0aGlzLmNvbnRleHRzID0gW05BVElWRV9XSU4sIC4uLndlYnZpZXdzXTtcbiAgbG9nLmRlYnVnKGBBdmFpbGFibGUgY29udGV4dHM6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jb250ZXh0cyl9YCk7XG4gIHJldHVybiB0aGlzLmNvbnRleHRzO1xufTtcblxuaGVscGVycy5zd2l0Y2hDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gc3dpdGNoQ29udGV4dCAobmFtZSwgd2Vidmlld3NNYXBwaW5nKSB7XG4gIC8vIFdlIGhhdmUgc29tZSBvcHRpb25zIHdoZW4gaXQgY29tZXMgdG8gd2Vidmlld3MuIElmIHdlIHdhbnQgYVxuICAvLyBDaHJvbWVkcml2ZXIgd2Vidmlldywgd2UgY2FuIG9ubHkgY29udHJvbCBvbmUgYXQgYSB0aW1lLlxuICBpZiAodGhpcy5pc0Nocm9tZWRyaXZlckNvbnRleHQobmFtZSkpIHtcbiAgICAvLyBzdGFydCBwcm94eWluZyBjb21tYW5kcyBkaXJlY3RseSB0byBjaHJvbWVkcml2ZXJcbiAgICBhd2FpdCB0aGlzLnN0YXJ0Q2hyb21lZHJpdmVyUHJveHkobmFtZSwgd2Vidmlld3NNYXBwaW5nKTtcbiAgfSBlbHNlIGlmICh0aGlzLmlzQ2hyb21lZHJpdmVyQ29udGV4dCh0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgLy8gaWYgd2UncmUgbW92aW5nIHRvIGEgbm9uLWNocm9tZWRyaXZlciB3ZWJ2aWV3LCBhbmQgb3VyIGN1cnJlbnQgY29udGV4dFxuICAgIC8vIF9pc18gYSBjaHJvbWVkcml2ZXIgd2VidmlldywgaWYgY2FwcyByZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIGlzIHNldFxuICAgIC8vIHRvIHRydWUgdGhlbiBraWxsIGNocm9tZWRyaXZlciBzZXNzaW9uIHVzaW5nIHN0b3BDaHJvbWVkcml2ZXJQcm94aWVzIG9yXG4gICAgLy8gZWxzZSBzaW1wbHkgc3VzcGVuZCBwcm94eWluZyB0byB0aGUgbGF0dGVyXG4gICAgaWYgKHRoaXMub3B0cy5yZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zKSB7XG4gICAgICBsb2cuZGVidWcoJ3JlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMgc2V0IHRvIHRydWU7IGtpbGxpbmcgZXhpc3RpbmcgY2hyb21lZHJpdmVycycpO1xuICAgICAgYXdhaXQgdGhpcy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERpZG4ndCBrbm93IGhvdyB0byBoYW5kbGUgc3dpdGNoaW5nIHRvIGNvbnRleHQgJyR7bmFtZX0nYCk7XG4gIH1cbn07XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBPbi1vYmplY3QgY29udGV4dC1yZWxhdGVkIGhlbHBlcnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vLyBUaGUgcmVhc29uIHRoaXMgaXMgYSBmdW5jdGlvbiBhbmQgbm90IGp1c3QgYSBjb25zdGFudCBpcyB0aGF0IGJvdGggYW5kcm9pZC1cbi8vIGRyaXZlciBhbmQgc2VsZW5kcm9pZC1kcml2ZXIgdXNlIHRoaXMgbG9naWMsIGFuZCBlYWNoIG9uZSByZXR1cm5zXG4vLyBhIGRpZmZlcmVudCBkZWZhdWx0IGNvbnRleHQgbmFtZVxuaGVscGVycy5kZWZhdWx0Q29udGV4dE5hbWUgPSBmdW5jdGlvbiBkZWZhdWx0Q29udGV4dE5hbWUgKCkge1xuICByZXR1cm4gTkFUSVZFX1dJTjtcbn07XG5cbmhlbHBlcnMuZGVmYXVsdFdlYnZpZXdOYW1lID0gZnVuY3Rpb24gZGVmYXVsdFdlYnZpZXdOYW1lICgpIHtcbiAgcmV0dXJuIFdFQlZJRVdfQkFTRSArIHRoaXMub3B0cy5hcHBQYWNrYWdlO1xufTtcblxuaGVscGVycy5pc1dlYkNvbnRleHQgPSBmdW5jdGlvbiBpc1dlYkNvbnRleHQgKCkge1xuICByZXR1cm4gdGhpcy5jdXJDb250ZXh0ICE9PSBudWxsICYmIHRoaXMuY3VyQ29udGV4dCAhPT0gTkFUSVZFX1dJTjtcbn07XG5cbi8vIFR1cm4gb24gcHJveHlpbmcgdG8gYW4gZXhpc3RpbmcgQ2hyb21lZHJpdmVyIHNlc3Npb24gb3IgYSBuZXcgb25lXG5oZWxwZXJzLnN0YXJ0Q2hyb21lZHJpdmVyUHJveHkgPSBhc3luYyBmdW5jdGlvbiBzdGFydENocm9tZWRyaXZlclByb3h5IChjb250ZXh0LCB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgbG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIGNocm9tZS1iYWNrZWQgd2VidmlldyBjb250ZXh0ICcke2NvbnRleHR9J2ApO1xuXG4gIGxldCBjZDtcbiAgaWYgKHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF0pIHtcbiAgICAvLyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSd2ZSBhbHJlYWR5IHNldCB1cCBhIGNocm9tZWRyaXZlciBmb3IgYSBjb250ZXh0LFxuICAgIC8vIHdlIHdhbnQgdG8gcmVjb25uZWN0IHRvIGl0LCBub3QgY3JlYXRlIGEgd2hvbGUgbmV3IG9uZVxuICAgIGxvZy5kZWJ1ZyhgRm91bmQgZXhpc3RpbmcgQ2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICcke2NvbnRleHR9Jy4gVXNpbmcgaXQuYCk7XG4gICAgY2QgPSB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW2NvbnRleHRdO1xuICAgIGF3YWl0IHNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIoY2QpO1xuICB9IGVsc2Uge1xuICAgIGxldCBvcHRzID0gXy5jbG9uZURlZXAodGhpcy5vcHRzKTtcbiAgICBvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHAgPSB0cnVlO1xuXG4gICAgLy8gaWYgcmVxdWVzdGVkLCB0ZWxsIGNocm9tZWRyaXZlciB0byBhdHRhY2ggdG8gdGhlIGFuZHJvaWQgcGFja2FnZSB3ZSBoYXZlXG4gICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IG5hbWUsIHJhdGhlciB0aGFuIHRoZSBwYWNrYWdlIG9mIHRoZSBBVVQuXG4gICAgLy8gQW5kIHR1cm4gdGhpcyBvbiBieSBkZWZhdWx0IGZvciBjaHJvbWUtLWlmIGNocm9tZSBwb3BzIHVwIHdpdGggYSB3ZWJ2aWV3XG4gICAgLy8gYW5kIHNvbWVvbmUgd2FudHMgdG8gc3dpdGNoIHRvIGl0LCB3ZSBzaG91bGQgbGV0IGNocm9tZWRyaXZlciBjb25uZWN0IHRvXG4gICAgLy8gY2hyb21lIHJhdGhlciB0aGFuIHN0YXlpbmcgc3R1Y2sgb24gdGhlIEFVVFxuICAgIGlmIChvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSB8fCBjb250ZXh0ID09PSBgJHtXRUJWSUVXX0JBU0V9Y2hyb21lYCkge1xuICAgICAgbGV0IGFuZHJvaWRQYWNrYWdlID0gY29udGV4dC5tYXRjaChgJHtXRUJWSUVXX0JBU0V9KC4rKWApO1xuICAgICAgaWYgKGFuZHJvaWRQYWNrYWdlICYmIGFuZHJvaWRQYWNrYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZSA9IGFuZHJvaWRQYWNrYWdlWzFdO1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSkge1xuICAgICAgICBpZiAoXy5oYXModGhpcy5vcHRzLCAnZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uJykgJiYgIXRoaXMub3B0cy5lbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBXaGVuIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBjYXBhYmlsaXR5IGlzIGV4cGxpY2l0bHkgZGlzYWJsZWQsIHRyeSB0byBpZGVudGlmeVxuICAgICAgICAgIC8vIGNocm9tZUFuZHJvaWRQYWNrYWdlIGJhc2VkIG9uIGNvbnRleHRzLCBrbm93biBjaHJvbWUgdmFyaWFudCBwYWNrYWdlcyBhbmQgcXVlcnlBcHBTdGF0ZSByZXN1bHRcbiAgICAgICAgICAvLyBzaW5jZSB3ZWJ2aWV3c01hcHBpbmcgZG9lcyBub3QgaGF2ZSBpbmZvIG9iamVjdFxuICAgICAgICAgIGNvbnN0IGNvbnRleHRzID0gd2Vidmlld3NNYXBwaW5nLm1hcCgod20pID0+IHdtLndlYnZpZXdOYW1lKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtub3duUGFja2FnZSBvZiBLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUykge1xuICAgICAgICAgICAgaWYgKF8uaW5jbHVkZXMoY29udGV4dHMsIGAke1dFQlZJRVdfQkFTRX0ke2tub3duUGFja2FnZX1gKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGtub3duUGFja2FnZSk7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhbQVBQX1NUQVRFLlJVTk5JTkdfSU5fQkFDS0dST1VORCwgQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORF0sIGFwcFN0YXRlKSkge1xuICAgICAgICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0ga25vd25QYWNrYWdlO1xuICAgICAgICAgICAgICBsb2cuZGVidWcoYElkZW50aWZpZWQgY2hyb21lQW5kcm9pZFBhY2thZ2UgYXMgJyR7b3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZX0nIGAgK1xuICAgICAgICAgICAgICAgIGBmb3IgY29udGV4dCAnJHtjb250ZXh0fScgYnkgcXVlcnlpbmcgc3RhdGVzIG9mIENocm9tZSBhcHAgcGFja2FnZXNgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAoY29uc3Qgd20gb2Ygd2Vidmlld3NNYXBwaW5nKSB7XG4gICAgICAgICAgICBpZiAod20ud2Vidmlld05hbWUgPT09IGNvbnRleHQgJiYgXy5oYXMod20/LmluZm8sICdBbmRyb2lkLVBhY2thZ2UnKSkge1xuICAgICAgICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0gd20uaW5mb1snQW5kcm9pZC1QYWNrYWdlJ107XG4gICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgSWRlbnRpZmllZCBjaHJvbWVBbmRyb2lkUGFja2FnZSBhcyAnJHtvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlfScgYCArXG4gICAgICAgICAgICAgICAgYGZvciBjb250ZXh0ICcke2NvbnRleHR9JyBieSBDRFBgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2QgPSBhd2FpdCB0aGlzLnNldHVwTmV3Q2hyb21lZHJpdmVyKG9wdHMsIHRoaXMuYWRiLmN1ckRldmljZUlkLCB0aGlzLmFkYiwgY29udGV4dCk7XG4gICAgLy8gYmluZCBvdXIgc3RvcC9leGl0IGhhbmRsZXIsIHBhc3NpbmcgaW4gY29udGV4dCBzbyB3ZSBrbm93IHdoaWNoXG4gICAgLy8gb25lIHN0b3BwZWQgdW5leHBlY3RlZGx5XG4gICAgY2Qub24oQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQsIChtc2cpID0+IHtcbiAgICAgIGlmIChtc2cuc3RhdGUgPT09IENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKSB7XG4gICAgICAgIHRoaXMub25DaHJvbWVkcml2ZXJTdG9wKGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIHNhdmUgdGhlIGNocm9tZWRyaXZlciBvYmplY3QgdW5kZXIgdGhlIGNvbnRleHRcbiAgICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW2NvbnRleHRdID0gY2Q7XG4gIH1cbiAgLy8gaG9vayB1cCB0aGUgbG9jYWwgdmFyaWFibGVzIHNvIHdlIGNhbiBwcm94eSB0aGlzIGJpelxuICB0aGlzLmNocm9tZWRyaXZlciA9IGNkO1xuICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5jaHJvbWVkcml2ZXIucHJveHlSZXEuYmluZCh0aGlzLmNocm9tZWRyaXZlcik7XG4gIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eSk7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xufTtcblxuLy8gU3RvcCBwcm94eWluZyB0byBhbnkgQ2hyb21lZHJpdmVyXG5oZWxwZXJzLnN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSA9IGZ1bmN0aW9uIHN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSAoKSB7XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IG51bGw7XG4gIHRoaXMucHJveHlDb21tYW5kID0gbnVsbDtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xufTtcblxuLy8gSGFuZGxlIGFuIG91dC1vZi1iYW5kIENocm9tZWRyaXZlciBzdG9wIGV2ZW50XG5oZWxwZXJzLm9uQ2hyb21lZHJpdmVyU3RvcCA9IGFzeW5jIGZ1bmN0aW9uIG9uQ2hyb21lZHJpdmVyU3RvcCAoY29udGV4dCkge1xuICBsb2cud2FybihgQ2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICR7Y29udGV4dH0gc3RvcHBlZCB1bmV4cGVjdGVkbHlgKTtcbiAgaWYgKGNvbnRleHQgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIC8vIHdlIGV4aXRlZCB1bmV4cGVjdGVkbHkgd2hpbGUgYXV0b21hdGluZyB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBzbyB3YW50XG4gICAgLy8gdG8gc2h1dCBkb3duIHRoZSBzZXNzaW9uIGFuZCByZXNwb25kIHdpdGggYW4gZXJyb3JcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKCdDaHJvbWVkcml2ZXIgcXVpdCB1bmV4cGVjdGVkbHkgZHVyaW5nIHNlc3Npb24nKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKGVycik7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgYSBDaHJvbWVkcml2ZXIgaW4gdGhlIG5vbi1hY3RpdmUgY29udGV4dCBiYXJmcywgd2UgZG9uJ3QgcmVhbGx5XG4gICAgLy8gY2FyZSwgd2UnbGwganVzdCBtYWtlIGEgbmV3IG9uZSBuZXh0IHRpbWUgd2UgbmVlZCB0aGUgY29udGV4dC5cbiAgICBsb2cud2FybihcIkNocm9tZWRyaXZlciBxdWl0IHVuZXhwZWN0ZWRseSwgYnV0IGl0IHdhc24ndCB0aGUgYWN0aXZlIFwiICtcbiAgICAgICAgICAgICAgICAnY29udGV4dCwgaWdub3JpbmcnKTtcbiAgICBkZWxldGUgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgfVxufTtcblxuLy8gSW50ZW50aW9uYWxseSBzdG9wIGFsbCB0aGUgY2hyb21lZHJpdmVycyBjdXJyZW50bHkgYWN0aXZlLCBhbmQgaWdub3JlXG4vLyB0aGVpciBleGl0IGV2ZW50c1xuaGVscGVycy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcyA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BDaHJvbWVkcml2ZXJQcm94aWVzICgpIHtcbiAgdGhpcy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkoKTsgLy8gbWFrZSBzdXJlIHdlIHR1cm4gb2ZmIHRoZSBwcm94eSBmbGFnXG4gIGZvciAobGV0IGNvbnRleHQgb2YgXy5rZXlzKHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMpKSB7XG4gICAgbGV0IGNkID0gdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgICBsb2cuZGVidWcoYFN0b3BwaW5nIGNocm9tZWRyaXZlciBmb3IgY29udGV4dCAke2NvbnRleHR9YCk7XG4gICAgLy8gc3RvcCBsaXN0ZW5pbmcgZm9yIHRoZSBzdG9wcGVkIHN0YXRlIGV2ZW50XG4gICAgY2QucmVtb3ZlQWxsTGlzdGVuZXJzKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VEKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2Quc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oYEVycm9yIHN0b3BwaW5nIENocm9tZWRyaXZlcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gIH1cbn07XG5cbmhlbHBlcnMuaXNDaHJvbWVkcml2ZXJDb250ZXh0ID0gZnVuY3Rpb24gaXNDaHJvbWVkcml2ZXJDb250ZXh0ICh2aWV3TmFtZSkge1xuICByZXR1cm4gXy5pbmNsdWRlcyh2aWV3TmFtZSwgV0VCVklFV19XSU4pIHx8IHZpZXdOYW1lID09PSBDSFJPTUlVTV9XSU47XG59O1xuXG5oZWxwZXJzLnNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lID0gZnVuY3Rpb24gc2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUgKCkge1xuICByZXR1cm4gISF0aGlzLm9wdHMuY2hyb21lT3B0aW9ucyAmJlxuICAgICAgICAgXy5pc0FycmF5KHRoaXMub3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MpICYmXG4gICAgICAgICB0aGlzLm9wdHMuY2hyb21lT3B0aW9ucy5hcmdzLmluY2x1ZGVzKCctLW5vLWZpcnN0LXJ1bicpO1xufTtcblxuaGVscGVycy5kaXNtaXNzQ2hyb21lV2VsY29tZSA9IGFzeW5jIGZ1bmN0aW9uIGRpc21pc3NDaHJvbWVXZWxjb21lICgpIHtcbiAgbG9nLmluZm8oJ1RyeWluZyB0byBkaXNtaXNzIENocm9tZSB3ZWxjb21lJyk7XG4gIGxldCBhY3Rpdml0eSA9IGF3YWl0IHRoaXMuZ2V0Q3VycmVudEFjdGl2aXR5KCk7XG4gIGlmIChhY3Rpdml0eSAhPT0gJ29yZy5jaHJvbWl1bS5jaHJvbWUuYnJvd3Nlci5maXJzdHJ1bi5GaXJzdFJ1bkFjdGl2aXR5Jykge1xuICAgIGxvZy5pbmZvKCdDaHJvbWUgd2VsY29tZSBkaWFsb2cgbmV2ZXIgc2hvd2VkIHVwISBDb250aW51aW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBlbCA9IGF3YWl0IHRoaXMuZmluZEVsT3JFbHMoJ2lkJywgJ2NvbS5hbmRyb2lkLmNocm9tZTppZC90ZXJtc19hY2NlcHQnLCBmYWxzZSk7XG4gIGF3YWl0IHRoaXMuY2xpY2soZWwuRUxFTUVOVCk7XG4gIHRyeSB7XG4gICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxPckVscygnaWQnLCAnY29tLmFuZHJvaWQuY2hyb21lOmlkL25lZ2F0aXZlX2J1dHRvbicsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLmNsaWNrKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gRE8gTk9USElORywgVEhJUyBERVZJQ0UgRElETlQgTEFVTkNIIFRIRSBTSUdOSU4gRElBTE9HXG4gICAgLy8gSVQgTVVTVCBCRSBBIE5PTiBHTVMgREVWSUNFXG4gICAgbG9nLndhcm4oYFRoaXMgZGV2aWNlIGRpZCBub3Qgc2hvdyBDaHJvbWUgU2lnbkluIGRpYWxvZywgJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmhlbHBlcnMuc3RhcnRDaHJvbWVTZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRDaHJvbWVTZXNzaW9uICgpIHtcbiAgbG9nLmluZm8oJ1N0YXJ0aW5nIGEgY2hyb21lLWJhc2VkIGJyb3dzZXIgc2Vzc2lvbicpO1xuICBsZXQgb3B0cyA9IF8uY2xvbmVEZWVwKHRoaXMub3B0cyk7XG5cbiAgY29uc3Qga25vd25QYWNrYWdlcyA9IFtcbiAgICAnb3JnLmNocm9taXVtLmNocm9tZS5zaGVsbCcsXG4gICAgJ2NvbS5hbmRyb2lkLmNocm9tZScsXG4gICAgJ2NvbS5jaHJvbWUuYmV0YScsXG4gICAgJ29yZy5jaHJvbWl1bS5jaHJvbWUnLFxuICAgICdvcmcuY2hyb21pdW0ud2Vidmlld19zaGVsbCcsXG4gIF07XG5cbiAgaWYgKF8uaW5jbHVkZXMoa25vd25QYWNrYWdlcywgdGhpcy5vcHRzLmFwcFBhY2thZ2UpKSB7XG4gICAgb3B0cy5jaHJvbWVCdW5kbGVJZCA9IHRoaXMub3B0cy5hcHBQYWNrYWdlO1xuICB9IGVsc2Uge1xuICAgIG9wdHMuY2hyb21lQW5kcm9pZEFjdGl2aXR5ID0gdGhpcy5vcHRzLmFwcEFjdGl2aXR5O1xuICB9XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gYXdhaXQgdGhpcy5zZXR1cE5ld0Nocm9tZWRyaXZlcihvcHRzLCB0aGlzLmFkYi5jdXJEZXZpY2VJZCwgdGhpcy5hZGIpO1xuICB0aGlzLmNocm9tZWRyaXZlci5vbihDaHJvbWVkcml2ZXIuRVZFTlRfQ0hBTkdFRCwgKG1zZykgPT4ge1xuICAgIGlmIChtc2cuc3RhdGUgPT09IENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKSB7XG4gICAgICB0aGlzLm9uQ2hyb21lZHJpdmVyU3RvcChDSFJPTUlVTV9XSU4pO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gTm93IHRoYXQgd2UgaGF2ZSBhIENocm9tZSBzZXNzaW9uLCB3ZSBlbnN1cmUgdGhhdCB0aGUgY29udGV4dCBpc1xuICAvLyBhcHByb3ByaWF0ZWx5IHNldCBhbmQgdGhhdCB0aGlzIGNocm9tZWRyaXZlciBpcyBhZGRlZCB0byB0aGUgbGlzdFxuICAvLyBvZiBzZXNzaW9uIGNocm9tZWRyaXZlcnMgc28gd2UgY2FuIHN3aXRjaCBiYWNrIGFuZCBmb3J0aFxuICB0aGlzLmN1ckNvbnRleHQgPSBDSFJPTUlVTV9XSU47XG4gIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbQ0hST01JVU1fV0lOXSA9IHRoaXMuY2hyb21lZHJpdmVyO1xuICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5jaHJvbWVkcml2ZXIucHJveHlSZXEuYmluZCh0aGlzLmNocm9tZWRyaXZlcik7XG4gIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eSk7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xuXG4gIGlmICh0aGlzLnNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lKCkpIHtcbiAgICAvLyBkaXNtaXNzIENocm9tZSB3ZWxjb21lIGRpYWxvZ1xuICAgIGF3YWl0IHRoaXMuZGlzbWlzc0Nocm9tZVdlbGNvbWUoKTtcbiAgfVxufTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogSW50ZXJuYWwgbGlicmFyeSBmdW5jdGlvbnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIgKGNocm9tZWRyaXZlcikge1xuICAvLyBjaGVjayB0aGUgc3RhdHVzIGJ5IHNlbmRpbmcgYSBzaW1wbGUgd2luZG93LWJhc2VkIGNvbW1hbmQgdG8gQ2hyb21lRHJpdmVyXG4gIC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yLCB3ZSB3YW50IHRvIHJlY3JlYXRlIHRoZSBDaHJvbWVEcml2ZXIgc2Vzc2lvblxuICBpZiAoIWF3YWl0IGNocm9tZWRyaXZlci5oYXNXb3JraW5nV2VidmlldygpKSB7XG4gICAgbG9nLmRlYnVnKCdDaHJvbWVEcml2ZXIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdy4gJyArXG4gICAgICAgICAgICAgICAgICdSZS1pbml0aWFsaXppbmcgdGhlIHNlc3Npb24uJyk7XG4gICAgYXdhaXQgY2hyb21lZHJpdmVyLnJlc3RhcnQoKTtcbiAgfVxuICByZXR1cm4gY2hyb21lZHJpdmVyO1xufVxuXG4vKipcbiAqIEZpbmQgYSBmcmVlIHBvcnQgdG8gaGF2ZSBDaHJvbWVkcml2ZXIgbGlzdGVuIG9uLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IFtwb3J0U3BlY10gLSBBcnJheSB3aGljaCBpcyBhIGxpc3Qgb2YgcG9ydHMuIEEgbGlzdCBpdGVtIG1heVxuICogYWxzbyBpdHNlbGYgYmUgYW4gYXJyYXkgb2YgbGVuZ3RoIDIgc3BlY2lmeWluZyBhIHN0YXJ0IGFuZCBlbmQgcG9ydCBvZlxuICogYSByYW5nZS4gU29tZSB2YWxpZCBwb3J0IHNwZWNzOlxuICogICAgLSBbODAwMCwgODAwMSwgODAwMl1cbiAqICAgIC0gW1s4MDAwLCA4MDA1XV1cbiAqICAgIC0gWzgwMDAsIFs5MDAwLCA5MTAwXV1cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgZnJlZSBwb3J0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENocm9tZWRyaXZlclBvcnQgKHBvcnRTcGVjKSB7XG4gIGNvbnN0IGdldFBvcnQgPSBCLnByb21pc2lmeShQb3J0RmluZGVyLmdldFBvcnQsIHtjb250ZXh0OiBQb3J0RmluZGVyfSk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgZGlkbid0IGdpdmUgdXMgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGNocm9tZWRyaXZlclxuICAvLyBwb3J0IHJhbmdlcywganVzdCBmaW5kIGFueSBmcmVlIHBvcnRcbiAgaWYgKCFwb3J0U3BlYykge1xuICAgIGNvbnN0IHBvcnQgPSBhd2FpdCBnZXRQb3J0KCk7XG4gICAgbG9nLmRlYnVnKGBBIHBvcnQgd2FzIG5vdCBnaXZlbiwgdXNpbmcgcmFuZG9tIGZyZWUgcG9ydDogJHtwb3J0fWApO1xuICAgIHJldHVybiBwb3J0O1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlIGZpbmQgdGhlIGZyZWUgcG9ydCBiYXNlZCBvbiBhIGxpc3Qgb3IgcmFuZ2UgcHJvdmlkZWQgYnkgdGhlIHVzZXJcbiAgbG9nLmRlYnVnKGBGaW5kaW5nIGEgZnJlZSBwb3J0IGZvciBjaHJvbWVkcml2ZXIgdXNpbmcgc3BlYyAke0pTT04uc3RyaW5naWZ5KHBvcnRTcGVjKX1gKTtcbiAgbGV0IGZvdW5kUG9ydCA9IG51bGw7XG4gIGZvciAoY29uc3QgcG90ZW50aWFsUG9ydCBvZiBwb3J0U3BlYykge1xuICAgIGxldCBwb3J0LCBzdG9wUG9ydDtcbiAgICBpZiAoXy5pc0FycmF5KHBvdGVudGlhbFBvcnQpKSB7XG4gICAgICAoW3BvcnQsIHN0b3BQb3J0XSA9IHBvdGVudGlhbFBvcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3J0ID0gcGFyc2VJbnQocG90ZW50aWFsUG9ydCwgMTApOyAvLyBlbnN1cmUgd2UgaGF2ZSBhIG51bWJlciBhbmQgbm90IGEgc3RyaW5nXG4gICAgICBzdG9wUG9ydCA9IHBvcnQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsb2cuZGVidWcoYENoZWNraW5nIHBvcnQgcmFuZ2UgJHtwb3J0fToke3N0b3BQb3J0fWApO1xuICAgICAgZm91bmRQb3J0ID0gYXdhaXQgZ2V0UG9ydCh7cG9ydCwgc3RvcFBvcnR9KTtcbiAgICAgIGJyZWFrO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgTm90aGluZyBpbiBwb3J0IHJhbmdlICR7cG9ydH06JHtzdG9wUG9ydH0gd2FzIGF2YWlsYWJsZWApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmb3VuZFBvcnQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgZnJlZSBwb3J0IGZvciBjaHJvbWVkcml2ZXIgdXNpbmcgYCArXG4gICAgICAgICAgICAgICAgICAgIGBjaHJvbWVkcml2ZXJQb3J0cyBzcGVjICR7SlNPTi5zdHJpbmdpZnkocG9ydFNwZWMpfWApO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBVc2luZyBmcmVlIHBvcnQgJHtmb3VuZFBvcnR9IGZvciBjaHJvbWVkcml2ZXJgKTtcbiAgcmV0dXJuIGZvdW5kUG9ydDtcbn1cblxuaGVscGVycy5pc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQgPSBmdW5jdGlvbiBpc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQgKCkge1xuICBpZiAodGhpcy5pc0ZlYXR1cmVFbmFibGVkKENIUk9NRURSSVZFUl9BVVRPRE9XTkxPQURfRkVBVFVSRSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsb2cuZGVidWcoYEF1dG9tYXRlZCBDaHJvbWVkcml2ZXIgZG93bmxvYWQgaXMgZGlzYWJsZWQuIGAgK1xuICAgIGBVc2UgJyR7Q0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFfScgc2VydmVyIGZlYXR1cmUgdG8gZW5hYmxlIGl0YCk7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmhlbHBlcnMuc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBhc3luYyBmdW5jdGlvbiBzZXR1cE5ld0Nocm9tZWRyaXZlciAob3B0cywgY3VyRGV2aWNlSWQsIGFkYiwgY29udGV4dCA9IG51bGwpIHtcbiAgaWYgKG9wdHMuY2hyb21lRHJpdmVyUG9ydCkge1xuICAgIGxvZy53YXJuKGBUaGUgJ2Nocm9tZURyaXZlclBvcnQnIGNhcGFiaWxpdHkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAnY2hyb21lZHJpdmVyUG9ydCcgaW5zdGVhZGApO1xuICAgIG9wdHMuY2hyb21lZHJpdmVyUG9ydCA9IG9wdHMuY2hyb21lRHJpdmVyUG9ydDtcbiAgfVxuXG4gIGlmIChvcHRzLmNocm9tZWRyaXZlclBvcnQpIHtcbiAgICBsb2cuZGVidWcoYFVzaW5nIHVzZXItc3BlY2lmaWVkIHBvcnQgJHtvcHRzLmNocm9tZWRyaXZlclBvcnR9IGZvciBjaHJvbWVkcml2ZXJgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBpZiBhIHNpbmdsZSBwb3J0IHdhc24ndCBnaXZlbiwgd2UnbGwgbG9vayBmb3IgYSBmcmVlIG9uZVxuICAgIG9wdHMuY2hyb21lZHJpdmVyUG9ydCA9IGF3YWl0IGdldENocm9tZWRyaXZlclBvcnQob3B0cy5jaHJvbWVkcml2ZXJQb3J0cyk7XG4gIH1cblxuICBjb25zdCBkZXRhaWxzID0gY29udGV4dCA/IHdlYnZpZXdIZWxwZXJzLmdldFdlYnZpZXdEZXRhaWxzKGFkYiwgY29udGV4dCkgOiB1bmRlZmluZWQ7XG4gIGlmICghXy5pc0VtcHR5KGRldGFpbHMpKSB7XG4gICAgbG9nLmRlYnVnKCdQYXNzaW5nIHdlYiB2aWV3IGRldGFpbHMgdG8gdGhlIENocm9tZWRyaXZlciBjb25zdHJ1Y3RvcjogJyArXG4gICAgICBKU09OLnN0cmluZ2lmeShkZXRhaWxzLCBudWxsLCAyKSk7XG4gIH1cblxuICBjb25zdCBjaHJvbWVkcml2ZXIgPSBuZXcgQ2hyb21lZHJpdmVyKHtcbiAgICBwb3J0OiBvcHRzLmNocm9tZWRyaXZlclBvcnQsXG4gICAgZXhlY3V0YWJsZTogb3B0cy5jaHJvbWVkcml2ZXJFeGVjdXRhYmxlLFxuICAgIGFkYixcbiAgICBjbWRBcmdzOiBvcHRzLmNocm9tZWRyaXZlckFyZ3MsXG4gICAgdmVyYm9zZTogISFvcHRzLnNob3dDaHJvbWVkcml2ZXJMb2csXG4gICAgZXhlY3V0YWJsZURpcjogb3B0cy5jaHJvbWVkcml2ZXJFeGVjdXRhYmxlRGlyLFxuICAgIG1hcHBpbmdQYXRoOiBvcHRzLmNocm9tZWRyaXZlckNocm9tZU1hcHBpbmdGaWxlLFxuICAgIGJ1bmRsZUlkOiBvcHRzLmNocm9tZUJ1bmRsZUlkLFxuICAgIHVzZVN5c3RlbUV4ZWN1dGFibGU6IG9wdHMuY2hyb21lZHJpdmVyVXNlU3lzdGVtRXhlY3V0YWJsZSxcbiAgICBkaXNhYmxlQnVpbGRDaGVjazogb3B0cy5jaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayxcbiAgICBkZXRhaWxzLFxuICAgIGlzQXV0b2Rvd25sb2FkRW5hYmxlZDogKHRoaXMgfHwge30pLmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZFxuICAgICAgPyB0aGlzLmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCgpIDogdW5kZWZpbmVkLFxuICB9KTtcblxuICAvLyBtYWtlIHN1cmUgdGhlcmUgYXJlIGNocm9tZU9wdGlvbnNcbiAgb3B0cy5jaHJvbWVPcHRpb25zID0gb3B0cy5jaHJvbWVPcHRpb25zIHx8IHt9O1xuICAvLyB0cnkgb3V0IGFueSBwcmVmaXhlZCBjaHJvbWVPcHRpb25zLFxuICAvLyBhbmQgc3RyaXAgdGhlIHByZWZpeFxuICBmb3IgKGNvbnN0IG9wdCBvZiBfLmtleXMob3B0cykpIHtcbiAgICBpZiAob3B0LmVuZHNXaXRoKCc6Y2hyb21lT3B0aW9ucycpKSB7XG4gICAgICBsb2cud2FybihgTWVyZ2luZyAnJHtvcHR9JyBpbnRvICdjaHJvbWVPcHRpb25zJy4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmApO1xuICAgICAgXy5tZXJnZShvcHRzLmNocm9tZU9wdGlvbnMsIG9wdHNbb3B0XSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2FwcyA9IHdlYnZpZXdIZWxwZXJzLmNyZWF0ZUNocm9tZWRyaXZlckNhcHMob3B0cywgY3VyRGV2aWNlSWQsIGRldGFpbHMpO1xuICBsb2cuZGVidWcoYEJlZm9yZSBzdGFydGluZyBjaHJvbWVkcml2ZXIsIGFuZHJvaWRQYWNrYWdlIGlzICcke2NhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUGFja2FnZX0nYCk7XG4gIGF3YWl0IGNocm9tZWRyaXZlci5zdGFydChjYXBzKTtcbiAgcmV0dXJuIGNocm9tZWRyaXZlcjtcbn07XG5jb25zdCBzZXR1cE5ld0Nocm9tZWRyaXZlciA9IGhlbHBlcnMuc2V0dXBOZXdDaHJvbWVkcml2ZXI7XG5cblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycywgc2V0dXBOZXdDaHJvbWVkcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.default = exports.helpers = exports.commands = void 0;
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.default = exports.helpers = void 0;
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.helpers = exports.default = exports.commands = void 0;
|
|
9
|
-
exports.parseSurfaceLine = parseSurfaceLine;
|
|
10
8
|
exports.parseWindows = parseWindows;
|
|
9
|
+
exports.parseSurfaceLine = parseSurfaceLine;
|
|
10
|
+
exports.default = exports.helpers = exports.commands = void 0;
|
|
11
11
|
|
|
12
12
|
require("source-map-support/register");
|
|
13
13
|
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.default = exports.helpers = exports.commands = void 0;
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.default = exports.helpers = exports.commands = void 0;
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.default = exports.helpers = exports.commands = void 0;
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|