appium-xcuitest-driver 4.3.7 → 4.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -5
- package/build/index.js +1 -1
- package/build/lib/app-utils.js +1 -1
- package/build/lib/build-wda.js +1 -1
- package/build/lib/cert-utils.js +1 -1
- package/build/lib/commands/activeAppInfo.js +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/app-management.js +27 -9
- package/build/lib/commands/appearance.js +1 -1
- package/build/lib/commands/battery.js +1 -1
- package/build/lib/commands/biometric.js +1 -1
- package/build/lib/commands/certificate.js +1 -1
- package/build/lib/commands/clipboard.js +1 -1
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/cookies.js +1 -1
- package/build/lib/commands/deviceInfo.js +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/file-movement.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/gesture.js +1 -1
- package/build/lib/commands/index.js +1 -1
- package/build/lib/commands/iohid.js +1 -1
- package/build/lib/commands/keychains.js +1 -1
- package/build/lib/commands/localization.js +1 -1
- package/build/lib/commands/location.js +1 -1
- package/build/lib/commands/lock.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/navigation.js +1 -1
- package/build/lib/commands/notifications.js +1 -1
- package/build/lib/commands/pasteboard.js +1 -1
- package/build/lib/commands/pcap.js +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/permissions.js +1 -1
- package/build/lib/commands/proxy-helper.js +1 -1
- package/build/lib/commands/record-audio.js +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/screenshots.js +1 -1
- package/build/lib/commands/source.js +1 -1
- package/build/lib/commands/timeouts.js +1 -1
- package/build/lib/commands/web.js +1 -1
- package/build/lib/commands/xctest.js +1 -1
- package/build/lib/cookies.js +1 -1
- package/build/lib/css-converter.js +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/device-connections-factory.js +1 -1
- package/build/lib/device-log/ios-crash-log.js +1 -1
- package/build/lib/device-log/ios-device-log.js +1 -1
- package/build/lib/device-log/ios-log.js +1 -1
- package/build/lib/device-log/ios-performance-log.js +1 -1
- package/build/lib/device-log/ios-simulator-log.js +1 -1
- package/build/lib/device-log/rotating-log.js +1 -1
- package/build/lib/device-log/safari-console-log.js +1 -1
- package/build/lib/device-log/safari-network-log.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/ios-deploy.js +1 -1
- package/build/lib/ios-fs-helpers.js +1 -1
- package/build/lib/ios-generic-simulators.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/py-ios-device-client.js +1 -9
- package/build/lib/real-device-management.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/simulator-management.js +1 -1
- package/build/lib/utils.js +1 -1
- package/lib/commands/app-management.js +24 -6
- package/lib/py-ios-device-client.js +0 -7
- package/npm-shrinkwrap.json +154 -238
- package/package.json +10 -9
|
@@ -29,4 +29,4 @@ var _default = extensions;
|
|
|
29
29
|
exports.default = _default;require('source-map-support').install();
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NsaXBib2FyZC5qcyIsIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJjb21tYW5kcyIsInNldENsaXBib2FyZCIsImNvbnRlbnQiLCJjb250ZW50VHlwZSIsInByb3h5Q29tbWFuZCIsImdldENsaXBib2FyZCIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jbGlwYm9hcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuXG4vKipcbiAqIFNldHMgdGhlIHByaW1hcnkgY2xpcGJvYXJkJ3MgY29udGVudCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuXG4gKlxuICogQHBhcmFtIHshc3RyaW5nfSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gYmUgc2V0IGFzIGJhc2U2NCBlbmNvZGVkIHN0cmluZy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gY29udGVudFR5cGUgW3BsYWludGV4dF0gLSBUaGUgdHlwZSBvZiB0aGUgY29udGVudCB0byBzZXQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBgcGxhaW50ZXh0YCwgJ2ltYWdlIGFuZCAndXJsJyBhcmUgc3VwcG9ydGVkLlxuICovXG5jb21tYW5kcy5zZXRDbGlwYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBzZXRDbGlwYm9hcmQgKGNvbnRlbnQsIGNvbnRlbnRUeXBlKSB7XG4gIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL3NldFBhc3RlYm9hcmQnLCAnUE9TVCcsIHtcbiAgICBjb250ZW50LFxuICAgIGNvbnRlbnRUeXBlLFxuICB9KTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgY29udGVudCBvZiB0aGUgcHJpbWFyeSBjbGlwYm9hcmQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gY29udGVudFR5cGUgW3BsYWludGV4dF0gLSBUaGUgdHlwZSBvZiB0aGUgY29udGVudCB0byBnZXQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBgcGxhaW50ZXh0YCwgJ2ltYWdlIGFuZCAndXJsJyBhcmUgc3VwcG9ydGVkLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGFjdHVhbCBjbGlwYm9hcmQgY29udGVudCBlbmNvZGVkIGludG8gYmFzZTY0IHN0cmluZy5cbiAqIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgY2xpcGJvYXJkIGNvbnRhaW5zIG5vIGRhdGEuXG4gKi9cbmNvbW1hbmRzLmdldENsaXBib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGdldENsaXBib2FyZCAoY29udGVudFR5cGUpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2dldFBhc3RlYm9hcmQnLCAnUE9TVCcsIHtcbiAgICBjb250ZW50VHlwZSxcbiAgfSk7XG59O1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMpO1xuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxRQUFRLEdBQUcsRUFBaEM7OztBQVVBQSxRQUFRLENBQUNDLFlBQVQsR0FBd0IsZUFBZUEsWUFBZixDQUE2QkMsT0FBN0IsRUFBc0NDLFdBQXRDLEVBQW1EO0VBQ3pFLE1BQU0sS0FBS0MsWUFBTCxDQUFrQixvQkFBbEIsRUFBd0MsTUFBeEMsRUFBZ0Q7SUFDcERGLE9BRG9EO0lBRXBEQztFQUZvRCxDQUFoRCxDQUFOO0FBSUQsQ0FMRDs7QUFlQUgsUUFBUSxDQUFDSyxZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkJGLFdBQTdCLEVBQTBDO0VBQ2hFLE9BQU8sTUFBTSxLQUFLQyxZQUFMLENBQWtCLG9CQUFsQixFQUF3QyxNQUF4QyxFQUFnRDtJQUMzREQ7RUFEMkQsQ0FBaEQsQ0FBYjtBQUdELENBSkQ7O0FBT0FHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjUixVQUFkLEVBQTBCQyxRQUExQjtlQUVlRCxVIn0=
|
|
@@ -639,4 +639,4 @@ var _default = commands;
|
|
|
639
639
|
exports.default = _default;require('source-map-support').install();
|
|
640
640
|
|
|
641
641
|
|
|
642
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jb250ZXh0LmpzIl0sIm5hbWVzIjpbIk5BVElWRV9XSU4iLCJXRUJWSUVXX1dJTiIsIldFQlZJRVdfQkFTRSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJnZXRDdXJyZW50Q29udGV4dCIsImN1ckNvbnRleHQiLCJnZXRDb250ZXh0c0FuZFZpZXdzIiwidXNlVXJsIiwibG9nIiwiZGVidWciLCJ3ZWJ2aWV3cyIsImxpc3RXZWJGcmFtZXMiLCJjdHhzIiwiaWQiLCJ2aWV3IiwiY29udGV4dHMiLCJwdXNoIiwidG9TdHJpbmciLCJ1c2VOZXdTYWZhcmkiLCJwYXJzZUZsb2F0IiwiaW9zU2RrVmVyc2lvbiIsIm9wdHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1JlYWxEZXZpY2UiLCJzYWZhcmkiLCJ0eXBlQW5kTmF2VG9VcmwiLCJhZGRyZXNzIiwic2V0Q3VycmVudFVybCIsImNhcHMiLCJzYWZhcmlJbml0aWFsVXJsIiwicG9ydCIsInRyaWVzIiwiTUFYX1RSSUVTIiwibmF2aWdhdGUiLCJvbGRJbXBXYWl0IiwiaW1wbGljaXRXYWl0TXMiLCJlbCIsImZpbmRFbGVtZW50IiwibmF0aXZlVGFwIiwiRUxFTUVOVCIsImVyciIsIl8iLCJpbmNsdWRlcyIsIm1lc3NhZ2UiLCJuZXdQYWdlQnV0dG9uIiwic2V0VmFsdWVJbW1lZGlhdGUiLCJnZXRDdXJyZW50VXJsIiwiZXJyb3IiLCJuYXZUb1ZpZXdXaXRoVGl0bGUiLCJ1bmRlZmluZWQiLCJSZWdFeHAiLCJyZW1vdGUiLCJwYWdlVW5sb2FkIiwibmF2VG9WaWV3VGhyb3VnaEZhdm9yaXRlcyIsIm1zZyIsInRpdGxlUmVnZXgiLCJ1cmxSZWdFeHAiLCJzdGFydCIsIkRhdGUiLCJub3ciLCJzcGluVGltZSIsInNwaW5IYW5kbGVzIiwicmVzIiwiZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSIsIkVycm9yIiwic3RhY2siLCJsYXRlc3RXaW5kb3ciLCJzZXRDb250ZXh0IiwiY2FuY2VsUGFnZUxvYWQiLCJ3YXJuIiwiQiIsImRlbGF5IiwiZWxlbWVudCIsImZpbmRVSUVsZW1lbnRPckVsZW1lbnRzIiwic3RvcFJlbW90ZSIsImNsb3NlV2luZG93QmVmb3JlRGlzY29ubmVjdGluZyIsImVycm9yQW5kVGhyb3ciLCJjbG9zZVdpbmRvdyIsImRpc2Nvbm5lY3QiLCJjdXJXZWJGcmFtZXMiLCJjdXJXZWJDb29yZHMiLCJ1cmwiLCJfY3VycmVudFVybCIsImNsb3NlQWxlcnRCZWZvcmVUZXN0IiwibmF2VG9Jbml0aWFsV2VidmlldyIsInJlZ0V4cCIsImN1cnJlbnRVcmwiLCJmaWx0ZXIiLCJjdHgiLCJ0aXRsZSIsInRlc3QiLCJpc1dlYkNvbnRleHQiLCJpc1dlYnZpZXciLCJnZXROZXdSZW1vdGVEZWJ1Z2dlciIsInNvY2tldFBhdGgiLCJkZXZpY2UiLCJnZXRXZWJJbnNwZWN0b3JTb2NrZXQiLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJhZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyIsImlzU2FmYXJpIiwiaW5jbHVkZVNhZmFyaSIsImluY2x1ZGVTYWZhcmlJbldlYnZpZXdzIiwicGFnZUxvYWRNcyIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsInV0aWwiLCJoYXNWYWx1ZSIsInNhZmFyaUdhcmJhZ2VDb2xsZWN0IiwidWRpZCIsImxvZ0FsbENvbW11bmljYXRpb24iLCJzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uIiwibG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsInNvY2tldENodW5rU2l6ZSIsInNhZmFyaVNvY2tldENodW5rU2l6ZSIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJuYW1lIiwiY2FsbGJhY2siLCJza2lwUmVhZHlDaGVjayIsImFscmVhZHlJbkNvbnRleHQiLCJkZXNpcmVkIiwiY3VycmVudCIsImlzTmF0aXZlQ29udGV4dCIsImNvbnRleHQiLCJyZXBsYWNlIiwiaXNVbmRlZmluZWQiLCJnZXRDb250ZXh0cyIsImNvbnRleHRJZCIsImVycm9ycyIsIk5vU3VjaENvbnRleHRFcnJvciIsIm9sZENvbnRleHQiLCJjdXJXaW5kb3dIYW5kbGUiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsIm1hcCIsInNwbGl0IiwicGFyc2VJbnQiLCJzZWxlY3RpbmdOZXdQYWdlIiwic2VsZWN0UGFnZSIsImVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyIsImxvZ3MiLCJwZXJmb3JtYW5jZSIsIklPU1BlcmZvcm1hbmNlTG9nIiwic3RhcnRDYXB0dXJlIiwic2FmYXJpQ29uc29sZSIsInN0YXJ0Q29uc29sZSIsImFkZExvZ0xpbmUiLCJiaW5kIiwic2FmYXJpTmV0d29yayIsInN0YXJ0TmV0d29yayIsImNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyIiwib24iLCJSZW1vdGVEZWJ1Z2dlciIsIkVWRU5UX1BBR0VfQ0hBTkdFIiwib25QYWdlQ2hhbmdlIiwiRVZFTlRfRlJBTUVTX0RFVEFDSEVEIiwiaXNFbXB0eSIsInBsdXJhbGl6ZSIsImxlbmd0aCIsImpvaW4iLCJjb25uZWN0Iiwid2Vidmlld0Nvbm5lY3RUaW1lb3V0IiwicGFnZUFycmF5IiwiZ2V0V2Vidmlld1BhZ2VzIiwic2VsZWN0QXBwIiwid2Vidmlld0Nvbm5lY3RSZXRyaWVzIiwiaWdub3JlQWJvdXRCbGFua1VybCIsInNldENvbm5lY3Rpb25LZXkiLCJhbGVydEVycm9yTXNnIiwibWFwRm4iLCJmdWxsQ29udGV4dExpc3QiLCJtb2JpbGVHZXRDb250ZXh0cyIsIndhaXRGb3JXZWJ2aWV3TXMiLCJpc051bWJlciIsImlzTmFOIiwiY3VyT3B0IiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwic2V0V2luZG93Iiwibm9vcCIsIk5vU3VjaFdpbmRvd0Vycm9yIiwiZ2V0V2luZG93SGFuZGxlIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImdldFdpbmRvd0hhbmRsZXMiLCJwYWdlQ2hhbmdlTm90aWZpY2F0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzQ29ubmVjdGVkIiwibmV3SWRzIiwibmV3UGFnZXMiLCJrZXlJZCIsImlzVXJsSWdub3JlZCIsInNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcyIsImlnbm9yZWRIb3N0cyIsImIiLCJ0cmltIiwiaWdub3JlZEhvc3QiLCJob3N0bmFtZSIsIlVSTCIsImlnbiIsInBhZ2UiLCJpc0tleSIsImluZm8iLCJjdXJBcHBJZEtleSIsImN1clBhZ2VJZEtleSIsIm5ld1BhZ2UiLCJsYXN0IiwibmVlZHNQYWdlTG9hZCIsImNvbnRleHRBcnJheSIsImlzRXF1YWwiLCJmaW5kIiwicGFnZUxvYWQiLCJjdXJyZW50UGFnZUlkIiwicCIsImNhdGNoIiwid2luZG93SGFuZGxlQ2FjaGUiLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLFlBQW5CO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFNBQXBCO0FBQ0EsTUFBTUMsWUFBWSxHQUFJLEdBQUVELFdBQVksR0FBcEM7QUFFQSxNQUFNRSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7QUFHQUYsUUFBUSxDQUFDRyxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixHQUFvQztBQUMvRCxNQUFJLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxLQUFvQlAsVUFBM0MsRUFBdUQ7QUFDckQsV0FBUSxHQUFFRSxZQUFhLEdBQUUsS0FBS0ssVUFBVyxFQUF6QztBQUNEOztBQUNELFNBQU9QLFVBQVA7QUFDRCxDQUxEOztBQU9BSyxVQUFVLENBQUNHLG1CQUFYLEdB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O0FBQ0Q7QUFDRjs7QUFFRCxNQUFJeUIsY0FBS0MsUUFBTCxDQUFjd0csT0FBZCxDQUFKLEVBQTRCO0FBQzFCLFNBQUt4RSxnQkFBTCxHQUF3QixJQUF4QjtBQUNBLFVBQU1QLFVBQVUsR0FBRyxLQUFLL0gsVUFBeEI7QUFDQSxTQUFLQSxVQUFMLEdBQW1CLEdBQUVpSSxRQUFTLElBQUc2RSxPQUFRLEVBQXpDO0FBR0EsU0FBS2hLLE1BQUwsQ0FBWXlGLFVBQVosQ0FBdUJOLFFBQXZCLEVBQWlDSSxRQUFRLENBQUN5RSxPQUFELEVBQVUsRUFBVixDQUF6QyxFQUF3RFMsS0FBeEQsQ0FBK0RwTCxHQUFELElBQVM7QUFDckUsV0FBS2hDLEdBQUwsQ0FBUzZELElBQVQsQ0FBZSwwQkFBeUI3QixHQUFHLENBQUNHLE9BQVEsRUFBcEQ7QUFDQSxXQUFLdEMsVUFBTCxHQUFrQitILFVBQWxCO0FBQ0QsS0FIRDtBQUlBLFNBQUtPLGdCQUFMLEdBQXdCLEtBQXhCO0FBQ0Q7O0FBQ0QsT0FBS2tGLGlCQUFMLEdBQXlCekQsU0FBekI7QUFDRCxDQTdJRDs7QUFnSkEwRCxNQUFNLENBQUNDLE1BQVAsQ0FBYzlOLFFBQWQsRUFBd0JFLFVBQXhCLEVBQW9DRCxPQUFwQztlQUNlRCxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVtb3RlRGVidWdnZXIsIFJlbW90ZURlYnVnZ2VyIH0gZnJvbSAnYXBwaXVtLXJlbW90ZS1kZWJ1Z2dlcic7XG5pbXBvcnQgeyBlcnJvcnMsIGlzRXJyb3JUeXBlIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IElPU1BlcmZvcm1hbmNlTG9nIGZyb20gJy4uL2RldmljZS1sb2cvaW9zLXBlcmZvcm1hbmNlLWxvZyc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgTkFUSVZFX1dJTiA9ICdOQVRJVkVfQVBQJztcbmNvbnN0IFdFQlZJRVdfV0lOID0gJ1dFQlZJRVcnO1xuY29uc3QgV0VCVklFV19CQVNFID0gYCR7V0VCVklFV19XSU59X2A7XG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5cbmNvbW1hbmRzLmdldEN1cnJlbnRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudENvbnRleHQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgaWYgKHRoaXMuY3VyQ29udGV4dCAmJiB0aGlzLmN1ckNvbnRleHQgIT09IE5BVElWRV9XSU4pIHtcbiAgICByZXR1cm4gYCR7V0VCVklFV19CQVNFfSR7dGhpcy5jdXJDb250ZXh0fWA7XG4gIH1cbiAgcmV0dXJuIE5BVElWRV9XSU47XG59O1xuXG5leHRlbnNpb25zLmdldENvbnRleHRzQW5kVmlld3MgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0c0FuZFZpZXdzICh1c2VVcmwgPSB0cnVlKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGNvbnRleHRzIGFuZCB2aWV3cycpO1xuICBsZXQgd2Vidmlld3MgPSBhd2FpdCB0aGlzLmxpc3RXZWJGcmFtZXModXNlVXJsKTtcblxuICBsZXQgY3R4cyA9IFt7aWQ6IE5BVElWRV9XSU4sIHZpZXc6IHt9fV07XG4gIHRoaXMuY29udGV4dHMgPSBbTkFUSVZFX1dJTl07XG4gIGZvciAobGV0IHZpZXcgb2Ygd2Vidmlld3MpIHtcbiAgICBjdHhzLnB1c2goe2lkOiBgJHtXRUJWSUVXX0JBU0V9JHt2aWV3LmlkfWAsIHZpZXd9KTtcbiAgICB0aGlzLmNvbnRleHRzLnB1c2godmlldy5pZC50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gY3R4cztcbn07XG5cbi8vIFJpZ2h0IG5vdyB3ZSBkb24ndCBuZWNlc3NhcmlseSB3YWl0IGZvciB3ZWJ2aWV3XG4vLyBhbmQgZnJhbWUgdG8gbG9hZCwgd2hpY2ggbGVhZHMgdG8gcmFjZSBjb25kaXRpb25zIGFuZCBmbGFraW5lc3MsXG4vLyBsZXQncyBzZWUgaWYgd2UgY2FuIHRyYW5zaXRpb24gdG8gc29tZXRoaW5nIGJldHRlclxuZXh0ZW5zaW9ucy51c2VOZXdTYWZhcmkgPSBmdW5jdGlvbiB1c2VOZXdTYWZhcmkgKCkge1xuICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLmlvc1Nka1ZlcnNpb24pID49IDguMSAmJlxuICAgIHBhcnNlRmxvYXQodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbikgPj0gOC4xICYmXG4gICAgIXRoaXMuaXNSZWFsRGV2aWNlKCkgJiZcbiAgICB0aGlzLm9wdHMuc2FmYXJpO1xufTtcblxuZXh0ZW5zaW9ucy50eXBlQW5kTmF2VG9VcmwgPSBhc3luYyBmdW5jdGlvbiB0eXBlQW5kTmF2VG9VcmwgKCkge1xuICBsZXQgYWRkcmVzcyA9IHRoaXMub3B0cy5hZGRyZXNzID8gdGhpcy5vcHRzLmFkZHJlc3MgOiAnMTI3LjAuMC4xJztcbiAgdGhpcy5zZXRDdXJyZW50VXJsKHRoaXMuY2Fwcy5zYWZhcmlJbml0aWFsVXJsIHx8IGBodHRwOi8vJHthZGRyZXNzfToke3RoaXMub3B0cy5wb3J0fS93ZWxjb21lYCk7XG5cbiAgbGV0IHRyaWVzID0gMDtcbiAgY29uc3QgTUFYX1RSSUVTID0gMjtcbiAgbGV0IG5hdmlnYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgIGxldCBvbGRJbXBXYWl0ID0gdGhpcy5pbXBsaWNpdFdhaXRNcztcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gNzAwMDtcblxuICAgIC8vIGZpbmQgdGhlIHVybCBiYXIsIGFuZCB0YXAgb24gaXQuIHJldHJ5IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB0cnlcbiAgICAvLyB0b28gc29vbiB3aGlsZSB0aGUgdmlldyBpcyBzdGlsbCBsb2FkaW5nXG4gICAgbGV0IGVsID0gYXdhaXQgcmV0cnlJbnRlcnZhbCgzLCAxMDAwLCBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCdhY2Nlc3NpYmlsaXR5IGlkJywgJ1VSTCcpKTtcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gb2xkSW1wV2FpdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbC5FTEVNRU5UKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChfLmluY2x1ZGVzKGVyci5tZXNzYWdlLCAnY291bGQgbm90IGJlIHRhcHBlZCcpKSB7XG4gICAgICAgIGlmICh0cmllcysrID49IE1BWF9UUklFUykgdGhyb3cgZXJyOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAgICAgLy8gZ2VuZXJhbGx5IHRoaXMgbWVhbnMgdGhhdCBTYWZhcmkgaXMgaW4gcGFnZSB2aWV3aW5nIG1vZGVcbiAgICAgICAgLy8gc28gdHJ5IHRvIG9wZW4gYSBuZXcgcGFnZSBhbmQgdGhlbiByZWRvIHRoZSBuYXZpZ2F0aW9uXG4gICAgICAgIGxldCBuZXdQYWdlQnV0dG9uID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgneHBhdGgnLCBcIi8vWENVSUVsZW1lbnRUeXBlQnV0dG9uW2NvbnRhaW5zKEBuYW1lLCdOZXcgcGFnZScpXVwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAobmV3UGFnZUJ1dHRvbi5FTEVNRU5UKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBsYXN0IGFkZHJlc3MgZWxlbWVudCBhbmQgc2V0IHRoZSB1cmxcbiAgICB0cnkge1xuICAgICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUZXh0RmllbGQnKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VmFsdWVJbW1lZGlhdGUodGhpcy5nZXRDdXJyZW50VXJsKCksIGVsKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHRoaXMgaXMgZmxha2V5IG9uIGNlcnRhaW4gc3lzdGVtcyBzbyB3ZSByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nXG4gICAgICAvLyBpb3Mgc2ltczogc2FmYXJpIG9wZW5zIGJ1dCB0aGUgdGV4dCBmaWVsZCBjYW4ndCBiZSBmb3VuZFxuICAgICAgaWYgKHRyaWVzKysgPj0gTUFYX1RSSUVTKSB0aHJvdyBlcnI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgIHJldHVybiBhd2FpdCBuYXZpZ2F0ZSgpO1xuICAgIH1cblxuICAgIC8vIG1ha2UgaXQgaGFwcGVuXG4gICAgdHJ5IHtcbiAgICAgIGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgnYWNjZXNzaWJpbGl0eSBpZCcsICdHbycpO1xuICAgICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAoZWwuRUxFTUVOVCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoXy5pbmNsdWRlcyhlcnIubWVzc2FnZSwgJ2NvdWxkIG5vdCBiZSB0YXBwZWQnKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignVW5hYmxlIHRvIHN1Ym1pdCBVUkwgYmVjYXVzZSBcXCdHb1xcJyBidXR0b24gY291bGQgbm90IGJlIHRhcHBlZC4gJyArXG4gICAgICAgICAgJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciBrZXlib2FyZCBpcyB0b2dnbGVkIG9uLicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSh1bmRlZmluZWQsIG5ldyBSZWdFeHAodGhpcy5nZXRDdXJyZW50VXJsKCksICdpJykpO1xuXG4gICAgLy8gd2FpdCBmb3IgcGFnZSB0byBmaW5pc2ggbG9hZGluZy5cbiAgICBhd2FpdCB0aGlzLnJlbW90ZS5wYWdlVW5sb2FkKCk7XG4gIH07XG4gIGF3YWl0IG5hdmlnYXRlKCk7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMgPSBhc3luYyBmdW5jdGlvbiBuYXZUb1ZpZXdUaHJvdWdoRmF2b3JpdGVzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1dlIGFyZSBvbiBpT1M3KyBzaW11bGF0b3I6IGNsaWNraW5nIGFwcGxlIGJ1dHRvbiB0byBnZXQgaW50byBhIHdlYnZpZXcnKTtcbiAgbGV0IG9sZEltcFdhaXQgPSB0aGlzLmltcGxpY2l0V2FpdE1zO1xuICB0aGlzLmltcGxpY2l0V2FpdE1zID0gNzAwMDsgLy8gd2FpdCA3cyBmb3IgYXBwbGUgYnV0dG9uIHRvIGV4aXN0XG5cbiAgbGV0IGVsO1xuICB0cnkge1xuICAgIGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgneHBhdGgnLCAnLy9YQ1VJRWxlbWVudFR5cGVTY3JvbGxWaWV3WzFdL1hDVUlFbGVtZW50VHlwZUJ1dHRvblsxXScpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsZXQgbXNnID0gJ0NvdWxkIG5vdCBmaW5kIGJ1dHRvbiB0byBjbGljayB0byBnZXQgaW50byB3ZWJ2aWV3LiAnICtcbiAgICAgICAgICAgICAgJ1Byb2NlZWRpbmcgb24gdGhlIGFzc3VtcHRpb24gd2UgaGF2ZSBhIHdvcmtpbmcgb25lLic7XG4gICAgdGhpcy5sb2cuZXJyb3IobXNnKTtcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gb2xkSW1wV2FpdDtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5uYXZUb1ZpZXdXaXRoVGl0bGUoLy4qL2kpO1xuICB9XG4gIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBvbGRJbXBXYWl0O1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMubmF0aXZlVGFwKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsZXQgbXNnID0gJ0NvdWxkIG5vdCBjbGljayBidXR0b24gdG8gZ2V0IGludG8gd2Vidmlldy4gJyArXG4gICAgICAgICAgICAgICdQcm9jZWVkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHdlIGhhdmUgYSB3b3JraW5nIG9uZS4nO1xuICAgIHRoaXMubG9nLmVycm9yKG1zZyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5uYXZUb1ZpZXdXaXRoVGl0bGUoL2FwcGxlL2kpO1xufTtcblxuZXh0ZW5zaW9ucy5uYXZUb1ZpZXdXaXRoVGl0bGUgPSBhc3luYyBmdW5jdGlvbiBuYXZUb1ZpZXdXaXRoVGl0bGUgKHRpdGxlUmVnZXgsIHVybFJlZ0V4cCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnTmF2aWdhdGluZyB0byBtb3N0IHJlY2VudGx5IG9wZW5lZCB3ZWJ2aWV3Jyk7XG4gIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gIGxldCBzcGluVGltZSA9IDUwMDtcbiAgbGV0IHNwaW5IYW5kbGVzID0gYXN5bmMgKCkgPT4ge1xuICAgIGxldCByZXM7XG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IGF3YWl0IHRoaXMuZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSh0aXRsZVJlZ2V4IHx8IHVybFJlZ0V4cCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb3VsZCBub3QgY29ubmVjdCB0byBhIHZhbGlkIGFwcCBhZnRlcicpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBDb3VsZCBub3QgbmF2aWdhdGUgdG8gd2VidmlldyEgRXJyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICBlcnJvci5zdGFjayArPSBgXFxuQ2F1c2VkIGJ5OiAke2Vyci5zdGFja31gO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdDb3VsZCBub3QgbmF2aWdhdGUgdG8gd2Vidmlldy4gUmV0cnlpbmcgaWYgcG9zc2libGUuJyk7XG4gICAgfVxuICAgIGlmIChyZXMpIHtcbiAgICAgIGxldCBsYXRlc3RXaW5kb3cgPSByZXM7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGlja2luZyB3ZWJ2aWV3ICcke2xhdGVzdFdpbmRvd30nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbnRleHQobGF0ZXN0V2luZG93KTtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLmNhbmNlbFBhZ2VMb2FkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gbm8gd2VidmlldyB3YXMgZm91bmRcbiAgICBpZiAoKERhdGUubm93KCkgLSBzdGFydCkgPj0gOTAwMDApIHtcbiAgICAgIC8vIHRvbyBzbG93LCBnZXQgb3V0XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBuYXZpZ2F0ZSB0byB3ZWJ2aWV3OyB0aGVyZSBhcmUgbm9uZSEnKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy53YXJuKCdDb3VsZCBub3QgZmluZCBhbnkgd2Vidmlld3MgeWV0LCByZWZyZXNoaW5nL3JldHJ5aW5nJyk7XG4gICAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkgfHwgIXRoaXMub3B0cy5zYWZhcmkpIHtcbiAgICAgIC8vIG9uIGEgcmVhbCBkZXZpY2UsIHdoZW4gbm90IHVzaW5nIFNhZmFyaSwgd2UganVzdCB3YW50IHRvIHRyeSBhZ2FpblxuICAgICAgYXdhaXQgQi5kZWxheShzcGluVGltZSk7XG4gICAgICByZXR1cm4gYXdhaXQgc3BpbkhhbmRsZXMoKTtcbiAgICB9XG5cbiAgICAvLyBmaW5kIHRoZSByZWxvYWQgYnV0dG9uIGFuZCB0YXAgaXQsIGlmIHBvc3NpYmxlXG4gICAgbGV0IGVsZW1lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdGaW5kaW5nIGFuZCB0YXBwaW5nIHJlbG9hZCBidXR0b24nKTtcbiAgICAgIGVsZW1lbnQgPSBhd2FpdCB0aGlzLmZpbmRVSUVsZW1lbnRPckVsZW1lbnRzKCdhY2Nlc3NpYmlsaXR5IGlkJywgJ1JlbG9hZEJ1dHRvbicsICcnLCBmYWxzZSk7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbGVtZW50LkVMRU1FTlQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgZmluZGluZyBhbmQgdGFwcGluZyByZWxvYWQgYnV0dG9uOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5sb2cud2FybignUmV0cnlpbmcuJyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KHNwaW5UaW1lKTtcbiAgICB9XG5cbiAgICAvLyB0cnkgaXQgYWxsIGFnYWluXG4gICAgcmV0dXJuIGF3YWl0IHNwaW5IYW5kbGVzKCk7XG4gIH07XG4gIGF3YWl0IHNwaW5IYW5kbGVzKCk7XG59O1xuXG5oZWxwZXJzLnN0b3BSZW1vdGUgPSBhc3luYyBmdW5jdGlvbiBzdG9wUmVtb3RlIChjbG9zZVdpbmRvd0JlZm9yZURpc2Nvbm5lY3RpbmcgPSBmYWxzZSkge1xuICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnVHJpZWQgdG8gbGVhdmUgYSB3ZWIgZnJhbWUgYnV0IHdlcmUgbm90IGluIG9uZScpO1xuICB9XG5cbiAgaWYgKGNsb3NlV2luZG93QmVmb3JlRGlzY29ubmVjdGluZykge1xuICAgIGF3YWl0IHRoaXMuY2xvc2VXaW5kb3coKTtcbiAgfVxuICBhd2FpdCB0aGlzLnJlbW90ZS5kaXNjb25uZWN0KCk7XG4gIHRoaXMuY3VyQ29udGV4dCA9IG51bGw7XG4gIHRoaXMuY3VyV2ViRnJhbWVzID0gW107XG4gIHRoaXMuY3VyV2ViQ29vcmRzID0gbnVsbDtcbiAgdGhpcy5yZW1vdGUgPSBudWxsO1xufTtcblxuaGVscGVycy5zZXRDdXJyZW50VXJsID0gZnVuY3Rpb24gc2V0Q3VycmVudFVybCAodXJsKSB7XG4gIHRoaXMuX2N1cnJlbnRVcmwgPSB1cmw7XG59O1xuXG5oZWxwZXJzLmdldEN1cnJlbnRVcmwgPSBmdW5jdGlvbiBnZXRDdXJyZW50VXJsICgpIHtcbiAgcmV0dXJuIHRoaXMuX2N1cnJlbnRVcmw7XG59O1xuXG5leHRlbnNpb25zLmNsb3NlQWxlcnRCZWZvcmVUZXN0ID0gYXN5bmMgZnVuY3Rpb24gY2xvc2VBbGVydEJlZm9yZVRlc3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvSW5pdGlhbFdlYnZpZXcgPSBhc3luYyBmdW5jdGlvbiBuYXZUb0luaXRpYWxXZWJ2aWV3ICgpIHtcbiAgaWYgKHRoaXMudXNlTmV3U2FmYXJpKCkpIHtcbiAgICBhd2FpdCB0aGlzLnR5cGVBbmROYXZUb1VybCgpO1xuICB9IGVsc2UgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpICYmIHRoaXMub3B0cy5zYWZhcmkpIHtcbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMoKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSgvLiovKTtcbiAgfVxufTtcblxuZXh0ZW5zaW9ucy5nZXRMYXRlc3RXZWJ2aWV3Q29udGV4dEZvclRpdGxlID0gYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSAocmVnRXhwKSB7XG4gIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLmdldEN1cnJlbnRVcmwoKTtcblxuICBjb25zdCBjb250ZXh0cyA9IF8uZmlsdGVyKGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cygpLCAndmlldycpO1xuXG4gIGlmIChjdXJyZW50VXJsKSB7XG4gICAgLy8gZmlyc3QgdHJ5IHRvIG1hdGNoIGJ5IGN1cnJlbnQgdXJsXG4gICAgZm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcbiAgICAgIGlmICgoY3R4LnZpZXcudXJsIHx8ICcnKSA9PT0gdGhpcy5nZXRDdXJyZW50VXJsKCkpIHtcbiAgICAgICAgcmV0dXJuIGN0eC5pZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3QsIHRyeSB0byBtYXRjaCBieSByZWd1bGFyIGV4cHJlc3Npb25cbiAgZm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcbiAgICBpZiAoKGN0eC52aWV3LnRpdGxlICYmIHJlZ0V4cC50ZXN0KGN0eC52aWV3LnRpdGxlKSkgfHwgKGN0eC52aWV3LnVybCAmJiByZWdFeHAudGVzdChjdHgudmlldy51cmwpKSkge1xuICAgICAgcmV0dXJuIGN0eC5pZDtcbiAgICB9XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuaXNXZWJDb250ZXh0ID0gZnVuY3Rpb24gaXNXZWJDb250ZXh0ICgpIHtcbiAgcmV0dXJuICEhdGhpcy5jdXJDb250ZXh0ICYmIHRoaXMuY3VyQ29udGV4dCAhPT0gTkFUSVZFX1dJTjtcbn07XG5cbmV4dGVuc2lvbnMuaXNXZWJ2aWV3ID0gZnVuY3Rpb24gaXNXZWJ2aWV3ICgpIHtcbiAgcmV0dXJuIHRoaXMuaXNXZWJDb250ZXh0KCk7XG59O1xuXG5leHRlbnNpb25zLmdldE5ld1JlbW90ZURlYnVnZ2VyID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV3UmVtb3RlRGVidWdnZXIgKCkge1xuICBsZXQgc29ja2V0UGF0aDtcbiAgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgc29ja2V0UGF0aCA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0V2ViSW5zcGVjdG9yU29ja2V0KCk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVJlbW90ZURlYnVnZ2VyKHtcbiAgICBidW5kbGVJZDogdGhpcy5vcHRzLmJ1bmRsZUlkLFxuICAgIGFkZGl0aW9uYWxCdW5kbGVJZHM6IHRoaXMub3B0cy5hZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyxcbiAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSgpLFxuICAgIGluY2x1ZGVTYWZhcmk6IHRoaXMub3B0cy5pbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyxcbiAgICB1c2VOZXdTYWZhcmk6IHRoaXMudXNlTmV3U2FmYXJpKCksXG4gICAgcGFnZUxvYWRNczogdGhpcy5wYWdlTG9hZE1zLFxuICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbixcbiAgICBzb2NrZXRQYXRoLFxuICAgIHJlbW90ZURlYnVnUHJveHk6IHRoaXMub3B0cy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgIGdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlOiB1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5zYWZhcmlHYXJiYWdlQ29sbGVjdClcbiAgICAgID8gISF0aGlzLm9wdHMuc2FmYXJpR2FyYmFnZUNvbGxlY3RcbiAgICAgIDogZmFsc2UsXG4gICAgdWRpZDogdGhpcy5vcHRzLnVkaWQsXG4gICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5vcHRzLnNhZmFyaUxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMub3B0cy5zYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICBzb2NrZXRDaHVua1NpemU6IHRoaXMub3B0cy5zYWZhcmlTb2NrZXRDaHVua1NpemUsXG4gICAgd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHRoaXMub3B0cy5zYWZhcmlXZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aFxuICB9LCB0aGlzLmlzUmVhbERldmljZSgpKTtcbn07XG5cbi8qKlxuICogU2V0IGNvbnRleHRcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiBjb250ZXh0IHRvIHNldC4gSXQgY291bGQgYmUgJ251bGwnIGFzIE5BVElWRV9XSU4uXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBUaGUgY2FsbGJhY2suIChJdCBpcyBub3QgY2FsbGVkIGluIHRoaXMgbWV0aG9kKVxuICogQHBhcmFtIHtib29sZWFufSBza2lwUmVhZHlDaGVjayAtIFdoZXRoZXIgaXQgd2FpdHMgZm9yIHRoZSBuZXcgY29udGV4dCBpcyByZWFkeVxuICovXG5jb21tYW5kcy5zZXRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0Q29udGV4dCAobmFtZSwgY2FsbGJhY2ssIHNraXBSZWFkeUNoZWNrKSB7XG4gIGZ1bmN0aW9uIGFscmVhZHlJbkNvbnRleHQgKGRlc2lyZWQsIGN1cnJlbnQpIHtcbiAgICByZXR1cm4gKGRlc2lyZWQgPT09IGN1cnJlbnQgfHxcbiAgICAgIChkZXNpcmVkID09PSBudWxsICYmIGN1cnJlbnQgPT09IE5BVElWRV9XSU4pIHx8XG4gICAgICAoZGVzaXJlZCA9PT0gTkFUSVZFX1dJTiAmJiBjdXJyZW50ID09PSBudWxsKSk7XG4gIH1cbiAgZnVuY3Rpb24gaXNOYXRpdmVDb250ZXh0IChjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNvbnRleHQgPT09IE5BVElWRV9XSU4gfHwgY29udGV4dCA9PT0gbnVsbDtcbiAgfVxuXG4gIC8vIGFsbG93IHRoZSBmdWxsIGNvbnRleHQgbGlzdCB0byBiZSBwYXNzZWQgaW5cbiAgaWYgKG5hbWUgJiYgbmFtZS5pZCkge1xuICAgIG5hbWUgPSBuYW1lLmlkO1xuICB9XG5cbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gc2V0IGNvbnRleHQgdG8gJyR7bmFtZSB8fCBOQVRJVkVfV0lOfScgZnJvbSAnJHt0aGlzLmN1ckNvbnRleHQgPyB0aGlzLmN1ckNvbnRleHQgOiBOQVRJVkVfV0lOfSdgKTtcblxuICBpZiAoYWxyZWFkeUluQ29udGV4dChuYW1lLCB0aGlzLmN1ckNvbnRleHQpIHx8IGFscmVhZHlJbkNvbnRleHQoXy5yZXBsYWNlKG5hbWUsIFdFQlZJRVdfQkFTRSwgJycpLCB0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgLy8gYWxyZWFkeSBpbiB0aGUgbmFtZWQgY29udGV4dCwgbm8gbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgIHRoaXMubG9nLmRlYnVnKGBBbHJlYWR5IGluICcke25hbWUgfHwgTkFUSVZFX1dJTn0nIGNvbnRleHQuIERvaW5nIG5vdGhpbmcuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc05hdGl2ZUNvbnRleHQobmFtZSkpIHtcbiAgICAvLyBzd2l0Y2hpbmcgaW50byB0aGUgbmF0aXZlIGNvbnRleHRcbiAgICB0aGlzLmN1ckNvbnRleHQgPSBudWxsO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHN3aXRjaGluZyBpbnRvIGEgd2VidmlldyBjb250ZXh0XG5cbiAgLy8gaWYgY29udGV4dHMgaGF2ZSBub3QgYWxyZWFkeSBiZWVuIHJldHJpZXZlZCwgZ2V0IHRoZW1cbiAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5jb250ZXh0cykpIHtcbiAgICBhd2FpdCB0aGlzLmdldENvbnRleHRzKCk7XG4gIH1cblxuICBsZXQgY29udGV4dElkID0gXy5yZXBsYWNlKG5hbWUsIFdFQlZJRVdfQkFTRSwgJycpO1xuICBpZiAoY29udGV4dElkID09PSAnJykge1xuICAgIC8vIGFsbG93IHVzZXIgdG8gcGFzcyBpbiBcIldFQlZJRVdcIiB3aXRob3V0IGFuIGluZGV4XG4gICAgLy8gdGhlIHNlY29uZCBjb250ZXh0IHdpbGwgYmUgdGhlIGZpcnN0IHdlYnZpZXcgYXNcbiAgICAvLyB0aGUgZmlyc3QgaXMgYWx3YXlzIE5BVElWRV9BUFBcbiAgICBjb250ZXh0SWQgPSB0aGlzLmNvbnRleHRzWzFdO1xuICB9XG4gIGlmICghXy5pbmNsdWRlcyh0aGlzLmNvbnRleHRzLCBjb250ZXh0SWQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGNvbnN0IG9sZENvbnRleHQgPSB0aGlzLmN1ckNvbnRleHQ7XG4gIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuY3VyV2luZG93SGFuZGxlID0gY29udGV4dElkO1xuXG4gIC8vIGBjb250ZXh0SWRgIHdpbGwgYmUgaW4gdGhlIGZvcm0gb2YgYGFwcElkLnBhZ2VJZGAgaW4gdGhpcyBjYXNlXG4gIGNvbnN0IFthcHBJZEtleSwgcGFnZUlkS2V5XSA9IF8ubWFwKGNvbnRleHRJZC5zcGxpdCgnLicpLCAoaWQpID0+IHBhcnNlSW50KGlkLCAxMCkpO1xuICB0cnkge1xuICAgIHRoaXMuc2VsZWN0aW5nTmV3UGFnZSA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5yZW1vdGUuc2VsZWN0UGFnZShhcHBJZEtleSwgcGFnZUlkS2V5LCBza2lwUmVhZHlDaGVjayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuY3VyV2luZG93SGFuZGxlID0gb2xkQ29udGV4dDtcbiAgICB0aHJvdyBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gZmFsc2U7XG4gIH1cblxuICAvLyBhdHRlbXB0IHRvIHN0YXJ0IHBlcmZvcm1hbmNlIGxvZ2dpbmcsIGlmIHJlcXVlc3RlZFxuICBpZiAodGhpcy5vcHRzLmVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyAmJiB0aGlzLnJlbW90ZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBTdGFydGluZyBwZXJmb3JtYW5jZSBsb2cgb24gJyR7dGhpcy5jdXJDb250ZXh0fSdgKTtcbiAgICB0aGlzLmxvZ3MucGVyZm9ybWFuY2UgPSBuZXcgSU9TUGVyZm9ybWFuY2VMb2codGhpcy5yZW1vdGUpO1xuICAgIGF3YWl0IHRoaXMubG9ncy5wZXJmb3JtYW5jZS5zdGFydENhcHR1cmUoKTtcbiAgfVxuXG4gIC8vIHN0YXJ0IHNhZmFyaSBsb2dnaW5nIGlmIHRoZSBsb2dzIGhhbmRsZXJzIGFyZSBhY3RpdmVcbiAgaWYgKG5hbWUgJiYgbmFtZSAhPT0gTkFUSVZFX1dJTiAmJiB0aGlzLmxvZ3MpIHtcbiAgICBpZiAodGhpcy5sb2dzLnNhZmFyaUNvbnNvbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLnN0YXJ0Q29uc29sZSh0aGlzLmxvZ3Muc2FmYXJpQ29uc29sZS5hZGRMb2dMaW5lLmJpbmQodGhpcy5sb2dzLnNhZmFyaUNvbnNvbGUpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9ncy5zYWZhcmlOZXR3b3JrKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbW90ZS5zdGFydE5ldHdvcmsodGhpcy5sb2dzLnNhZmFyaU5ldHdvcmsuYWRkTG9nTGluZS5iaW5kKHRoaXMubG9ncy5zYWZhcmlOZXR3b3JrKSk7XG4gICAgfVxuICB9XG59O1xuXG5leHRlbnNpb25zLmNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyID0gYXN5bmMgZnVuY3Rpb24gY29ubmVjdFRvUmVtb3RlRGVidWdnZXIgKCkge1xuICB0aGlzLnJlbW90ZSA9IGF3YWl0IHRoaXMuZ2V0TmV3UmVtb3RlRGVidWdnZXIoKTtcblxuICB0aGlzLnJlbW90ZS5vbihSZW1vdGVEZWJ1Z2dlci5FVkVOVF9QQUdFX0NIQU5HRSwgdGhpcy5vblBhZ2VDaGFuZ2UuYmluZCh0aGlzKSk7XG4gIHRoaXMucmVtb3RlLm9uKFJlbW90ZURlYnVnZ2VyLkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCwgKCkgPT4ge1xuICAgIGlmICghXy5pc0VtcHR5KHRoaXMuY3VyV2ViRnJhbWVzKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYENsZWFyaW5nICR7dXRpbC5wbHVyYWxpemUoJ2ZyYW1lJywgdGhpcy5jdXJXZWJGcmFtZXMubGVuZ3RoLCB0cnVlKX06ICR7dGhpcy5jdXJXZWJGcmFtZXMuam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgdGhpcy5jdXJXZWJGcmFtZXMgPSBbXTtcbiAgfSk7XG5cbiAgYXdhaXQgdGhpcy5yZW1vdGUuY29ubmVjdCh0aGlzLm9wdHMud2Vidmlld0Nvbm5lY3RUaW1lb3V0KTtcbn07XG5cbmV4dGVuc2lvbnMubGlzdFdlYkZyYW1lcyA9IGFzeW5jIGZ1bmN0aW9uIGxpc3RXZWJGcmFtZXMgKHVzZVVybCA9IHRydWUpIHtcbiAgdXNlVXJsID0gdXNlVXJsICYmICF0aGlzLmlzUmVhbERldmljZSgpICYmICEhdGhpcy5nZXRDdXJyZW50VXJsKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBTZWxlY3RpbmcgYnkgdXJsOiAke3VzZVVybH0gJHt1c2VVcmwgPyBgKGV4cGVjdGVkIHVybDogJyR7dGhpcy5nZXRDdXJyZW50VXJsKCl9JylgIDogJyd9YCk7XG5cbiAgY29uc3QgY3VycmVudFVybCA9IHVzZVVybCA/IHRoaXMuZ2V0Q3VycmVudFVybCgpIDogdW5kZWZpbmVkO1xuICBsZXQgcGFnZUFycmF5ID0gW107XG4gIGNvbnN0IGdldFdlYnZpZXdQYWdlcyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVtb3RlLnNlbGVjdEFwcChjdXJyZW50VXJsLCB0aGlzLm9wdHMud2Vidmlld0Nvbm5lY3RSZXRyaWVzLCB0aGlzLm9wdHMuaWdub3JlQWJvdXRCbGFua1VybCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gYXZhaWxhYmxlIHdlYiBwYWdlczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKHRoaXMucmVtb3RlICYmIHRoaXMucmVtb3RlLmFwcElkS2V5KSB7XG4gICAgLy8gYWxyZWFkeSBjb25uZWN0ZWRcbiAgICBwYWdlQXJyYXkgPSBhd2FpdCBnZXRXZWJ2aWV3UGFnZXMoKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyKCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVtb3RlLnNldENvbm5lY3Rpb25LZXkoKTtcblxuICAgIHBhZ2VBcnJheSA9IGF3YWl0IGdldFdlYnZpZXdQYWdlcygpO1xuXG4gICAgY29uc3QgYWxlcnRFcnJvck1zZyA9ICdDbG9zZSBhbGVydCBmYWlsZWQuIFJldHJ5Lic7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwoNiwgMTAwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuY2xvc2VBbGVydEJlZm9yZVRlc3QoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihhbGVydEVycm9yTXNnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiB0aGUgbG9vcCB0byBjbG9zZSBhbGVydHMgZmFpbGVkIHRvIGRpc21pc3MsIGlnbm9yZSxcbiAgICAgIC8vIG90aGVyd2lzZSBsb2cgYW5kIHRocm93IHRoZSBlcnJvclxuICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSBhbGVydEVycm9yTXNnKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocGFnZUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIHdlIGhhdmUgbm8gd2ViIGZyYW1lcywgYnV0IGNvbnRpbnVlIGFueXdheVxuICAgIHRoaXMubG9nLmRlYnVnKCdObyB3ZWIgZnJhbWVzIGZvdW5kLicpO1xuICB9XG4gIHJldHVybiBwYWdlQXJyYXk7XG59O1xuXG5jb21tYW5kcy5nZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ0dldHRpbmcgbGlzdCBvZiBhdmFpbGFibGUgY29udGV4dHMnKTtcbiAgY29uc3QgY29udGV4dHMgPSBhd2FpdCB0aGlzLmdldENvbnRleHRzQW5kVmlld3MoZmFsc2UpO1xuXG4gIGNvbnN0IG1hcEZuID0gdGhpcy5vcHRzLmZ1bGxDb250ZXh0TGlzdFxuICAgID8gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBjb250ZXh0LmlkLnRvU3RyaW5nKCksXG4gICAgICAgIHRpdGxlOiBjb250ZXh0LnZpZXcudGl0bGUsXG4gICAgICAgIHVybDogY29udGV4dC52aWV3LnVybCxcbiAgICAgICAgYnVuZGxlSWQ6IGNvbnRleHQudmlldy5idW5kbGVJZCxcbiAgICAgIH07XG4gICAgfVxuICAgIDogKGNvbnRleHQpID0+IGNvbnRleHQuaWQudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGNvbnRleHRzLm1hcChtYXBGbik7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENvbnRleHRcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29udGV4dC4gVGhlIG5hdGl2ZSBjb250ZXh0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSAnTkFUSVZFX0FQUCcgYW5kIHRoZSB3ZWJ2aWV3cyB3aWxsIGJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlZJRVdfeHh4J1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYnZpZXcgY29udGVudFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmwgLSBUaGUgdXJsIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2VidmlldyBjb250ZW50XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRleHRzIGF2YWlsYWJsZSwgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXJsIGFuZCB0aXRsZSBvZiBlYWNoXG4gKiB3ZWJ2aWV3XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggY2FuIGluY2x1ZGUgYHdhaXRGb3JXZWJ2aWV3TXNgIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIHBlcmlvZCB0byBwb2xsIGZvciBhdmFpbGFibGUgd2Vidmlld3NcbiAqIEByZXR1cm5zIHtBcnJheX0gTGlzdCBvZiBDb250ZXh0IG9iamVjdHNcbiAqL1xuZXh0ZW5zaW9ucy5tb2JpbGVHZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldENvbnRleHRzIChvcHRzID0ge30pIHtcbiAgbGV0IHtcbiAgICB3YWl0Rm9yV2Vidmlld01zID0gMCxcbiAgfSA9IG9wdHM7XG5cbiAgLy8gbWFrZSBzdXJlIGl0IGlzIGEgbnVtYmVyLCBzbyB0aGUgZHVyYXRpb24gY2hlY2sgd29ya3MgcHJvcGVybHlcbiAgaWYgKCFfLmlzTnVtYmVyKHdhaXRGb3JXZWJ2aWV3TXMpKSB7XG4gICAgd2FpdEZvcldlYnZpZXdNcyA9IHBhcnNlSW50KHdhaXRGb3JXZWJ2aWV3TXMsIDEwKTtcbiAgICBpZiAoaXNOYU4od2FpdEZvcldlYnZpZXdNcykpIHtcbiAgICAgIHdhaXRGb3JXZWJ2aWV3TXMgPSAwO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGN1ck9wdCA9IHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3Q7XG4gIHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3QgPSB0cnVlO1xuXG4gIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gIHRyeSB7XG4gICAgbGV0IGNvbnRleHRzO1xuICAgIGRvIHtcbiAgICAgIGNvbnRleHRzID0gYXdhaXQgdGhpcy5nZXRDb250ZXh0cygpO1xuXG4gICAgICBpZiAoY29udGV4dHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYEZvdW5kIHdlYnZpZXcgY29udGV4dCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgICAgICByZXR1cm4gY29udGV4dHM7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gd2Vidmlld3MgZm91bmQgaW4gJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXNgKTtcbiAgICB9IHdoaWxlICh0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzIDwgd2FpdEZvcldlYnZpZXdNcyk7XG4gICAgcmV0dXJuIGNvbnRleHRzO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIHJlc2V0IHRoZSBvcHRpb24gc28gdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0c1xuICAgIHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3QgPSBjdXJPcHQ7XG4gIH1cbn07XG5cbmNvbW1hbmRzLnNldFdpbmRvdyA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpbmRvdyAobmFtZSwgc2tpcFJlYWR5Q2hlY2spIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnNldENvbnRleHQobmFtZSwgXy5ub29wLCBza2lwUmVhZHlDaGVjayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHRyYW5zbGF0ZSB0aGUgZXJyb3IgaW4gdGVybXMgb2Ygd2luZG93c1xuICAgIHRocm93IGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vU3VjaENvbnRleHRFcnJvcilcbiAgICAgID8gbmV3IGVycm9ycy5Ob1N1Y2hXaW5kb3dFcnJvcigpXG4gICAgICA6IGVycjtcbiAgfVxufTtcblxuY29tbWFuZHMuZ2V0V2luZG93SGFuZGxlID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93SGFuZGxlICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKGBHZXR0aW5nIGN1cnJlbnQgd2luZG93IGhhbmRsZWApO1xuICByZXR1cm4gdGhpcy5jdXJDb250ZXh0O1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93SGFuZGxlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd0hhbmRsZXMgKCkge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuICB0aGlzLmxvZy5kZWJ1ZygnR2V0dGluZyBsaXN0IG9mIGF2YWlsYWJsZSB3aW5kb3cgaGFuZGxlcycpO1xuICBjb25zdCBjb250ZXh0cyA9IGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cyhmYWxzZSk7XG4gIHJldHVybiBjb250ZXh0c1xuICAgIC8vIGdldCByaWQgb2YgdGhlIG5hdGl2ZSBhcHAgY29udGV4dFxuICAgIC5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaWQgIT09IE5BVElWRV9XSU4pXG4gICAgLy8gZ2V0IHRoZSBgYXBwLmlkYCBmb3JtYXQgZXhwZWN0ZWRcbiAgICAubWFwKChjb250ZXh0KSA9PiBjb250ZXh0LnZpZXcuaWQudG9TdHJpbmcoKSk7XG59O1xuXG5leHRlbnNpb25zLm9uUGFnZUNoYW5nZSA9IGFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAocGFnZUNoYW5nZU5vdGlmaWNhdGlvbikge1xuICB0aGlzLmxvZy5kZWJ1ZyhgUmVtb3RlIGRlYnVnZ2VyIG5vdGlmaWVkIHVzIG9mIGEgbmV3IHBhZ2UgbGlzdGluZzogJHtKU09OLnN0cmluZ2lmeShwYWdlQ2hhbmdlTm90aWZpY2F0aW9uKX1gKTtcbiAgaWYgKHRoaXMuc2VsZWN0aW5nTmV3UGFnZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBzZWxlY3RpbmcgYSBwYWdlLCBpZ25vcmluZycpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXRoaXMucmVtb3RlIHx8ICF0aGlzLnJlbW90ZS5pc0Nvbm5lY3RlZCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBoYXZlIG5vdCB5ZXQgY29ubmVjdGVkLCBpZ25vcmluZycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHthcHBJZEtleSwgcGFnZUFycmF5fSA9IHBhZ2VDaGFuZ2VOb3RpZmljYXRpb247XG5cbiAgbGV0IG5ld0lkcyA9IFtdO1xuICBsZXQgbmV3UGFnZXMgPSBbXTtcbiAgbGV0IGtleUlkID0gbnVsbDtcblxuICAvLyBDaGVja3MgaWYgYSBVUkwgaXMgYmxhY2tsaXN0ZWQgaW4gdGhlICdzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMnIGNhcGFiaWxpdHlcbiAgZnVuY3Rpb24gaXNVcmxJZ25vcmVkICh1cmwsIHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcykge1xuICAgIGNvbnN0IGlnbm9yZWRIb3N0cyA9IChzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMgfHwgJycpXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcCgoYikgPT4gYi50cmltKCkpXG4gICAgICAuZmlsdGVyKChiKSA9PiAhXy5pc0VtcHR5KGIpKTtcbiAgICBmb3IgKGNvbnN0IGlnbm9yZWRIb3N0IG9mIGlnbm9yZWRIb3N0cykge1xuICAgICAgaWYgKGlnbm9yZWRIb3N0ID09PSAnYWJvdXQ6YmxhbmsnICYmIHVybCA9PT0gJ2Fib3V0OmJsYW5rJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgaG9zdG5hbWUgPSBuZXcgVVJMKHVybCkuaG9zdG5hbWU7XG4gICAgICAgICAgaWYgKGhvc3RuYW1lID09PSBpZ25vcmVkSG9zdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAvLyBkbyBub3RoaW5nIGlmIGludmFsaWQgVVJMXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBwYWdlIG9mIHBhZ2VBcnJheSkge1xuICAgIGNvbnN0IGlkID0gcGFnZS5pZC50b1N0cmluZygpO1xuICAgIG5ld0lkcy5wdXNoKGlkKTtcbiAgICBpZiAocGFnZS5pc0tleSkge1xuICAgICAga2V5SWQgPSBpZDtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dElkID0gYCR7YXBwSWRLZXl9LiR7aWR9YDtcblxuICAgIC8vIGFkZCBpZiB0aGlzIGlzIGEgbmV3IHBhZ2VcbiAgICBpZiAoIV8uaW5jbHVkZXModGhpcy5jb250ZXh0cywgY29udGV4dElkKSkge1xuICAgICAgaWYgKGlzVXJsSWdub3JlZChwYWdlLnVybCwgdGhpcy5vcHRzLnNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IHRyYWNraW5nICcke3BhZ2UudXJsfScgcGFnZSBiZWNhdXNlIGl0IGlzIGJsYWNrbGlzdGVkLiBgICtcbiAgICAgICAgICBgJ3NhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcyc9JHt0aGlzLm9wdHMuc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UGFnZXMucHVzaChpZCk7XG4gICAgICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0SWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICgha2V5SWQpIHtcbiAgICAvLyBpZiB0aGVyZSBpcyBubyBrZXkgaWQsIHB1bGwgdGhlIGZpcnN0IGlkIGZyb20gdGhlIHBhZ2UgYXJyYXkgYW5kIHVzZSB0aGF0XG4gICAgLy8gYXMgYSBzdGFuZCBpblxuICAgIHRoaXMubG9nLmRlYnVnKCdObyBrZXkgaWQgZm91bmQuIENob29zaW5nIGZpcnN0IGlkIGZyb20gcGFnZSBhcnJheScpO1xuICAgIGtleUlkID0gbmV3SWRzWzBdIHx8IG51bGw7XG4gIH1cblxuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5jdXJDb250ZXh0KSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBkbyBub3QgYXBwZWFyIHRvIGhhdmUgd2luZG93IHNldCB5ZXQsIGlnbm9yaW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2N1ckFwcElkS2V5LCBjdXJQYWdlSWRLZXldID0gdGhpcy5jdXJDb250ZXh0LnNwbGl0KCcuJyk7XG5cbiAgaWYgKGN1ckFwcElkS2V5ICE9PSBhcHBJZEtleSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdQYWdlIGNoYW5nZSBub3QgcmVmZXJyaW5nIHRvIGN1cnJlbnRseSBzZWxlY3RlZCBhcHAsIGlnbm9yaW5nLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBuZXdQYWdlID0gbnVsbDtcbiAgaWYgKG5ld1BhZ2VzLmxlbmd0aCkge1xuICAgIG5ld1BhZ2UgPSBfLmxhc3QobmV3UGFnZXMpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBXZSBoYXZlIG5ldyBwYWdlcywgc2VsZWN0aW5nIHBhZ2UgJyR7bmV3UGFnZX0nYCk7XG4gIH0gZWxzZSBpZiAoIV8uaW5jbHVkZXMobmV3SWRzLCBjdXJQYWdlSWRLZXkpKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ05ldyBwYWdlIGxpc3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXIgZG9lcyBub3QgY29udGFpbiAnICtcbiAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgd2luZG93OyBhc3N1bWluZyBpdCBpcyBjbG9zZWQnKTtcbiAgICBpZiAoIXV0aWwuaGFzVmFsdWUoa2V5SWQpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcignRG8gbm90IGhhdmUgb3VyIGN1cnJlbnQgd2luZG93IGFueW1vcmUsIGFuZCB0aGVyZSAnICtcbiAgICAgICAgICAgICAgICAgICAnYXJlIG5vdCBhbnkgbW9yZSB0byBsb2FkISBEb2luZyBub3RoaW5nLi4uJyk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRVcmwodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgRGVidWdnZXIgYWxyZWFkeSBzZWxlY3RlZCBwYWdlICcke2tleUlkfScsIGAgK1xuICAgICAgICAgICAgICAgICBgY29uZmlybWluZyB0aGF0IGNob2ljZS5gKTtcbiAgICB0aGlzLmN1ckNvbnRleHQgPSBgJHthcHBJZEtleX0uJHtrZXlJZH1gO1xuICAgIG5ld1BhZ2UgPSBrZXlJZDtcbiAgfSBlbHNlIHtcbiAgICAvLyBhdCB0aGlzIHBvaW50LCB0aGVyZSBhcmUgbm8gbmV3IHBhZ2VzLCBhbmQgdGhlIGN1cnJlbnQgcGFnZSBzdGlsbCBleGlzdHNcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgaWYgcGFnZSBuZWVkcyB0byBsb2FkJyk7XG4gICAgLy8gSWYgYSB3aW5kb3cgbmF2aWdhdGVzIHRvIGFuIGFuY2hvciBpdCBkb2Vzbid0IGFsd2F5cyBmaXJlIGEgcGFnZVxuICAgIC8vIGNhbGxiYWNrIGV2ZW50LiBMZXQncyBjaGVjayBpZiB3ZSB3b3VuZCB1cCBpbiBzdWNoIGEgc2l0dWF0aW9uLlxuICAgIGNvbnN0IG5lZWRzUGFnZUxvYWQgPSAoKCkgPT4ge1xuICAgICAgLy8gbmVlZCB0byBtYXAgdGhlIHBhZ2UgaWRzIHRvIGNvbnRleHQgaWRzXG4gICAgICBjb25zdCBjb250ZXh0QXJyYXkgPSBfLm1hcChwYWdlQXJyYXksIChwYWdlKSA9PiBgJHthcHBJZEtleX0uJHtwYWdlLmlkfWApO1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgY29udGV4dCBleGlzdHMgaW4gYm90aCBvdXIgcmVjb3JkZWQgY29udGV4dHMsXG4gICAgICAvLyBhbmQgdGhlIHBhZ2UgYXJyYXlcbiAgICAgIHJldHVybiAhXy5pc0VxdWFsKF8uZmluZCh0aGlzLmNvbnRleHRzLCB0aGlzLmN1ckNvbnRleHQpLCBfLmZpbmQoY29udGV4dEFycmF5LCB0aGlzLmN1ckNvbnRleHQpKTtcbiAgICB9KSgpO1xuXG4gICAgaWYgKG5lZWRzUGFnZUxvYWQpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdQYWdlIGxvYWQgbmVlZGVkLiBMb2FkaW5nLi4uJyk7XG4gICAgICBhd2FpdCB0aGlzLnJlbW90ZS5wYWdlTG9hZCgpO1xuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKCdOZXcgcGFnZSBsaXN0aW5nIGlzIHNhbWUgYXMgb2xkLCBkb2luZyBub3RoaW5nJyk7XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcGFnZSBsaXN0aW5nIGlzbid0IGluZGljYXRpbmcgYSByZWRpcmVjdFxuICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgbGV0IGN1cnJlbnRQYWdlSWQgPSBwYXJzZUludChfLmxhc3QodGhpcy5jdXJDb250ZXh0LnNwbGl0KCcuJykpLCAxMCk7XG4gICAgbGV0IHBhZ2UgPSBfLmZpbmQocGFnZUFycmF5LCAocCkgPT4gcGFyc2VJbnQocC5pZCwgMTApID09PSBjdXJyZW50UGFnZUlkKTtcbiAgICBpZiAocGFnZSAmJiBwYWdlLnVybCAhPT0gdGhpcy5nZXRDdXJyZW50VXJsKCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBSZWRpcmVjdGVkIGZyb20gJyR7dGhpcy5nZXRDdXJyZW50VXJsKCl9JyB0byAnJHtwYWdlLnVybH0nYCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRVcmwocGFnZS51cmwpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1dGlsLmhhc1ZhbHVlKG5ld1BhZ2UpKSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gdHJ1ZTtcbiAgICBjb25zdCBvbGRDb250ZXh0ID0gdGhpcy5jdXJDb250ZXh0O1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IGAke2FwcElkS2V5fS4ke25ld1BhZ2V9YDtcbiAgICAvLyBkbyBub3Qgd2FpdCwgYXMgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSwgYW5kIHRoZSByZXNwb25zZSBpcyBub3QgbmVjZXNzYXJ5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrcywgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgIHRoaXMucmVtb3RlLnNlbGVjdFBhZ2UoYXBwSWRLZXksIHBhcnNlSW50KG5ld1BhZ2UsIDEwKSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5sb2cud2FybihgRmFpbGVkIHRvIHNlbGVjdCBwYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gb2xkQ29udGV4dDtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGluZ05ld1BhZ2UgPSBmYWxzZTtcbiAgfVxuICB0aGlzLndpbmRvd0hhbmRsZUNhY2hlID0gcGFnZUFycmF5O1xufTtcblxuXG5PYmplY3QuYXNzaWduKGNvbW1hbmRzLCBleHRlbnNpb25zLCBoZWxwZXJzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
642
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJOQVRJVkVfV0lOIiwiV0VCVklFV19XSU4iLCJXRUJWSUVXX0JBU0UiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZ2V0Q29udGV4dHNBbmRWaWV3cyIsInVzZVVybCIsImxvZyIsImRlYnVnIiwid2Vidmlld3MiLCJsaXN0V2ViRnJhbWVzIiwiY3R4cyIsImlkIiwidmlldyIsImNvbnRleHRzIiwicHVzaCIsInRvU3RyaW5nIiwidXNlTmV3U2FmYXJpIiwicGFyc2VGbG9hdCIsImlvc1Nka1ZlcnNpb24iLCJvcHRzIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNSZWFsRGV2aWNlIiwic2FmYXJpIiwidHlwZUFuZE5hdlRvVXJsIiwiYWRkcmVzcyIsInNldEN1cnJlbnRVcmwiLCJjYXBzIiwic2FmYXJpSW5pdGlhbFVybCIsInBvcnQiLCJ0cmllcyIsIk1BWF9UUklFUyIsIm5hdmlnYXRlIiwib2xkSW1wV2FpdCIsImltcGxpY2l0V2FpdE1zIiwiZWwiLCJmaW5kRWxlbWVudCIsIm5hdGl2ZVRhcCIsIkVMRU1FTlQiLCJlcnIiLCJfIiwiaW5jbHVkZXMiLCJtZXNzYWdlIiwibmV3UGFnZUJ1dHRvbiIsInNldFZhbHVlSW1tZWRpYXRlIiwiZ2V0Q3VycmVudFVybCIsImVycm9yIiwibmF2VG9WaWV3V2l0aFRpdGxlIiwidW5kZWZpbmVkIiwiUmVnRXhwIiwicmVtb3RlIiwicGFnZVVubG9hZCIsIm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMiLCJtc2ciLCJ0aXRsZVJlZ2V4IiwidXJsUmVnRXhwIiwic3RhcnQiLCJEYXRlIiwibm93Iiwic3BpblRpbWUiLCJzcGluSGFuZGxlcyIsInJlcyIsImdldExhdGVzdFdlYnZpZXdDb250ZXh0Rm9yVGl0bGUiLCJFcnJvciIsInN0YWNrIiwibGF0ZXN0V2luZG93Iiwic2V0Q29udGV4dCIsImNhbmNlbFBhZ2VMb2FkIiwid2FybiIsIkIiLCJkZWxheSIsImVsZW1lbnQiLCJmaW5kVUlFbGVtZW50T3JFbGVtZW50cyIsInN0b3BSZW1vdGUiLCJjbG9zZVdpbmRvd0JlZm9yZURpc2Nvbm5lY3RpbmciLCJlcnJvckFuZFRocm93IiwiY2xvc2VXaW5kb3ciLCJkaXNjb25uZWN0IiwiY3VyV2ViRnJhbWVzIiwiY3VyV2ViQ29vcmRzIiwidXJsIiwiX2N1cnJlbnRVcmwiLCJjbG9zZUFsZXJ0QmVmb3JlVGVzdCIsIm5hdlRvSW5pdGlhbFdlYnZpZXciLCJyZWdFeHAiLCJjdXJyZW50VXJsIiwiZmlsdGVyIiwiY3R4IiwidGl0bGUiLCJ0ZXN0IiwiaXNXZWJDb250ZXh0IiwiaXNXZWJ2aWV3IiwiZ2V0TmV3UmVtb3RlRGVidWdnZXIiLCJzb2NrZXRQYXRoIiwiZGV2aWNlIiwiZ2V0V2ViSW5zcGVjdG9yU29ja2V0IiwiYnVuZGxlSWQiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwiYWRkaXRpb25hbFdlYnZpZXdCdW5kbGVJZHMiLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsInBhZ2VMb2FkTXMiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJ1dGlsIiwiaGFzVmFsdWUiLCJzYWZhcmlHYXJiYWdlQ29sbGVjdCIsInVkaWQiLCJsb2dBbGxDb21tdW5pY2F0aW9uIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJzYWZhcmlTb2NrZXRDaHVua1NpemUiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsInNhZmFyaVdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwibmFtZSIsImNhbGxiYWNrIiwic2tpcFJlYWR5Q2hlY2siLCJhbHJlYWR5SW5Db250ZXh0IiwiZGVzaXJlZCIsImN1cnJlbnQiLCJpc05hdGl2ZUNvbnRleHQiLCJjb250ZXh0IiwicmVwbGFjZSIsImlzVW5kZWZpbmVkIiwiZ2V0Q29udGV4dHMiLCJjb250ZXh0SWQiLCJlcnJvcnMiLCJOb1N1Y2hDb250ZXh0RXJyb3IiLCJvbGRDb250ZXh0IiwiY3VyV2luZG93SGFuZGxlIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJtYXAiLCJzcGxpdCIsInBhcnNlSW50Iiwic2VsZWN0aW5nTmV3UGFnZSIsInNlbGVjdFBhZ2UiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJsb2dzIiwicGVyZm9ybWFuY2UiLCJJT1NQZXJmb3JtYW5jZUxvZyIsInN0YXJ0Q2FwdHVyZSIsInNhZmFyaUNvbnNvbGUiLCJzdGFydENvbnNvbGUiLCJhZGRMb2dMaW5lIiwiYmluZCIsInNhZmFyaU5ldHdvcmsiLCJzdGFydE5ldHdvcmsiLCJjb25uZWN0VG9SZW1vdGVEZWJ1Z2dlciIsIm9uIiwiUmVtb3RlRGVidWdnZXIiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIm9uUGFnZUNoYW5nZSIsIkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCIsImlzRW1wdHkiLCJwbHVyYWxpemUiLCJsZW5ndGgiLCJqb2luIiwiY29ubmVjdCIsIndlYnZpZXdDb25uZWN0VGltZW91dCIsInBhZ2VBcnJheSIsImdldFdlYnZpZXdQYWdlcyIsInNlbGVjdEFwcCIsIndlYnZpZXdDb25uZWN0UmV0cmllcyIsImlnbm9yZUFib3V0QmxhbmtVcmwiLCJzZXRDb25uZWN0aW9uS2V5IiwiYWxlcnRFcnJvck1zZyIsIm1hcEZuIiwiZnVsbENvbnRleHRMaXN0IiwibW9iaWxlR2V0Q29udGV4dHMiLCJ3YWl0Rm9yV2Vidmlld01zIiwiaXNOdW1iZXIiLCJpc05hTiIsImN1ck9wdCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsInNldFdpbmRvdyIsIm5vb3AiLCJOb1N1Y2hXaW5kb3dFcnJvciIsImdldFdpbmRvd0hhbmRsZSIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJnZXRXaW5kb3dIYW5kbGVzIiwicGFnZUNoYW5nZU5vdGlmaWNhdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc0Nvbm5lY3RlZCIsIm5ld0lkcyIsIm5ld1BhZ2VzIiwia2V5SWQiLCJpc1VybElnbm9yZWQiLCJzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMiLCJpZ25vcmVkSG9zdHMiLCJiIiwidHJpbSIsImlnbm9yZWRIb3N0IiwiaG9zdG5hbWUiLCJVUkwiLCJpZ24iLCJwYWdlIiwiaXNLZXkiLCJpbmZvIiwiY3VyQXBwSWRLZXkiLCJjdXJQYWdlSWRLZXkiLCJuZXdQYWdlIiwibGFzdCIsIm5lZWRzUGFnZUxvYWQiLCJjb250ZXh0QXJyYXkiLCJpc0VxdWFsIiwiZmluZCIsInBhZ2VMb2FkIiwiY3VycmVudFBhZ2VJZCIsInAiLCJjYXRjaCIsIndpbmRvd0hhbmRsZUNhY2hlIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVtb3RlRGVidWdnZXIsIFJlbW90ZURlYnVnZ2VyIH0gZnJvbSAnYXBwaXVtLXJlbW90ZS1kZWJ1Z2dlcic7XG5pbXBvcnQgeyBlcnJvcnMsIGlzRXJyb3JUeXBlIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IElPU1BlcmZvcm1hbmNlTG9nIGZyb20gJy4uL2RldmljZS1sb2cvaW9zLXBlcmZvcm1hbmNlLWxvZyc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgTkFUSVZFX1dJTiA9ICdOQVRJVkVfQVBQJztcbmNvbnN0IFdFQlZJRVdfV0lOID0gJ1dFQlZJRVcnO1xuY29uc3QgV0VCVklFV19CQVNFID0gYCR7V0VCVklFV19XSU59X2A7XG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5cbmNvbW1hbmRzLmdldEN1cnJlbnRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudENvbnRleHQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgaWYgKHRoaXMuY3VyQ29udGV4dCAmJiB0aGlzLmN1ckNvbnRleHQgIT09IE5BVElWRV9XSU4pIHtcbiAgICByZXR1cm4gYCR7V0VCVklFV19CQVNFfSR7dGhpcy5jdXJDb250ZXh0fWA7XG4gIH1cbiAgcmV0dXJuIE5BVElWRV9XSU47XG59O1xuXG5leHRlbnNpb25zLmdldENvbnRleHRzQW5kVmlld3MgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0c0FuZFZpZXdzICh1c2VVcmwgPSB0cnVlKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGNvbnRleHRzIGFuZCB2aWV3cycpO1xuICBsZXQgd2Vidmlld3MgPSBhd2FpdCB0aGlzLmxpc3RXZWJGcmFtZXModXNlVXJsKTtcblxuICBsZXQgY3R4cyA9IFt7aWQ6IE5BVElWRV9XSU4sIHZpZXc6IHt9fV07XG4gIHRoaXMuY29udGV4dHMgPSBbTkFUSVZFX1dJTl07XG4gIGZvciAobGV0IHZpZXcgb2Ygd2Vidmlld3MpIHtcbiAgICBjdHhzLnB1c2goe2lkOiBgJHtXRUJWSUVXX0JBU0V9JHt2aWV3LmlkfWAsIHZpZXd9KTtcbiAgICB0aGlzLmNvbnRleHRzLnB1c2godmlldy5pZC50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gY3R4cztcbn07XG5cbi8vIFJpZ2h0IG5vdyB3ZSBkb24ndCBuZWNlc3NhcmlseSB3YWl0IGZvciB3ZWJ2aWV3XG4vLyBhbmQgZnJhbWUgdG8gbG9hZCwgd2hpY2ggbGVhZHMgdG8gcmFjZSBjb25kaXRpb25zIGFuZCBmbGFraW5lc3MsXG4vLyBsZXQncyBzZWUgaWYgd2UgY2FuIHRyYW5zaXRpb24gdG8gc29tZXRoaW5nIGJldHRlclxuZXh0ZW5zaW9ucy51c2VOZXdTYWZhcmkgPSBmdW5jdGlvbiB1c2VOZXdTYWZhcmkgKCkge1xuICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLmlvc1Nka1ZlcnNpb24pID49IDguMSAmJlxuICAgIHBhcnNlRmxvYXQodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbikgPj0gOC4xICYmXG4gICAgIXRoaXMuaXNSZWFsRGV2aWNlKCkgJiZcbiAgICB0aGlzLm9wdHMuc2FmYXJpO1xufTtcblxuZXh0ZW5zaW9ucy50eXBlQW5kTmF2VG9VcmwgPSBhc3luYyBmdW5jdGlvbiB0eXBlQW5kTmF2VG9VcmwgKCkge1xuICBsZXQgYWRkcmVzcyA9IHRoaXMub3B0cy5hZGRyZXNzID8gdGhpcy5vcHRzLmFkZHJlc3MgOiAnMTI3LjAuMC4xJztcbiAgdGhpcy5zZXRDdXJyZW50VXJsKHRoaXMuY2Fwcy5zYWZhcmlJbml0aWFsVXJsIHx8IGBodHRwOi8vJHthZGRyZXNzfToke3RoaXMub3B0cy5wb3J0fS93ZWxjb21lYCk7XG5cbiAgbGV0IHRyaWVzID0gMDtcbiAgY29uc3QgTUFYX1RSSUVTID0gMjtcbiAgbGV0IG5hdmlnYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgIGxldCBvbGRJbXBXYWl0ID0gdGhpcy5pbXBsaWNpdFdhaXRNcztcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gNzAwMDtcblxuICAgIC8vIGZpbmQgdGhlIHVybCBiYXIsIGFuZCB0YXAgb24gaXQuIHJldHJ5IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB0cnlcbiAgICAvLyB0b28gc29vbiB3aGlsZSB0aGUgdmlldyBpcyBzdGlsbCBsb2FkaW5nXG4gICAgbGV0IGVsID0gYXdhaXQgcmV0cnlJbnRlcnZhbCgzLCAxMDAwLCBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCdhY2Nlc3NpYmlsaXR5IGlkJywgJ1VSTCcpKTtcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gb2xkSW1wV2FpdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbC5FTEVNRU5UKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChfLmluY2x1ZGVzKGVyci5tZXNzYWdlLCAnY291bGQgbm90IGJlIHRhcHBlZCcpKSB7XG4gICAgICAgIGlmICh0cmllcysrID49IE1BWF9UUklFUykgdGhyb3cgZXJyOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAgICAgLy8gZ2VuZXJhbGx5IHRoaXMgbWVhbnMgdGhhdCBTYWZhcmkgaXMgaW4gcGFnZSB2aWV3aW5nIG1vZGVcbiAgICAgICAgLy8gc28gdHJ5IHRvIG9wZW4gYSBuZXcgcGFnZSBhbmQgdGhlbiByZWRvIHRoZSBuYXZpZ2F0aW9uXG4gICAgICAgIGxldCBuZXdQYWdlQnV0dG9uID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgneHBhdGgnLCBcIi8vWENVSUVsZW1lbnRUeXBlQnV0dG9uW2NvbnRhaW5zKEBuYW1lLCdOZXcgcGFnZScpXVwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAobmV3UGFnZUJ1dHRvbi5FTEVNRU5UKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBsYXN0IGFkZHJlc3MgZWxlbWVudCBhbmQgc2V0IHRoZSB1cmxcbiAgICB0cnkge1xuICAgICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUZXh0RmllbGQnKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VmFsdWVJbW1lZGlhdGUodGhpcy5nZXRDdXJyZW50VXJsKCksIGVsKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHRoaXMgaXMgZmxha2V5IG9uIGNlcnRhaW4gc3lzdGVtcyBzbyB3ZSByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nXG4gICAgICAvLyBpb3Mgc2ltczogc2FmYXJpIG9wZW5zIGJ1dCB0aGUgdGV4dCBmaWVsZCBjYW4ndCBiZSBmb3VuZFxuICAgICAgaWYgKHRyaWVzKysgPj0gTUFYX1RSSUVTKSB0aHJvdyBlcnI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgIHJldHVybiBhd2FpdCBuYXZpZ2F0ZSgpO1xuICAgIH1cblxuICAgIC8vIG1ha2UgaXQgaGFwcGVuXG4gICAgdHJ5IHtcbiAgICAgIGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgnYWNjZXNzaWJpbGl0eSBpZCcsICdHbycpO1xuICAgICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAoZWwuRUxFTUVOVCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoXy5pbmNsdWRlcyhlcnIubWVzc2FnZSwgJ2NvdWxkIG5vdCBiZSB0YXBwZWQnKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignVW5hYmxlIHRvIHN1Ym1pdCBVUkwgYmVjYXVzZSBcXCdHb1xcJyBidXR0b24gY291bGQgbm90IGJlIHRhcHBlZC4gJyArXG4gICAgICAgICAgJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciBrZXlib2FyZCBpcyB0b2dnbGVkIG9uLicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSh1bmRlZmluZWQsIG5ldyBSZWdFeHAodGhpcy5nZXRDdXJyZW50VXJsKCksICdpJykpO1xuXG4gICAgLy8gd2FpdCBmb3IgcGFnZSB0byBmaW5pc2ggbG9hZGluZy5cbiAgICBhd2FpdCB0aGlzLnJlbW90ZS5wYWdlVW5sb2FkKCk7XG4gIH07XG4gIGF3YWl0IG5hdmlnYXRlKCk7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMgPSBhc3luYyBmdW5jdGlvbiBuYXZUb1ZpZXdUaHJvdWdoRmF2b3JpdGVzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1dlIGFyZSBvbiBpT1M3KyBzaW11bGF0b3I6IGNsaWNraW5nIGFwcGxlIGJ1dHRvbiB0byBnZXQgaW50byBhIHdlYnZpZXcnKTtcbiAgbGV0IG9sZEltcFdhaXQgPSB0aGlzLmltcGxpY2l0V2FpdE1zO1xuICB0aGlzLmltcGxpY2l0V2FpdE1zID0gNzAwMDsgLy8gd2FpdCA3cyBmb3IgYXBwbGUgYnV0dG9uIHRvIGV4aXN0XG5cbiAgbGV0IGVsO1xuICB0cnkge1xuICAgIGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgneHBhdGgnLCAnLy9YQ1VJRWxlbWVudFR5cGVTY3JvbGxWaWV3WzFdL1hDVUlFbGVtZW50VHlwZUJ1dHRvblsxXScpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsZXQgbXNnID0gJ0NvdWxkIG5vdCBmaW5kIGJ1dHRvbiB0byBjbGljayB0byBnZXQgaW50byB3ZWJ2aWV3LiAnICtcbiAgICAgICAgICAgICAgJ1Byb2NlZWRpbmcgb24gdGhlIGFzc3VtcHRpb24gd2UgaGF2ZSBhIHdvcmtpbmcgb25lLic7XG4gICAgdGhpcy5sb2cuZXJyb3IobXNnKTtcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gb2xkSW1wV2FpdDtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5uYXZUb1ZpZXdXaXRoVGl0bGUoLy4qL2kpO1xuICB9XG4gIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBvbGRJbXBXYWl0O1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMubmF0aXZlVGFwKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsZXQgbXNnID0gJ0NvdWxkIG5vdCBjbGljayBidXR0b24gdG8gZ2V0IGludG8gd2Vidmlldy4gJyArXG4gICAgICAgICAgICAgICdQcm9jZWVkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHdlIGhhdmUgYSB3b3JraW5nIG9uZS4nO1xuICAgIHRoaXMubG9nLmVycm9yKG1zZyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5uYXZUb1ZpZXdXaXRoVGl0bGUoL2FwcGxlL2kpO1xufTtcblxuZXh0ZW5zaW9ucy5uYXZUb1ZpZXdXaXRoVGl0bGUgPSBhc3luYyBmdW5jdGlvbiBuYXZUb1ZpZXdXaXRoVGl0bGUgKHRpdGxlUmVnZXgsIHVybFJlZ0V4cCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnTmF2aWdhdGluZyB0byBtb3N0IHJlY2VudGx5IG9wZW5lZCB3ZWJ2aWV3Jyk7XG4gIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gIGxldCBzcGluVGltZSA9IDUwMDtcbiAgbGV0IHNwaW5IYW5kbGVzID0gYXN5bmMgKCkgPT4ge1xuICAgIGxldCByZXM7XG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IGF3YWl0IHRoaXMuZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSh0aXRsZVJlZ2V4IHx8IHVybFJlZ0V4cCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb3VsZCBub3QgY29ubmVjdCB0byBhIHZhbGlkIGFwcCBhZnRlcicpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBDb3VsZCBub3QgbmF2aWdhdGUgdG8gd2VidmlldyEgRXJyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICBlcnJvci5zdGFjayArPSBgXFxuQ2F1c2VkIGJ5OiAke2Vyci5zdGFja31gO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdDb3VsZCBub3QgbmF2aWdhdGUgdG8gd2Vidmlldy4gUmV0cnlpbmcgaWYgcG9zc2libGUuJyk7XG4gICAgfVxuICAgIGlmIChyZXMpIHtcbiAgICAgIGxldCBsYXRlc3RXaW5kb3cgPSByZXM7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGlja2luZyB3ZWJ2aWV3ICcke2xhdGVzdFdpbmRvd30nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbnRleHQobGF0ZXN0V2luZG93KTtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLmNhbmNlbFBhZ2VMb2FkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gbm8gd2VidmlldyB3YXMgZm91bmRcbiAgICBpZiAoKERhdGUubm93KCkgLSBzdGFydCkgPj0gOTAwMDApIHtcbiAgICAgIC8vIHRvbyBzbG93LCBnZXQgb3V0XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBuYXZpZ2F0ZSB0byB3ZWJ2aWV3OyB0aGVyZSBhcmUgbm9uZSEnKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy53YXJuKCdDb3VsZCBub3QgZmluZCBhbnkgd2Vidmlld3MgeWV0LCByZWZyZXNoaW5nL3JldHJ5aW5nJyk7XG4gICAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkgfHwgIXRoaXMub3B0cy5zYWZhcmkpIHtcbiAgICAgIC8vIG9uIGEgcmVhbCBkZXZpY2UsIHdoZW4gbm90IHVzaW5nIFNhZmFyaSwgd2UganVzdCB3YW50IHRvIHRyeSBhZ2FpblxuICAgICAgYXdhaXQgQi5kZWxheShzcGluVGltZSk7XG4gICAgICByZXR1cm4gYXdhaXQgc3BpbkhhbmRsZXMoKTtcbiAgICB9XG5cbiAgICAvLyBmaW5kIHRoZSByZWxvYWQgYnV0dG9uIGFuZCB0YXAgaXQsIGlmIHBvc3NpYmxlXG4gICAgbGV0IGVsZW1lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdGaW5kaW5nIGFuZCB0YXBwaW5nIHJlbG9hZCBidXR0b24nKTtcbiAgICAgIGVsZW1lbnQgPSBhd2FpdCB0aGlzLmZpbmRVSUVsZW1lbnRPckVsZW1lbnRzKCdhY2Nlc3NpYmlsaXR5IGlkJywgJ1JlbG9hZEJ1dHRvbicsICcnLCBmYWxzZSk7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbGVtZW50LkVMRU1FTlQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgZmluZGluZyBhbmQgdGFwcGluZyByZWxvYWQgYnV0dG9uOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5sb2cud2FybignUmV0cnlpbmcuJyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KHNwaW5UaW1lKTtcbiAgICB9XG5cbiAgICAvLyB0cnkgaXQgYWxsIGFnYWluXG4gICAgcmV0dXJuIGF3YWl0IHNwaW5IYW5kbGVzKCk7XG4gIH07XG4gIGF3YWl0IHNwaW5IYW5kbGVzKCk7XG59O1xuXG5oZWxwZXJzLnN0b3BSZW1vdGUgPSBhc3luYyBmdW5jdGlvbiBzdG9wUmVtb3RlIChjbG9zZVdpbmRvd0JlZm9yZURpc2Nvbm5lY3RpbmcgPSBmYWxzZSkge1xuICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnVHJpZWQgdG8gbGVhdmUgYSB3ZWIgZnJhbWUgYnV0IHdlcmUgbm90IGluIG9uZScpO1xuICB9XG5cbiAgaWYgKGNsb3NlV2luZG93QmVmb3JlRGlzY29ubmVjdGluZykge1xuICAgIGF3YWl0IHRoaXMuY2xvc2VXaW5kb3coKTtcbiAgfVxuICBhd2FpdCB0aGlzLnJlbW90ZS5kaXNjb25uZWN0KCk7XG4gIHRoaXMuY3VyQ29udGV4dCA9IG51bGw7XG4gIHRoaXMuY3VyV2ViRnJhbWVzID0gW107XG4gIHRoaXMuY3VyV2ViQ29vcmRzID0gbnVsbDtcbiAgdGhpcy5yZW1vdGUgPSBudWxsO1xufTtcblxuaGVscGVycy5zZXRDdXJyZW50VXJsID0gZnVuY3Rpb24gc2V0Q3VycmVudFVybCAodXJsKSB7XG4gIHRoaXMuX2N1cnJlbnRVcmwgPSB1cmw7XG59O1xuXG5oZWxwZXJzLmdldEN1cnJlbnRVcmwgPSBmdW5jdGlvbiBnZXRDdXJyZW50VXJsICgpIHtcbiAgcmV0dXJuIHRoaXMuX2N1cnJlbnRVcmw7XG59O1xuXG5leHRlbnNpb25zLmNsb3NlQWxlcnRCZWZvcmVUZXN0ID0gYXN5bmMgZnVuY3Rpb24gY2xvc2VBbGVydEJlZm9yZVRlc3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvSW5pdGlhbFdlYnZpZXcgPSBhc3luYyBmdW5jdGlvbiBuYXZUb0luaXRpYWxXZWJ2aWV3ICgpIHtcbiAgaWYgKHRoaXMudXNlTmV3U2FmYXJpKCkpIHtcbiAgICBhd2FpdCB0aGlzLnR5cGVBbmROYXZUb1VybCgpO1xuICB9IGVsc2UgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpICYmIHRoaXMub3B0cy5zYWZhcmkpIHtcbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMoKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSgvLiovKTtcbiAgfVxufTtcblxuZXh0ZW5zaW9ucy5nZXRMYXRlc3RXZWJ2aWV3Q29udGV4dEZvclRpdGxlID0gYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSAocmVnRXhwKSB7XG4gIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLmdldEN1cnJlbnRVcmwoKTtcblxuICBjb25zdCBjb250ZXh0cyA9IF8uZmlsdGVyKGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cygpLCAndmlldycpO1xuXG4gIGlmIChjdXJyZW50VXJsKSB7XG4gICAgLy8gZmlyc3QgdHJ5IHRvIG1hdGNoIGJ5IGN1cnJlbnQgdXJsXG4gICAgZm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcbiAgICAgIGlmICgoY3R4LnZpZXcudXJsIHx8ICcnKSA9PT0gdGhpcy5nZXRDdXJyZW50VXJsKCkpIHtcbiAgICAgICAgcmV0dXJuIGN0eC5pZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3QsIHRyeSB0byBtYXRjaCBieSByZWd1bGFyIGV4cHJlc3Npb25cbiAgZm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcbiAgICBpZiAoKGN0eC52aWV3LnRpdGxlICYmIHJlZ0V4cC50ZXN0KGN0eC52aWV3LnRpdGxlKSkgfHwgKGN0eC52aWV3LnVybCAmJiByZWdFeHAudGVzdChjdHgudmlldy51cmwpKSkge1xuICAgICAgcmV0dXJuIGN0eC5pZDtcbiAgICB9XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuaXNXZWJDb250ZXh0ID0gZnVuY3Rpb24gaXNXZWJDb250ZXh0ICgpIHtcbiAgcmV0dXJuICEhdGhpcy5jdXJDb250ZXh0ICYmIHRoaXMuY3VyQ29udGV4dCAhPT0gTkFUSVZFX1dJTjtcbn07XG5cbmV4dGVuc2lvbnMuaXNXZWJ2aWV3ID0gZnVuY3Rpb24gaXNXZWJ2aWV3ICgpIHtcbiAgcmV0dXJuIHRoaXMuaXNXZWJDb250ZXh0KCk7XG59O1xuXG5leHRlbnNpb25zLmdldE5ld1JlbW90ZURlYnVnZ2VyID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV3UmVtb3RlRGVidWdnZXIgKCkge1xuICBsZXQgc29ja2V0UGF0aDtcbiAgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgc29ja2V0UGF0aCA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0V2ViSW5zcGVjdG9yU29ja2V0KCk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVJlbW90ZURlYnVnZ2VyKHtcbiAgICBidW5kbGVJZDogdGhpcy5vcHRzLmJ1bmRsZUlkLFxuICAgIGFkZGl0aW9uYWxCdW5kbGVJZHM6IHRoaXMub3B0cy5hZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyxcbiAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSgpLFxuICAgIGluY2x1ZGVTYWZhcmk6IHRoaXMub3B0cy5pbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyxcbiAgICB1c2VOZXdTYWZhcmk6IHRoaXMudXNlTmV3U2FmYXJpKCksXG4gICAgcGFnZUxvYWRNczogdGhpcy5wYWdlTG9hZE1zLFxuICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbixcbiAgICBzb2NrZXRQYXRoLFxuICAgIHJlbW90ZURlYnVnUHJveHk6IHRoaXMub3B0cy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgIGdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlOiB1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5zYWZhcmlHYXJiYWdlQ29sbGVjdClcbiAgICAgID8gISF0aGlzLm9wdHMuc2FmYXJpR2FyYmFnZUNvbGxlY3RcbiAgICAgIDogZmFsc2UsXG4gICAgdWRpZDogdGhpcy5vcHRzLnVkaWQsXG4gICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5vcHRzLnNhZmFyaUxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMub3B0cy5zYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICBzb2NrZXRDaHVua1NpemU6IHRoaXMub3B0cy5zYWZhcmlTb2NrZXRDaHVua1NpemUsXG4gICAgd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHRoaXMub3B0cy5zYWZhcmlXZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aFxuICB9LCB0aGlzLmlzUmVhbERldmljZSgpKTtcbn07XG5cbi8qKlxuICogU2V0IGNvbnRleHRcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiBjb250ZXh0IHRvIHNldC4gSXQgY291bGQgYmUgJ251bGwnIGFzIE5BVElWRV9XSU4uXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBUaGUgY2FsbGJhY2suIChJdCBpcyBub3QgY2FsbGVkIGluIHRoaXMgbWV0aG9kKVxuICogQHBhcmFtIHtib29sZWFufSBza2lwUmVhZHlDaGVjayAtIFdoZXRoZXIgaXQgd2FpdHMgZm9yIHRoZSBuZXcgY29udGV4dCBpcyByZWFkeVxuICovXG5jb21tYW5kcy5zZXRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0Q29udGV4dCAobmFtZSwgY2FsbGJhY2ssIHNraXBSZWFkeUNoZWNrKSB7XG4gIGZ1bmN0aW9uIGFscmVhZHlJbkNvbnRleHQgKGRlc2lyZWQsIGN1cnJlbnQpIHtcbiAgICByZXR1cm4gKGRlc2lyZWQgPT09IGN1cnJlbnQgfHxcbiAgICAgIChkZXNpcmVkID09PSBudWxsICYmIGN1cnJlbnQgPT09IE5BVElWRV9XSU4pIHx8XG4gICAgICAoZGVzaXJlZCA9PT0gTkFUSVZFX1dJTiAmJiBjdXJyZW50ID09PSBudWxsKSk7XG4gIH1cbiAgZnVuY3Rpb24gaXNOYXRpdmVDb250ZXh0IChjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNvbnRleHQgPT09IE5BVElWRV9XSU4gfHwgY29udGV4dCA9PT0gbnVsbDtcbiAgfVxuXG4gIC8vIGFsbG93IHRoZSBmdWxsIGNvbnRleHQgbGlzdCB0byBiZSBwYXNzZWQgaW5cbiAgaWYgKG5hbWUgJiYgbmFtZS5pZCkge1xuICAgIG5hbWUgPSBuYW1lLmlkO1xuICB9XG5cbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gc2V0IGNvbnRleHQgdG8gJyR7bmFtZSB8fCBOQVRJVkVfV0lOfScgZnJvbSAnJHt0aGlzLmN1ckNvbnRleHQgPyB0aGlzLmN1ckNvbnRleHQgOiBOQVRJVkVfV0lOfSdgKTtcblxuICBpZiAoYWxyZWFkeUluQ29udGV4dChuYW1lLCB0aGlzLmN1ckNvbnRleHQpIHx8IGFscmVhZHlJbkNvbnRleHQoXy5yZXBsYWNlKG5hbWUsIFdFQlZJRVdfQkFTRSwgJycpLCB0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgLy8gYWxyZWFkeSBpbiB0aGUgbmFtZWQgY29udGV4dCwgbm8gbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgIHRoaXMubG9nLmRlYnVnKGBBbHJlYWR5IGluICcke25hbWUgfHwgTkFUSVZFX1dJTn0nIGNvbnRleHQuIERvaW5nIG5vdGhpbmcuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc05hdGl2ZUNvbnRleHQobmFtZSkpIHtcbiAgICAvLyBzd2l0Y2hpbmcgaW50byB0aGUgbmF0aXZlIGNvbnRleHRcbiAgICB0aGlzLmN1ckNvbnRleHQgPSBudWxsO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHN3aXRjaGluZyBpbnRvIGEgd2VidmlldyBjb250ZXh0XG5cbiAgLy8gaWYgY29udGV4dHMgaGF2ZSBub3QgYWxyZWFkeSBiZWVuIHJldHJpZXZlZCwgZ2V0IHRoZW1cbiAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5jb250ZXh0cykpIHtcbiAgICBhd2FpdCB0aGlzLmdldENvbnRleHRzKCk7XG4gIH1cblxuICBsZXQgY29udGV4dElkID0gXy5yZXBsYWNlKG5hbWUsIFdFQlZJRVdfQkFTRSwgJycpO1xuICBpZiAoY29udGV4dElkID09PSAnJykge1xuICAgIC8vIGFsbG93IHVzZXIgdG8gcGFzcyBpbiBcIldFQlZJRVdcIiB3aXRob3V0IGFuIGluZGV4XG4gICAgLy8gdGhlIHNlY29uZCBjb250ZXh0IHdpbGwgYmUgdGhlIGZpcnN0IHdlYnZpZXcgYXNcbiAgICAvLyB0aGUgZmlyc3QgaXMgYWx3YXlzIE5BVElWRV9BUFBcbiAgICBjb250ZXh0SWQgPSB0aGlzLmNvbnRleHRzWzFdO1xuICB9XG4gIGlmICghXy5pbmNsdWRlcyh0aGlzLmNvbnRleHRzLCBjb250ZXh0SWQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGNvbnN0IG9sZENvbnRleHQgPSB0aGlzLmN1ckNvbnRleHQ7XG4gIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuY3VyV2luZG93SGFuZGxlID0gY29udGV4dElkO1xuXG4gIC8vIGBjb250ZXh0SWRgIHdpbGwgYmUgaW4gdGhlIGZvcm0gb2YgYGFwcElkLnBhZ2VJZGAgaW4gdGhpcyBjYXNlXG4gIGNvbnN0IFthcHBJZEtleSwgcGFnZUlkS2V5XSA9IF8ubWFwKGNvbnRleHRJZC5zcGxpdCgnLicpLCAoaWQpID0+IHBhcnNlSW50KGlkLCAxMCkpO1xuICB0cnkge1xuICAgIHRoaXMuc2VsZWN0aW5nTmV3UGFnZSA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5yZW1vdGUuc2VsZWN0UGFnZShhcHBJZEtleSwgcGFnZUlkS2V5LCBza2lwUmVhZHlDaGVjayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuY3VyV2luZG93SGFuZGxlID0gb2xkQ29udGV4dDtcbiAgICB0aHJvdyBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gZmFsc2U7XG4gIH1cblxuICAvLyBhdHRlbXB0IHRvIHN0YXJ0IHBlcmZvcm1hbmNlIGxvZ2dpbmcsIGlmIHJlcXVlc3RlZFxuICBpZiAodGhpcy5vcHRzLmVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyAmJiB0aGlzLnJlbW90ZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBTdGFydGluZyBwZXJmb3JtYW5jZSBsb2cgb24gJyR7dGhpcy5jdXJDb250ZXh0fSdgKTtcbiAgICB0aGlzLmxvZ3MucGVyZm9ybWFuY2UgPSBuZXcgSU9TUGVyZm9ybWFuY2VMb2codGhpcy5yZW1vdGUpO1xuICAgIGF3YWl0IHRoaXMubG9ncy5wZXJmb3JtYW5jZS5zdGFydENhcHR1cmUoKTtcbiAgfVxuXG4gIC8vIHN0YXJ0IHNhZmFyaSBsb2dnaW5nIGlmIHRoZSBsb2dzIGhhbmRsZXJzIGFyZSBhY3RpdmVcbiAgaWYgKG5hbWUgJiYgbmFtZSAhPT0gTkFUSVZFX1dJTiAmJiB0aGlzLmxvZ3MpIHtcbiAgICBpZiAodGhpcy5sb2dzLnNhZmFyaUNvbnNvbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLnN0YXJ0Q29uc29sZSh0aGlzLmxvZ3Muc2FmYXJpQ29uc29sZS5hZGRMb2dMaW5lLmJpbmQodGhpcy5sb2dzLnNhZmFyaUNvbnNvbGUpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9ncy5zYWZhcmlOZXR3b3JrKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbW90ZS5zdGFydE5ldHdvcmsodGhpcy5sb2dzLnNhZmFyaU5ldHdvcmsuYWRkTG9nTGluZS5iaW5kKHRoaXMubG9ncy5zYWZhcmlOZXR3b3JrKSk7XG4gICAgfVxuICB9XG59O1xuXG5leHRlbnNpb25zLmNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyID0gYXN5bmMgZnVuY3Rpb24gY29ubmVjdFRvUmVtb3RlRGVidWdnZXIgKCkge1xuICB0aGlzLnJlbW90ZSA9IGF3YWl0IHRoaXMuZ2V0TmV3UmVtb3RlRGVidWdnZXIoKTtcblxuICB0aGlzLnJlbW90ZS5vbihSZW1vdGVEZWJ1Z2dlci5FVkVOVF9QQUdFX0NIQU5HRSwgdGhpcy5vblBhZ2VDaGFuZ2UuYmluZCh0aGlzKSk7XG4gIHRoaXMucmVtb3RlLm9uKFJlbW90ZURlYnVnZ2VyLkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCwgKCkgPT4ge1xuICAgIGlmICghXy5pc0VtcHR5KHRoaXMuY3VyV2ViRnJhbWVzKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYENsZWFyaW5nICR7dXRpbC5wbHVyYWxpemUoJ2ZyYW1lJywgdGhpcy5jdXJXZWJGcmFtZXMubGVuZ3RoLCB0cnVlKX06ICR7dGhpcy5jdXJXZWJGcmFtZXMuam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgdGhpcy5jdXJXZWJGcmFtZXMgPSBbXTtcbiAgfSk7XG5cbiAgYXdhaXQgdGhpcy5yZW1vdGUuY29ubmVjdCh0aGlzLm9wdHMud2Vidmlld0Nvbm5lY3RUaW1lb3V0KTtcbn07XG5cbmV4dGVuc2lvbnMubGlzdFdlYkZyYW1lcyA9IGFzeW5jIGZ1bmN0aW9uIGxpc3RXZWJGcmFtZXMgKHVzZVVybCA9IHRydWUpIHtcbiAgdXNlVXJsID0gdXNlVXJsICYmICF0aGlzLmlzUmVhbERldmljZSgpICYmICEhdGhpcy5nZXRDdXJyZW50VXJsKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBTZWxlY3RpbmcgYnkgdXJsOiAke3VzZVVybH0gJHt1c2VVcmwgPyBgKGV4cGVjdGVkIHVybDogJyR7dGhpcy5nZXRDdXJyZW50VXJsKCl9JylgIDogJyd9YCk7XG5cbiAgY29uc3QgY3VycmVudFVybCA9IHVzZVVybCA/IHRoaXMuZ2V0Q3VycmVudFVybCgpIDogdW5kZWZpbmVkO1xuICBsZXQgcGFnZUFycmF5ID0gW107XG4gIGNvbnN0IGdldFdlYnZpZXdQYWdlcyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVtb3RlLnNlbGVjdEFwcChjdXJyZW50VXJsLCB0aGlzLm9wdHMud2Vidmlld0Nvbm5lY3RSZXRyaWVzLCB0aGlzLm9wdHMuaWdub3JlQWJvdXRCbGFua1VybCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gYXZhaWxhYmxlIHdlYiBwYWdlczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKHRoaXMucmVtb3RlICYmIHRoaXMucmVtb3RlLmFwcElkS2V5KSB7XG4gICAgLy8gYWxyZWFkeSBjb25uZWN0ZWRcbiAgICBwYWdlQXJyYXkgPSBhd2FpdCBnZXRXZWJ2aWV3UGFnZXMoKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyKCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVtb3RlLnNldENvbm5lY3Rpb25LZXkoKTtcblxuICAgIHBhZ2VBcnJheSA9IGF3YWl0IGdldFdlYnZpZXdQYWdlcygpO1xuXG4gICAgY29uc3QgYWxlcnRFcnJvck1zZyA9ICdDbG9zZSBhbGVydCBmYWlsZWQuIFJldHJ5Lic7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwoNiwgMTAwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuY2xvc2VBbGVydEJlZm9yZVRlc3QoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihhbGVydEVycm9yTXNnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiB0aGUgbG9vcCB0byBjbG9zZSBhbGVydHMgZmFpbGVkIHRvIGRpc21pc3MsIGlnbm9yZSxcbiAgICAgIC8vIG90aGVyd2lzZSBsb2cgYW5kIHRocm93IHRoZSBlcnJvclxuICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSBhbGVydEVycm9yTXNnKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocGFnZUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIHdlIGhhdmUgbm8gd2ViIGZyYW1lcywgYnV0IGNvbnRpbnVlIGFueXdheVxuICAgIHRoaXMubG9nLmRlYnVnKCdObyB3ZWIgZnJhbWVzIGZvdW5kLicpO1xuICB9XG4gIHJldHVybiBwYWdlQXJyYXk7XG59O1xuXG5jb21tYW5kcy5nZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ0dldHRpbmcgbGlzdCBvZiBhdmFpbGFibGUgY29udGV4dHMnKTtcbiAgY29uc3QgY29udGV4dHMgPSBhd2FpdCB0aGlzLmdldENvbnRleHRzQW5kVmlld3MoZmFsc2UpO1xuXG4gIGNvbnN0IG1hcEZuID0gdGhpcy5vcHRzLmZ1bGxDb250ZXh0TGlzdFxuICAgID8gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBjb250ZXh0LmlkLnRvU3RyaW5nKCksXG4gICAgICAgIHRpdGxlOiBjb250ZXh0LnZpZXcudGl0bGUsXG4gICAgICAgIHVybDogY29udGV4dC52aWV3LnVybCxcbiAgICAgICAgYnVuZGxlSWQ6IGNvbnRleHQudmlldy5idW5kbGVJZCxcbiAgICAgIH07XG4gICAgfVxuICAgIDogKGNvbnRleHQpID0+IGNvbnRleHQuaWQudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGNvbnRleHRzLm1hcChtYXBGbik7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENvbnRleHRcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29udGV4dC4gVGhlIG5hdGl2ZSBjb250ZXh0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSAnTkFUSVZFX0FQUCcgYW5kIHRoZSB3ZWJ2aWV3cyB3aWxsIGJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlZJRVdfeHh4J1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYnZpZXcgY29udGVudFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmwgLSBUaGUgdXJsIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2VidmlldyBjb250ZW50XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRleHRzIGF2YWlsYWJsZSwgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXJsIGFuZCB0aXRsZSBvZiBlYWNoXG4gKiB3ZWJ2aWV3XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggY2FuIGluY2x1ZGUgYHdhaXRGb3JXZWJ2aWV3TXNgIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIHBlcmlvZCB0byBwb2xsIGZvciBhdmFpbGFibGUgd2Vidmlld3NcbiAqIEByZXR1cm5zIHtBcnJheX0gTGlzdCBvZiBDb250ZXh0IG9iamVjdHNcbiAqL1xuZXh0ZW5zaW9ucy5tb2JpbGVHZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldENvbnRleHRzIChvcHRzID0ge30pIHtcbiAgbGV0IHtcbiAgICB3YWl0Rm9yV2Vidmlld01zID0gMCxcbiAgfSA9IG9wdHM7XG5cbiAgLy8gbWFrZSBzdXJlIGl0IGlzIGEgbnVtYmVyLCBzbyB0aGUgZHVyYXRpb24gY2hlY2sgd29ya3MgcHJvcGVybHlcbiAgaWYgKCFfLmlzTnVtYmVyKHdhaXRGb3JXZWJ2aWV3TXMpKSB7XG4gICAgd2FpdEZvcldlYnZpZXdNcyA9IHBhcnNlSW50KHdhaXRGb3JXZWJ2aWV3TXMsIDEwKTtcbiAgICBpZiAoaXNOYU4od2FpdEZvcldlYnZpZXdNcykpIHtcbiAgICAgIHdhaXRGb3JXZWJ2aWV3TXMgPSAwO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGN1ck9wdCA9IHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3Q7XG4gIHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3QgPSB0cnVlO1xuXG4gIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gIHRyeSB7XG4gICAgbGV0IGNvbnRleHRzO1xuICAgIGRvIHtcbiAgICAgIGNvbnRleHRzID0gYXdhaXQgdGhpcy5nZXRDb250ZXh0cygpO1xuXG4gICAgICBpZiAoY29udGV4dHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYEZvdW5kIHdlYnZpZXcgY29udGV4dCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgICAgICByZXR1cm4gY29udGV4dHM7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gd2Vidmlld3MgZm91bmQgaW4gJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXNgKTtcbiAgICB9IHdoaWxlICh0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzIDwgd2FpdEZvcldlYnZpZXdNcyk7XG4gICAgcmV0dXJuIGNvbnRleHRzO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIHJlc2V0IHRoZSBvcHRpb24gc28gdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0c1xuICAgIHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3QgPSBjdXJPcHQ7XG4gIH1cbn07XG5cbmNvbW1hbmRzLnNldFdpbmRvdyA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpbmRvdyAobmFtZSwgc2tpcFJlYWR5Q2hlY2spIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnNldENvbnRleHQobmFtZSwgXy5ub29wLCBza2lwUmVhZHlDaGVjayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHRyYW5zbGF0ZSB0aGUgZXJyb3IgaW4gdGVybXMgb2Ygd2luZG93c1xuICAgIHRocm93IGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vU3VjaENvbnRleHRFcnJvcilcbiAgICAgID8gbmV3IGVycm9ycy5Ob1N1Y2hXaW5kb3dFcnJvcigpXG4gICAgICA6IGVycjtcbiAgfVxufTtcblxuY29tbWFuZHMuZ2V0V2luZG93SGFuZGxlID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93SGFuZGxlICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKGBHZXR0aW5nIGN1cnJlbnQgd2luZG93IGhhbmRsZWApO1xuICByZXR1cm4gdGhpcy5jdXJDb250ZXh0O1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93SGFuZGxlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd0hhbmRsZXMgKCkge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuICB0aGlzLmxvZy5kZWJ1ZygnR2V0dGluZyBsaXN0IG9mIGF2YWlsYWJsZSB3aW5kb3cgaGFuZGxlcycpO1xuICBjb25zdCBjb250ZXh0cyA9IGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cyhmYWxzZSk7XG4gIHJldHVybiBjb250ZXh0c1xuICAgIC8vIGdldCByaWQgb2YgdGhlIG5hdGl2ZSBhcHAgY29udGV4dFxuICAgIC5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaWQgIT09IE5BVElWRV9XSU4pXG4gICAgLy8gZ2V0IHRoZSBgYXBwLmlkYCBmb3JtYXQgZXhwZWN0ZWRcbiAgICAubWFwKChjb250ZXh0KSA9PiBjb250ZXh0LnZpZXcuaWQudG9TdHJpbmcoKSk7XG59O1xuXG5leHRlbnNpb25zLm9uUGFnZUNoYW5nZSA9IGFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAocGFnZUNoYW5nZU5vdGlmaWNhdGlvbikge1xuICB0aGlzLmxvZy5kZWJ1ZyhgUmVtb3RlIGRlYnVnZ2VyIG5vdGlmaWVkIHVzIG9mIGEgbmV3IHBhZ2UgbGlzdGluZzogJHtKU09OLnN0cmluZ2lmeShwYWdlQ2hhbmdlTm90aWZpY2F0aW9uKX1gKTtcbiAgaWYgKHRoaXMuc2VsZWN0aW5nTmV3UGFnZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBzZWxlY3RpbmcgYSBwYWdlLCBpZ25vcmluZycpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXRoaXMucmVtb3RlIHx8ICF0aGlzLnJlbW90ZS5pc0Nvbm5lY3RlZCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBoYXZlIG5vdCB5ZXQgY29ubmVjdGVkLCBpZ25vcmluZycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHthcHBJZEtleSwgcGFnZUFycmF5fSA9IHBhZ2VDaGFuZ2VOb3RpZmljYXRpb247XG5cbiAgbGV0IG5ld0lkcyA9IFtdO1xuICBsZXQgbmV3UGFnZXMgPSBbXTtcbiAgbGV0IGtleUlkID0gbnVsbDtcblxuICAvLyBDaGVja3MgaWYgYSBVUkwgaXMgYmxhY2tsaXN0ZWQgaW4gdGhlICdzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMnIGNhcGFiaWxpdHlcbiAgZnVuY3Rpb24gaXNVcmxJZ25vcmVkICh1cmwsIHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcykge1xuICAgIGNvbnN0IGlnbm9yZWRIb3N0cyA9IChzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMgfHwgJycpXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcCgoYikgPT4gYi50cmltKCkpXG4gICAgICAuZmlsdGVyKChiKSA9PiAhXy5pc0VtcHR5KGIpKTtcbiAgICBmb3IgKGNvbnN0IGlnbm9yZWRIb3N0IG9mIGlnbm9yZWRIb3N0cykge1xuICAgICAgaWYgKGlnbm9yZWRIb3N0ID09PSAnYWJvdXQ6YmxhbmsnICYmIHVybCA9PT0gJ2Fib3V0OmJsYW5rJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgaG9zdG5hbWUgPSBuZXcgVVJMKHVybCkuaG9zdG5hbWU7XG4gICAgICAgICAgaWYgKGhvc3RuYW1lID09PSBpZ25vcmVkSG9zdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAvLyBkbyBub3RoaW5nIGlmIGludmFsaWQgVVJMXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBwYWdlIG9mIHBhZ2VBcnJheSkge1xuICAgIGNvbnN0IGlkID0gcGFnZS5pZC50b1N0cmluZygpO1xuICAgIG5ld0lkcy5wdXNoKGlkKTtcbiAgICBpZiAocGFnZS5pc0tleSkge1xuICAgICAga2V5SWQgPSBpZDtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dElkID0gYCR7YXBwSWRLZXl9LiR7aWR9YDtcblxuICAgIC8vIGFkZCBpZiB0aGlzIGlzIGEgbmV3IHBhZ2VcbiAgICBpZiAoIV8uaW5jbHVkZXModGhpcy5jb250ZXh0cywgY29udGV4dElkKSkge1xuICAgICAgaWYgKGlzVXJsSWdub3JlZChwYWdlLnVybCwgdGhpcy5vcHRzLnNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IHRyYWNraW5nICcke3BhZ2UudXJsfScgcGFnZSBiZWNhdXNlIGl0IGlzIGJsYWNrbGlzdGVkLiBgICtcbiAgICAgICAgICBgJ3NhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcyc9JHt0aGlzLm9wdHMuc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UGFnZXMucHVzaChpZCk7XG4gICAgICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0SWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICgha2V5SWQpIHtcbiAgICAvLyBpZiB0aGVyZSBpcyBubyBrZXkgaWQsIHB1bGwgdGhlIGZpcnN0IGlkIGZyb20gdGhlIHBhZ2UgYXJyYXkgYW5kIHVzZSB0aGF0XG4gICAgLy8gYXMgYSBzdGFuZCBpblxuICAgIHRoaXMubG9nLmRlYnVnKCdObyBrZXkgaWQgZm91bmQuIENob29zaW5nIGZpcnN0IGlkIGZyb20gcGFnZSBhcnJheScpO1xuICAgIGtleUlkID0gbmV3SWRzWzBdIHx8IG51bGw7XG4gIH1cblxuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5jdXJDb250ZXh0KSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBkbyBub3QgYXBwZWFyIHRvIGhhdmUgd2luZG93IHNldCB5ZXQsIGlnbm9yaW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2N1ckFwcElkS2V5LCBjdXJQYWdlSWRLZXldID0gdGhpcy5jdXJDb250ZXh0LnNwbGl0KCcuJyk7XG5cbiAgaWYgKGN1ckFwcElkS2V5ICE9PSBhcHBJZEtleSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdQYWdlIGNoYW5nZSBub3QgcmVmZXJyaW5nIHRvIGN1cnJlbnRseSBzZWxlY3RlZCBhcHAsIGlnbm9yaW5nLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBuZXdQYWdlID0gbnVsbDtcbiAgaWYgKG5ld1BhZ2VzLmxlbmd0aCkge1xuICAgIG5ld1BhZ2UgPSBfLmxhc3QobmV3UGFnZXMpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBXZSBoYXZlIG5ldyBwYWdlcywgc2VsZWN0aW5nIHBhZ2UgJyR7bmV3UGFnZX0nYCk7XG4gIH0gZWxzZSBpZiAoIV8uaW5jbHVkZXMobmV3SWRzLCBjdXJQYWdlSWRLZXkpKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ05ldyBwYWdlIGxpc3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXIgZG9lcyBub3QgY29udGFpbiAnICtcbiAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgd2luZG93OyBhc3N1bWluZyBpdCBpcyBjbG9zZWQnKTtcbiAgICBpZiAoIXV0aWwuaGFzVmFsdWUoa2V5SWQpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcignRG8gbm90IGhhdmUgb3VyIGN1cnJlbnQgd2luZG93IGFueW1vcmUsIGFuZCB0aGVyZSAnICtcbiAgICAgICAgICAgICAgICAgICAnYXJlIG5vdCBhbnkgbW9yZSB0byBsb2FkISBEb2luZyBub3RoaW5nLi4uJyk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRVcmwodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgRGVidWdnZXIgYWxyZWFkeSBzZWxlY3RlZCBwYWdlICcke2tleUlkfScsIGAgK1xuICAgICAgICAgICAgICAgICBgY29uZmlybWluZyB0aGF0IGNob2ljZS5gKTtcbiAgICB0aGlzLmN1ckNvbnRleHQgPSBgJHthcHBJZEtleX0uJHtrZXlJZH1gO1xuICAgIG5ld1BhZ2UgPSBrZXlJZDtcbiAgfSBlbHNlIHtcbiAgICAvLyBhdCB0aGlzIHBvaW50LCB0aGVyZSBhcmUgbm8gbmV3IHBhZ2VzLCBhbmQgdGhlIGN1cnJlbnQgcGFnZSBzdGlsbCBleGlzdHNcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgaWYgcGFnZSBuZWVkcyB0byBsb2FkJyk7XG4gICAgLy8gSWYgYSB3aW5kb3cgbmF2aWdhdGVzIHRvIGFuIGFuY2hvciBpdCBkb2Vzbid0IGFsd2F5cyBmaXJlIGEgcGFnZVxuICAgIC8vIGNhbGxiYWNrIGV2ZW50LiBMZXQncyBjaGVjayBpZiB3ZSB3b3VuZCB1cCBpbiBzdWNoIGEgc2l0dWF0aW9uLlxuICAgIGNvbnN0IG5lZWRzUGFnZUxvYWQgPSAoKCkgPT4ge1xuICAgICAgLy8gbmVlZCB0byBtYXAgdGhlIHBhZ2UgaWRzIHRvIGNvbnRleHQgaWRzXG4gICAgICBjb25zdCBjb250ZXh0QXJyYXkgPSBfLm1hcChwYWdlQXJyYXksIChwYWdlKSA9PiBgJHthcHBJZEtleX0uJHtwYWdlLmlkfWApO1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgY29udGV4dCBleGlzdHMgaW4gYm90aCBvdXIgcmVjb3JkZWQgY29udGV4dHMsXG4gICAgICAvLyBhbmQgdGhlIHBhZ2UgYXJyYXlcbiAgICAgIHJldHVybiAhXy5pc0VxdWFsKF8uZmluZCh0aGlzLmNvbnRleHRzLCB0aGlzLmN1ckNvbnRleHQpLCBfLmZpbmQoY29udGV4dEFycmF5LCB0aGlzLmN1ckNvbnRleHQpKTtcbiAgICB9KSgpO1xuXG4gICAgaWYgKG5lZWRzUGFnZUxvYWQpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdQYWdlIGxvYWQgbmVlZGVkLiBMb2FkaW5nLi4uJyk7XG4gICAgICBhd2FpdCB0aGlzLnJlbW90ZS5wYWdlTG9hZCgpO1xuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKCdOZXcgcGFnZSBsaXN0aW5nIGlzIHNhbWUgYXMgb2xkLCBkb2luZyBub3RoaW5nJyk7XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcGFnZSBsaXN0aW5nIGlzbid0IGluZGljYXRpbmcgYSByZWRpcmVjdFxuICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgbGV0IGN1cnJlbnRQYWdlSWQgPSBwYXJzZUludChfLmxhc3QodGhpcy5jdXJDb250ZXh0LnNwbGl0KCcuJykpLCAxMCk7XG4gICAgbGV0IHBhZ2UgPSBfLmZpbmQocGFnZUFycmF5LCAocCkgPT4gcGFyc2VJbnQocC5pZCwgMTApID09PSBjdXJyZW50UGFnZUlkKTtcbiAgICBpZiAocGFnZSAmJiBwYWdlLnVybCAhPT0gdGhpcy5nZXRDdXJyZW50VXJsKCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBSZWRpcmVjdGVkIGZyb20gJyR7dGhpcy5nZXRDdXJyZW50VXJsKCl9JyB0byAnJHtwYWdlLnVybH0nYCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRVcmwocGFnZS51cmwpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1dGlsLmhhc1ZhbHVlKG5ld1BhZ2UpKSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gdHJ1ZTtcbiAgICBjb25zdCBvbGRDb250ZXh0ID0gdGhpcy5jdXJDb250ZXh0O1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IGAke2FwcElkS2V5fS4ke25ld1BhZ2V9YDtcbiAgICAvLyBkbyBub3Qgd2FpdCwgYXMgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSwgYW5kIHRoZSByZXNwb25zZSBpcyBub3QgbmVjZXNzYXJ5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrcywgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgIHRoaXMucmVtb3RlLnNlbGVjdFBhZ2UoYXBwSWRLZXksIHBhcnNlSW50KG5ld1BhZ2UsIDEwKSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5sb2cud2FybihgRmFpbGVkIHRvIHNlbGVjdCBwYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gb2xkQ29udGV4dDtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGluZ05ld1BhZ2UgPSBmYWxzZTtcbiAgfVxuICB0aGlzLndpbmRvd0hhbmRsZUNhY2hlID0gcGFnZUFycmF5O1xufTtcblxuXG5PYmplY3QuYXNzaWduKGNvbW1hbmRzLCBleHRlbnNpb25zLCBoZWxwZXJzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1h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
|
|
@@ -82,4 +82,4 @@ var _default = extensions;
|
|
|
82
82
|
exports.default = _default;require('source-map-support').install();
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2Nvb2tpZXMuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q29va2llcyIsImlzV2ViQ29udGV4dCIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJjb29raWVzIiwicmVtb3RlIiwiZGVjb2RlZENvb2tpZVZhbHVlcyIsIm1hcCIsImNvb2tpZSIsImRlY29kZVVSSSIsInZhbHVlIiwiZXJyb3IiLCJsb2ciLCJkZWJ1ZyIsIm5hbWUiLCJ3YXJuIiwidW5kZWZpbmVkIiwiXyIsInppcCIsImZpbHRlciIsImlzVW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwiZGVsZXRlQ29va2llIiwiY29va2llTmFtZSIsImZpbmQiLCJfZGVsZXRlQ29va2llIiwiZGVsZXRlQ29va2llcyIsInVybCIsInNlY3VyZSIsImRvbWFpbiIsInBhdGgiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvY29va2llcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5nZXRDb29raWVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29va2llcyAoKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgLy8gZ2V0IHRoZSBjb29raWVzIGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciwgb3IgYW4gZW1wdHkgb2JqZWN0XG4gIGNvbnN0IGNvb2tpZXMgPSBhd2FpdCB0aGlzLnJlbW90ZS5nZXRDb29raWVzKCkgfHwge2Nvb2tpZXM6IFtdfTtcblxuICAvLyB0aGUgdmFsdWUgaXMgVVJJIGVuY29kZWQsIHNvIGRlY29kZSBpdCBzYWZlbHlcbiAgY29uc3QgZGVjb2RlZENvb2tpZVZhbHVlcyA9IGNvb2tpZXMuY29va2llcy5tYXAoKGNvb2tpZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJKGNvb2tpZS52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBDb29raWUgJHtjb29raWUubmFtZX0gd2FzIG5vdCBkZWNvZGVkIHN1Y2Nlc3NmdWxseS4gQ29va2llIHZhbHVlOiAke2Nvb2tpZS52YWx1ZX1gKTtcbiAgICAgIHRoaXMubG9nLndhcm4oZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHppcCBjb29rZXMgd2l0aCBkZWNvZGVkIHZhbHVlLCByZW1vdmluZyB1bmRlZmluZWQgY29va2llIHZhbHVlc1xuICByZXR1cm4gXy56aXAoY29va2llcy5jb29raWVzLCBkZWNvZGVkQ29va2llVmFsdWVzKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gIV8uaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIC5tYXAoKFtjb29raWUsIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgY29va2llLCB7dmFsdWV9KSk7XG59O1xuXG5jb21tYW5kcy5kZWxldGVDb29raWUgPSBhc3luYyBmdW5jdGlvbiBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBjb29raWVzID0gYXdhaXQgdGhpcy5nZXRDb29raWVzKCk7XG4gIGNvbnN0IGNvb2tpZSA9IGNvb2tpZXMuZmluZCgoY29va2llKSA9PiBjb29raWUubmFtZSA9PT0gY29va2llTmFtZSk7XG4gIGlmICghY29va2llKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoYENvb2tpZSAnJHtjb29raWVOYW1lfScgbm90IGZvdW5kLiBJZ25vcmluZy5gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuX2RlbGV0ZUNvb2tpZShjb29raWUpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmNvbW1hbmRzLmRlbGV0ZUNvb2tpZXMgPSBhc3luYyBmdW5jdGlvbiBkZWxldGVDb29raWVzICgpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBjb29raWVzID0gYXdhaXQgdGhpcy5nZXRDb29raWVzKCk7XG4gIGZvciAoY29uc3QgY29va2llIG9mIGNvb2tpZXMpIHtcbiAgICBhd2FpdCB0aGlzLl9kZWxldGVDb29raWUoY29va2llKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmhlbHBlcnMuX2RlbGV0ZUNvb2tpZSA9IGFzeW5jIGZ1bmN0aW9uIF9kZWxldGVDb29raWUgKGNvb2tpZSkge1xuICBjb25zdCB1cmwgPSBgaHR0cCR7Y29va2llLnNlY3VyZSA/ICdzJyA6ICcnfTovLyR7Y29va2llLmRvbWFpbn0ke2Nvb2tpZS5wYXRofWA7XG4gIHJldHVybiBhd2FpdCB0aGlzLnJlbW90ZS5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHVybCk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQUYsUUFB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
|
|
@@ -33,4 +33,4 @@ var _default = extensions;
|
|
|
33
33
|
exports.default = _default;require('source-map-support').install();
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2RldmljZUluZm8uanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiaW5mb0J5V2RhIiwicHJveHlDb21tYW5kIiwiaXNSZWFsRGV2aWNlIiwibG9ja2Rvd25JbmZvIiwidXRpbGl0aWVzIiwiZ2V0RGV2aWNlSW5mbyIsIm9wdHMiLCJkZXZpY2UiLCJ1ZGlkIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2RldmljZUluZm8uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbGl0aWVzIH0gZnJvbSAnYXBwaXVtLWlvcy1kZXZpY2UnO1xuXG5jb25zdCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogUmV0dXJucyBkZXZpY2UgaW5mby5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcmVzcG9uc2Ugb2YgYC93ZGEvZGV2aWNlL2luZm8nYFxuICogQHRocm93cyB7RXJyb3J9IGlmIGFuIGVycm9yIHJhaXNlZCBieSBjb21tYW5kXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZUluZm8gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VJbmZvICgpIHtcbiAgY29uc3QgaW5mb0J5V2RhID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2luZm8nLCAnR0VUJyk7XG5cbiAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICBjb25zdCBsb2NrZG93bkluZm8gPSBhd2FpdCB1dGlsaXRpZXMuZ2V0RGV2aWNlSW5mbyh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpO1xuICAgIHJldHVybiB7Li4uaW5mb0J5V2RhLCAuLi57bG9ja2Rvd25JbmZvfX07XG4gIH1cblxuICByZXR1cm4gaW5mb0J5V2RhO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5CO0FBQUEsTUFBdUJDLFFBQVEsR0FBRyxFQUFsQzs7O0FBUUFBLFFBQVEsQ0FBQ0MsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsTUFBTUMsU0FBUyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxDQUFrQixrQkFBbEIsRUFBc0MsS0FBdEMsQ0FBeEI7O0VBRUEsSUFBSSxLQUFLQyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLE1BQU1DLDJCQUFVQyxhQUFWLENBQXdCLEtBQUtDLElBQUwsQ0FBVUMsTUFBVixDQUFpQkMsSUFBekMsQ0FBM0I7SUFDQSxPQUFPLEVBQUMsR0FBR1IsU0FBSjtNQUFlLEdBQUc7UUFBQ0c7TUFBRDtJQUFsQixDQUFQO0VBQ0Q7O0VBRUQsT0FBT0gsU0FBUDtBQUNELENBVEQ7O0FBV0FTLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjYixVQUFkLEVBQTBCQyxRQUExQjtlQUVlRCxVIn0=
|
|
@@ -327,4 +327,4 @@ var _default = extensions;
|
|
|
327
327
|
exports.default = _default;require('source-map-support').install();
|
|
328
328
|
|
|
329
329
|
|
|
330
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9lbGVtZW50LmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZXh0ZW5zaW9ucyIsImVsZW1lbnREaXNwbGF5ZWQiLCJlbCIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwiaXNXZWJDb250ZXh0IiwiYXRvbXNFbGVtZW50IiwiZ2V0QXRvbXNFbGVtZW50IiwiZXhlY3V0ZUF0b20iLCJwcm94eUNvbW1hbmQiLCJlbGVtZW50RW5hYmxlZCIsImVsZW1lbnRTZWxlY3RlZCIsImdldE5hbWUiLCJzY3JpcHQiLCJnZXROYXRpdmVBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJnZXRDb250ZW50U2l6ZSIsInZhbHVlIiwiaW5jbHVkZXMiLCJfIiwiaXNOdWxsIiwiaXNTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QXR0cmlidXRlIiwiZ2V0UHJvcGVydHkiLCJwcm9wZXJ0eSIsImdldFRleHQiLCJnZXRFbGVtZW50UmVjdCIsIngiLCJ5IiwiZ2V0TG9jYXRpb24iLCJ3aWR0aCIsImhlaWdodCIsImdldFNpemUiLCJnZXROYXRpdmVSZWN0IiwibG9jIiwib3B0cyIsImFic29sdXRlV2ViTG9jYXRpb25zIiwieE9mZnNldCIsInlPZmZzZXQiLCJleGVjdXRlIiwicmVjdCIsImdldExvY2F0aW9uSW5WaWV3IiwicHJlcGFyZUlucHV0VmFsdWUiLCJpbnAiLCJpc0FycmF5IiwiaXNGaW5pdGUiLCJzb21lIiwiZiIsIkVycm9yIiwiam9pbiIsIm1hcCIsImsiLCJzZXRWYWx1ZUltbWVkaWF0ZSIsImxvZyIsImluZm8iLCJzZXRWYWx1ZSIsImtleXMiLCJjbGVhciIsImVycm9ycyIsIk5vdFlldEltcGxlbWVudGVkRXJyb3IiLCJ0eXBlIiwibG9jYXRvciIsImNvbnRlbnRIZWlnaHQiLCJjaGlsZHJlbiIsImZpbmRFbE9yRWxzIiwibGVuZ3RoIiwiaGVhZCIsImZpcnN0UmVjdCIsImxhc3RSZWN0IiwibGFzdCIsImVsc0luUm93IiwiaW5pdGlhbFJlY3RzIiwiaSIsInB1c2giLCJzcGFjZUJldHdlZW5FbHMiLCJudW1Sb3dzIiwiTWF0aCIsImNlaWwiLCJzaXplIiwib3JpZ2luIiwidG9wIiwibGVmdCIsInNjcm9sbGFibGVPZmZzZXQiLCJpc0tleWJvYXJkU2hvd24iLCJmaW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMiLCJpZ24iLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBQUEsTUFBcUJDLFVBQVUsR0FBRyxFQUFsQzs7O0FBRUFELFFBQVEsQ0FBQ0UsZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsQ0FBaUNDLEVBQWpDLEVBQXFDO0FBQy9EQSxFQUFBQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0FBQ0EsTUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7QUFDdkIsVUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0FBQ0EsV0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIsY0FBakIsRUFBaUMsQ0FBQ0YsWUFBRCxDQUFqQyxDQUFiO0FBQ0Q7O0FBRUQsU0FBTyxNQUFNLEtBQUtHLFlBQUwsQ0FBbUIsWUFBV1AsRUFBRyxZQUFqQyxFQUE4QyxLQUE5QyxDQUFiO0FBQ0QsQ0FSRDs7QUFVQUgsUUFBUSxDQUFDVyxjQUFULEdBQTBCLGVBQWVBLGNBQWYsQ0FBK0JSLEVBQS9CLEVBQW1DO0FBQzNEQSxFQUFBQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0FBQ0EsTUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7QUFDdkIsVUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0FBQ0EsV0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIsWUFBakIsRUFBK0IsQ0FBQ0YsWUFBRCxDQUEvQixDQUFiO0FBQ0Q7O0FBRUQsU0FB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ckIsR0FBZ0MyQyxlQUFlLElBQUlDLE9BQU8sR0FBRyxDQUFkLENBQS9EO0FBQ0E7QUFDRDs7QUFDRDtBQUFTLGNBQU0sSUFBSTNCLEtBQUosQ0FBVyw0QkFBMkJZLElBQUssWUFBakMsR0FDQyw2Q0FEWCxDQUFOO0FBMUJYO0FBNkJEOztBQUNELFFBQU1rQixJQUFJLEdBQUcsTUFBTSxLQUFLOUMsT0FBTCxDQUFhaEMsRUFBYixDQUFuQjtBQUNBLFFBQU0rRSxNQUFNLEdBQUcsTUFBTSxLQUFLdEMsaUJBQUwsQ0FBdUJ6QyxFQUF2QixDQUFyQjtBQUVBLFNBQU9vQixJQUFJLENBQUNDLFNBQUwsQ0FBZTtBQUNwQlMsSUFBQUEsS0FBSyxFQUFFZ0QsSUFBSSxDQUFDaEQsS0FEUTtBQUVwQkMsSUFBQUEsTUFBTSxFQUFFK0MsSUFBSSxDQUFDL0MsTUFGTztBQUdwQmlELElBQUFBLEdBQUcsRUFBRUQsTUFBTSxDQUFDbkQsQ0FIUTtBQUlwQnFELElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDcEQsQ0FKTztBQUtwQnVELElBQUFBLGdCQUFnQixFQUFFcEI7QUFMRSxHQUFmLENBQVA7QUFPRCxDQXBFRDs7QUFzRUFqRSxRQUFRLENBQUNzRixlQUFULEdBQTJCLGVBQWVBLGVBQWYsR0FBa0M7QUFDM0QsTUFBSTtBQUNGLFVBQU0sS0FBS0MsMkJBQUwsQ0FBaUMsWUFBakMsRUFBK0MseUJBQS9DLEVBQTBFLEtBQTFFLENBQU47QUFDQSxXQUFPLElBQVA7QUFDRCxHQUhELENBR0UsT0FBT0MsR0FBUCxFQUFZO0FBQ1osV0FBTyxLQUFQO0FBQ0Q7QUFDRixDQVBEOztBQVNBQyxNQUFNLENBQUNDLE1BQVAsQ0FBY3pGLFVBQWQsRUFBMEJELFFBQTFCO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmVsZW1lbnREaXNwbGF5ZWQgPSBhc3luYyBmdW5jdGlvbiBlbGVtZW50RGlzcGxheWVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19kaXNwbGF5ZWQnLCBbYXRvbXNFbGVtZW50XSk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2Rpc3BsYXllZGAsICdHRVQnKTtcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnRFbmFibGVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudEVuYWJsZWQgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2lzX2VuYWJsZWQnLCBbYXRvbXNFbGVtZW50XSk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2VuYWJsZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50U2VsZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiBlbGVtZW50U2VsZWN0ZWQgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2lzX3NlbGVjdGVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9zZWxlY3RlZGAsICdHRVQnKTtcbn07XG5cbmNvbW1hbmRzLmdldE5hbWUgPSBhc3luYyBmdW5jdGlvbiBnZXROYW1lIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIGNvbnN0IHNjcmlwdCA9ICdyZXR1cm4gYXJndW1lbnRzWzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSc7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW3NjcmlwdCwgW2F0b21zRWxlbWVudF1dKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vbmFtZWAsICdHRVQnKTtcbn07XG5cbmNvbW1hbmRzLmdldE5hdGl2ZUF0dHJpYnV0ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldE5hdGl2ZUF0dHJpYnV0ZSAoYXR0cmlidXRlLCBlbCkge1xuICBpZiAoYXR0cmlidXRlID09PSAnY29udGVudFNpemUnKSB7XG4gICAgLy8gZG9uJ3QgcHJveHkgcmVxdWVzdHMgZm9yIHRoZSBjb250ZW50IHNpemUgb2YgYSBzY3JvbGxhYmxlIGVsZW1lbnRcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRDb250ZW50U2l6ZShlbCk7XG4gIH1cblxuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG5cbiAgLy8gb3RoZXJ3aXNlIGxldCBXREEgaGFuZGxlIGF0dHJpYnV0ZSByZXF1ZXN0c1xuICBsZXQgdmFsdWUgPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vYXR0cmlidXRlLyR7YXR0cmlidXRlfWAsICdHRVQnKTtcbiAgLy8gVHJhbnNmb3JtIHRoZSByZXN1bHQgZm9yIHRoZSBjYXNlIHdoZW4gV0RBIHJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBmb3IgYSBib29sZWFuIHZhbHVlXG4gIGlmIChbMCwgMV0uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgdmFsdWUgPSAhIXZhbHVlO1xuICB9XG4gIC8vIFRoZSByZXR1cm5lZCB2YWx1ZSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIGFjY29yZGluZyB0byBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNnZXQtZWxlbWVudC1hdHRyaWJ1dGVcbiAgcmV0dXJuIChfLmlzTnVsbCh2YWx1ZSkgfHwgXy5pc1N0cmluZyh2YWx1ZSkpID8gdmFsdWUgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG59O1xuXG5jb21tYW5kcy5nZXRBdHRyaWJ1dGUgPSBhc3luYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUgKGF0dHJpYnV0ZSwgZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXROYXRpdmVBdHRyaWJ1dGUoYXR0cmlidXRlLCBlbCk7XG4gIH1cbiAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZ2V0X2F0dHJpYnV0ZV92YWx1ZScsIFthdG9tc0VsZW1lbnQsIGF0dHJpYnV0ZV0pO1xufTtcblxuY29tbWFuZHMuZ2V0UHJvcGVydHkgPSBhc3luYyBmdW5jdGlvbiBnZXRQcm9wZXJ0eSAocHJvcGVydHksIGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlQXR0cmlidXRlKHByb3BlcnR5LCBlbCk7XG4gIH1cbiAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZ2V0X2F0dHJpYnV0ZV92YWx1ZScsIFthdG9tc0VsZW1lbnQsIHByb3BlcnR5XSk7XG59O1xuXG5jb21tYW5kcy5nZXRUZXh0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0VGV4dCAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L3RleHRgLCAnR0VUJyk7XG4gIH1cbiAgbGV0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF90ZXh0JywgW2F0b21zRWxlbWVudF0pO1xufTtcblxuY29tbWFuZHMuZ2V0RWxlbWVudFJlY3QgPSBhc3luYyBmdW5jdGlvbiBnZXRFbGVtZW50UmVjdCAoZWwpIHtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICAvLyBNb2JpbGUgc2FmYXJpIGRvZXNuJ3Qgc3VwcG9ydCByZWN0XG4gICAgY29uc3Qge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbCk7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gYXdhaXQgdGhpcy5nZXRTaXplKGVsKTtcbiAgICByZXR1cm4ge3gsIHksIHdpZHRoLCBoZWlnaHR9O1xuICB9XG5cbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXROYXRpdmVSZWN0KGVsKTtcbn07XG5cbmV4dGVuc2lvbnMuZ2V0TmF0aXZlUmVjdCA9IGFzeW5jIGZ1bmN0aW9uIGdldE5hdGl2ZVJlY3QgKGVsKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vcmVjdGAsICdHRVQnKTtcbn07XG5cbmNvbW1hbmRzLmdldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9jYXRpb24gKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCBhdG9tc0VsZW1lbnQgPSBhd2FpdCB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gICAgbGV0IGxvYyA9IGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF90b3BfbGVmdF9jb29yZGluYXRlcycsIFthdG9tc0VsZW1lbnRdKTtcbiAgICBpZiAodGhpcy5vcHRzLmFic29sdXRlV2ViTG9jYXRpb25zKSB7XG4gICAgICBjb25zdCBzY3JpcHQgPSAncmV0dXJuIFsnICtcbiAgICAgICAgJ01hdGgubWF4KHdpbmRvdy5wYWdlWE9mZnNldCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpLCcgK1xuICAgICAgICAnTWF0aC5tYXgod2luZG93LnBhZ2VZT2Zmc2V0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApXTsnO1xuICAgICAgY29uc3QgW3hPZmZzZXQsIHlPZmZzZXRdID0gYXdhaXQgdGhpcy5leGVjdXRlKHNjcmlwdCk7XG4gICAgICBsb2MueCArPSB4T2Zmc2V0O1xuICAgICAgbG9jLnkgKz0geU9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIGxvYztcbiAgfVxuXG4gIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGVsKTtcbiAgcmV0dXJuIHt4OiByZWN0LngsIHk6IHJlY3QueX07XG59O1xuXG5jb21tYW5kcy5nZXRMb2NhdGlvbkluVmlldyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvY2F0aW9uSW5WaWV3IChlbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbCk7XG59O1xuXG5jb21tYW5kcy5nZXRTaXplID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2l6ZSAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfc2l6ZScsIFt0aGlzLmdldEF0b21zRWxlbWVudChlbCldKTtcbiAgfVxuXG4gIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGVsKTtcbiAgcmV0dXJuIHt3aWR0aDogcmVjdC53aWR0aCwgaGVpZ2h0OiByZWN0LmhlaWdodH07XG59O1xuXG4vKipcbiAqIFByZXBhcmVzIHRoZSBpbnB1dCB2YWx1ZSB0byBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gV0RBLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PHN0cmluZz58bnVtYmVyfSBpbnAgVGhlIGFjdHVhbCB0ZXh0IHRvIHR5cGUuXG4gKiBBY2NlcHRhYmxlIHZhbHVlcyBvZiBgaW5wYDpcbiAqICAgWydzb21lIHRleHQnXVxuICogICBbJ3MnLCAnbycsICdtJywgJ2UnLCAnICcsICd0JywgJ2UnLCAneCcsICd0J11cbiAqICAgJ3NvbWUgdGV4dCdcbiAqICAgMTIzNFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB2YWx1ZSBpcyBub3QgYWNjZXB0YWJsZSBmb3IgaW5wdXRcbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgcHJlcHJvY2Vzc2VkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVJbnB1dFZhbHVlIChpbnApIHtcbiAgaWYgKCFbXy5pc0FycmF5LCBfLmlzU3RyaW5nLCBfLmlzRmluaXRlXS5zb21lKChmKSA9PiBmKGlucCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHN0cmluZ3MsIG51bWJlcnMgYW5kIGFycmF5cyBhcmUgc3VwcG9ydGVkIGFzIGlucHV0IGFyZ3VtZW50cy4gYCArXG4gICAgICBgUmVjZWl2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoaW5wKX1gKTtcbiAgfVxuXG4gIC8vIG1ha2UgaXQgaW50byBhIHN0cmluZywgc28gdGhlbiB3ZSBhc3N1cmVcbiAgLy8gdGhlIGFycmF5IGl0ZW1zIGFyZSBzaW5nbGUgY2hhcmFjdGVyc1xuICBpZiAoXy5pc0FycmF5KGlucCkpIHtcbiAgICBpbnAgPSBpbnAuam9pbignJyk7XG4gIH0gZWxzZSBpZiAoXy5pc0Zpbml0ZShpbnApKSB7XG4gICAgaW5wID0gYCR7aW5wfWA7XG4gIH1cbiAgLy8gVGhlIGBzcGxpdGAgbWV0aG9kIG11c3Qgbm90IGJlIHVzZWQgb24gdGhlIHN0cmluZ1xuICAvLyB0byBwcm9wZXJseSBoYW5kbGUgYWxsIFVuaWNvZGUgY29kZSBwb2ludHNcbiAgcmV0dXJuIFsuLi5pbnBdLm1hcCgoaykgPT4ge1xuICAgIGlmIChbJ1xcdUUwMDYnLCAnXFx1RTAwNyddLmluY2x1ZGVzKGspKSB7IC8vIFJFVFVSTiBvciBFTlRFUlxuICAgICAgcmV0dXJuICdcXG4nO1xuICAgIH1cbiAgICBpZiAoWydcXHVFMDAzJywgJ1xcdWUwMTcnXS5pbmNsdWRlcyhrKSkgeyAvLyBCQUNLU1BBQ0Ugb3IgREVMRVRFXG4gICAgICByZXR1cm4gJ1xcYic7XG4gICAgfVxuICAgIHJldHVybiBrO1xuICB9KTtcbn1cblxuY29tbWFuZHMuc2V0VmFsdWVJbW1lZGlhdGUgPSBhc3luYyBmdW5jdGlvbiBzZXRWYWx1ZUltbWVkaWF0ZSAodmFsdWUsIGVsKSB7XG4gIC8vIFdEQSBkb2VzIG5vdCBwcm92aWRlIG5vIHdheSB0byBzZXQgdGhlIHZhbHVlIGRpcmVjdGx5XG4gIHRoaXMubG9nLmluZm8oJ1RoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gYnlwYXNzIHR5cGluZyB1c2luZyBYQ1VJVGVzdC4gU2V0dGluZyB2YWx1ZSB0aHJvdWdoIGtleWJvYXJkJyk7XG4gIGF3YWl0IHRoaXMuc2V0VmFsdWUodmFsdWUsIGVsKTtcbn07XG5cbmNvbW1hbmRzLnNldFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWUgKHZhbHVlLCBlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS92YWx1ZWAsICdQT1NUJywge1xuICAgICAgdmFsdWU6IHByZXBhcmVJbnB1dFZhbHVlKHZhbHVlKSxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2NsaWNrJywgW2F0b21zRWxlbWVudF0pO1xuICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCd0eXBlJywgW2F0b21zRWxlbWVudCwgdmFsdWVdKTtcbn07XG5cbmNvbW1hbmRzLmtleXMgPSBhc3luYyBmdW5jdGlvbiBrZXlzICh2YWx1ZSkge1xuICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9rZXlzJywgJ1BPU1QnLCB7XG4gICAgdmFsdWU6IHByZXBhcmVJbnB1dFZhbHVlKHZhbHVlKSxcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5jbGVhciA9IGFzeW5jIGZ1bmN0aW9uIGNsZWFyIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2NsZWFyJywgW2F0b21zRWxlbWVudF0pO1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vY2xlYXJgLCAnUE9TVCcpO1xufTtcblxuY29tbWFuZHMuZ2V0Q29udGVudFNpemUgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZW50U2l6ZSAoZWwpIHtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IoJ1N1cHBvcnQgZm9yIGdldENvbnRlbnRTaXplIGZvciB3ZWIgY29udGV4dCBpcyBub3QgeWV0IGltcGxlbWVudGVkLiBQbGVhc2UgY29udGFjdCBhbiBBcHBpdW0gZGV2Jyk7XG4gIH1cblxuICBjb25zdCB0eXBlID0gYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ3R5cGUnLCBlbCk7XG5cbiAgaWYgKHR5cGUgIT09ICdYQ1VJRWxlbWVudFR5cGVUYWJsZScgJiZcbiAgICAgIHR5cGUgIT09ICdYQ1VJRWxlbWVudFR5cGVDb2xsZWN0aW9uVmlldycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGdldCBjb250ZW50IHNpemUgZm9yIHR5cGUgJyR7dHlwZX0nLCBvbmx5IGZvciBgICtcbiAgICAgICAgICAgICAgICAgICAgYHRhYmxlcyBhbmQgY29sbGVjdGlvbiB2aWV3c2ApO1xuICB9XG4gIGxldCBsb2NhdG9yID0gJyonO1xuICBpZiAodHlwZSA9PT0gJ1hDVUlFbGVtZW50VHlwZVRhYmxlJykge1xuICAgIC8vIG9ubHkgZmluZCB0YWJsZSBjZWxscywgbm90IGp1c3QgYW55IGNoaWxkcmVuXG4gICAgbG9jYXRvciA9ICdYQ1VJRWxlbWVudFR5cGVDZWxsJztcbiAgfVxuXG4gIGxldCBjb250ZW50SGVpZ2h0ID0gMDtcbiAgY29uc3QgY2hpbGRyZW4gPSBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzKGBjbGFzcyBjaGFpbmAsIGxvY2F0b3IsIHRydWUsIGVsKTtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIGlmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBlbGVtZW50LCB3ZSBjYW4gb3B0aW1pemUgdG8gbWFrZSBqdXN0IG9uZVxuICAgIC8vIGNhbGwgdG8gV0RBXG4gICAgY29uc3QgcmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgY29udGVudEhlaWdodCA9IHJlY3QuaGVpZ2h0O1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIC8vIG90aGVyd2lzZSBpZiB3ZSBoYXZlIG11bHRpcGxlIGVsZW1lbnRzLCBsb2dpYyBkaWZmZXJzIGJhc2VkIG9uIGVsZW1lbnRcbiAgICAvLyB0eXBlXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdYQ1VJRWxlbWVudFR5cGVUYWJsZSc6IHtcbiAgICAgICAgY29uc3QgZmlyc3RSZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChfLmhlYWQoY2hpbGRyZW4pKTtcbiAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KF8ubGFzdChjaGlsZHJlbikpO1xuICAgICAgICBjb250ZW50SGVpZ2h0ID0gbGFzdFJlY3QueSArIGxhc3RSZWN0LmhlaWdodCAtIGZpcnN0UmVjdC55O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1hDVUlFbGVtZW50VHlwZUNvbGxlY3Rpb25WaWV3Jzoge1xuICAgICAgICBsZXQgZWxzSW5Sb3cgPSAxOyAvLyB3ZSBrbm93IHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIHJvd1xuICAgICAgICBsZXQgZmlyc3RSZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChfLmhlYWQoY2hpbGRyZW4pKTtcbiAgICAgICAgbGV0IGluaXRpYWxSZWN0cyA9IFtmaXJzdFJlY3RdO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgcmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoY2hpbGRyZW5baV0pO1xuICAgICAgICAgIGluaXRpYWxSZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgICAgIGlmIChyZWN0LnkgIT09IGZpcnN0UmVjdC55KSB7XG4gICAgICAgICAgICBlbHNJblJvdyA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3BhY2VCZXR3ZWVuRWxzID0gaW5pdGlhbFJlY3RzW2Vsc0luUm93XS55IC0gaW5pdGlhbFJlY3RzW2Vsc0luUm93IC0gMV0ueSAtIGluaXRpYWxSZWN0c1tlbHNJblJvdyAtIDFdLmhlaWdodDtcbiAgICAgICAgY29uc3QgbnVtUm93cyA9IE1hdGguY2VpbChjaGlsZHJlbi5sZW5ndGggLyBlbHNJblJvdyk7XG5cbiAgICAgICAgLy8gYXNzdW1lIGFsbCBjZWxscyBhcmUgdGhlIHNhbWUgaGVpZ2h0XG4gICAgICAgIGNvbnRlbnRIZWlnaHQgPSAobnVtUm93cyAqIGZpcnN0UmVjdC5oZWlnaHQpICsgKHNwYWNlQmV0d2VlbkVscyAqIChudW1Sb3dzIC0gMSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgUHJvZ3JhbW1pbmcgZXJyb3I6IHR5cGUgJyR7dHlwZX0nIHdhcyBub3QgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHZhbGlkIGJ1dCBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVqZWN0ZWRgKTtcbiAgICB9XG4gIH1cbiAgY29uc3Qgc2l6ZSA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShlbCk7XG4gIGNvbnN0IG9yaWdpbiA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcoZWwpO1xuICAvLyBhdHRyaWJ1dGVzIGhhdmUgdG8gYmUgc3RyaW5ncywgc28gc3RyaW5naWZ5IHRoaXMgdXBcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICB3aWR0aDogc2l6ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHNpemUuaGVpZ2h0LFxuICAgIHRvcDogb3JpZ2luLnksXG4gICAgbGVmdDogb3JpZ2luLngsXG4gICAgc2Nyb2xsYWJsZU9mZnNldDogY29udGVudEhlaWdodFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmlzS2V5Ym9hcmRTaG93biA9IGFzeW5jIGZ1bmN0aW9uIGlzS2V5Ym9hcmRTaG93biAoKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoJ2NsYXNzIG5hbWUnLCAnWENVSUVsZW1lbnRUeXBlS2V5Ym9hcmQnLCBmYWxzZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGlnbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
330
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImV4dGVuc2lvbnMiLCJlbGVtZW50RGlzcGxheWVkIiwiZWwiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImlzV2ViQ29udGV4dCIsImF0b21zRWxlbWVudCIsImdldEF0b21zRWxlbWVudCIsImV4ZWN1dGVBdG9tIiwicHJveHlDb21tYW5kIiwiZWxlbWVudEVuYWJsZWQiLCJlbGVtZW50U2VsZWN0ZWQiLCJnZXROYW1lIiwic2NyaXB0IiwiZ2V0TmF0aXZlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZ2V0Q29udGVudFNpemUiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiXyIsImlzTnVsbCIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEF0dHJpYnV0ZSIsImdldFByb3BlcnR5IiwicHJvcGVydHkiLCJnZXRUZXh0IiwiZ2V0RWxlbWVudFJlY3QiLCJ4IiwieSIsImdldExvY2F0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJnZXRTaXplIiwiZ2V0TmF0aXZlUmVjdCIsImxvYyIsIm9wdHMiLCJhYnNvbHV0ZVdlYkxvY2F0aW9ucyIsInhPZmZzZXQiLCJ5T2Zmc2V0IiwiZXhlY3V0ZSIsInJlY3QiLCJnZXRMb2NhdGlvbkluVmlldyIsInByZXBhcmVJbnB1dFZhbHVlIiwiaW5wIiwiaXNBcnJheSIsImlzRmluaXRlIiwic29tZSIsImYiLCJFcnJvciIsImpvaW4iLCJtYXAiLCJrIiwic2V0VmFsdWVJbW1lZGlhdGUiLCJsb2ciLCJpbmZvIiwic2V0VmFsdWUiLCJrZXlzIiwiY2xlYXIiLCJlcnJvcnMiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwidHlwZSIsImxvY2F0b3IiLCJjb250ZW50SGVpZ2h0IiwiY2hpbGRyZW4iLCJmaW5kRWxPckVscyIsImxlbmd0aCIsImhlYWQiLCJmaXJzdFJlY3QiLCJsYXN0UmVjdCIsImxhc3QiLCJlbHNJblJvdyIsImluaXRpYWxSZWN0cyIsImkiLCJwdXNoIiwic3BhY2VCZXR3ZWVuRWxzIiwibnVtUm93cyIsIk1hdGgiLCJjZWlsIiwic2l6ZSIsIm9yaWdpbiIsInRvcCIsImxlZnQiLCJzY3JvbGxhYmxlT2Zmc2V0IiwiaXNLZXlib2FyZFNob3duIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiaWduIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5lbGVtZW50RGlzcGxheWVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudERpc3BsYXllZCAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnaXNfZGlzcGxheWVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9kaXNwbGF5ZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50RW5hYmxlZCA9IGFzeW5jIGZ1bmN0aW9uIGVsZW1lbnRFbmFibGVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19lbmFibGVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9lbmFibGVkYCwgJ0dFVCcpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudFNlbGVjdGVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudFNlbGVjdGVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19zZWxlY3RlZCcsIFthdG9tc0VsZW1lbnRdKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vc2VsZWN0ZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXROYW1lID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmFtZSAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBjb25zdCBzY3JpcHQgPSAncmV0dXJuIGFyZ3VtZW50c1swXS50YWdOYW1lLnRvTG93ZXJDYXNlKCknO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIFthdG9tc0VsZW1lbnRdXSk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L25hbWVgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXROYXRpdmVBdHRyaWJ1dGUgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVBdHRyaWJ1dGUgKGF0dHJpYnV0ZSwgZWwpIHtcbiAgaWYgKGF0dHJpYnV0ZSA9PT0gJ2NvbnRlbnRTaXplJykge1xuICAgIC8vIGRvbid0IHByb3h5IHJlcXVlc3RzIGZvciB0aGUgY29udGVudCBzaXplIG9mIGEgc2Nyb2xsYWJsZSBlbGVtZW50XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q29udGVudFNpemUoZWwpO1xuICB9XG5cbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuXG4gIC8vIG90aGVyd2lzZSBsZXQgV0RBIGhhbmRsZSBhdHRyaWJ1dGUgcmVxdWVzdHNcbiAgbGV0IHZhbHVlID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2F0dHJpYnV0ZS8ke2F0dHJpYnV0ZX1gLCAnR0VUJyk7XG4gIC8vIFRyYW5zZm9ybSB0aGUgcmVzdWx0IGZvciB0aGUgY2FzZSB3aGVuIFdEQSByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gZm9yIGEgYm9vbGVhbiB2YWx1ZVxuICBpZiAoWzAsIDFdLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgIHZhbHVlID0gISF2YWx1ZTtcbiAgfVxuICAvLyBUaGUgcmV0dXJuZWQgdmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBhY2NvcmRpbmcgdG8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZ2V0LWVsZW1lbnQtYXR0cmlidXRlXG4gIHJldHVybiAoXy5pc051bGwodmFsdWUpIHx8IF8uaXNTdHJpbmcodmFsdWUpKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufTtcblxuY29tbWFuZHMuZ2V0QXR0cmlidXRlID0gYXN5bmMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlIChhdHRyaWJ1dGUsIGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWwpO1xuICB9XG4gIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF9hdHRyaWJ1dGVfdmFsdWUnLCBbYXRvbXNFbGVtZW50LCBhdHRyaWJ1dGVdKTtcbn07XG5cbmNvbW1hbmRzLmdldFByb3BlcnR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0UHJvcGVydHkgKHByb3BlcnR5LCBlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE5hdGl2ZUF0dHJpYnV0ZShwcm9wZXJ0eSwgZWwpO1xuICB9XG4gIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF9hdHRyaWJ1dGVfdmFsdWUnLCBbYXRvbXNFbGVtZW50LCBwcm9wZXJ0eV0pO1xufTtcblxuY29tbWFuZHMuZ2V0VGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldFRleHQgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS90ZXh0YCwgJ0dFVCcpO1xuICB9XG4gIGxldCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfdGV4dCcsIFthdG9tc0VsZW1lbnRdKTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3QgKGVsKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgLy8gTW9iaWxlIHNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgcmVjdFxuICAgIGNvbnN0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShlbCk7XG4gICAgcmV0dXJuIHt4LCB5LCB3aWR0aCwgaGVpZ2h0fTtcbiAgfVxuXG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlUmVjdChlbCk7XG59O1xuXG5leHRlbnNpb25zLmdldE5hdGl2ZVJlY3QgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVSZWN0IChlbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L3JlY3RgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXRMb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldExvY2F0aW9uIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gYXdhaXQgdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIGxldCBsb2MgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfdG9wX2xlZnRfY29vcmRpbmF0ZXMnLCBbYXRvbXNFbGVtZW50XSk7XG4gICAgaWYgKHRoaXMub3B0cy5hYnNvbHV0ZVdlYkxvY2F0aW9ucykge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gJ3JldHVybiBbJyArXG4gICAgICAgICdNYXRoLm1heCh3aW5kb3cucGFnZVhPZmZzZXQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSwnICtcbiAgICAgICAgJ01hdGgubWF4KHdpbmRvdy5wYWdlWU9mZnNldCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKV07JztcbiAgICAgIGNvbnN0IFt4T2Zmc2V0LCB5T2Zmc2V0XSA9IGF3YWl0IHRoaXMuZXhlY3V0ZShzY3JpcHQpO1xuICAgICAgbG9jLnggKz0geE9mZnNldDtcbiAgICAgIGxvYy55ICs9IHlPZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiBsb2M7XG4gIH1cblxuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbCk7XG4gIHJldHVybiB7eDogcmVjdC54LCB5OiByZWN0Lnl9O1xufTtcblxuY29tbWFuZHMuZ2V0TG9jYXRpb25JblZpZXcgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2NhdGlvbkluVmlldyAoZWwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xufTtcblxuY29tbWFuZHMuZ2V0U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFNpemUgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZ2V0X3NpemUnLCBbdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpXSk7XG4gIH1cblxuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbCk7XG4gIHJldHVybiB7d2lkdGg6IHJlY3Qud2lkdGgsIGhlaWdodDogcmVjdC5oZWlnaHR9O1xufTtcblxuLyoqXG4gKiBQcmVwYXJlcyB0aGUgaW5wdXQgdmFsdWUgdG8gYmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIFdEQS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxzdHJpbmc+fG51bWJlcn0gaW5wIFRoZSBhY3R1YWwgdGV4dCB0byB0eXBlLlxuICogQWNjZXB0YWJsZSB2YWx1ZXMgb2YgYGlucGA6XG4gKiAgIFsnc29tZSB0ZXh0J11cbiAqICAgWydzJywgJ28nLCAnbScsICdlJywgJyAnLCAndCcsICdlJywgJ3gnLCAndCddXG4gKiAgICdzb21lIHRleHQnXG4gKiAgIDEyMzRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdmFsdWUgaXMgbm90IGFjY2VwdGFibGUgZm9yIGlucHV0XG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gVGhlIHByZXByb2Nlc3NlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBwcmVwYXJlSW5wdXRWYWx1ZSAoaW5wKSB7XG4gIGlmICghW18uaXNBcnJheSwgXy5pc1N0cmluZywgXy5pc0Zpbml0ZV0uc29tZSgoZikgPT4gZihpbnApKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBzdHJpbmdzLCBudW1iZXJzIGFuZCBhcnJheXMgYXJlIHN1cHBvcnRlZCBhcyBpbnB1dCBhcmd1bWVudHMuIGAgK1xuICAgICAgYFJlY2VpdmVkOiAke0pTT04uc3RyaW5naWZ5KGlucCl9YCk7XG4gIH1cblxuICAvLyBtYWtlIGl0IGludG8gYSBzdHJpbmcsIHNvIHRoZW4gd2UgYXNzdXJlXG4gIC8vIHRoZSBhcnJheSBpdGVtcyBhcmUgc2luZ2xlIGNoYXJhY3RlcnNcbiAgaWYgKF8uaXNBcnJheShpbnApKSB7XG4gICAgaW5wID0gaW5wLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKF8uaXNGaW5pdGUoaW5wKSkge1xuICAgIGlucCA9IGAke2lucH1gO1xuICB9XG4gIC8vIFRoZSBgc3BsaXRgIG1ldGhvZCBtdXN0IG5vdCBiZSB1c2VkIG9uIHRoZSBzdHJpbmdcbiAgLy8gdG8gcHJvcGVybHkgaGFuZGxlIGFsbCBVbmljb2RlIGNvZGUgcG9pbnRzXG4gIHJldHVybiBbLi4uaW5wXS5tYXAoKGspID0+IHtcbiAgICBpZiAoWydcXHVFMDA2JywgJ1xcdUUwMDcnXS5pbmNsdWRlcyhrKSkgeyAvLyBSRVRVUk4gb3IgRU5URVJcbiAgICAgIHJldHVybiAnXFxuJztcbiAgICB9XG4gICAgaWYgKFsnXFx1RTAwMycsICdcXHVlMDE3J10uaW5jbHVkZXMoaykpIHsgLy8gQkFDS1NQQUNFIG9yIERFTEVURVxuICAgICAgcmV0dXJuICdcXGInO1xuICAgIH1cbiAgICByZXR1cm4gaztcbiAgfSk7XG59XG5cbmNvbW1hbmRzLnNldFZhbHVlSW1tZWRpYXRlID0gYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWVJbW1lZGlhdGUgKHZhbHVlLCBlbCkge1xuICAvLyBXREEgZG9lcyBub3QgcHJvdmlkZSBubyB3YXkgdG8gc2V0IHRoZSB2YWx1ZSBkaXJlY3RseVxuICB0aGlzLmxvZy5pbmZvKCdUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGJ5cGFzcyB0eXBpbmcgdXNpbmcgWENVSVRlc3QuIFNldHRpbmcgdmFsdWUgdGhyb3VnaCBrZXlib2FyZCcpO1xuICBhd2FpdCB0aGlzLnNldFZhbHVlKHZhbHVlLCBlbCk7XG59O1xuXG5jb21tYW5kcy5zZXRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFZhbHVlICh2YWx1ZSwgZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICAgIHZhbHVlOiBwcmVwYXJlSW5wdXRWYWx1ZSh2YWx1ZSksXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGljaycsIFthdG9tc0VsZW1lbnRdKTtcbiAgYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgndHlwZScsIFthdG9tc0VsZW1lbnQsIHZhbHVlXSk7XG59O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAodmFsdWUpIHtcbiAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEva2V5cycsICdQT1NUJywge1xuICAgIHZhbHVlOiBwcmVwYXJlSW5wdXRWYWx1ZSh2YWx1ZSksXG4gIH0pO1xufTtcblxuY29tbWFuZHMuY2xlYXIgPSBhc3luYyBmdW5jdGlvbiBjbGVhciAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGVhcicsIFthdG9tc0VsZW1lbnRdKTtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2NsZWFyYCwgJ1BPU1QnKTtcbn07XG5cbmNvbW1hbmRzLmdldENvbnRlbnRTaXplID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29udGVudFNpemUgKGVsKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCdTdXBwb3J0IGZvciBnZXRDb250ZW50U2l6ZSBmb3Igd2ViIGNvbnRleHQgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4gUGxlYXNlIGNvbnRhY3QgYW4gQXBwaXVtIGRldicpO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0QXR0cmlidXRlKCd0eXBlJywgZWwpO1xuXG4gIGlmICh0eXBlICE9PSAnWENVSUVsZW1lbnRUeXBlVGFibGUnICYmXG4gICAgICB0eXBlICE9PSAnWENVSUVsZW1lbnRUeXBlQ29sbGVjdGlvblZpZXcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBnZXQgY29udGVudCBzaXplIGZvciB0eXBlICcke3R5cGV9Jywgb25seSBmb3IgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWJsZXMgYW5kIGNvbGxlY3Rpb24gdmlld3NgKTtcbiAgfVxuICBsZXQgbG9jYXRvciA9ICcqJztcbiAgaWYgKHR5cGUgPT09ICdYQ1VJRWxlbWVudFR5cGVUYWJsZScpIHtcbiAgICAvLyBvbmx5IGZpbmQgdGFibGUgY2VsbHMsIG5vdCBqdXN0IGFueSBjaGlsZHJlblxuICAgIGxvY2F0b3IgPSAnWENVSUVsZW1lbnRUeXBlQ2VsbCc7XG4gIH1cblxuICBsZXQgY29udGVudEhlaWdodCA9IDA7XG4gIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy5maW5kRWxPckVscyhgY2xhc3MgY2hhaW5gLCBsb2NhdG9yLCB0cnVlLCBlbCk7XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBpZiB3ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUgZWxlbWVudCwgd2UgY2FuIG9wdGltaXplIHRvIG1ha2UganVzdCBvbmVcbiAgICAvLyBjYWxsIHRvIFdEQVxuICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KF8uaGVhZChjaGlsZHJlbikpO1xuICAgIGNvbnRlbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAvLyBvdGhlcndpc2UgaWYgd2UgaGF2ZSBtdWx0aXBsZSBlbGVtZW50cywgbG9naWMgZGlmZmVycyBiYXNlZCBvbiBlbGVtZW50XG4gICAgLy8gdHlwZVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnWENVSUVsZW1lbnRUeXBlVGFibGUnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChfLmxhc3QoY2hpbGRyZW4pKTtcbiAgICAgICAgY29udGVudEhlaWdodCA9IGxhc3RSZWN0LnkgKyBsYXN0UmVjdC5oZWlnaHQgLSBmaXJzdFJlY3QueTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdYQ1VJRWxlbWVudFR5cGVDb2xsZWN0aW9uVmlldyc6IHtcbiAgICAgICAgbGV0IGVsc0luUm93ID0gMTsgLy8gd2Uga25vdyB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSByb3dcbiAgICAgICAgbGV0IGZpcnN0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgICAgIGxldCBpbml0aWFsUmVjdHMgPSBbZmlyc3RSZWN0XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGNoaWxkcmVuW2ldKTtcbiAgICAgICAgICBpbml0aWFsUmVjdHMucHVzaChyZWN0KTtcbiAgICAgICAgICBpZiAocmVjdC55ICE9PSBmaXJzdFJlY3QueSkge1xuICAgICAgICAgICAgZWxzSW5Sb3cgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNwYWNlQmV0d2VlbkVscyA9IGluaXRpYWxSZWN0c1tlbHNJblJvd10ueSAtIGluaXRpYWxSZWN0c1tlbHNJblJvdyAtIDFdLnkgLSBpbml0aWFsUmVjdHNbZWxzSW5Sb3cgLSAxXS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IG51bVJvd3MgPSBNYXRoLmNlaWwoY2hpbGRyZW4ubGVuZ3RoIC8gZWxzSW5Sb3cpO1xuXG4gICAgICAgIC8vIGFzc3VtZSBhbGwgY2VsbHMgYXJlIHRoZSBzYW1lIGhlaWdodFxuICAgICAgICBjb250ZW50SGVpZ2h0ID0gKG51bVJvd3MgKiBmaXJzdFJlY3QuaGVpZ2h0KSArIChzcGFjZUJldHdlZW5FbHMgKiAobnVtUm93cyAtIDEpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFByb2dyYW1taW5nIGVycm9yOiB0eXBlICcke3R5cGV9JyB3YXMgbm90IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB2YWxpZCBidXQgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHJlamVjdGVkYCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNpemUgPSBhd2FpdCB0aGlzLmdldFNpemUoZWwpO1xuICBjb25zdCBvcmlnaW4gPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGVsKTtcbiAgLy8gYXR0cmlidXRlcyBoYXZlIHRvIGJlIHN0cmluZ3MsIHNvIHN0cmluZ2lmeSB0aGlzIHVwXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgd2lkdGg6IHNpemUud2lkdGgsXG4gICAgaGVpZ2h0OiBzaXplLmhlaWdodCxcbiAgICB0b3A6IG9yaWdpbi55LFxuICAgIGxlZnQ6IG9yaWdpbi54LFxuICAgIHNjcm9sbGFibGVPZmZzZXQ6IGNvbnRlbnRIZWlnaHRcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5pc0tleWJvYXJkU2hvd24gPSBhc3luYyBmdW5jdGlvbiBpc0tleWJvYXJkU2hvd24gKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZUtleWJvYXJkJywgZmFsc2UpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMpO1xuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBQUEsTUFBcUJDLFVBQVUsR0FBRyxFQUFsQzs7O0FBRUFE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
|
|
@@ -138,4 +138,4 @@ var _default = extensions;
|
|
|
138
138
|
exports.default = _default;require('source-map-support').install();
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJyZWNlaXZlQXN5bmNSZXNwb25zZSIsInN0YXR1cyIsInZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidXRpbCIsImhhc1ZhbHVlIiwiYXN5bmNQcm9taXNlIiwid2FybiIsInJlamVjdCIsIm1lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJlcnJvciIsInN0YWNrdHJhY2UiLCJyZXNvbHZlIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsImlzQXJyYXkiLCJpc1dlYkNvbnRleHQiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsInJlc3VsdCIsImV4ZWN1dGVBdG9tIiwiY2FjaGVXZWJFbGVtZW50cyIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJleGVjdXRlQXN5bmMiLCJhc3luY1dhaXRNcyIsInByb21pc2UiLCJyZW1vdGUiLCJleGVjdXRlQXRvbUFzeW5jIiwiY3VyV2ViRnJhbWVzIiwid2FpdEZvckF0b20iLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwia2lsbEFwcCIsInF1ZXJ5QXBwU3RhdGUiLCJhY3RpdmF0ZUFwcCIsImxpc3RBcHBzIiwidmlld3BvcnRTY3JlZW5zaG90Iiwidmlld3BvcnRSZWN0Iiwic3RhcnRQZXJmUmVjb3JkIiwic3RvcFBlcmZSZWNvcmQiLCJpbnN0YWxsQ2VydGlmaWNhdGUiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJhY3RpdmVBcHBJbmZvIiwiZGV2aWNlU2NyZWVuSW5mbyIsInByZXNzQnV0dG9uIiwiZW5yb2xsQmlvbWV0cmljIiwic2VuZEJpb21ldHJpY01hdGNoIiwiaXNCaW9tZXRyaWNFbnJvbGxlZCIsImNsZWFyS2V5Y2hhaW5zIiwiZ2V0UGVybWlzc2lvbiIsInNldFBlcm1pc3Npb24iLCJyZXNldFBlcm1pc3Npb24iLCJnZXRBcHBlYXJhbmNlIiwic2V0QXBwZWFyYW5jZSIsInNpcmlDb21tYW5kIiwiZGVsZXRlRmlsZSIsImRlbGV0ZUZvbGRlciIsInN0YXJ0QXVkaW9SZWNvcmRpbmciLCJzdG9wQXVkaW9SZWNvcmRpbmciLCJydW5YQ1Rlc3QiLCJpbnN0YWxsWENUZXN0QnVuZGxlIiwibGlzdFhDVGVzdEJ1bmRsZXMiLCJsaXN0WENUZXN0c0luVGVzdEJ1bmRsZSIsInB1c2hOb3RpZmljYXRpb24iLCJleHBlY3ROb3RpZmljYXRpb24iLCJwZXJmb3JtSW9IaWRFdmVudCIsImNvbmZpZ3VyZUxvY2FsaXphdGlvbiIsInJlc2V0TG9jYXRpb25TZXJ2aWNlIiwic3RhcnRQY2FwIiwic3RvcFBjYXAiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5COztBQUVBQSxVQUFVLENBQUNDLG9CQUFYLEdBQWtDLGVBQWVBLG9CQUFmLENBQXFDQyxNQUFyQyxFQUE2Q0MsS0FBN0MsRUFBb0Q7QUFDcEYsT0FBS0MsR0FBTCxD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QUFFLHdCQTVGRDtBQTZGakJDLElBQUFBLGtCQUFrQixFQUFFLDBCQTdGSDtBQStGakJDLElBQUFBLGlCQUFpQixFQUFFLHlCQS9GRjtBQWlHakJDLElBQUFBLHFCQUFxQixFQUFFLDZCQWpHTjtBQW1HakJDLElBQUFBLG9CQUFvQixFQUFFLDRCQW5HTDtBQXFHakJDLElBQUFBLFNBQVMsRUFBRSxpQkFyR007QUFzR2pCQyxJQUFBQSxRQUFRLEVBQUU7QUF0R08sR0FBbkI7O0FBeUdBLE1BQUksQ0FBQzVGLGdCQUFFNkYsR0FBRixDQUFNaEUsVUFBTixFQUFrQkYsYUFBbEIsQ0FBTCxFQUF1QztBQUNyQyxVQUFNLElBQUlULG1CQUFPNEUsbUJBQVgsQ0FBZ0MsMkJBQTBCbkUsYUFBYyxXQUFVM0IsZ0JBQUUrRixJQUFGLENBQU9sRSxVQUFQLEVBQW1CbUUsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBOEIsMEJBQWhILENBQU47QUFDRDs7QUFDRCxTQUFPLE1BQU0sS0FBS25FLFVBQVUsQ0FBQ0YsYUFBRCxDQUFmLEVBQWdDQyxJQUFoQyxDQUFiO0FBQ0QsQ0E5R0Q7O2VBZ0hlMUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBlcnJvcnMsIGVycm9yRnJvbUNvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGV4dGVuc2lvbnMgPSB7fTtcblxuZXh0ZW5zaW9ucy5yZWNlaXZlQXN5bmNSZXNwb25zZSA9IGFzeW5jIGZ1bmN0aW9uIHJlY2VpdmVBc3luY1Jlc3BvbnNlIChzdGF0dXMsIHZhbHVlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aGlzLmxvZy5kZWJ1ZyhgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5hc3luY1Byb21pc2UpKSB7XG4gICAgdGhpcy5sb2cud2FybihgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2Ugd2hlbiB3ZSB3ZXJlIG5vdCBleHBlY3Rpbmcgb25lISBgICtcbiAgICAgIGBSZXNwb25zZSB3YXM6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh1dGlsLmhhc1ZhbHVlKHN0YXR1cykgJiYgc3RhdHVzICE9PSAwKSB7XG4gICAgLy8gTUpTT05XUFxuICAgIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZWplY3QoZXJyb3JGcm9tQ29kZShzdGF0dXMsIHZhbHVlLm1lc3NhZ2UpKTtcbiAgfVxuICBpZiAoIXV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiB2YWx1ZSAmJiBfLmlzU3RyaW5nKHZhbHVlLmVycm9yKSkge1xuICAgIC8vIFczQ1xuICAgIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZWplY3QoZXJyb3JGcm9tVzNDSnNvbkNvZGUodmFsdWUuZXJyb3IsIHZhbHVlLm1lc3NhZ2UsIHZhbHVlLnN0YWNrdHJhY2UpKTtcbiAgfVxuICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKHNjcmlwdC5tYXRjaCgvXm1vYmlsZTovKSkge1xuICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKC9ebW9iaWxlOi8sICcnKS50cmltKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1vYmlsZShzY3JpcHQsIF8uaXNBcnJheShhcmdzKSA/IGFyZ3NbMF0gOiBhcmdzKTtcbiAgfSBlbHNlIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZXhlY3V0ZV9zY3JpcHQnLCBbc2NyaXB0LCBhcmdzXSk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVXZWJFbGVtZW50cyhyZXN1bHQpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVBc3luYyA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBc3luYyAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gIHRoaXMuYXN5bmNXYWl0TXMgPSB0aGlzLmFzeW5jV2FpdE1zIHx8IDA7XG4gIGNvbnN0IHByb21pc2UgPSB0aGlzLnJlbW90ZS5leGVjdXRlQXRvbUFzeW5jKCdleGVjdXRlX2FzeW5jX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3MsIHRoaXMuYXN5bmNXYWl0TXNdLCB0aGlzLmN1cldlYkZyYW1lcyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndhaXRGb3JBdG9tKHByb21pc2UpO1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlTW9iaWxlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZU1vYmlsZSAobW9iaWxlQ29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGNvbW1hbmRNYXAgPSB7XG4gICAgLy9yZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIHRhcDogJ21vYmlsZVRhcCcsXG4gICAgc2Nyb2xsOiAnbW9iaWxlU2Nyb2xsJyxcbiAgICBzZWxlY3RQaWNrZXJXaGVlbFZhbHVlOiAnbW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njgtc3dpcGVsZWZ0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NC1zd2lwZXJpZ2h0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2Ny1zd2lwZXVwP2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NC1zd2lwZWRvd24/bGFuZ3VhZ2U9b2JqY1xuICAgIHN3aXBlOiAnbW9iaWxlU3dpcGUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY5LXBpbmNod2l0aHNjYWxlP2xhbmd1YWdlPW9iamNcbiAgICBwaW5jaDogJ21vYmlsZVBpbmNoJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3My1kb3VibGV0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIGRvdWJsZVRhcDogJ21vYmlsZURvdWJsZVRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzUtdHdvZmluZ2VydGFwP2xhbmd1YWdlPW9iamNcbiAgICB0d29GaW5nZXJUYXA6ICdtb2JpbGVUd29GaW5nZXJUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcxLXRhcHdpdGhudW1iZXJvZnRhcHM/bGFuZ3VhZ2U9b2JqY1xuICAgIHRhcFdpdGhOdW1iZXJPZlRhcHM6ICdtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2My1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICB0b3VjaEFuZEhvbGQ6ICdtb2JpbGVUb3VjaEFuZEhvbGQnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcwLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIGRyYWdGcm9tVG9Gb3JEdXJhdGlvbjogJ21vYmlsZURyYWdGcm9tVG9Gb3JEdXJhdGlvbicsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjUtcm90YXRlP2xhbmd1YWdlPW9iamNcbiAgICByb3RhdGVFbGVtZW50OiAnbW9iaWxlUm90YXRlRWxlbWVudCcsXG5cbiAgICAvL2VuZHJlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgYWxlcnQ6ICdtb2JpbGVIYW5kbGVBbGVydCcsXG5cbiAgICBzZXRQYXN0ZWJvYXJkOiAnbW9iaWxlU2V0UGFzdGVib2FyZCcsXG4gICAgZ2V0UGFzdGVib2FyZDogJ21vYmlsZUdldFBhc3RlYm9hcmQnLFxuXG4gICAgc291cmNlOiAnbW9iaWxlR2V0U291cmNlJyxcbiAgICBnZXRDb250ZXh0czogJ21vYmlsZUdldENvbnRleHRzJyxcblxuICAgIC8vcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuICAgIGluc3RhbGxBcHA6ICdtb2JpbGVJbnN0YWxsQXBwJyxcbiAgICBpc0FwcEluc3RhbGxlZDogJ21vYmlsZUlzQXBwSW5zdGFsbGVkJyxcbiAgICByZW1vdmVBcHA6ICdtb2JpbGVSZW1vdmVBcHAnLFxuICAgIGxhdW5jaEFwcDogJ21vYmlsZUxhdW5jaEFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBraWxsQXBwOiAnbW9iaWxlS2lsbEFwcCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIGxpc3RBcHBzOiAnbW9iaWxlTGlzdEFwcHMnLFxuICAgIC8vZW5kcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnZ2V0Vmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdnZXRWaWV3cG9ydFJlY3QnLFxuXG4gICAgc3RhcnRQZXJmUmVjb3JkOiAnbW9iaWxlU3RhcnRQZXJmUmVjb3JkJyxcbiAgICBzdG9wUGVyZlJlY29yZDogJ21vYmlsZVN0b3BQZXJmUmVjb3JkJyxcblxuICAgIGluc3RhbGxDZXJ0aWZpY2F0ZTogJ21vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZScsXG5cbiAgICBzdGFydExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QnLFxuICAgIHN0b3BMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QnLFxuXG4gICAgYmF0dGVyeUluZm86ICdtb2JpbGVHZXRCYXR0ZXJ5SW5mbycsXG4gICAgZGV2aWNlSW5mbzogJ21vYmlsZUdldERldmljZUluZm8nLFxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcbiAgICBhY3RpdmVBcHBJbmZvOiAnbW9iaWxlR2V0QWN0aXZlQXBwSW5mbycsXG4gICAgZGV2aWNlU2NyZWVuSW5mbzogJ2dldFNjcmVlbkluZm8nLFxuXG4gICAgcHJlc3NCdXR0b246ICdtb2JpbGVQcmVzc0J1dHRvbicsXG5cbiAgICBlbnJvbGxCaW9tZXRyaWM6ICdtb2JpbGVFbnJvbGxCaW9tZXRyaWMnLFxuICAgIHNlbmRCaW9tZXRyaWNNYXRjaDogJ21vYmlsZVNlbmRCaW9tZXRyaWNNYXRjaCcsXG4gICAgaXNCaW9tZXRyaWNFbnJvbGxlZDogJ21vYmlsZUlzQmlvbWV0cmljRW5yb2xsZWQnLFxuXG4gICAgY2xlYXJLZXljaGFpbnM6ICdtb2JpbGVDbGVhcktleWNoYWlucycsXG5cbiAgICBnZXRQZXJtaXNzaW9uOiAnbW9iaWxlR2V0UGVybWlzc2lvbicsXG4gICAgc2V0UGVybWlzc2lvbjogJ21vYmlsZVNldFBlcm1pc3Npb25zJyxcbiAgICByZXNldFBlcm1pc3Npb246ICdtb2JpbGVSZXNldFBlcm1pc3Npb24nLFxuXG4gICAgZ2V0QXBwZWFyYW5jZTogJ21vYmlsZUdldEFwcGVhcmFuY2UnLFxuICAgIHNldEFwcGVhcmFuY2U6ICdtb2JpbGVTZXRBcHBlYXJhbmNlJyxcblxuICAgIHNpcmlDb21tYW5kOiAnbW9iaWxlU2lyaUNvbW1hbmQnLFxuXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuICAgIGRlbGV0ZUZvbGRlcjogJ21vYmlsZURlbGV0ZUZvbGRlcicsXG5cbiAgICBzdGFydEF1ZGlvUmVjb3JkaW5nOiAnc3RhcnRBdWRpb1JlY29yZGluZycsXG4gICAgc3RvcEF1ZGlvUmVjb3JkaW5nOiAnc3RvcEF1ZGlvUmVjb3JkaW5nJyxcblxuICAgIC8vIFhDVGVzdFxuICAgIHJ1blhDVGVzdDogJ21vYmlsZVJ1blhDVGVzdCcsXG4gICAgaW5zdGFsbFhDVGVzdEJ1bmRsZTogJ21vYmlsZUluc3RhbGxYQ1Rlc3RCdW5kbGUnLFxuICAgIGxpc3RYQ1Rlc3RCdW5kbGVzOiAnbW9iaWxlTGlzdFhDVGVzdEJ1bmRsZXMnLFxuICAgIGxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlOiAnbW9iaWxlTGlzdFhDVGVzdHNJblRlc3RCdW5kbGUnLFxuXG4gICAgcHVzaE5vdGlmaWNhdGlvbjogJ21vYmlsZVB1c2hOb3RpZmljYXRpb24nLFxuICAgIGV4cGVjdE5vdGlmaWNhdGlvbjogJ21vYmlsZUV4cGVjdE5vdGlmaWNhdGlvbicsXG5cbiAgICBwZXJmb3JtSW9IaWRFdmVudDogJ21vYmlsZVBlcmZvcm1Jb0hpZEV2ZW50JyxcblxuICAgIGNvbmZpZ3VyZUxvY2FsaXphdGlvbjogJ21vYmlsZUNvbmZpZ3VyZUxvY2FsaXphdGlvbicsXG5cbiAgICByZXNldExvY2F0aW9uU2VydmljZTogJ21vYmlsZVJlc2V0TG9jYXRpb25TZXJ2aWNlJyxcblxuICAgIHN0YXJ0UGNhcDogJ21vYmlsZVN0YXJ0UGNhcCcsXG4gICAgc3RvcFBjYXA6ICdtb2JpbGVTdG9wUGNhcCcsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhjb21tYW5kTWFwLCBtb2JpbGVDb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcihgVW5rbm93biBtb2JpbGUgY29tbWFuZCAnJHttb2JpbGVDb21tYW5kfScuIE9ubHkgJHtfLmtleXMoY29tbWFuZE1hcCkuam9pbignLCAnKX0gY29tbWFuZHMgYXJlIHN1cHBvcnRlZC5gKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpc1tjb21tYW5kTWFwW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJtZXNzYWdlIiwiXyIsImlzU3RyaW5nIiwiZXJyb3IiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImFsZXJ0Iiwic2V0UGFzdGVib2FyZCIsImdldFBhc3RlYm9hcmQiLCJzb3VyY2UiLCJnZXRDb250ZXh0cyIsImluc3RhbGxBcHAiLCJpc0FwcEluc3RhbGxlZCIsInJlbW92ZUFwcCIsImxhdW5jaEFwcCIsInRlcm1pbmF0ZUFwcCIsImtpbGxBcHAiLCJxdWVyeUFwcFN0YXRlIiwiYWN0aXZhdGVBcHAiLCJsaXN0QXBwcyIsInZpZXdwb3J0U2NyZWVuc2hvdCIsInZpZXdwb3J0UmVjdCIsInN0YXJ0UGVyZlJlY29yZCIsInN0b3BQZXJmUmVjb3JkIiwiaW5zdGFsbENlcnRpZmljYXRlIiwic3RhcnRMb2dzQnJvYWRjYXN0Iiwic3RvcExvZ3NCcm9hZGNhc3QiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiYWN0aXZlQXBwSW5mbyIsImRldmljZVNjcmVlbkluZm8iLCJwcmVzc0J1dHRvbiIsImVucm9sbEJpb21ldHJpYyIsInNlbmRCaW9tZXRyaWNNYXRjaCIsImlzQmlvbWV0cmljRW5yb2xsZWQiLCJjbGVhcktleWNoYWlucyIsImdldFBlcm1pc3Npb24iLCJzZXRQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIiwiZ2V0QXBwZWFyYW5jZSIsInNldEFwcGVhcmFuY2UiLCJzaXJpQ29tbWFuZCIsImRlbGV0ZUZpbGUiLCJkZWxldGVGb2xkZXIiLCJzdGFydEF1ZGlvUmVjb3JkaW5nIiwic3RvcEF1ZGlvUmVjb3JkaW5nIiwicnVuWENUZXN0IiwiaW5zdGFsbFhDVGVzdEJ1bmRsZSIsImxpc3RYQ1Rlc3RCdW5kbGVzIiwibGlzdFhDVGVzdHNJblRlc3RCdW5kbGUiLCJwdXNoTm90aWZpY2F0aW9uIiwiZXhwZWN0Tm90aWZpY2F0aW9uIiwicGVyZm9ybUlvSGlkRXZlbnQiLCJjb25maWd1cmVMb2NhbGl6YXRpb24iLCJyZXNldExvY2F0aW9uU2VydmljZSIsInN0YXJ0UGNhcCIsInN0b3BQY2FwIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsImtleXMiLCJqb2luIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGVycm9ycywgZXJyb3JGcm9tQ29kZSwgZXJyb3JGcm9tVzNDSnNvbkNvZGVcbn0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLmFzeW5jUHJvbWlzZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW3NjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc10sIHRoaXMuY3VyV2ViRnJhbWVzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIGtpbGxBcHA6ICdtb2JpbGVLaWxsQXBwJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgbGlzdEFwcHM6ICdtb2JpbGVMaXN0QXBwcycsXG4gICAgLy9lbmRyZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG5cbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdnZXRWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ2dldFZpZXdwb3J0UmVjdCcsXG5cbiAgICBzdGFydFBlcmZSZWNvcmQ6ICdtb2JpbGVTdGFydFBlcmZSZWNvcmQnLFxuICAgIHN0b3BQZXJmUmVjb3JkOiAnbW9iaWxlU3RvcFBlcmZSZWNvcmQnLFxuXG4gICAgaW5zdGFsbENlcnRpZmljYXRlOiAnbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuICAgIGFjdGl2ZUFwcEluZm86ICdtb2JpbGVHZXRBY3RpdmVBcHBJbmZvJyxcbiAgICBkZXZpY2VTY3JlZW5JbmZvOiAnZ2V0U2NyZWVuSW5mbycsXG5cbiAgICBwcmVzc0J1dHRvbjogJ21vYmlsZVByZXNzQnV0dG9uJyxcblxuICAgIGVucm9sbEJpb21ldHJpYzogJ21vYmlsZUVucm9sbEJpb21ldHJpYycsXG4gICAgc2VuZEJpb21ldHJpY01hdGNoOiAnbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoJyxcbiAgICBpc0Jpb21ldHJpY0Vucm9sbGVkOiAnbW9iaWxlSXNCaW9tZXRyaWNFbnJvbGxlZCcsXG5cbiAgICBjbGVhcktleWNoYWluczogJ21vYmlsZUNsZWFyS2V5Y2hhaW5zJyxcblxuICAgIGdldFBlcm1pc3Npb246ICdtb2JpbGVHZXRQZXJtaXNzaW9uJyxcbiAgICBzZXRQZXJtaXNzaW9uOiAnbW9iaWxlU2V0UGVybWlzc2lvbnMnLFxuICAgIHJlc2V0UGVybWlzc2lvbjogJ21vYmlsZVJlc2V0UGVybWlzc2lvbicsXG5cbiAgICBnZXRBcHBlYXJhbmNlOiAnbW9iaWxlR2V0QXBwZWFyYW5jZScsXG4gICAgc2V0QXBwZWFyYW5jZTogJ21vYmlsZVNldEFwcGVhcmFuY2UnLFxuXG4gICAgc2lyaUNvbW1hbmQ6ICdtb2JpbGVTaXJpQ29tbWFuZCcsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG4gICAgZGVsZXRlRm9sZGVyOiAnbW9iaWxlRGVsZXRlRm9sZGVyJyxcblxuICAgIHN0YXJ0QXVkaW9SZWNvcmRpbmc6ICdzdGFydEF1ZGlvUmVjb3JkaW5nJyxcbiAgICBzdG9wQXVkaW9SZWNvcmRpbmc6ICdzdG9wQXVkaW9SZWNvcmRpbmcnLFxuXG4gICAgLy8gWENUZXN0XG4gICAgcnVuWENUZXN0OiAnbW9iaWxlUnVuWENUZXN0JyxcbiAgICBpbnN0YWxsWENUZXN0QnVuZGxlOiAnbW9iaWxlSW5zdGFsbFhDVGVzdEJ1bmRsZScsXG4gICAgbGlzdFhDVGVzdEJ1bmRsZXM6ICdtb2JpbGVMaXN0WENUZXN0QnVuZGxlcycsXG4gICAgbGlzdFhDVGVzdHNJblRlc3RCdW5kbGU6ICdtb2JpbGVMaXN0WENUZXN0c0luVGVzdEJ1bmRsZScsXG5cbiAgICBwdXNoTm90aWZpY2F0aW9uOiAnbW9iaWxlUHVzaE5vdGlmaWNhdGlvbicsXG4gICAgZXhwZWN0Tm90aWZpY2F0aW9uOiAnbW9iaWxlRXhwZWN0Tm90aWZpY2F0aW9uJyxcblxuICAgIHBlcmZvcm1Jb0hpZEV2ZW50OiAnbW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQnLFxuXG4gICAgY29uZmlndXJlTG9jYWxpemF0aW9uOiAnbW9iaWxlQ29uZmlndXJlTG9jYWxpemF0aW9uJyxcblxuICAgIHJlc2V0TG9jYXRpb25TZXJ2aWNlOiAnbW9iaWxlUmVzZXRMb2NhdGlvblNlcnZpY2UnLFxuXG4gICAgc3RhcnRQY2FwOiAnbW9iaWxlU3RhcnRQY2FwJyxcbiAgICBzdG9wUGNhcDogJ21vYmlsZVN0b3BQY2FwJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6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
|