@phenixrts/sdk 2025.2.2 → 2025.2.3-beta.596
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/channels/debug/channels.js +108 -28
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +108 -28
- package/channels/debug.private/package.json +1 -1
- package/channels/debug.provideGlobalScope/channels.js +108 -28
- package/channels/debug.provideGlobalScope/package.json +1 -1
- package/channels/es5.debug.private/channels.js +108 -28
- package/channels/es5.debug.private/package.json +1 -1
- package/channels/min/channels.js +1 -1
- package/channels/min/channels.js.map +1 -1
- package/channels/min/package.json +1 -1
- package/channels/min.private/channels.js +1 -1
- package/channels/min.private/channels.js.map +1 -1
- package/channels/min.private/package.json +1 -1
- package/channels/min.provideGlobalScope/channels.js +1 -1
- package/channels/min.provideGlobalScope/channels.js.map +1 -1
- package/channels/min.provideGlobalScope/package.json +1 -1
- package/channels/package.json +1 -1
- package/full/debug/full.js +108 -28
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +108 -28
- package/full/debug.private/package.json +1 -1
- package/full/min/full.js +1 -1
- package/full/min/full.js.map +1 -1
- package/full/min/package.json +1 -1
- package/full/min.private/full.js +1 -1
- package/full/min.private/full.js.map +1 -1
- package/full/min.private/package.json +1 -1
- package/full/package.json +1 -1
- package/package.json +1 -1
- package/publish/debug/package.json +1 -1
- package/publish/debug/publish.js +2 -2
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +2 -2
- package/publish/min/package.json +1 -1
- package/publish/min/publish.js +1 -1
- package/publish/min/publish.js.map +1 -1
- package/publish/min.private/package.json +1 -1
- package/publish/min.private/publish.js +1 -1
- package/publish/min.private/publish.js.map +1 -1
- package/publish/package.json +1 -1
- package/types/sdk/channels/Channel.d.ts +2 -0
- package/types/sdk/streaming/IStream.d.ts +1 -1
- package/types/sdk/streaming/RealTimeStream.d.ts +1 -1
|
@@ -4306,6 +4306,7 @@ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try {
|
|
|
4306
4306
|
var defaultStreamTerminationReason = 'client:termination';
|
|
4307
4307
|
var failureCountCleanUpIntervalInMilliseconds = 3000;
|
|
4308
4308
|
var standbyPollingIntervalInMilliseconds = 15000;
|
|
4309
|
+
var backgroundRecoveryFailsafeIntervalInMilliseconds = 5000;
|
|
4309
4310
|
var Channel = /*#__PURE__*/function () {
|
|
4310
4311
|
function Channel(videoElement, token, options) {
|
|
4311
4312
|
var _this = this;
|
|
@@ -4466,6 +4467,29 @@ var Channel = /*#__PURE__*/function () {
|
|
|
4466
4467
|
_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.removeWindowEventListener('beforeunload', destroyStreamOnUnmount);
|
|
4467
4468
|
}));
|
|
4468
4469
|
this.start();
|
|
4470
|
+
if (_SDK__WEBPACK_IMPORTED_MODULE_9__["default"].automaticRetryOnFailure) {
|
|
4471
|
+
// SDK.initialize() guarantees applicationActivityMonitor is created before any Channel can be instantiated
|
|
4472
|
+
this._channelContext.channelDisposables.add(_SDK__WEBPACK_IMPORTED_MODULE_9__["default"].applicationActivityMonitor.isForeground.subscribe(function (isForeground) {
|
|
4473
|
+
if (!isForeground) {
|
|
4474
|
+
return;
|
|
4475
|
+
}
|
|
4476
|
+
if (_this._stateContext.isStarting.value) {
|
|
4477
|
+
_this._logger.debug('[%s] Skipping failureCount reset and Channel restart due to Channel already starting', _this._channelContext.streamId);
|
|
4478
|
+
return;
|
|
4479
|
+
}
|
|
4480
|
+
if (_this.isStreamHealthy()) {
|
|
4481
|
+
_this._logger.debug('[%s] Skipping failureCount reset and Channel restart due to stream being healthy', _this._channelContext.streamId);
|
|
4482
|
+
return;
|
|
4483
|
+
}
|
|
4484
|
+
if (!_this.isRetryableState()) {
|
|
4485
|
+
_this._logger.debug('[%s] Skipping failureCount reset and Channel restart due to ChannelState being [%s]', _this._channelContext.streamId, _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"][_this._channelContext.state.value]);
|
|
4486
|
+
return;
|
|
4487
|
+
}
|
|
4488
|
+
_this._channelContext.failureCount.value = 0;
|
|
4489
|
+
_this._logger.debug('[%s] Reset failureCount to 0 and restarting Channel after returning to foreground', _this._channelContext.streamId);
|
|
4490
|
+
var ignored = _this.start();
|
|
4491
|
+
}));
|
|
4492
|
+
}
|
|
4469
4493
|
}
|
|
4470
4494
|
return (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__["default"])(Channel, [{
|
|
4471
4495
|
key: "videoElement",
|
|
@@ -4822,17 +4846,60 @@ var Channel = /*#__PURE__*/function () {
|
|
|
4822
4846
|
}
|
|
4823
4847
|
return start;
|
|
4824
4848
|
}()
|
|
4849
|
+
}, {
|
|
4850
|
+
key: "isRetryableState",
|
|
4851
|
+
value: function isRetryableState() {
|
|
4852
|
+
switch (this._channelContext.state.value) {
|
|
4853
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Error:
|
|
4854
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Reconnecting:
|
|
4855
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].StandBy:
|
|
4856
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Offline:
|
|
4857
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Recovering:
|
|
4858
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].TransientConfigurationError:
|
|
4859
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].ConnectionError:
|
|
4860
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].ClientStartError:
|
|
4861
|
+
return true;
|
|
4862
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Unauthorized:
|
|
4863
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].GeoRestricted:
|
|
4864
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].GeoBlocked:
|
|
4865
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Stopped:
|
|
4866
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Paused:
|
|
4867
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Initializing:
|
|
4868
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Starting:
|
|
4869
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Playing:
|
|
4870
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].UnsupportedFeature:
|
|
4871
|
+
case _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].ConfigurationError:
|
|
4872
|
+
return false;
|
|
4873
|
+
default:
|
|
4874
|
+
(0,_lang_assertUnreachable__WEBPACK_IMPORTED_MODULE_12__["default"])(this._channelContext.state.value);
|
|
4875
|
+
}
|
|
4876
|
+
}
|
|
4877
|
+
}, {
|
|
4878
|
+
key: "isStreamHealthy",
|
|
4879
|
+
value: function isStreamHealthy() {
|
|
4880
|
+
var _mediaStream$getTrack;
|
|
4881
|
+
var videoElement = this._channelContext.videoElement.value;
|
|
4882
|
+
if (!videoElement) {
|
|
4883
|
+
return false;
|
|
4884
|
+
}
|
|
4885
|
+
var mediaStream = this._peerConnectionContext.mediaStream.value;
|
|
4886
|
+
var hasActiveTracks = (_mediaStream$getTrack = mediaStream === null || mediaStream === void 0 ? void 0 : mediaStream.getTracks().some(function (track) {
|
|
4887
|
+
return track.readyState === 'live';
|
|
4888
|
+
})) !== null && _mediaStream$getTrack !== void 0 ? _mediaStream$getTrack : false;
|
|
4889
|
+
return !videoElement.paused && hasActiveTracks;
|
|
4890
|
+
}
|
|
4825
4891
|
}, {
|
|
4826
4892
|
key: "processStart",
|
|
4827
4893
|
value: function () {
|
|
4828
4894
|
var _processStart = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
4829
4895
|
var _this5 = this;
|
|
4830
|
-
var token, listenOnStreamSetup, _StreamTrackTransform, valid, validationResult, _StreamTrackTransform2, _valid, _validationResult, _EncodedStreamSink$va, _valid2, _validationResult2, _EncodedStreamSink$va2, _valid3, _validationResult3, hasTransformStreamCallback, hasEncodedStreamSink, uri, handleStreamFailureCallback, streamPlayer;
|
|
4896
|
+
var isRecovery, token, listenOnStreamSetup, _StreamTrackTransform, valid, validationResult, _StreamTrackTransform2, _valid, _validationResult, _EncodedStreamSink$va, _valid2, _validationResult2, _EncodedStreamSink$va2, _valid3, _validationResult3, hasTransformStreamCallback, hasEncodedStreamSink, uri, handleStreamFailureCallback, streamPlayer;
|
|
4831
4897
|
return _regenerator().w(function (_context5) {
|
|
4832
4898
|
while (1) switch (_context5.n) {
|
|
4833
4899
|
case 0:
|
|
4834
|
-
this._channelContext.state.value
|
|
4835
|
-
this.
|
|
4900
|
+
isRecovery = this._channelContext.state.value !== _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Initializing;
|
|
4901
|
+
this._channelContext.state.value = isRecovery ? _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Recovering : _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].Starting;
|
|
4902
|
+
this.cleanUpResources(isRecovery ? 'client:recover' : 'client:start');
|
|
4836
4903
|
token = this._tokenContext.token.value;
|
|
4837
4904
|
listenOnStreamSetup = this._sessionTelemetry.listenOnStreamSetup();
|
|
4838
4905
|
if (_edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_17__["default"].isEncodedEdgeTokenValid(token)) {
|
|
@@ -5010,8 +5077,26 @@ var Channel = /*#__PURE__*/function () {
|
|
|
5010
5077
|
}));
|
|
5011
5078
|
handleStreamFailureCallback = function handleStreamFailureCallback() {
|
|
5012
5079
|
return new Promise(function (resolve) {
|
|
5013
|
-
// Need to set isStarting to false and call handleStreamFailure if stream monitors found an issue
|
|
5014
5080
|
_this5._stateContext.isStarting.value = false;
|
|
5081
|
+
_this5._channelContext.state.value = _ChannelState__WEBPACK_IMPORTED_MODULE_11__["default"].ConnectionError;
|
|
5082
|
+
if (_this5._channelContext.videoElement.value) {
|
|
5083
|
+
_this5._channelContext.videoElement.value.pause();
|
|
5084
|
+
_this5._channelContext.videoElement.value.srcObject = null;
|
|
5085
|
+
}
|
|
5086
|
+
_this5._channelContext.playing.value = false;
|
|
5087
|
+
_this5._channelContext.loading.value = true;
|
|
5088
|
+
if (!_SDK__WEBPACK_IMPORTED_MODULE_9__["default"].applicationActivityMonitor.isForeground.value) {
|
|
5089
|
+
_this5._logger.debug('[%s] Deferring stream failure handling to foreground recovery', _this5._channelContext.streamId);
|
|
5090
|
+
var timeoutId = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.setTimeout(function () {
|
|
5091
|
+
var ignored = _this5.handleStreamFailure()["catch"](function (e) {
|
|
5092
|
+
_this5._logger.error('Failed handling stream failure', e);
|
|
5093
|
+
});
|
|
5094
|
+
}, backgroundRecoveryFailsafeIntervalInMilliseconds);
|
|
5095
|
+
_this5._channelContext.disposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_13__["default"](function () {
|
|
5096
|
+
_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_4__["default"].value.clearTimeout(timeoutId);
|
|
5097
|
+
}));
|
|
5098
|
+
return resolve();
|
|
5099
|
+
}
|
|
5015
5100
|
return resolve(_this5.handleStreamFailure());
|
|
5016
5101
|
});
|
|
5017
5102
|
};
|
|
@@ -5023,6 +5108,7 @@ var Channel = /*#__PURE__*/function () {
|
|
|
5023
5108
|
this._stateContext.isStarting.value = false;
|
|
5024
5109
|
return _context5.a(2);
|
|
5025
5110
|
case 16:
|
|
5111
|
+
this._channelContext.rendererDisposables.add(streamPlayer);
|
|
5026
5112
|
return _context5.a(2, streamPlayer.start(uri, token, listenOnStreamSetup, this.playMediaStreamInVideoElement.bind(this)).then(function () {
|
|
5027
5113
|
_this5._channelContext.loading.value = false;
|
|
5028
5114
|
})["catch"](function (e) {
|
|
@@ -7880,24 +7966,23 @@ var RealTimeStream = /*#__PURE__*/function () {
|
|
|
7880
7966
|
function RealTimeStream(channelContext, peerConnectionContext, streamTransformContext, frameTimingInformationContext, handleStreamFailure) {
|
|
7881
7967
|
(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__["default"])(this, RealTimeStream);
|
|
7882
7968
|
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_logger", _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_19__["default"].getLogger('RealTimeStream'));
|
|
7969
|
+
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_disposables", new _lang_DisposableList__WEBPACK_IMPORTED_MODULE_7__["default"]());
|
|
7883
7970
|
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_channelContext", void 0);
|
|
7884
7971
|
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_peerConnectionContext", void 0);
|
|
7885
7972
|
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_streamTransformContext", void 0);
|
|
7886
7973
|
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_frameTimingInformationContext", void 0);
|
|
7887
7974
|
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_handleStreamFailure", void 0);
|
|
7888
|
-
(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_4__["default"])(this, "_disposables", void 0);
|
|
7889
7975
|
this._channelContext = channelContext;
|
|
7890
7976
|
this._peerConnectionContext = peerConnectionContext;
|
|
7891
7977
|
this._streamTransformContext = streamTransformContext;
|
|
7892
7978
|
this._frameTimingInformationContext = frameTimingInformationContext;
|
|
7893
7979
|
this._handleStreamFailure = handleStreamFailure;
|
|
7894
|
-
this._disposables = new _lang_DisposableList__WEBPACK_IMPORTED_MODULE_7__["default"]();
|
|
7895
|
-
this._channelContext.disposables.add(this);
|
|
7896
7980
|
}
|
|
7897
7981
|
return (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__["default"])(RealTimeStream, [{
|
|
7898
7982
|
key: "start",
|
|
7899
7983
|
value: function start(uri, token, listenOnStreamSetup, playMediaStreamInVideoElement) {
|
|
7900
7984
|
var _this = this;
|
|
7985
|
+
this._disposables.dispose();
|
|
7901
7986
|
var requiresEncodedInsertableStreams = this._streamTransformContext.hasEncodedInsertableStreams.value || this._frameTimingInformationContext.shouldExtractTimecode.value || this._frameTimingInformationContext.shouldExtractTimestamps.value ? _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_14__.EncodedInsertableStreams.Enabled : _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_14__.EncodedInsertableStreams.Disabled;
|
|
7902
7987
|
return Promise.all([_discovery_Discovery__WEBPACK_IMPORTED_MODULE_16__["default"].discoverClosestEndPointWithCaching(uri), _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_14__["default"].createPeerConnectionOffer('recvonly', _rtc_PeerConnectionService__WEBPACK_IMPORTED_MODULE_14__.defaultTrackKinds, requiresEncodedInsertableStreams).then(function (_ref) {
|
|
7903
7988
|
var localOffer = _ref.localOffer,
|
|
@@ -8006,8 +8091,15 @@ var RealTimeStream = /*#__PURE__*/function () {
|
|
|
8006
8091
|
_this._logger.error('[%s] Failed to add ICE candidates', _this._channelContext.streamId, e);
|
|
8007
8092
|
});
|
|
8008
8093
|
}, iceCandidateAccumulationInterval);
|
|
8094
|
+
_this._disposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_6__["default"](function () {
|
|
8095
|
+
return _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.clearTimeout(submitCandidatesTimeout);
|
|
8096
|
+
}));
|
|
8009
8097
|
}
|
|
8010
8098
|
};
|
|
8099
|
+
_this._disposables.add(new _lang_Disposable__WEBPACK_IMPORTED_MODULE_6__["default"](function () {
|
|
8100
|
+
peerConnection.onicecandidate = null;
|
|
8101
|
+
peerConnection.oniceconnectionstatechange = null;
|
|
8102
|
+
}));
|
|
8011
8103
|
peerConnection.oniceconnectionstatechange = function () {
|
|
8012
8104
|
if (_this._channelContext.stream.value !== stream) {
|
|
8013
8105
|
return;
|
|
@@ -8016,15 +8108,6 @@ var RealTimeStream = /*#__PURE__*/function () {
|
|
|
8016
8108
|
return;
|
|
8017
8109
|
}
|
|
8018
8110
|
var retryCallback = function retryCallback() {
|
|
8019
|
-
// If we stop normally the peer connection is unregistered first.
|
|
8020
|
-
// Thus anytime we see a closed peer connection that is still valid, it is an error.
|
|
8021
|
-
_this._channelContext.state.value = _channels_ChannelState__WEBPACK_IMPORTED_MODULE_18__["default"].ConnectionError;
|
|
8022
|
-
if (_this._channelContext.videoElement.value) {
|
|
8023
|
-
_this._channelContext.videoElement.value.pause();
|
|
8024
|
-
_this._channelContext.videoElement.value.srcObject = null;
|
|
8025
|
-
}
|
|
8026
|
-
_this._channelContext.playing.value = false;
|
|
8027
|
-
_this._channelContext.loading.value = true;
|
|
8028
8111
|
var ignored = _this._handleStreamFailure()["catch"](function (e) {
|
|
8029
8112
|
_this._logger.error('[%s] Failed handling stream failure after peer connection stopped with state [%s]', _this._channelContext.streamId, peerConnection.iceConnectionState, e);
|
|
8030
8113
|
});
|
|
@@ -8039,7 +8122,7 @@ var RealTimeStream = /*#__PURE__*/function () {
|
|
|
8039
8122
|
case 'failed':
|
|
8040
8123
|
if (_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_5__["default"].value.navigatorIsOnLine) {
|
|
8041
8124
|
_this._logger.info('[%s] ICE connection state changed to [%s], trying to reconnect', _this._channelContext.streamId, peerConnection.iceConnectionState);
|
|
8042
|
-
_this.reconnectPeerConnection(peerConnection, retryCallback);
|
|
8125
|
+
_this.reconnectPeerConnection(_this._channelContext.streamId, peerConnection, retryCallback);
|
|
8043
8126
|
}
|
|
8044
8127
|
return;
|
|
8045
8128
|
case 'closed':
|
|
@@ -8242,19 +8325,12 @@ var RealTimeStream = /*#__PURE__*/function () {
|
|
|
8242
8325
|
}
|
|
8243
8326
|
if (videoTrackFailed || audioTrackFailed) {
|
|
8244
8327
|
var retryCallback = function retryCallback() {
|
|
8245
|
-
_this._channelContext.state.value = _channels_ChannelState__WEBPACK_IMPORTED_MODULE_18__["default"].ConnectionError;
|
|
8246
|
-
if (_this._channelContext.videoElement.value) {
|
|
8247
|
-
_this._channelContext.videoElement.value.pause();
|
|
8248
|
-
_this._channelContext.videoElement.value.srcObject = null;
|
|
8249
|
-
}
|
|
8250
|
-
_this._channelContext.playing.value = false;
|
|
8251
|
-
_this._channelContext.loading.value = true;
|
|
8252
8328
|
rtcConnectionMonitor.dispose();
|
|
8253
8329
|
var ignored = _this._handleStreamFailure()["catch"](function (e) {
|
|
8254
8330
|
_this._logger.error('[%s] Failed handling stream failure after track stopped with state [%s]', _this._channelContext.streamId, peerConnection.iceConnectionState, e);
|
|
8255
8331
|
});
|
|
8256
8332
|
};
|
|
8257
|
-
_this.reconnectPeerConnection(peerConnection, retryCallback);
|
|
8333
|
+
_this.reconnectPeerConnection(_this._channelContext.streamId, peerConnection, retryCallback);
|
|
8258
8334
|
} else {
|
|
8259
8335
|
_this._peerConnectionContext.peerConnectionReconnectAttempts = 0;
|
|
8260
8336
|
if (_this._channelContext.state.value !== _channels_ChannelState__WEBPACK_IMPORTED_MODULE_18__["default"].Reconnecting && _this._channelContext.state.value !== _channels_ChannelState__WEBPACK_IMPORTED_MODULE_18__["default"].Offline) {
|
|
@@ -8306,8 +8382,12 @@ var RealTimeStream = /*#__PURE__*/function () {
|
|
|
8306
8382
|
}()
|
|
8307
8383
|
}, {
|
|
8308
8384
|
key: "reconnectPeerConnection",
|
|
8309
|
-
value: function reconnectPeerConnection(peerConnection, retryCallback) {
|
|
8385
|
+
value: function reconnectPeerConnection(streamId, peerConnection, retryCallback) {
|
|
8310
8386
|
var _this2 = this;
|
|
8387
|
+
if (!_SDK__WEBPACK_IMPORTED_MODULE_11__["default"].applicationActivityMonitor.isForeground.value) {
|
|
8388
|
+
this._logger.debug('[%s] Skipping peerConnection reconnection attempt while not in foreground (peerConnection state [%s])', streamId, peerConnection.iceConnectionState);
|
|
8389
|
+
return;
|
|
8390
|
+
}
|
|
8311
8391
|
if (peerConnection.iceConnectionState === 'closed') {
|
|
8312
8392
|
return;
|
|
8313
8393
|
}
|
|
@@ -9291,7 +9371,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
9291
9371
|
key: "sdkVersion",
|
|
9292
9372
|
get: function get() {
|
|
9293
9373
|
try {
|
|
9294
|
-
return "
|
|
9374
|
+
return "2026-03-09T14:19:52.161Z (2025.2.3-beta.596)";
|
|
9295
9375
|
} catch (e) {
|
|
9296
9376
|
return this._defaultVersion;
|
|
9297
9377
|
}
|
|
@@ -11527,4 +11607,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11527
11607
|
/******/ })()
|
|
11528
11608
|
;
|
|
11529
11609
|
});
|
|
11530
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7RUFBRTtFQUN4THJXLEdBQUcsRUFBRSxJQUFJSyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN6U0osR0FBRyxFQUFFLElBQUlJLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElB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QixvRkFBQSxDQUFLLElBQUkwZ0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDL3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUFxTixvRkFBQSxDQUN6RTAyQixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUExMkIsb0ZBQUEsQ0FBSyxJQUFJMGdCLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQy90QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdB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QUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxxQ0FBcUMsNEJBQTRCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBCQUEwQixlQUFlO0FBQ3RFOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pvQkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNiNTBDLEdBQUcsRUFBSEEsNENBQUc7RUFDSG8xQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JqTixZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9EaW1lbnNpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnF1ZXVlTWljcm90YXNrKHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50Q3JlYXRlRWxlbWVudDxIVE1MSW1hZ2VFbGVtZW50PignaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gR2xvYmFsU2NvcGUudmFsdWUuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LmRvY3VtZW50Q3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkXG4gICAgICAmJiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBGb3JtRGF0YSgpOiB0eXBlb2YgRm9ybURhdGEge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuRm9ybURhdGE7XG4gIH1cblxuICBnZXQgSFRNTFZpZGVvRWxlbWVudCgpOiB0eXBlb2YgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5IVE1MVmlkZW9FbGVtZW50O1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtKCk6IHR5cGVvZiBNZWRpYVN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbVRyYWNrKCk6IHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtVHJhY2s7XG4gIH1cblxuICBnZXQgTWVkaWFTb3VyY2UoKTogdHlwZW9mIE1lZGlhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU291cmNlO1xuICB9XG5cbiAgZ2V0IFJUQ1BlZXJDb25uZWN0aW9uKCk6IHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBSVENTZXNzaW9uRGVzY3JpcHRpb24oKTogdHlwZW9mIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgUlRDSWNlQ2FuZGlkYXRlKCk6IHR5cGVvZiBSVENJY2VDYW5kaWRhdGUge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDSWNlQ2FuZGlkYXRlO1xuICB9XG5cbiAgZ2V0IFVSTCgpOiB0eXBlb2YgVVJMIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTDtcbiAgfVxuXG4gIGdldCBVUkxTZWFyY2hQYXJhbXMoKTogdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkxTZWFyY2hQYXJhbXM7XG4gIH1cblxuICBnZXQgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFySW50ZXJ2YWwoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFySW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFyVGltZW91dCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudENyZWF0ZUVsZW1lbnQoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50LmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SGFzRm9jdXMoKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Lmhhc0ZvY3VzLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZG9jdW1lbnQuaGlkZGVuO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50UXVlcnlTZWxlY3RvcigpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGZldGNoKCk6IChpbnB1dDogc3RyaW5nIHwgVVJMIHwgUmVxdWVzdCwgaW5pdD86IFJlcXVlc3RJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5mZXRjaC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25Ib3N0bmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvblNlYXJjaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2g7XG4gIH1cblxuICBnZXQgbmF2aWdhdG9yQ29ubmVjdGlvbigpOiBJTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgbmF2aWdhdG9ySXNPbkxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5vbkxpbmU7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB0aGlzLl93aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ107XG4gIH1cblxuICBnZXQgcXVldWVNaWNyb3Rhc2soKTogKG1pY3JvdGFzazogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5xdWV1ZU1pY3JvdGFzay5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3I6IHN0cmluZywgY3VycmVudFZhbHVlOiBzdHJpbmcgfCBFcnJvciwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGU6IG9iamVjdFtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCkgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nVGhyZXNob2xkIHtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB2YWx1ZSgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXRUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuLi9zZGsvVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi9zZGsvRW52aXJvbm1lbnQnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZXM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IE1ldHJpY3NTZXJ2aWNlfSA9IHt9O1xuXG4gIHN0YXRpYyBnZXRNZXRyaWNzU2VydmljZSh1cmw6IHN0cmluZyk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdXJsIG11c3QgYmUgYSBzdHJpbmcgaW5zdGVhZCByZWNlaXZlZCBbJHt0eXBlb2YgdXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF07XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzKSB7XG4gICAgICByZXR1cm4gbWV0cmljc1NlcnZpY2VzO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbmV3IE1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodXJsKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChTREsudGVsZW1ldHJ5TGV2ZWwpO1xuXG4gICAgcmV0dXJuIE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXSA9IG5ldyBNZXRyaWNzU2VydmljZShtZXRyaWNzQ29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogdm9pZCB7XG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gT2JqZWN0LnZhbHVlcyhNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzKTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMgJiYgbWV0cmljc1NlcnZpY2VzLmxlbmd0aCkge1xuICAgICAgbWV0cmljc1NlcnZpY2VzLmZvckVhY2gobWV0cmljc1NlcnZpY2UgPT4ge1xuICAgICAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IHRlbGVtZXRyeUxldmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldHJpY3NGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbCkge1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsOlxuICAgICAgICByZXR1cm4gJ0Vzc2VudGlhbCc7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbFR5cGU6IFRlbGVtZXRyeUxldmVsVHlwZSk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLk9mZjtcbiAgICAgIGNhc2UgJ0Vzc2VudGlhbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+ID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPih7fSk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyYWNrc1RvTW9uaXRvcjogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgIHRoaXMuX3RyYWNrc1RvTW9uaXRvciA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLm1hcCh0cmFjayA9PiB0cmFjay5raW5kKSB8fCBbXTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5nZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMudXBkYXRlU3RhdGlzdGljTGVnYWN5KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbClcbiAgICAgIC50aGVuKHN0YXRzID0+IHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wIHx8IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgcGFja2V0c0xvc3Q6IHJlcG9ydC5wYWNrZXRzTG9zdCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNSZWNlaXZlZDogcmVwb3J0LnBhY2tldHNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LmZyYW1lc0RlY29kZWQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHNMZWdhY3koKS50aGVuKHN0YXRzID0+IHtcbiAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dvb2dSVFQnKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IHJlcG9ydC5zdGF0KCdtZWRpYVR5cGUnKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdID0ge3RpbWVzdGFtcDogRGF0ZS5ub3coKX07XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydtZWRpYVR5cGUnXSA9IG1lZGlhVHlwZTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2J5dGVzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdieXRlc1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2NvZGVjJ10gPSByZXBvcnQuc3RhdCgnZ29vZ0NvZGVjTmFtZScpLnRvU3RyaW5nKCkgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShtZWRpYVR5cGUpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgIGlmIChtZWRpYVR5cGUgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuc3RhdCgnZnJhbWVzRGVjb2RlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgMTAwMCB8fCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUNoYW5uZWx9IGZyb20gJy4vSUNoYW5uZWwnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbn0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQgU3RyZWFtRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsIGltcGxlbWVudHMgSUNoYW5uZWwge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignQ2hhbm5lbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFeGlzdHM6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b011dGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0b1BhdXNlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBsYXlpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRhcmdldExhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMYWc6IFJlYWRPbmx5U3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUJpdHJhdGVMaW1pdDogUmVhZE9ubHlTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJlc29sdXRpb246IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBvcHRpb25zPzogQ2hhbm5lbE9wdGlvbnMpIHtcbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKTtcbiAgICBjb25zdCBjaGFubmVsQ29udGV4dE9wdGlvbnM6IENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucz8udGFyZ2V0TGFnLFxuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja1xuICAgIH07XG4gICAgY29uc3Qgc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICAgICAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8udmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IG5ldyBDaGFubmVsQ29udGV4dChjaGFubmVsQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQoKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gbmV3IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQoc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seUV4aXN0cyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmV4aXN0cyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQbGF5aW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUxhZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcpO1xuICAgIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPih0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQpO1xuICAgIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPih0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuICAgIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciA9IHRoaXMuaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gbmV3IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0KCk7XG4gICAgdGhpcy5jb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkKTtcbiAgICB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4odGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQuc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnN1YnNjcmliZShzdHJlYW0gPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLnZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSA9IG5ldyBWaWRlb1RlbGVtZXRyeSh0aGlzLnN0cmVhbUlkLCBTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9jaGFubmVsU3RhcnRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh0aGlzLnZpZGVvRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHRoaXMudmlkZW9FbGVtZW50KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnJlc3RhcnRBZnRlclN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24uc3Vic2NyaWJlKHJlc29sdXRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeS5vblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMocmVzb2x1dGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQuc3Vic2NyaWJlKGJpdHJhdGVMaW1pdCA9PiB7XG4gICAgICAgIGlmIChiaXRyYXRlTGltaXQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGJpdHJhdGVMaW1pdCxcbiAgICAgICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICAgICAgQml0cmF0ZU1vZGUuTm9ybWFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBleGlzdHMoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RXhpc3RzO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBCaXRzUGVyU2Vjb25kIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBnZXQgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4oJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4oJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgJiYgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBpbnNlcnRhYmxlLXN0cmVhbXMgYW5kIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGFyZSBlbmFibGVkLCBvbmx5IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3QgaGFzRW5jb2RlZFN0cmVhbVNpbmsgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbic7XG5cbiAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgJiYgaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGNhbGxiYWNrIGFuZCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgc2luayBmdW5jdGlvbiBmb3VuZCwgb25seSB1c2Ugb25lIHR5cGUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNZWRpYSBTdHJlYW0gVHJhY2sgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBDaGFubmVsU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUGxheWVyID0gU3RyZWFtRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCFzdHJlYW1QbGF5ZXIpIHtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtUGxheWVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLFxuICAgICAgdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudC5iaW5kKHRoaXMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgY2hhbm5lbCcsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RhcnRBZnRlclN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwbGF5aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGF1c2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIGludm9rZSBwbGF5KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmIChwZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUuZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQgJiYgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oY2FwYWJpbGl0aWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5ID0gY2FwYWJpbGl0aWVzLmZpbmQoY2FwYWJpbGl0eSA9PiBjYXBhYmlsaXR5LnN0YXJ0c1dpdGgoJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbj0nKSk7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCFmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgbm8gY2FwYWJpbGl0eSB3YXMgZm91bmQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2FibGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gYXMgdGhlIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgaXQgWyVzXScsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5LnNwbGl0KCc9JylbMV1cbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKG9wdGlvbiA9PiBvcHRpb24udHJpbSgpKVxuICAgICAgLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICBjYXNlICd0aW1lY29kZSc6XG4gICAgICAgICAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aW1lc3RhbXBzJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdJZ25vcmluZyB1bmtub3duIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBvcHRpb24gWyVzXScsIG9wdGlvbik7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gY29uZmlndXJhdGlvbiBbKHRpbWVjb2RlIFslc10sIHRpbWVzdGFtcHMgWyVzXSldJywgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3QgcGxheVByb21pc2UgPSB2aWRlb0VsZW1lbnQucGxheSgpO1xuXG4gICAgaWYgKHBsYXlQcm9taXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYXlQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICBjb25zdCBoYXNBdWRpb1RyYWNrID0gISFtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5maWx0ZXIodHJhY2sgPT4ge1xuICAgICAgICByZXR1cm4gdHJhY2sua2luZCA9PT0gJ2F1ZGlvJztcbiAgICAgIH0pLmxlbmd0aDtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmID0gIVNESy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcblxuICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIHx8IHZpZGVvRWxlbWVudC5tdXRlZCB8fCAhaGFzQXVkaW9UcmFjaykge1xuICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZikge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBhdXNlZCB2aWRlbyBhZnRlciBwbGF5IGZhaWxlZC4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgbXV0ZWQgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiB2aWRlb0VsZW1lbnQucGxheSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQbGF5ZWQgdmlkZW8gYWZ0ZXIgYXV0byBtdXRpbmcuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZCB0byB1bm11dGUuJywgdGhpcy5zdHJlYW1JZCk7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUGF1c2VkID0gMyxcbiAgUGxheWluZyA9IDQsXG4gIFJlY292ZXJpbmcgPSA1LFxuICBSZWNvbm5lY3RpbmcgPSA2LFxuICBTdGFuZEJ5ID0gNyxcbiAgU3RvcHBlZCA9IDgsXG4gIFVuYXV0aG9yaXplZCA9IDksXG4gIEdlb1Jlc3RyaWN0ZWQgPSAxMCxcbiAgR2VvQmxvY2tlZCA9IDExLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMixcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDE0LFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNSxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE2LFxuICBFcnJvciA9IDE3XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBDaGFubmVsLCB7Q2hhbm5lbE9wdGlvbnN9IGZyb20gJy4vQ2hhbm5lbCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUNoYW5uZWxPcHRpb25zID0ge1xuICB2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVscyB7XG4gIHN0YXRpYyBjcmVhdGVDaGFubmVsKG9wdGlvbnM6IENyZWF0ZUNoYW5uZWxPcHRpb25zKTogQ2hhbm5lbCB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbm5lbE9wdGlvbnM6IENoYW5uZWxPcHRpb25zID0ge1xuICAgICAgdGFyZ2V0TGFnOiBvcHRpb25zLnRhcmdldExhZyxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrczogQ2hhbm5lbE9wdGlvbnMgJiB7XG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgIGNoYW5uZWxPcHRpb25zLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICAgIGNoYW5uZWxPcHRpb25zLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENoYW5uZWwob3B0aW9ucy52aWRlb0VsZW1lbnQsIG9wdGlvbnMudG9rZW4sIGNoYW5uZWxPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVscyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtLCBTdWJzY3JpYmVTdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi4vY2hhbm5lbHMvSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljLCBJUnRjU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG5jb25zdCBkZWZhdWx0VGFyZ2V0TGFnID0gMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBudW1iZXI7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsQ29udGV4dCB7XG4gIGNoYW5uZWxJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBjaGFubmVsRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICByZW5kZXJlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgc3RhdGU6IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgZXhpc3RzOiBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPjtcbiAgYXV0b011dGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRvUGF1c2VkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHBsYXlpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHRhcmdldExhZzogU3ViamVjdDxNaWxsaXNlY29uZD47XG4gIGxhZzogU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD47XG4gIGJpdHJhdGVMaW1pdDogU3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcmVzb2x1dGlvbjogU3ViamVjdDxEaW1lbnNpb24+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgfCBudWxsO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHwgbnVsbDtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICB2aWRlb1RlbGVtZXRyeTogVmlkZW9UZWxlbWV0cnkgfCBudWxsO1xuICBydGNBdWRpb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYyB8IG51bGw7XG4gIHJ0Y1ZpZGVvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IENoYW5uZWxDb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucmVuZGVyZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbEluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IG5ldyBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPihDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmV4aXN0cyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmF1dG9NdXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dG9QYXVzZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wbGF5aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy50YXJnZXRMYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4ob3B0aW9ucz8udGFyZ2V0TGFnID8/IGRlZmF1bHRUYXJnZXRMYWcpO1xuICAgIHRoaXMubGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5iaXRyYXRlTGltaXQgPSBuZXcgU3ViamVjdDxCaXRzUGVyU2Vjb25kPigwKTtcbiAgICB0aGlzLnJlc29sdXRpb24gPSBuZXcgU3ViamVjdDxEaW1lbnNpb24+KERpbWVuc2lvbi5lbXB0eSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPz8gbnVsbDtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMudmlkZW9UZWxlbWV0cnkgPSBudWxsO1xuICAgIHRoaXMucnRjQXVkaW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMucnRjVmlkZW9TdGF0aXN0aWMgPSBudWxsO1xuICAgIHRoaXMuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gMDtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5U3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC52YWx1ZSAmJiB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFuZEJ5O1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzLnZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZWNvZGU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZXN0YW1wczogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGlzRW5hYmxlZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZWNvZGUgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZXN0YW1wcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25Db250ZXh0IHtcbiAgbWVkaWFTdHJlYW06IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb246IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2sgPSB7XG4gIG1lZGlhU3RyZWFtVHJhY2s6IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsO1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIgfCBudWxsO1xuICBtaWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVjOiBWaWRlb0NvZGVjIHwgQXVkaW9Db2RlYyB8IG51bGw7XG4gIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBXb3JrZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIHwgbnVsbDtcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICByZWFkb25seSB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuYXVkaW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICAgIHRoaXMudmlkZW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZW51bSBBdWRpb0NvZGVjIHtcbiAgT1BVUyA9IDAsXG4gIEFBQyA9IDFcbn1cblxuZXhwb3J0IHR5cGUgQXVkaW9Db2RlY1R5cGUgPSAnT1BVUycgfCAnQUFDJzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtBdWRpb0NvZGVjLCBBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi9BdWRpb0NvZGVjJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZShhdWRpb0NvZGVjOiBBdWRpb0NvZGVjKTogQXVkaW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAoYXVkaW9Db2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiAnT1BVUyc7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gJ0FBQyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhhdWRpb0NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGUpOiBBdWRpb0NvZGVjIHtcbiAgICBjb25zdCBhdWRpb0NvZGVjU3RyaW5nID0gYXVkaW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgQXVkaW9Db2RlYztcblxuICAgIHN3aXRjaCAoYXVkaW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnT1BVUyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLk9QVVM7XG4gICAgICBjYXNlICdBQUMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5BQUM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gVmlkZW9Db2RlYyB7XG4gIEgyNjQgPSAwLFxuICBWUDggPSAxLFxuICBWUDkgPSAyXG59XG5cbmV4cG9ydCB0eXBlIFZpZGVvQ29kZWNUeXBlID0gJ0gyNjQnIHwgJ1ZQOCcgfCAnVlA5JzsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtWaWRlb0NvZGVjLCBWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi9WaWRlb0NvZGVjJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlkZW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVG9WaWRlb0NvZGVjVHlwZSh2aWRlb0NvZGVjOiBWaWRlb0NvZGVjKTogVmlkZW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAodmlkZW9Db2RlYykge1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLkgyNjQ6XG4gICAgICAgIHJldHVybiAnSDI2NCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gJ1ZQOCc7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gJ1ZQOSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyh2aWRlb0NvZGVjVHlwZTogVmlkZW9Db2RlY1R5cGUpOiBWaWRlb0NvZGVjIHtcbiAgICBjb25zdCB2aWRlb0NvZGVjU3RyaW5nID0gdmlkZW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgVmlkZW9Db2RlYztcblxuICAgIHN3aXRjaCAodmlkZW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnSDI2NCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLkgyNjQ7XG4gICAgICBjYXNlICdWUDgnOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDg7XG4gICAgICBjYXNlICdWUDknOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5WUDk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh2aWRlb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RW5kUG9pbnQ+KHJlc29sdmVFbmRQb2ludFByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKVxuICAgICAgICAgIC50aGVuKHJlc29sdmVFbmRQb2ludFByb21pc2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVTdGF0dXMgPSAnb2snIHwgJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBSZW1vdmVUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIERlc3Ryb3lTdHJlYW1TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IGludGVyZmFjZSBJU3RyZWFtIHtcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc6IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHtcbiAgKHJlcXVlc3Q6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHtcbiAgKHJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlT3B0aW9ucyA9IHtcbiAgb25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdub3QtZm91bmQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCcgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IG51bWJlcikge1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgICB0aGlzLl90aW1lb3V0ID0gdGltZW91dDtcblxuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmQgcG9pbnQgcmVxdWlyZXMgYSB0aW1lb3V0YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBhc3luYyBwaW5nKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFBpbmdVcmwoKTtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PlxuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aGlzLl90aW1lb3V0KSlcbiAgICBdKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7IC8qIEhhbmRsZSAqL1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBmaW5pc2hlZCAtIHN0YXJ0O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIsIG9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBsZXQgcmVxdWVzdEJvZHk6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Q7XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPy4ocmVxdWVzdEJvZHkpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RCb2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYFN1YnNjcmliZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAncHVibGlzaCddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgbmV3IEVycm9yKGBQdWJsaXNoIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW06IElTdHJlYW0sIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXNjcmlwdGlvbicsICdyZW1vdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0/LnNoYXJlZFNlY3JldCxcbiAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiBzZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgc2RwOiBzZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgbmV3IEVycm9yKGBTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgbmV3IEVycm9yKGBTZXQgbGltaXQgYml0cmF0ZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBuZXcgRXJyb3IoYEFkZCBpY2UgY2FuZGlkYXRlcyB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYERlbGV0ZSBzdHJlYW0gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHN0cmVhbScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBkZXN0cm95IHN0cmVhbSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBkZXN0cm95U3RyZWFtUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW1PblVubW91bnQoc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbmF2aWdhdG9yPy5zZW5kQmVhY29uKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5kZXN0cm95U3RyZWFtKHN0cmVhbSwgcmVhc29uKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgbmF2aWdhdG9yLnNlbmRCZWFjb24odXJsLCBmb3JtRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgcGF0aEFzQXJyYXkgPSB1cmkucGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIHBhdGhBc0FycmF5Lmxlbmd0aCA9IHBhdGhBc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICB1cmkucGF0aG5hbWUgPSBwYXRoQXNBcnJheS5jb25jYXQoLi4ucGF0aCkuam9pbignLycpO1xuXG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQaW5nVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlJywgJ2h0dHAnKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2U7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZyxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uID0gZGF0YS5zZXNzaW9uRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTogSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSdHBUaW1lc3RhbXB9IGZyb20gJy4vRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge01ldGFkYXRhTWVzc2FnZVBheWxvYWQsIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWR9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG5leHBvcnQgdHlwZSBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gIGNvZGVjOiBWaWRlb0NvZGVjO1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgaXNFbmFibGVkU3ViamVjdDogU3ViamVjdDxib29sZWFuPjtcbiAgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyO1xuICBtaWQ6IHN0cmluZztcbiAgdHJhY2tJZDogc3RyaW5nO1xuICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXTtcbiAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdHJhbnNmb3JtTmFtZSA9ICdmcmFtZS10aW1pbmctaW5mb3JtYXRpb24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcDogTWFwPFJ0cFRpbWVzdGFtcCwgRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnREaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5YmFja1N0YXRlOiAncGxheWluZycgfCAncGF1c2VkJyB8ICdzdGFsbGVkJyB8ICdlbmRlZCcgfCAnZXJyb3InIHwgJ3dhaXRpbmcnID0gJ3dhaXRpbmcnO1xuICBwcml2YXRlIF9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKGNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjb250ZXh0LnN0cmVhbUlkLCBjb250ZXh0LmNvZGVjLCBjb250ZXh0LnJlY2VpdmVyLCBjb250ZXh0Lm1pZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcoY29udGV4dC52aWRlb0VsZW1lbnQsIGNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgdGhpcy5zZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29udGV4dC5jb2RlYywgY29udGV4dC5taWQsIGNvbnRleHQudHJhY2tJZCwgY29udGV4dC50cmFuc2Zvcm1NZXNzYWdlUm91dGVyLCBjb250ZXh0LnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMsIGNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICBjb250ZXh0LmlzRW5hYmxlZFN1YmplY3QudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5Qcm9jZXNzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihzdHJlYW1JZDogc3RyaW5nLCBjb2RlYzogVmlkZW9Db2RlYywgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyLCBtaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChjb2RlYyAhPT0gVmlkZW9Db2RlYy5IMjY0KSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2UgdmlkZW8gY29kZWMgaXMgbm90IEgyNjQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXJlY2VpdmVyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gcmVjZWl2ZXIgd2FzIGZvdW5kJywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFtaWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSBubyBtaWQgd2FzIGZvdW5kJywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybShjb2RlYzogVmlkZW9Db2RlYywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW10sIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlci5yZWdpc3RlclJvdXRlPFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPE1ldGFkYXRhTWVzc2FnZVBheWxvYWQ+PihUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgdGhpcy5oYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UuYmluZCh0aGlzLCBWaWRlb0NvZGVjW2NvZGVjXSwgbWlkISwgdHJhY2tJZCEsIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCkpO1xuICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaChGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlci5fdHJhbnNmb3JtTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZShjb2RlYzogc3RyaW5nLCBtaWQ6IHN0cmluZywgdHJhY2tJZDogc3RyaW5nLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbWVzc2FnZTogTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3J0cFRpbWVzdGFtcCwgbWV0YWRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKG1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBydHBUaW1lc3RhbXBOdW1iZXIgPSBwYXJzZUludChydHBUaW1lc3RhbXAsIDEwKTtcbiAgICAgIGNvbnN0IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbWV0YWRhdGFbJ2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uJ107XG5cbiAgICAgIGlmIChkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcbiAgICAgICAgICB0aW1lY29kZTogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24udGltZWNvZGUgPz8gbnVsbCxcbiAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbi5yZWNlaXZlVGltZXN0YW1wID8/IG51bGwsXG4gICAgICAgICAga2luZDogJ3ZpZGVvJyxcbiAgICAgICAgICBjb2RlYyxcbiAgICAgICAgICBtaWQsXG4gICAgICAgICAgdHJhY2tJZCxcbiAgICAgICAgICBzb3VyY2VUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgaW5nZXN0VGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGVuY29kZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICB0cmFuc2NvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZTogdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QudmFsdWUgPSBmcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICAgICAgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5zZXQocnRwVGltZXN0YW1wTnVtYmVyLCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyh2aWRlb0VsZW1lbnRTdWJqZWN0OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPiwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLmNsZWFyKCkpKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh2aWRlb0VsZW1lbnRTdWJqZWN0LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+LCBub3c6IERPTUhpZ2hSZXNUaW1lU3RhbXAsIG1ldGFkYXRhOiBWaWRlb0ZyYW1lQ2FsbGJhY2tNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlLXJlZ2lzdGVyIHRoZSBjYWxsYmFjayB0byBlbnN1cmUgaXQncyBjYWxsZWQgYWdhaW5cbiAgICB0aGlzLl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcblxuICAgIGNvbnN0IHJ0cFRpbWVzdGFtcCA9IG1ldGFkYXRhLnJ0cFRpbWVzdGFtcDtcblxuICAgIGlmICghcnRwVGltZXN0YW1wKSB7XG4gICAgICAvLyBUT0RPIChOSCk6IEFkZCBhIHRocm90dGxlZCBsb2cgaW5kaWNhdGluZyB0aGF0IG5vIFJUUCB0aW1lc3RhbXAgd2FzIGZvdW5kXG4gICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgaXQncyBudWxsYWJsZSwgYnV0IHdlIGFsd2F5cyBoYXZlIGl0IGluIGEgV2ViUlRDIGNvbnRleHRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lc3RhbXBzVG9EZWxldGU6IFJ0cFRpbWVzdGFtcFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFt0aW1lc3RhbXAsIGZyYW1lVGltaW5nXSBvZiB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wKSB7XG4gICAgICBpZiAodGltZXN0YW1wID4gcnRwVGltZXN0YW1wKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0ge1xuICAgICAgICAuLi5mcmFtZVRpbWluZyxcbiAgICAgICAgcmVuZGVyVGltZXN0YW1wOiBuZXcgRGF0ZShwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgbm93KSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnXG4gICAgICB9O1xuXG4gICAgICB0aW1lc3RhbXBzVG9EZWxldGUucHVzaCh0aW1lc3RhbXApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGltZXN0YW1wIG9mIHRpbWVzdGFtcHNUb0RlbGV0ZSkge1xuICAgICAgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5kZWxldGUodGltZXN0YW1wKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBjb25zdCBvblBsYXlpbmcgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdwbGF5aW5nJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpKSk7XG5cbiAgICBjb25zdCBvblBhdXNlID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGF1c2VkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKSkpO1xuXG4gICAgY29uc3Qgb25TdGFsbGVkID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnc3RhbGxlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgb25TdGFsbGVkKSkpO1xuXG4gICAgY29uc3Qgb25XYWl0aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnd2FpdGluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgb25XYWl0aW5nKSkpO1xuXG4gICAgY29uc3Qgb25FbmRlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ2VuZGVkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIG9uRW5kZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKSkpO1xuXG4gICAgY29uc3Qgb25FcnJvciA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ2Vycm9yJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKSkpO1xuXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCk7XG4gICAgICB9XG4gICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIGlmICghdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkID0gdmlkZW9FbGVtZW50LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sodGhpcy5oYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2suYmluZCh0aGlzLCB2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uLy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi4vLi4vcnRjL1NkcFBhcnNlcic7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UsIHtcbiAgZGVmYXVsdFRyYWNrS2luZHMsXG4gIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1xufSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IEVuZFBvaW50LCB7U3Vic2NyaWJlT3B0aW9ucywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIsIHtGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHR9IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQge0lTdHJlYW19IGZyb20gJy4vSVN0cmVhbSc7XG5pbXBvcnQgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciwge0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyJztcbmltcG9ydCB7QXVkaW9Db2RlY1R5cGV9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IFZpZGVvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcnO1xuaW1wb3J0IEF1ZGlvQ29kZWNNYXBwaW5nIGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlY01hcHBpbmcnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gY2hhbm5lbENvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lciwgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA/IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkIDogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigncmVjdm9ubHknLCBkZWZhdWx0VHJhY2tLaW5kcywgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpYmVPcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXMpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gdW5kZWZpbmVkIDtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbVByb21pc2UgPSBuZXcgUHJvbWlzZTxNZWRpYVN0cmVhbT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50Lm9uVHJhY2tEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZTogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFsndHJhY2snIHwgJ2FkZHN0cmVhbSddKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoJ3N0cmVhbXMnIGluIGUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKTtcbiAgICAgICAgICAgICAgfSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJWpdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGFuc3dlcik7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgYXMgRW5kUG9pbnQ7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zICYmIHBlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcihwZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyA9IFZpZGVvQ29kZWNNYXBwaW5nLmNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyhwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjIGFzIFZpZGVvQ29kZWNUeXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2suY29kZWMgPSBBdWRpb0NvZGVjTWFwcGluZy5jb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYyBhcyBBdWRpb0NvZGVjVHlwZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlcnMgPSBwZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrIGFuZCBvbmUgYXVkaW8gTWVkaWFTdHJlYW1UcmFja1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgLy8gQm90aCBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCwgYnV0IHRoZSB0eXBlIHN5c3RlbSBtYWtlcyB0aGVtIG51bGxhYmxlLCBzbyB3ZSBoYXZlIHRvIGFzc2VydCB0aGUgcHJlc2VuY2VcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSB2aWRlb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IHZpZGVvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSBhdWRpb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IGF1ZGlvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKEluc2VydGFibGVTdHJlYW1zLmNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtSWQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICBjb2RlYzogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLmNvZGVjLFxuICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWRTdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5pc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsXG4gICAgICAgICAgICAgICAgICAgIG1pZDogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrSWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrLmlkISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lc1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcihmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFjazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmshLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmshXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIoZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBJbnNlcnRhYmxlU3RyZWFtcy5jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKG1lZGlhU3RyZWFtLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoZGlzcG9zYWJsZXMpO1xuICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gdHJhbnNmb3JtZWRTdHJlYW07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvciA9IG5ldyBSdGNDb25uZWN0aW9uTW9uaXRvcihwZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW0sIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwKTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uID0gcnRjQ29ubmVjdGlvbk1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcblxuICAgICAgICAgICAgICAgIGlmICghc3RhdGlzdGljcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXVkaW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB2aWRlb1RyYWNrRmFpbGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy5hdWRpbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gQXVkaW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkICYmIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuT2ZmbGluZTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkIHx8IGF1ZGlvVHJhY2tGYWlsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgdHJhY2sgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuT2ZmbGluZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA/IENoYW5uZWxTdGF0ZS5QbGF5aW5nIDogQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIHN0YXRlIHJlc3RvcmVkIHRvIFslc10gYWZ0ZXIgcmVjb25uZWN0aW5nJywgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICAgIGlmICghU0RLLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbSBmcm9tICcuL1JlYWxUaW1lU3RyZWFtJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0b2tlbkNhcGFiaWxpdGllcyA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLmNhcGFiaWxpdGllcztcblxuICAgIGlmICh0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnb24tZGVtYW5kJykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IE9uLURlbWFuZCBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ3N0cmVhbWluZycpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBMaXZlIFN0cmVhbSBwbGF5YmFjay4nKTtcbiAgICAgIGNoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVhbFRpbWVTdHJlYW0oY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbUZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXInO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG50eXBlIE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gJ3ZpZGVvJyB8ICdhdWRpbyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydGFibGVTdHJlYW1zIHtcbiAgc3RhdGljIGNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogRGlzcG9zYWJsZUxpc3Qge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBVc2luZyBXZWJwYWNrJ3Mgd29ya2VyIGxvYWRlciB0byBpbmxpbmUgd29ya2VyXG4gICAgICBjb25zdCB3b3JrZXIgPSBjb250ZXh0LnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyID0gbmV3IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCk7XG5cbiAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpKTtcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgPSBuZXcgVHJhbnNmb3JtTWVzc2FnZVJvdXRlcih3b3JrZXIpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3JlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IHZpZGVvVHJhY2s7XG5cbiAgICBpZiAodmlkZW9UcmFja1JlY2VpdmVyICYmIHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKHZpZGVvVHJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHtyZWNlaXZlcjogYXVkaW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSBhdWRpb1RyYWNrO1xuXG4gICAgaWYgKGF1ZGlvVHJhY2tSZWNlaXZlciAmJiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayhhdWRpb1RyYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGFkZFRyYWNrVHJhbnNmb3JtcyA9ICh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWUgb2YgdHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcykge1xuICAgICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlcXVpcmVkIGZvciBzYWZhcmkgdG8gcHJvcGVybHkgd29yayB3aGVuIG9ubHkgdmlkZW8gdHJhbnNmb3JtYXRpb24gaXMgYWRkZWQgKGkuZS4gRnJhbWVUaW1pbmdJbmZvcm1hdGlvbilcbiAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICBkYXRhOiAncGFzcy10aHJvdWdoJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGFkZFRyYWNrVHJhbnNmb3Jtcyh2aWRlb1RyYWNrKTtcbiAgICBhZGRUcmFja1RyYW5zZm9ybXMoYXVkaW9UcmFjayk7XG5cbiAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0gPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3ggLi4uXG4gICAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayA9IGFzeW5jKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIHRyYWNrUmVjZWl2ZXIudHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLCB7bmFtZTogYCR7dHJhY2tNZWRpYVN0cmVhbVRyYWNrLmtpbmR9LXRyYW5zZm9ybS1waXBlbGluZWB9KTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sodmlkZW9UcmFjayksIGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKGF1ZGlvVHJhY2spXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIGNyZWF0ZUVuY29kZWRTdHJlYW1zIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBpbiBsaWIuZG9tLmQudHNcbiAgICAgICAgICBjb25zdCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zID0gdHJhY2tSZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcblxuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSxcbiAgICAgICAgICAgICAgICAgIHNpbms6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt0cmFuc2ZlcjogW2VuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsIGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVdfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgICBjb25zdCBhY3Rpb25zOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgICAgaWYgKHZpZGVvVHJhY2sucmVjZWl2ZXIgJiYgdmlkZW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayh2aWRlb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdWRpb1RyYWNrLnJlY2VpdmVyICYmIGF1ZGlvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2soYXVkaW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICB9O1xuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3guLi5cbiAgICAgIGF3YWl0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENocm9tZSwgQ2hyb21pdW0uLi5cbiAgICBhd2FpdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oXG4gICAgc3RyZWFtOiBNZWRpYVN0cmVhbSxcbiAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQsXG4gICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWRcbiAgKToge3RyYW5zZm9ybWVkU3RyZWFtOiBNZWRpYVN0cmVhbTsgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0fSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGNvbnN0IGtpbmQ6IE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gdHJhY2sua2luZCBhcyBNZWRpYVN0cmVhbVRyYWNrS2luZDtcblxuICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgJ3ZpZGVvJzoge1xuICAgICAgICAgIGlmICh2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8VmlkZW9GcmFtZSwgVmlkZW9GcmFtZT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtVmlkZW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogdmlkZW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IHZpZGVvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYXVkaW8nOiB7XG4gICAgICAgICAgaWYgKGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxBdWRpb0RhdGEsIEF1ZGlvRGF0YT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtQXVkaW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogYXVkaW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IGF1ZGlvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICAgICAgICBjb25zdCBhdWRpb1B1bXBlciA9IG5ldyBBdWRpbygpO1xuXG4gICAgICAgICAgICBtZWRpYVN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoa2luZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtZWRTdHJlYW0sXG4gICAgICBkaXNwb3NhYmxlc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc2VydGFibGVTdHJlYW1zIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDMsIDY2LCAxOTIsIDQyLCAyMTgsIDQsIDQsIDIzMiwgNjQsIDAsIDAsIDMsIDAsIDY0LCAwLCAwLCAxNSwgMzUsIDE5OCwgMTIsIDE2OCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwNCwgMjA2LCA2MCwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMTY3LCAuLi5uZXcgVWludDhBcnJheSgxNTApLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAxLCAxMzYsIDEzMiwgNiwgMTkxLCAyNTUsIDI1NSwgMTUsIDY5LCAwLCAxLCA4NywgMTU5LCAuLi5uZXcgVWludDhBcnJheSgxNSkuZmlsbCgzOSksIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCAxMjhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMjU1LCA2MSwgLi4ubmV3IFVpbnQ4QXJyYXkoMzE2KS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDY1LCAxNTQsIDMyLCAyNiwgMjQwLCAxOCwgNDhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNmb3JtUGlwZWxpbmVNZXNzYWdlUm91dGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUm91dGVzOiBNYXA8VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCA8VD4obWVzc2FnZTogVCkgPT4gdm9pZD4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iod29ya2VyOiBXb3JrZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemUod29ya2VyKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJvdXRlPFQ+KG1lc3NhZ2VUeXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIHJvdXRlTWVzc2FnZTogKG1lc3NhZ2U6IFQpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLnNldChtZXNzYWdlVHlwZSwgcm91dGVNZXNzYWdlIGFzIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9tZXNzYWdlUm91dGVzLmRlbGV0ZShtZXNzYWdlVHlwZSkpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKHdvcmtlcjogV29ya2VyKTogdm9pZCB7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQ8VHJhbnNmb3JtTWVzc2FnZT4pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZURhdGEgPSA8VD4oe3R5cGUsIGRhdGF9OiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxUPikgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZU1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlUm91dGVzLmdldCh0eXBlKTtcblxuICAgICAgICBpZiAoIXJvdXRlTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdXRlTWVzc2FnZShkYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XG4gICAgICAgICAgcm91dGVNZXNzYWdlRGF0YShtZXNzYWdlLmRhdGEpO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9LCB7b25jZTogZmFsc2V9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoZnVuY3Rpb24oKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcXG4vKioqKioqLyBcXHRcXFwidXNlIHN0cmljdFxcXCI7XFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBhc3NlcnRVbnJlYWNoYWJsZSAqL1xcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeCkge1xcbiAgdGhyb3cgbmV3IEVycm9yKFxcXCJVbmV4cGVjdGVkIHZhbHVlIFtcXFwiLmNvbmNhdCh4LCBcXFwiXS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZFxcXCIpKTtcXG59XFxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1xcXCJkZWZhdWx0XFxcIl0gPSAoYXNzZXJ0VW5yZWFjaGFibGUpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlOyB9LFxcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgVHJhbnNmb3JtTWVzc2FnZVR5cGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBUcmFuc2Zvcm1NZXNzYWdlVHlwZTsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxudmFyIFRyYW5zZm9ybU1lc3NhZ2VUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChUcmFuc2Zvcm1NZXNzYWdlVHlwZSkge1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkVycm9yXFxcIl0gPSAtMV0gPSBcXFwiRXJyb3JcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkFkZFRyYW5zZm9ybVxcXCJdID0gMF0gPSBcXFwiQWRkVHJhbnNmb3JtXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJDb25maWd1cmVQaXBlbGluZVxcXCJdID0gMV0gPSBcXFwiQ29uZmlndXJlUGlwZWxpbmVcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIk1ldGFkYXRhXFxcIl0gPSAyXSA9IFxcXCJNZXRhZGF0YVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQ2h1bmtcXFwiXSA9IDNdID0gXFxcIkNodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJQaXBlbGluZUNvbmZpZ3VyZWRcXFwiXSA9IDRdID0gXFxcIlBpcGVsaW5lQ29uZmlndXJlZFxcXCI7XFxuICByZXR1cm4gVHJhbnNmb3JtTWVzc2FnZVR5cGU7XFxufSh7fSk7XFxudmFyIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlKSB7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uXFxcIl0gPSAwXSA9IFxcXCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkVuY29kZWRWaWRlb0NodW5rXFxcIl0gPSAxXSA9IFxcXCJFbmNvZGVkVmlkZW9DaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJFbmNvZGVkQXVkaW9DaHVua1xcXCJdID0gMl0gPSBcXFwiRW5jb2RlZEF1ZGlvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiU3Vycm9nYXRlVmlkZW9DaHVua1xcXCJdID0gM10gPSBcXFwiU3Vycm9nYXRlVmlkZW9DaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJTdXJyb2dhdGVBdWRpb0NodW5rXFxcIl0gPSA0XSA9IFxcXCJTdXJyb2dhdGVBdWRpb0NodW5rXFxcIjtcXG4gIHJldHVybiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XFxufSh7fSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBXb3JrZXJUcmFuc2Zvcm1zOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2sgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vZnJhbWVUaW1pbmdJbmZvcm1hdGlvbiAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiKTtcXG5cXG5cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciBXb3JrZXJUcmFuc2Zvcm1zID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFdvcmtlclRyYW5zZm9ybXMoKSB7XFxuICAgICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKSh0aGlzLCBXb3JrZXJUcmFuc2Zvcm1zKTtcXG4gIH1cXG4gIHJldHVybiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19bXFxcImRlZmF1bHRcXFwiXSkoV29ya2VyVHJhbnNmb3JtcywgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkge1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XFxuICAgICAgICAgICgwLF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoY2h1bmspO1xcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rIHx8IG1lc3NhZ2UuZGF0YS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLlN1cnJvZ2F0ZVZpZGVvQ2h1bmspIHtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhO1xcbiAgICAgICAgdmFyIF9tZXNzYWdlRGF0YSRkYXRhID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YS50aW1lc3RhbXA7XFxuICAgICAgICB2YXIgY2h1bmtQZW5kaW5nRW5xdWV1ZSA9IGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZ2V0KHRpbWVzdGFtcCk7XFxuICAgICAgICBpZiAoIWNodW5rUGVuZGluZ0VucXVldWUpIHtcXG4gICAgICAgICAgY29uc29sZS53YXJuKCdbV29ya2VyVHJhbnNmb3Jtc10gU3Vycm9nYXRlIHZpZGVvIGNodW5rIG5vdCBmb3VuZCBmb3IgdGltZXN0YW1wJywgdGltZXN0YW1wKTtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY2h1bmtQZW5kaW5nRW5xdWV1ZS5kYXRhID0gc3Vycm9nYXRlO1xcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rUGVuZGluZ0VucXVldWUpO1xcbiAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcFtcXFwiZGVsZXRlXFxcIl0odGltZXN0YW1wKTtcXG4gICAgICB9O1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydChjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlci5iaW5kKG51bGwsIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIpLCB7XFxuICAgICAgICAgICAgb25jZTogZmFsc2VcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmspIHtcXG4gICAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5zZXQoY2h1bmsudGltZXN0YW1wLCBjaHVuayk7XFxuICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLFxcbiAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcXG4gICAgICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSksXFxuICAgICAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGVcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0cmFuc2ZlcjogW2NodW5rLmRhdGFdXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYyKSB7XFxuICAgICAgICB2YXIgbWVzc2FnZSA9IF9yZWYyLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlQXVkaW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEyID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEyLnN1cnJvZ2F0ZSxcXG4gICAgICAgICAgdGltZXN0YW1wID0gX21lc3NhZ2VEYXRhJGRhdGEyLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgYXVkaW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwW1xcXCJkZWxldGVcXFwiXSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5ICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuXFxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIociwgZSkgeyB2YXIgdCA9IFxcXCJ1bmRlZmluZWRcXFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXFxcIkBAaXRlcmF0b3JcXFwiXTsgaWYgKCF0KSB7IGlmIChBcnJheS5pc0FycmF5KHIpIHx8ICh0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpKSB8fCBlICYmIHIgJiYgXFxcIm51bWJlclxcXCIgPT0gdHlwZW9mIHIubGVuZ3RoKSB7IHQgJiYgKHIgPSB0KTsgdmFyIF9uID0gMCwgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgcmV0dXJuIF9uID49IHIubGVuZ3RoID8geyBkb25lOiAhMCB9IDogeyBkb25lOiAhMSwgdmFsdWU6IHJbX24rK10gfTsgfSwgZTogZnVuY3Rpb24gZShyKSB7IHRocm93IHI7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXFxcIik7IH0gdmFyIG8sIGEgPSAhMCwgdSA9ICExOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyB0ID0gdC5jYWxsKHIpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgciA9IHQubmV4dCgpOyByZXR1cm4gYSA9IHIuZG9uZSwgcjsgfSwgZTogZnVuY3Rpb24gZShyKSB7IHUgPSAhMCwgbyA9IHI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGEgfHwgbnVsbCA9PSB0W1xcXCJyZXR1cm5cXFwiXSB8fCB0W1xcXCJyZXR1cm5cXFwiXSgpOyB9IGZpbmFsbHkgeyBpZiAodSkgdGhyb3cgbzsgfSB9IH07IH1cXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkgeyBpZiAocikgeyBpZiAoXFxcInN0cmluZ1xcXCIgPT0gdHlwZW9mIHIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKTsgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTsgcmV0dXJuIFxcXCJPYmplY3RcXFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcXFwiTWFwXFxcIiA9PT0gdCB8fCBcXFwiU2V0XFxcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcXFwiQXJndW1lbnRzXFxcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwOyB9IH1cXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7IChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTsgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07IHJldHVybiBuOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG52YXIgSDI2NF9DT05TVEFOVFMgPSB7XFxuICBOQUxfVU5JVF9UWVBFX1NFSTogNixcXG4gIE5BTF9VTklUX0hFQURFUl9TSVpFOiAxLFxcbiAgU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HOiAxLFxcbiAgRU1VTEFUSU9OX1BSRVZFTlRJT05fQllURTogMHgwMyxcXG4gIFNUQVJUX0NPREVfUFJFRklYXzNCOiBbMHgwMCwgMHgwMCwgMHgwMV0sXFxuICBTVEFSVF9DT0RFX1BSRUZJWF80QjogWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdXFxufTtcXG52YXIgQklUU1RSRUFNX0NPTlNUQU5UUyA9IHtcXG4gIE1JTl9CSVRTX0ZPUl9DTE9DS19USU1FU1RBTVA6IDEwLFxcbiAgTUlOX0JJVFNfRk9SX0ZVTExfVElNRVNUQU1QOiAxNyxcXG4gIE1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVDogMjRcXG59O1xcbmZ1bmN0aW9uIGZpbmROZXh0TmFsU3RhcnQoZGF0YSwgcG9zaXRpb24pIHtcXG4gIHZhciBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XFxuICBmb3IgKHZhciBpID0gcG9zaXRpb247IGkgPCBkYXRhTGVuZ3RoIC0gMzsgaSsrKSB7XFxuICAgIGlmIChkYXRhW2ldID09PSAweDAwICYmIGRhdGFbaSArIDFdID09PSAweDAwKSB7XFxuICAgICAgaWYgKGRhdGFbaSArIDJdID09PSAweDAxKSB7XFxuICAgICAgICByZXR1cm4gaTtcXG4gICAgICB9XFxuICAgICAgaWYgKGkgKyAzIDwgZGF0YUxlbmd0aCAmJiBkYXRhW2kgKyAyXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAzXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICByZXR1cm4gLTE7XFxufVxcbmZ1bmN0aW9uIGV4dHJhY3RTZWlQYXlsb2FkKGRhdGEsIHN0YXJ0SW5kZXgpIHtcXG4gIHZhciBpbmRleCA9IHN0YXJ0SW5kZXg7XFxuICB2YXIgZmZDb3VudCA9IDA7XFxuICB3aGlsZSAoZGF0YVtpbmRleF0gPT09IDB4ZmYpIHtcXG4gICAgZmZDb3VudCsrO1xcbiAgICBpbmRleCsrO1xcbiAgfVxcbiAgdmFyIHBheWxvYWRUeXBlID0gZmZDb3VudCAqIDI1NSArIGRhdGFbaW5kZXgrK107XFxuXFxuICAvLyBQYXJzZSBwYXlsb2FkIHNpemVcXG4gIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkU2l6ZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcbiAgcmV0dXJuIHtcXG4gICAgdHlwZTogcGF5bG9hZFR5cGUsXFxuICAgIHBheWxvYWQ6IGRhdGEuc3ViYXJyYXkoaW5kZXgsIGluZGV4ICsgcGF5bG9hZFNpemUpLFxcbiAgICBsZW5ndGg6IGluZGV4ICsgcGF5bG9hZFNpemUgLSBzdGFydEluZGV4XFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkge1xcbiAgdmFyIHJlc3VsdCA9IFtdO1xcbiAgdmFyIHplcm9Db3VudCA9IDA7XFxuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoZGF0YSksXFxuICAgIF9zdGVwO1xcbiAgdHJ5IHtcXG4gICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcXG4gICAgICB2YXIgX2J5dGUgPSBfc3RlcC52YWx1ZTtcXG4gICAgICBpZiAoemVyb0NvdW50ID09PSAyICYmIF9ieXRlID09PSBIMjY0X0NPTlNUQU5UUy5FTVVMQVRJT05fUFJFVkVOVElPTl9CWVRFKSB7XFxuICAgICAgICB6ZXJvQ291bnQgPSAwOyAvLyBSZXNldCBhZnRlciBmaW5kaW5nIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGUuXFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChfYnl0ZSA9PT0gMHgwMCkge1xcbiAgICAgICAgICB6ZXJvQ291bnQrKztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIHplcm9Db3VudCA9IDA7XFxuICAgICAgICB9XFxuICAgICAgICByZXN1bHQucHVzaChfYnl0ZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9IGNhdGNoIChlcnIpIHtcXG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcXG4gIH0gZmluYWxseSB7XFxuICAgIF9pdGVyYXRvci5mKCk7XFxuICB9XFxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcXG59XFxuZnVuY3Rpb24gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpIHtcXG4gIHN3aXRjaCAocGljU3RydWN0KSB7XFxuICAgIGNhc2UgMDpcXG4gICAgY2FzZSAxOlxcbiAgICBjYXNlIDI6XFxuICAgICAgcmV0dXJuIDE7XFxuICAgIGNhc2UgMzpcXG4gICAgY2FzZSA0OlxcbiAgICBjYXNlIDc6XFxuICAgICAgcmV0dXJuIDI7XFxuICAgIGNhc2UgNTpcXG4gICAgY2FzZSA2OlxcbiAgICBjYXNlIDg6XFxuICAgICAgcmV0dXJuIDM7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuIDA7XFxuICB9XFxufVxcbmZ1bmN0aW9uIGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihidWZmZXIpIHtcXG4gIHZhciBiaXRPZmZzZXQgPSAwO1xcbiAgZnVuY3Rpb24gcmVhZEJpdHMoYml0c1RvUmVhZCkge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgYml0c1RvUmVhZCA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3QgcmVhZCBbXFxcIi5jb25jYXQoYml0c1RvUmVhZCwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgdmFyIHZhbHVlID0gMDtcXG4gICAgdmFyIGJpdHNSZW1haW5pbmcgPSBiaXRzVG9SZWFkO1xcbiAgICB3aGlsZSAoYml0c1JlbWFpbmluZyA+IDApIHtcXG4gICAgICB2YXIgYnl0ZU9mZnNldCA9IE1hdGguZmxvb3IoYml0T2Zmc2V0IC8gOCk7XFxuICAgICAgdmFyIGJpdEluQnl0ZSA9IGJpdE9mZnNldCAlIDg7XFxuICAgICAgdmFyIGJpdHNMZWZ0SW5CeXRlID0gOCAtIGJpdEluQnl0ZTtcXG4gICAgICB2YXIgcmVhZE5vdyA9IE1hdGgubWluKGJpdHNSZW1haW5pbmcsIGJpdHNMZWZ0SW5CeXRlKTtcXG4gICAgICB2YXIgbWFzayA9ICgxIDw8IHJlYWROb3cpIC0gMTtcXG4gICAgICB2YXIgYnl0ZVZhbCA9IGJ1ZmZlcltieXRlT2Zmc2V0XSA+PiBiaXRzTGVmdEluQnl0ZSAtIHJlYWROb3c7XFxuICAgICAgdmFyIGJpdHMgPSBieXRlVmFsICYgbWFzaztcXG4gICAgICB2YWx1ZSA9IHZhbHVlIDw8IHJlYWROb3cgfCBiaXRzO1xcbiAgICAgIGJpdE9mZnNldCArPSByZWFkTm93O1xcbiAgICAgIGJpdHNSZW1haW5pbmcgLT0gcmVhZE5vdztcXG4gICAgfVxcbiAgICByZXR1cm4gdmFsdWU7XFxuICB9XFxuICBmdW5jdGlvbiBza2lwQml0cyhuKSB7XFxuICAgIGlmIChiaXRPZmZzZXQgKyBuID4gYnVmZmVyLmxlbmd0aCAqIDgpIHtcXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkNhbm5vdCBza2lwIFtcXFwiLmNvbmNhdChuLCBcXFwiXSBiaXRzIC0gb3V0IG9mIGJvdW5kc1xcXCIpKTtcXG4gICAgfVxcbiAgICBiaXRPZmZzZXQgKz0gbjtcXG4gIH1cXG4gIGZ1bmN0aW9uIGdldFJlbWFpbmluZ0JpdHMoKSB7XFxuICAgIHJldHVybiBidWZmZXIubGVuZ3RoICogOCAtIGJpdE9mZnNldDtcXG4gIH1cXG4gIHJldHVybiB7XFxuICAgIHJlYWRCaXRzOiByZWFkQml0cyxcXG4gICAgc2tpcEJpdHM6IHNraXBCaXRzLFxcbiAgICBnZXRSZW1haW5pbmdCaXRzOiBnZXRSZW1haW5pbmdCaXRzXFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykge1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gc2Vjb25kc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gbWludXRlc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gaG91cnNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDUpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuaG91cnMgPSByZWFkZXIucmVhZEJpdHMoNSk7XFxuICByZXR1cm4gdHJ1ZTtcXG59XFxuZnVuY3Rpb24gcGFyc2VDbG9ja1RpbWVzdGFtcChyZWFkZXIpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfVxcbiAgdmFyIHRzID0ge1xcbiAgICBjdFR5cGU6IHJlYWRlci5yZWFkQml0cygyKSxcXG4gICAgbnVpdEZpZWxkQmFzZWRGbGFnOiByZWFkZXIucmVhZEJpdHMoMSkgPT09IDEsXFxuICAgIGNvdW50aW5nVHlwZTogcmVhZGVyLnJlYWRCaXRzKDUpLFxcbiAgICBmdWxsVGltZXN0YW1wRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBkaXNjb250aW51aXR5RmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjbnREcm9wcGVkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBuRnJhbWVzOiByZWFkZXIucmVhZEJpdHMoOClcXG4gIH07XFxuICBpZiAodHMuZnVsbFRpbWVzdGFtcEZsYWcpIHtcXG4gICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUCkge1xcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHRzLnNlY29uZHMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLm1pbnV0ZXMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgfSBlbHNlIHtcXG4gICAgaWYgKCFyZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHRzLnRpbWVPZmZzZXQgPSByZWFkZXIucmVhZEJpdHMoMjQpO1xcbiAgcmV0dXJuIHRzO1xcbn1cXG5mdW5jdGlvbiBwYXJzZVBpY3R1cmVUaW1pbmcoZGF0YSwgY29uZmlnKSB7XFxuICB2YXIgcmVhZGVyID0gY3JlYXRlQml0c3RyZWFtUmVhZGVyKHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSk7XFxuICB2YXIgcmVzdWx0ID0ge1xcbiAgICBwaWNTdHJ1Y3Q6IHVuZGVmaW5lZFxcbiAgfTtcXG4gIGlmIChjb25maWcuY3BiRHBiRGVsYXlzUHJlc2VudEZsYWcgJiYgY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5kcGJPdXRwdXREZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuY3BiUmVtb3ZhbERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgKyAxKTtcXG4gIH1cXG4gIGlmIChjb25maWcucGljU3RydWN0UHJlc2VudEZsYWcpIHtcXG4gICAgdmFyIHBpY1N0cnVjdCA9IHJlYWRlci5yZWFkQml0cyg0KTtcXG4gICAgdmFyIG51bUNsb2NrVFMgPSBjb252ZXJ0UGljU3RydWN0VG9OdW1DbG9ja1RTKHBpY1N0cnVjdCk7XFxuICAgIHZhciBjbG9ja1RpbWVzdGFtcHMgPSBbXTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DbG9ja1RTOyBpKyspIHtcXG4gICAgICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDEpIHtcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgICB2YXIgY2xvY2tUaW1lc3RhbXBGbGFnID0gcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxO1xcbiAgICAgIGlmICghY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29udGludWU7XFxuICAgICAgfVxcbiAgICAgIHZhciB0cyA9IHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKTtcXG4gICAgICBpZiAodHMpIHtcXG4gICAgICAgIGNsb2NrVGltZXN0YW1wcy5wdXNoKHtcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXBGbGFnOiB0cnVlLFxcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcDogdHNcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyBOb3QgZW5vdWdoIGJpdHMsIHN0b3AgcHJvY2Vzc2luZyBTRUlcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICByZXN1bHQucGljU3RydWN0ID0ge1xcbiAgICAgIG51bUNsb2NrVFM6IG51bUNsb2NrVFMsXFxuICAgICAgY2xvY2tUaW1lc3RhbXBzOiBjbG9ja1RpbWVzdGFtcHNcXG4gICAgfTtcXG4gIH1cXG4gIHJldHVybiByZXN1bHQ7XFxufVxcbmZ1bmN0aW9uIGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUoY2h1bmspIHtcXG4gIHZhciByZWNlaXZlVGltZXN0YW1wID0gbmV3IERhdGUoKTtcXG4gIHZhciBjaHVua0RhdGEgPSBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKTtcXG4gIHZhciBjdXJyZW50SW5kZXggPSBmaW5kTmV4dE5hbFN0YXJ0KGNodW5rRGF0YSwgMCk7XFxuICB3aGlsZSAoY3VycmVudEluZGV4ICE9PSAtMSkge1xcbiAgICB2YXIgbmV4dE5hbFN0YXJ0ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIGN1cnJlbnRJbmRleCArIDEpO1xcbiAgICB2YXIgbmFsVW5pdEVuZCA9IG5leHROYWxTdGFydCA9PT0gLTEgPyBjaHVua0RhdGEubGVuZ3RoIDogbmV4dE5hbFN0YXJ0O1xcbiAgICB2YXIgc3RhcnRDb2RlTGVuZ3RoID0gY2h1bmtEYXRhW2N1cnJlbnRJbmRleCArIDJdID09PSAweDAxID8gMyA6IDQ7XFxuICAgIHZhciBuYWxVbml0SGVhZGVySW5kZXggPSBjdXJyZW50SW5kZXggKyBzdGFydENvZGVMZW5ndGg7XFxuICAgIHZhciBuYWxVbml0VHlwZSA9IGNodW5rRGF0YVtuYWxVbml0SGVhZGVySW5kZXhdICYgMHgxZjtcXG4gICAgaWYgKG5hbFVuaXRUeXBlID09PSBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9UWVBFX1NFSSkge1xcbiAgICAgIHZhciBzZWlJbmRleCA9IG5hbFVuaXRIZWFkZXJJbmRleCArIEgyNjRfQ09OU1RBTlRTLk5BTF9VTklUX0hFQURFUl9TSVpFO1xcbiAgICAgIHZhciBuYWxVbml0RGF0YSA9IGNodW5rRGF0YS5zdWJhcnJheShzZWlJbmRleCwgbmFsVW5pdEVuZCk7XFxuICAgICAgdmFyIHNlaU9mZnNldCA9IDA7XFxuXFxuICAgICAgLy8gUHJvY2VzcyBTRUkgbWVzc2FnZXMgdW50aWwgZW5kIG9mIE5BTCB1bml0XFxuICAgICAgd2hpbGUgKHNlaU9mZnNldCA8IG5hbFVuaXREYXRhLmxlbmd0aCkge1xcbiAgICAgICAgLy8gU3RvcCBpZiByZW1haW5pbmcgZGF0YSBpcyB0b28gc2hvcnQgdG8gYmUgYSB2YWxpZCBTRUkgbWVzc2FnZVxcbiAgICAgICAgaWYgKHNlaU9mZnNldCArIDIgPiBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2VpUGF5bG9hZCA9IGV4dHJhY3RTZWlQYXlsb2FkKG5hbFVuaXREYXRhLCBzZWlPZmZzZXQpO1xcbiAgICAgICAgaWYgKHNlaVBheWxvYWQudHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HKSB7XFxuICAgICAgICAgIHZhciBfcGFyc2VkUGljdHVyZVRpbWluZyQ7XFxuICAgICAgICAgIHZhciBwYXJzZWRQaWN0dXJlVGltaW5nID0gcGFyc2VQaWN0dXJlVGltaW5nKHNlaVBheWxvYWQucGF5bG9hZCwge1xcbiAgICAgICAgICAgIGNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnOiBmYWxzZSxcXG4gICAgICAgICAgICBwaWNTdHJ1Y3RQcmVzZW50RmxhZzogdHJ1ZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgICAgdmFyIGZpcnN0Q2xvY2tUaW1lc3RhbXAgPSAoX3BhcnNlZFBpY3R1cmVUaW1pbmckID0gcGFyc2VkUGljdHVyZVRpbWluZy5waWNTdHJ1Y3QpID09PSBudWxsIHx8IF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3BhcnNlZFBpY3R1cmVUaW1pbmckLmNsb2NrVGltZXN0YW1wc1swXTtcXG4gICAgICAgICAgaWYgKGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IG51bGwgJiYgZmlyc3RDbG9ja1RpbWVzdGFtcCAhPT0gdm9pZCAwICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICAgICAgdmFyIF9maXJzdENsb2NrVGltZXN0YW1wJCwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMiwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMywgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkNDtcXG4gICAgICAgICAgICB2YXIgcnRwVGltZXN0YW1wID0gY2h1bmsudGltZXN0YW1wO1xcbiAgICAgICAgICAgIHZhciBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcXG4gICAgICAgICAgICAgIHRpbWVjb2RlOiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wID8ge1xcbiAgICAgICAgICAgICAgICBob3VyczogKF9maXJzdENsb2NrVGltZXN0YW1wJCA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuaG91cnMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJCAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgbWludXRlczogKF9maXJzdENsb2NrVGltZXN0YW1wJDIgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm1pbnV0ZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDIgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDIgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiAoX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuc2Vjb25kcykgIT09IG51bGwgJiYgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA6IG51bGwsXFxuICAgICAgICAgICAgICAgIGZyYW1lczogKF9maXJzdENsb2NrVGltZXN0YW1wJDQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm5GcmFtZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDQgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBpc0ZyYW1lRHJvcDogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5jbnREcm9wcGVkRmxhZ1xcbiAgICAgICAgICAgICAgfSA6IG51bGwsXFxuICAgICAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiByZWNlaXZlVGltZXN0YW1wXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxcbiAgICAgICAgICAgICAgICBkYXRhOiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoe30sIHJ0cFRpbWVzdGFtcCwge1xcbiAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBzZWlPZmZzZXQgKz0gc2VpUGF5bG9hZC5sZW5ndGg7XFxuXFxuICAgICAgICAvLyBTdG9wIGlmIGFuIGludmFsaWQgcGF5bG9hZCBsZW5ndGggd2FzIGRldGVjdGVkLlxcbiAgICAgICAgaWYgKHNlaVBheWxvYWQubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgICBjdXJyZW50SW5kZXggPSBuZXh0TmFsU3RhcnQ7XFxuICB9XFxufVxcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUpO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfYXN5bmNUb0dlbmVyYXRvcjsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XFxuICB0cnkge1xcbiAgICB2YXIgaSA9IG5bYV0oYyksXFxuICAgICAgdSA9IGkudmFsdWU7XFxuICB9IGNhdGNoIChuKSB7XFxuICAgIHJldHVybiB2b2lkIGUobik7XFxuICB9XFxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XFxufVxcbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XFxuICAgIHZhciB0ID0gdGhpcyxcXG4gICAgICBlID0gYXJndW1lbnRzO1xcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcXG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XFxuICAgICAgZnVuY3Rpb24gX25leHQobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJuZXh0XFxcIiwgbik7XFxuICAgICAgfVxcbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XFxuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXFxcInRocm93XFxcIiwgbik7XFxuICAgICAgfVxcbiAgICAgIF9uZXh0KHZvaWQgMCk7XFxuICAgIH0pO1xcbiAgfTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfY2xhc3NDYWxsQ2hlY2s7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cXFwiKTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfY3JlYXRlQ2xhc3M7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcXG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xcbiAgICB2YXIgbyA9IHJbdF07XFxuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXFxcInZhbHVlXFxcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgKDAsX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShvLmtleSksIG8pO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXFxcInByb3RvdHlwZVxcXCIsIHtcXG4gICAgd3JpdGFibGU6ICExXFxuICB9KSwgZTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfZGVmaW5lUHJvcGVydHk7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XFxuICByZXR1cm4gKHIgPSAoMCxfdG9Qcm9wZXJ0eUtleV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcXG4gICAgdmFsdWU6IHQsXFxuICAgIGVudW1lcmFibGU6ICEwLFxcbiAgICBjb25maWd1cmFibGU6ICEwLFxcbiAgICB3cml0YWJsZTogITBcXG4gIH0pIDogZVtyXSA9IHQsIGU7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gdG9QcmltaXRpdmU7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCIpO1xcblxcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcXG4gIGlmIChcXFwib2JqZWN0XFxcIiAhPSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkodCkgfHwgIXQpIHJldHVybiB0O1xcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XFxuICBpZiAodm9pZCAwICE9PSBlKSB7XFxuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXFxcImRlZmF1bHRcXFwiKTtcXG4gICAgaWYgKFxcXCJvYmplY3RcXFwiICE9ICgwLF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShpKSkgcmV0dXJuIGk7XFxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXFxcIik7XFxuICB9XFxuICByZXR1cm4gKFxcXCJzdHJpbmdcXFwiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIHRvUHJvcGVydHlLZXk7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90eXBlb2YuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9QcmltaXRpdmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9QcmltaXRpdmUuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzXFxcIik7XFxuXFxuXFxuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XFxuICB2YXIgaSA9ICgwLF90b1ByaW1pdGl2ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKHQsIFxcXCJzdHJpbmdcXFwiKTtcXG4gIHJldHVybiBcXFwic3ltYm9sXFxcIiA9PSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoaSkgPyBpIDogaSArIFxcXCJcXFwiO1xcbn1cXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyBfdHlwZW9mOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuZnVuY3Rpb24gX3R5cGVvZihvKSB7XFxuICBcXFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcXFwiO1xcblxcbiAgcmV0dXJuIF90eXBlb2YgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgXFxcInN5bWJvbFxcXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XFxuICAgIHJldHVybiB0eXBlb2YgbztcXG4gIH0gOiBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gbyAmJiBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcXFwic3ltYm9sXFxcIiA6IHR5cGVvZiBvO1xcbiAgfSwgX3R5cGVvZihvKTtcXG59XFxuXFxuXFxuLyoqKi8gfSlcXG5cXG4vKioqKioqLyBcXHR9KTtcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8vIFRoZSBtb2R1bGUgY2FjaGVcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXFxuLyoqKioqKi8gXFx0XFx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XFxuLyoqKioqKi8gXFx0XFx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxcbi8qKioqKiovIFxcdFxcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdGV4cG9ydHM6IHt9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxcbi8qKioqKiovIFxcdFxcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHR9XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMgKi9cXG4vKioqKioqLyBcXHQhZnVuY3Rpb24oKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcXG4vKioqKioqLyBcXHRcXHRcXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSgpO1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8qIHdlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi9cXG4vKioqKioqLyBcXHQhZnVuY3Rpb24oKSB7XFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfVxcbi8qKioqKiovIFxcdH0oKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0ge307XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZSEuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUgKi8gXFxcIi4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHJhbnNmb3Jtcy9Xb3JrZXJUcmFuc2Zvcm1zICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCIpO1xcblxcblxcblxcblxcbnZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvbWFpbi9wYWNrYWdlcy9iYWJlbC1oZWxwZXJzL0xJQ0VOU0UgKi8gdmFyIGUsIHQsIHIgPSBcXFwiZnVuY3Rpb25cXFwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSwgbiA9IHIuaXRlcmF0b3IgfHwgXFxcIkBAaXRlcmF0b3JcXFwiLCBvID0gci50b1N0cmluZ1RhZyB8fCBcXFwiQEB0b1N0cmluZ1RhZ1xcXCI7IGZ1bmN0aW9uIGkociwgbiwgbywgaSkgeyB2YXIgYyA9IG4gJiYgbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBuIDogR2VuZXJhdG9yLCB1ID0gT2JqZWN0LmNyZWF0ZShjLnByb3RvdHlwZSk7IHJldHVybiBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJfaW52b2tlXFxcIiwgZnVuY3Rpb24gKHIsIG4sIG8pIHsgdmFyIGksIGMsIHUsIGYgPSAwLCBwID0gbyB8fCBbXSwgeSA9ICExLCBHID0geyBwOiAwLCBuOiAwLCB2OiBlLCBhOiBkLCBmOiBkLmJpbmQoZSwgNCksIGQ6IGZ1bmN0aW9uIGQodCwgcikgeyByZXR1cm4gaSA9IHQsIGMgPSAwLCB1ID0gZSwgRy5uID0gciwgYTsgfSB9OyBmdW5jdGlvbiBkKHIsIG4pIHsgZm9yIChjID0gciwgdSA9IG4sIHQgPSAwOyAheSAmJiBmICYmICFvICYmIHQgPCBwLmxlbmd0aDsgdCsrKSB7IHZhciBvLCBpID0gcFt0XSwgZCA9IEcucCwgbCA9IGlbMl07IHIgPiAzID8gKG8gPSBsID09PSBuKSAmJiAodSA9IGlbKGMgPSBpWzRdKSA/IDUgOiAoYyA9IDMsIDMpXSwgaVs0XSA9IGlbNV0gPSBlKSA6IGlbMF0gPD0gZCAmJiAoKG8gPSByIDwgMiAmJiBkIDwgaVsxXSkgPyAoYyA9IDAsIEcudiA9IG4sIEcubiA9IGlbMV0pIDogZCA8IGwgJiYgKG8gPSByIDwgMyB8fCBpWzBdID4gbiB8fCBuID4gbCkgJiYgKGlbNF0gPSByLCBpWzVdID0gbiwgRy5uID0gbCwgYyA9IDApKTsgfSBpZiAobyB8fCByID4gMSkgcmV0dXJuIGE7IHRocm93IHkgPSAhMCwgbjsgfSByZXR1cm4gZnVuY3Rpb24gKG8sIHAsIGwpIHsgaWYgKGYgPiAxKSB0aHJvdyBUeXBlRXJyb3IoXFxcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcXFwiKTsgZm9yICh5ICYmIDEgPT09IHAgJiYgZChwLCBsKSwgYyA9IHAsIHUgPSBsOyAodCA9IGMgPCAyID8gZSA6IHUpIHx8ICF5OykgeyBpIHx8IChjID8gYyA8IDMgPyAoYyA+IDEgJiYgKEcubiA9IC0xKSwgZChjLCB1KSkgOiBHLm4gPSB1IDogRy52ID0gdSk7IHRyeSB7IGlmIChmID0gMiwgaSkgeyBpZiAoYyB8fCAobyA9IFxcXCJuZXh0XFxcIiksIHQgPSBpW29dKSB7IGlmICghKHQgPSB0LmNhbGwoaSwgdSkpKSB0aHJvdyBUeXBlRXJyb3IoXFxcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XFxcIik7IGlmICghdC5kb25lKSByZXR1cm4gdDsgdSA9IHQudmFsdWUsIGMgPCAyICYmIChjID0gMCk7IH0gZWxzZSAxID09PSBjICYmICh0ID0gaVtcXFwicmV0dXJuXFxcIl0pICYmIHQuY2FsbChpKSwgYyA8IDIgJiYgKHUgPSBUeXBlRXJyb3IoXFxcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1xcXCIgKyBvICsgXFxcIicgbWV0aG9kXFxcIiksIGMgPSAxKTsgaSA9IGU7IH0gZWxzZSBpZiAoKHQgPSAoeSA9IEcubiA8IDApID8gdSA6IHIuY2FsbChuLCBHKSkgIT09IGEpIGJyZWFrOyB9IGNhdGNoICh0KSB7IGkgPSBlLCBjID0gMSwgdSA9IHQ7IH0gZmluYWxseSB7IGYgPSAxOyB9IH0gcmV0dXJuIHsgdmFsdWU6IHQsIGRvbmU6IHkgfTsgfTsgfShyLCBvLCBpKSwgITApLCB1OyB9IHZhciBhID0ge307IGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30gZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fSB0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyB2YXIgYyA9IFtdW25dID8gdCh0KFtdW25dKCkpKSA6IChfcmVnZW5lcmF0b3JEZWZpbmUyKHQgPSB7fSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIHQpLCB1ID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYyk7IGZ1bmN0aW9uIGYoZSkgeyByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKSA6IChlLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIG8sIFxcXCJHZW5lcmF0b3JGdW5jdGlvblxcXCIpKSwgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHUpLCBlOyB9IHJldHVybiBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIF9yZWdlbmVyYXRvckRlZmluZTIoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFxcXCJjb25zdHJ1Y3RvclxcXCIsIEdlbmVyYXRvckZ1bmN0aW9uKSwgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1KSwgX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBvLCBcXFwiR2VuZXJhdG9yXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcInRvU3RyaW5nXFxcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gXFxcIltvYmplY3QgR2VuZXJhdG9yXVxcXCI7IH0pLCAoX3JlZ2VuZXJhdG9yID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yKCkgeyByZXR1cm4geyB3OiBpLCBtOiBmIH07IH0pKCk7IH1cXG5mdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpIHsgdmFyIGkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7IHRyeSB7IGkoe30sIFxcXCJcXFwiLCB7fSk7IH0gY2F0Y2ggKGUpIHsgaSA9IDA7IH0gX3JlZ2VuZXJhdG9yRGVmaW5lMiA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvckRlZmluZShlLCByLCBuLCB0KSB7IGZ1bmN0aW9uIG8ociwgbikgeyBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLl9pbnZva2UociwgbiwgZSk7IH0pOyB9IHIgPyBpID8gaShlLCByLCB7IHZhbHVlOiBuLCBlbnVtZXJhYmxlOiAhdCwgY29uZmlndXJhYmxlOiAhdCwgd3JpdGFibGU6ICF0IH0pIDogZVtyXSA9IG4gOiAobyhcXFwibmV4dFxcXCIsIDApLCBvKFxcXCJ0aHJvd1xcXCIsIDEpLCBvKFxcXCJyZXR1cm5cXFwiLCAyKSk7IH0sIF9yZWdlbmVyYXRvckRlZmluZTIoZSwgciwgbiwgdCk7IH1cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciB3b3JrZXIgPSBzZWxmO1xcbi8vIFRoaXMgaXMgaG93IHRoZSBkb2N1bWVudGF0aW9uIGluc3RydWN0cyB0byBkbyBpdCAtIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3dvcmtlci1sb2FkZXJcXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxudmFyIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCkge1xcbiAgICAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19bXFxcImRlZmF1bHRcXFwiXSkodGhpcywgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIpO1xcbiAgfVxcbiAgcmV0dXJuICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiaGFuZGxlQWRkVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUFkZFRyYW5zZm9ybSh0eXBlKSB7XFxuICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCkge1xcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogUGlwZWxpbmUgaXMgbG9ja2VkLiBBIHRyYW5zZm9ybSBjYW5ub3QgYmUgYWRkZWQgb25jZSB0aGUgcGlwZWxpbmUgaGFzIGJlZW4gY29uZmlndXJlZCcpO1xcbiAgICAgIH1cXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgIGNhc2UgJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbic6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSgpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQtdmlkZW8nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQtYXVkaW8nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwYXNzLXRocm91Z2gnOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZVBhc3NUaHJvdWdoVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiRXJyb3I6IFVua25vd24gdHJhbnNmb3JtIHR5cGUgW1xcXCIuY29uY2F0KHR5cGUsIFxcXCJdXFxcIikpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjb25maWd1cmVQaXBlbGluZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XFxuICAgICAgdmFyIF9jb25maWd1cmVQaXBlbGluZSA9ICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWUoc291cmNlLCBzaW5rKSB7XFxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQpIHtcXG4gICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQubikge1xcbiAgICAgICAgICAgIGNhc2UgMDpcXG4gICAgICAgICAgICAgIGlmIChzb3VyY2UgJiYgc2luaykge1xcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uID0gMTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBDb25maWd1cmF0aW9uIG9mIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lIHJlcXVpcmVzIGJvdGggYSByZWFkYmFsZSBzb3VyY2UgYW5kIHdyaXRhYmxlIHNpbmsnKTtcXG4gICAgICAgICAgICBjYXNlIDE6XFxuICAgICAgICAgICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goKTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIF9jb250ZXh0Lm4gPSAyO1xcbiAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uIChwaXBlbGluZSwgdHJhbnNmb3JtKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBwaXBlbGluZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pO1xcbiAgICAgICAgICAgICAgfSwgc291cmNlKS5waXBlVG8oc2luayk7XFxuICAgICAgICAgICAgY2FzZSAyOlxcbiAgICAgICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkID0gdHJ1ZTtcXG4gICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQsXFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgICBuYW1lOiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fd29ya2VyTmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBjYXNlIDM6XFxuICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYSgyKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSwgX2NhbGxlZSk7XFxuICAgICAgfSkpO1xcbiAgICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZVBpcGVsaW5lKF94LCBfeDIpIHtcXG4gICAgICAgIHJldHVybiBfY29uZmlndXJlUGlwZWxpbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIGNvbmZpZ3VyZVBpcGVsaW5lO1xcbiAgICB9KClcXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiaGFuZGxlTWVzc2FnZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKF9yZWYpIHtcXG4gICAgICB2YXIgbWVzc2FnZSA9IF9yZWYuZGF0YTtcXG4gICAgICB2YXIgdHlwZSA9IG1lc3NhZ2UudHlwZTtcXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuaGFuZGxlQWRkVHJhbnNmb3JtKG1lc3NhZ2UuZGF0YSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmU6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmNvbmZpZ3VyZVBpcGVsaW5lKG1lc3NhZ2UuZGF0YS5zb3VyY2UsIG1lc3NhZ2UuZGF0YS5zaW5rKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YTpcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuazpcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAoMCxfbGFuZ19hc3NlcnRVbnJlYWNoYWJsZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fW1xcXCJkZWZhdWx0XFxcIl0pKHR5cGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5fVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgPSBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcjtcXG4oMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIFxcXCJfdHJhbnNmb3Jtc1xcXCIsIFtdKTtcXG4oMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIFxcXCJfaXNQaXBlbGluZUNvbmZpZ3VyZWRcXFwiLCBmYWxzZSk7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3dvcmtlck5hbWVcXFwiLCB2b2lkIDApO1xcbihmdW5jdGlvbiAoKSB7XFxuICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcignW1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyXSBFcnJvcjogWyVzXScsIGVycm9yKTtcXG4gIH07XFxuICB3b3JrZXIub25tZXNzYWdlID0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZU1lc3NhZ2UuYmluZChfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIpO1xcbiAgaWYgKHdvcmtlci5SVENUcmFuc2Zvcm1FdmVudCkge1xcbiAgICB3b3JrZXIub25ydGN0cmFuc2Zvcm0gPSBmdW5jdGlvbiAoX3JlZjIpIHtcXG4gICAgICB2YXIgdHJhbnNmb3JtZXIgPSBfcmVmMi50cmFuc2Zvcm1lcjtcXG4gICAgICBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWUgPSB0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWU7XFxuICAgICAgdmFyIHNvdXJjZSA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlO1xcbiAgICAgIHZhciBzaW5rID0gdHJhbnNmb3JtZXIud3JpdGFibGU7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmNvbmZpZ3VyZVBpcGVsaW5lKHNvdXJjZSwgc2luayk7XFxuICAgIH07XFxuICB9XFxufSkoKTtcXG4vKiB1bnVzZWQgaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyB2YXIgX19XRUJQQUNLX0RFRkFVTFRfRVhQT1JUX18gPSAobnVsbCk7XFxuLyoqKioqKi8gfSkoKVxcbjtcXG5cIiwgXCJXb3JrZXJcIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiwgbm8tdXNlLWJlZm9yZS1kZWZpbmUsIG5ldy1jYXAgKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRlbnQsIHdvcmtlckNvbnN0cnVjdG9yLCB3b3JrZXJPcHRpb25zLCB1cmwpIHtcbiAgdmFyIGdsb2JhbFNjb3BlID0gc2VsZiB8fCB3aW5kb3c7XG5cbiAgdHJ5IHtcbiAgICB0cnkge1xuICAgICAgdmFyIGJsb2I7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE5ldyBBUElcbiAgICAgICAgYmxvYiA9IG5ldyBnbG9iYWxTY29wZS5CbG9iKFtjb250ZW50XSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIEJsb2JCdWlsZGVyID0gRGVwcmVjYXRlZCwgYnV0IHdpZGVseSBpbXBsZW1lbnRlZFxuICAgICAgICB2YXIgQmxvYkJ1aWxkZXIgPSBnbG9iYWxTY29wZS5CbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5XZWJLaXRCbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5Nb3pCbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5NU0Jsb2JCdWlsZGVyO1xuICAgICAgICBibG9iID0gbmV3IEJsb2JCdWlsZGVyKCk7XG4gICAgICAgIGJsb2IuYXBwZW5kKGNvbnRlbnQpO1xuICAgICAgICBibG9iID0gYmxvYi5nZXRCbG9iKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBVUkwgPSBnbG9iYWxTY29wZS5VUkwgfHwgZ2xvYmFsU2NvcGUud2Via2l0VVJMO1xuICAgICAgdmFyIG9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICB2YXIgd29ya2VyID0gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXShvYmplY3RVUkwsIHdvcmtlck9wdGlvbnMpO1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVUkwpO1xuICAgICAgcmV0dXJuIHdvcmtlcjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXShcImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdCxcIi5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpKSwgd29ya2VyT3B0aW9ucyk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IEVycm9yKFwiSW5saW5lIHdvcmtlciBpcyBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKHVybCwgd29ya2VyT3B0aW9ucyk7XG4gIH1cbn07IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbmV4cG9ydCB7IF9hcnJheUxpa2VUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRoSG9sZXMgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhvdXRIb2xlcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xuICB0cnkge1xuICAgIHZhciBpID0gblthXShjKSxcbiAgICAgIHUgPSBpLnZhbHVlO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIHZvaWQgZShuKTtcbiAgfVxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHQgPSB0aGlzLFxuICAgICAgZSA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIG4pO1xuICAgICAgfVxuICAgICAgX25leHQodm9pZCAwKTtcbiAgICB9KTtcbiAgfTtcbn1cbmV4cG9ydCB7IF9hc3luY1RvR2VuZXJhdG9yIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5leHBvcnQgeyBfY2xhc3NDYWxsQ2hlY2sgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5leHBvcnQgeyBfY3JlYXRlQ2xhc3MgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5leHBvcnQgeyBfZGVmaW5lUHJvcGVydHkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5leHBvcnQgeyBfZ2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX2luaGVyaXRzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbmV4cG9ydCB7IF9pdGVyYWJsZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmV4cG9ydCB7IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVJlc3QgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVTcHJlYWQgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIjtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCB0LmluZGV4T2YobykgPj0gMCB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5kZXhPZihuKSA+PSAwKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbmV4cG9ydCB7IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX3NldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5leHBvcnQgeyBfc2xpY2VkVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIjtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbmV4cG9ydCB7IF90b0NvbnN1bWFibGVBcnJheSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxuZXhwb3J0IHsgdG9QcmltaXRpdmUgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIF90eXBlb2Yobyk7XG59XG5leHBvcnQgeyBfdHlwZW9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbmV4cG9ydCB7IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG52YXIgZyA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbCkgfHxcbiAge31cblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZyxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGcgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGcgJiZcbiAgICAnQmxvYicgaW4gZyAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZyxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ1xufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVycyBjb25zdHJ1Y3RvcjogZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCcgKyBoZWFkZXIubGVuZ3RoKVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuX25vQm9keSkgcmV0dXJuXG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgdmFyIG1hdGNoID0gL2NoYXJzZXQ9KFtBLVphLXowLTlfLV0rKS8uZXhlYyhibG9iLnR5cGUpXG4gIHZhciBlbmNvZGluZyA9IG1hdGNoID8gbWF0Y2hbMV0gOiAndXRmLTgnXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX25vQm9keSA9IHRydWU7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIGFzIEFycmF5QnVmZmVyJylcbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnQ09OTkVDVCcsICdERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQQVRDSCcsICdQT1NUJywgJ1BVVCcsICdUUkFDRSddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCdBYm9ydENvbnRyb2xsZXInIGluIGcpIHtcbiAgICAgIHZhciBjdHJsID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgcmV0dXJuIGN0cmwuc2lnbmFsO1xuICAgIH1cbiAgfSgpKTtcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignUmVzcG9uc2UgJyArIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIGlmICh0aGlzLnN0YXR1cyA8IDIwMCB8fCB0aGlzLnN0YXR1cyA+IDU5OSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzcG9uc2UnOiBUaGUgc3RhdHVzIHByb3ZpZGVkICgwKSBpcyBvdXRzaWRlIHRoZSByYW5nZSBbMjAwLCA1OTldLlwiKVxuICB9XG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDIwMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS5vayA9IGZhbHNlXG4gIHJlc3BvbnNlLnN0YXR1cyA9IDBcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBjaGVjayBpZiBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gYSB1c2VyIGZldGNoZXMgYSBmaWxlIGxvY2FsbHkgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgIC8vIE9ubHkgaWYgdGhlIHN0YXR1cyBpcyBvdXQgb2YgYSBub3JtYWwgcmFuZ2VcbiAgICAgIGlmIChyZXF1ZXN0LnVybC5pbmRleE9mKCdmaWxlOi8vJykgPT09IDAgJiYgKHhoci5zdGF0dXMgPCAyMDAgfHwgeGhyLnN0YXR1cyA+IDU5OSkpIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSAyMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IHRpbWVkIG91dCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnLmxvY2F0aW9uLmhyZWYgPyBnLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgfHwgKGcuSGVhZGVycyAmJiBpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBnLkhlYWRlcnMpKSkge1xuICAgICAgdmFyIG5hbWVzID0gW107XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBuYW1lcy5wdXNoKG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgaWYgKG5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZy5mZXRjaCkge1xuICBnLmZldGNoID0gZmV0Y2hcbiAgZy5IZWFkZXJzID0gSGVhZGVyc1xuICBnLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGcuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBDaGFubmVscyBmcm9tICcuL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIENoYW5uZWxzLFxuICBDaGFubmVsU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwiZG9jdW1lbnRJc0hpZGRlbiIsInVzZUV2ZW50Q2FwdHVyZVBoYXNlIiwiYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiTG9nZ2VyRGVmYXVsdHMiLCJQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIkZlYXR1cmVFbmFibGVtZW50IiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwiYmluZCIsInNldFRpbWVvdXQiLCJpbWciLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJuYXZpZ2F0b3JDb25uZWN0aW9uIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJfcmVmIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTMiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsIl9yZWYyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE2IiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNyIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTgiLCJydHQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE5IiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJTREsiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfR2xvYmFsU2NvcGUkdmFsdWUiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJfR2xvYmFsU2NvcGUkdmFsdWUyIiwiSFRNTFZpZGVvRWxlbWVudCIsInJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siLCJpc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImJyb3dzZXJHbG9iYWxTY29wZSIsImRvY3VtZW50IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJnbG9iYWxTY29wZSIsIl9kb2N1bWVudCIsIl9sb2NhdGlvbiIsIl93aW5kb3ciLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwiX3R5cGVvZiIsIm1ldHJpY3NTZXJ2aWNlcyIsIl9tZXRyaWNzU2VydmljZXMiLCJtZXRyaWNzQ29uZmlndXJhdGlvbiIsImNsaWVudFNlc3Npb25JZCIsImdldFRlbGVtZXRyeVVybCIsImdldEVudmlyb25tZW50RnJvbVVybCIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsIiwidGVsZW1ldHJ5TGV2ZWwiLCJzZXRUZWxlbWV0cnlMZXZlbCIsInZhbHVlcyIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJsIiwiVHlwZUVycm9yIiwiZG9uZSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkV4cG9uZW50aWFsQmFja29mZiIsIlZlcnNpb25NYW5hZ2VyIiwicmVxdWVzdFNpemVMaW1pdCIsIm1heEJ1ZmZlcmVkUmVjb3JkcyIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlIiwidGhlbiIsImxvY2F0aW9uSG9zdG5hbWUiLCJfZG9tYWluIiwibWV0cmljIiwicHJldmlvdXNWYWx1ZSIsInJlc291cmNlIiwia2luZCIsIm1ldHJpY1JlY29yZCIsInRpbWVzdGFtcCIsImZ1bGxRdWFsaWZpZWROYW1lIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIlByb21pc2UiLCJyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSIsImdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJfY29udGV4dCIsImFwcGVuZCIsInJlY29yZHMiLCJtZXRob2QiLCJib2R5IiwiX3giLCJhcHBseSIsIl9zZW5kTWV0cmljc0lmQWJsZSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2lzU2VuZGluZyIsInNsaWNlIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50Iiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiUnRjQ29ubmVjdGlvbk1vbml0b3IiLCJtZWRpYVN0cmVhbSIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl90cmFja3NUb01vbml0b3IiLCJnZXRUcmFja3MiLCJtYXAiLCJ0cmFjayIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsInBhcnNlZFNEUCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfaXNNb25pdG9yUnVubmluZyIsIl91cGRhdGVUaW1lb3V0IiwiX3VwZGF0ZVN0YXRpc3RpYyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjciLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiZ2V0U3RhdHNMZWdhY3kiLCJyZXN1bHQiLCJuYW1lcyIsInN0YXQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241IiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwicmVzb2x2ZSIsInJlamVjdCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwiX3RoaXM0IiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiX3ZhbHVlIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJEaW1lbnNpb24iLCJDaGFubmVsU3RhdGUiLCJWaWRlb1RlbGVtZXRyeSIsIlNlc3Npb25UZWxlbWV0cnkiLCJUb2tlbkNvbnRleHQiLCJDaGFubmVsQ29udGV4dCIsIkVuY29kZWRTdHJlYW1TaW5rIiwiU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiU3RhdGVDb250ZXh0IiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJTdHJlYW1GYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwib25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5RXhpc3RzIiwiZXhpc3RzIiwiX3JlYWRPbmx5QXV0b011dGVkIiwiYXV0b011dGVkIiwiX3JlYWRPbmx5QXV0b1BhdXNlZCIsImF1dG9QYXVzZWQiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwidG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQbGF5aW5nIiwicGxheWluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlUYXJnZXRMYWciLCJfcmVhZE9ubHlMYWciLCJsYWciLCJfcmVhZE9ubHlCaXRyYXRlTGltaXQiLCJiaXRyYXRlTGltaXQiLCJfcmVhZE9ubHlSZXNvbHV0aW9uIiwicmVzb2x1dGlvbiIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsImZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiZW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJzdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsImNoYW5uZWxEaXNwb3NhYmxlcyIsIl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIiLCJoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCIsIl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsImNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkIiwiaXNFbmFibGVkIiwiX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVyRGlzcG9zYWJsZXMiLCJ2aWRlb1RlbGVtZXRyeSIsImRhdGFzZXQiLCJzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lIiwic2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nIiwiU3RvcHBlZCIsInJlc3RhcnRBZnRlclN0b3AiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQbGF5aW5nIiwib25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzIiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiY2hhbm5lbEluaXRpYWxpemF0aW9uIiwiZ2V0VGltZSIsImxpbWl0Qml0cmF0ZSIsIktlZXAiLCJOb3JtYWwiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsInN0YXJ0IiwicGF1c2UiLCJzcmNPYmplY3QiLCJJbml0aWFsaXppbmciLCJ3aWR0aCIsInZpZGVvV2lkdGgiLCJoZWlnaHQiLCJ2aWRlb0hlaWdodCIsImVtcHR5IiwiZGlzcG9zYWJsZXMiLCJzZXRCaXRyYXRlTGltaXQiLCJjbGVhckJpdHJhdGVMaW1pdCIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJSZXNldCIsInVwZGF0ZVRhcmdldExhZyIsIl9zdG9wIiwicmVhc29uIiwiaXNTdGFydGluZyIsInByb2Nlc3NTdG9wIiwic3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVBsYXllciIsIl9jb250ZXh0NSIsIlN0YXJ0aW5nIiwiVW5hdXRob3JpemVkIiwidmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtIiwiQ29uZmlndXJhdGlvbkVycm9yIiwidmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luayIsImlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJSZWNvdmVyaW5nIiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3IiwicGxheSIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJSZWNvbm5lY3RpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImRlc3Ryb3lTdHJlYW0iLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiX3RoaXM3IiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkiLCJjYXBhYmlsaXR5Iiwic2hvdWxkRXh0cmFjdFRpbWVjb2RlIiwic2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMiLCJpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkIiwib3B0aW9uIiwidHJpbSIsIl9wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsIl9jYWxsZWU5IiwiX3RoaXM4IiwicGxheVByb21pc2UiLCJfY29udGV4dDkiLCJoYXNBdWRpb1RyYWNrIiwiZmlsdGVyIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYiLCJDaGFubmVscyIsImNyZWF0ZUNoYW5uZWwiLCJpbml0aWFsaXplZCIsImNoYW5uZWxPcHRpb25zIiwib3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcyIsImRlZmF1bHRUYXJnZXRMYWciLCJfb3B0aW9ucyR0YXJnZXRMYWciLCJfb3B0aW9ucyRvblJlYWxUaW1lU3UiLCJfb3B0aW9ucyRvblJlYWxUaW1lU3UyIiwicnRjQXVkaW9TdGF0aXN0aWMiLCJydGNWaWRlb1N0YXRpc3RpYyIsImFwcGx5U3RhdHVzIiwiYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50IiwibWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzIiwibWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMiLCJhdWRpb1RyYWNrIiwibWVkaWFTdHJlYW1UcmFjayIsInJlY2VpdmVyIiwibWlkIiwidHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwidHJhbnNmb3JtRnVuY3Rpb25OYW1lcyIsInZpZGVvVHJhY2siLCJBdWRpb0NvZGVjIiwiQXVkaW9Db2RlY01hcHBpbmciLCJjb252ZXJ0QXVkaW9Db2RlY1RvQXVkaW9Db2RlY1R5cGUiLCJPUFVTIiwiQUFDIiwiY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjIiwiYXVkaW9Db2RlY1R5cGUiLCJhdWRpb0NvZGVjU3RyaW5nIiwidG9VcHBlckNhc2UiLCJWaWRlb0NvZGVjIiwiVmlkZW9Db2RlY01hcHBpbmciLCJjb252ZXJ0VmlkZW9Db2RlY1RvVmlkZW9Db2RlY1R5cGUiLCJIMjY0IiwiVlA4IiwiVlA5IiwiY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjIiwidmlkZW9Db2RlY1R5cGUiLCJ2aWRlb0NvZGVjU3RyaW5nIiwiVWludDhBcnJheSIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiRm9yY2UiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwicmVzb2x2ZUVuZFBvaW50UHJvbWlzZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsInJhY2UiLCJvayIsInRleHQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJhcGlWZXJzaW9uIiwiX3RpbWVvdXQiLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwiZmluaXNoZWQiLCJidWlsZFBpbmdVcmwiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiaHR0cFJlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwiYm9keVdpdGhPZmZlciIsImJvZHlXaXRob3V0T2ZmZXIiLCJtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwicHVibGlzaCIsIl94NSIsIl94NiIsIl94NyIsInNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJzaGFyZWRTZWNyZXQiLCJtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl94MTYiLCJfeDE3IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzZW5kQmVhY29uIiwiX3gxOCIsIl94MTkiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsIm90aGVyUHJvcGVydGllcyIsImpzb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfb2JqZWN0U3ByZWFkIiwiY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uIiwiX3gyMCIsIl94MjEiLCJfY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwiX2NhbGxlZTAiLCJwdWJsaXNoUmVzcG9uc2UiLCJfY29udGV4dDAiLCJfeDIyIiwiX3gyMyIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJfeDI0IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9jYWxsZWUxMCIsIl9jb250ZXh0MTAiLCJfeDI1IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jYWxsZWUxMSIsIl9jb250ZXh0MTEiLCJfeDI2IiwiVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlIiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIiLCJjb250ZXh0IiwiTWFwIiwiY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsInNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSIsInRyYWNrSWQiLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJpc0VuYWJsZWRTdWJqZWN0IiwicmVnaXN0ZXJSb3V0ZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UiLCJfdHJhbnNmb3JtTmFtZSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInJ0cFRpbWVzdGFtcCIsIm1ldGFkYXRhIiwicnRwVGltZXN0YW1wTnVtYmVyIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luMiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJ0aW1lY29kZSIsInJlY2VpdmVUaW1lc3RhbXAiLCJzb3VyY2VUaW1lc3RhbXAiLCJpbmdlc3RUaW1lc3RhbXAiLCJlbmNvZGVUaW1lc3RhbXAiLCJ0cmFuc2NvZGVUaW1lc3RhbXAiLCJwbGF5YmFja1N0YXRlIiwiX2N1cnJlbnRQbGF5YmFja1N0YXRlIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAiLCJ2aWRlb0VsZW1lbnRTdWJqZWN0IiwiY2xlYXIiLCJfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMiLCJzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnMiLCJoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfYXJtVmlkZW9GcmFtZUNhbGxiYWNrIiwidGltZXN0YW1wc1RvRGVsZXRlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJfc3RlcCR2YWx1ZSIsImZyYW1lVGltaW5nIiwicmVuZGVyVGltZXN0YW1wIiwicGVyZm9ybWFuY2UiLCJ0aW1lT3JpZ2luIiwiZXJyIiwiX2kyIiwiX3RpbWVzdGFtcHNUb0RlbGV0ZSIsIm9uUGxheWluZyIsIm9uUGF1c2UiLCJvblN0YWxsZWQiLCJvbldhaXRpbmciLCJvbkVuZGVkIiwib25FcnJvciIsIl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkIiwiY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkluc2VydGFibGVTdHJlYW1zIiwiRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwiZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCIsIlJlYWxUaW1lU3RyZWFtIiwiY2hhbm5lbENvbnRleHQiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImFsbCIsIl9yZWYzIiwiX3JlZjMkIiwic3Vic2NyaWJlT3B0aW9ucyIsImNsaWVudE9mZmVyRGlzYWJsZWQiLCJzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24iLCJzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24iLCJhcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJzdWJtaXRDYW5kaWRhdGVzVGltZW91dCIsImNhbmNlbERpc2NvdmVyeSIsImNhbmRpZGF0ZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dCIsIl9yZWY0IiwicmV0cnlDYWxsYmFjayIsIm5hdmlnYXRvcklzT25MaW5lIiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJtZWRpYVN0cmVhbVByb21pc2UiLCJvblRyYWNrRGlzYWJsZWQiLCJzdHJlYW1zIiwidHJhY2tMaXN0ZW5lciIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJfdGhpcyRfY2hhbm5lbENvbnRleHQyIiwiX3BlZXJDb25uZWN0aW9uJGdldFRyIiwiX3BlZXJDb25uZWN0aW9uJGdldFRyMiIsInBhcnNlZFJlbW90ZURlc2NyaXB0aW9uIiwicmVjZWl2ZXJzIiwiZ2V0VmlkZW9UcmFja3MiLCJ2aWRlb1RyYWNrUmVjZWl2ZXIiLCJzdXBwb3J0c0dldFRyYW5zY2VpdmVycyIsInRyYW5zY2VpdmVyIiwiZ2V0QXVkaW9UcmFja3MiLCJhdWRpb1RyYWNrUmVjZWl2ZXIiLCJjcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJyZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQiLCJyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSIsImVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0IiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiX0luc2VydGFibGVTdHJlYW1zJGNvIiwiY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtZWRTdHJlYW0iLCJydGNDb25uZWN0aW9uTW9uaXRvciIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsImF1ZGlvVHJhY2tGYWlsZWQiLCJ2aWRlb1RyYWNrRmFpbGVkIiwiX2FwcGx5UnRjQ29uZmlndXJhdGlvbiIsIm9wdGlvbmFsUGVlckNvbm5lY3Rpb24iLCJuZXdSdGNDb25maWd1cmF0aW9uIiwibWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZTIiLCJpc0NsaWVudE9mZmVyRmxvdyIsImljZVJlc3RhcnQiLCJvZmZlciIsIlJlYWxUaW1lU3RyZWFtRmFjdG9yeSIsInRva2VuQ2FwYWJpbGl0aWVzIiwiU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsIlNraXBGcmFtZSIsIkVuY29kZWRWaWRlb0NodW5rIiwiY2h1bmsiLCJlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayIsIkVuY29kZWRBdWRpb0NodW5rIiwiZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2siLCJfZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2siLCJnZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhIiwiZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyIsIl9lbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayIsInN1cnJvZ2F0ZSIsImdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZSIsImdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSIsImdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMiLCJnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjIiwibW9kZSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbiIsIkYiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJjb25zdHJ1Y3RvciIsImZyb20iLCJUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciIsIlRyYW5zZm9ybU1lc3NhZ2VUeXBlIiwiVHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsImNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2siLCJ3b3JrZXIiLCJ0ZXJtaW5hdGUiLCJ2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFjayIsImF1ZGlvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiX2NvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsImFkZFRyYWNrVHJhbnNmb3JtcyIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybSIsImNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zIiwidHJhbnNmb3JtRnVuY3Rpb25OYW1lIiwicG9zdE1lc3NhZ2UiLCJBZGRUcmFuc2Zvcm0iLCJjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayIsInRyYWNrUmVjZWl2ZXIiLCJ0cmFja01lZGlhU3RyZWFtVHJhY2siLCJ0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtIiwiUGlwZWxpbmVDb25maWd1cmVkIiwib25jZSIsImNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2siLCJhY3Rpb25zIiwiZW5jb2RlZFJlY2VpdmVyU3RyZWFtcyIsIkNvbmZpZ3VyZVBpcGVsaW5lIiwic291cmNlIiwicmVhZGFibGUiLCJzaW5rIiwidHJhbnNmZXIiLCJpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJjb250cm9sbGVyIiwidHJhbnNmb3JtZXIiLCJUcmFuc2Zvcm1TdHJlYW0iLCJwcm9jZXNzb3IiLCJnZW5lcmF0b3IiLCJwaXBlVGhyb3VnaCIsInBpcGVUbyIsInJlbW92ZVRyYWNrIiwiYXVkaW9QdW1wZXIiLCJBdWRpbyIsImFwcGVuZENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSIsInN1cnJvZ2F0ZUgyNjQyOHgxNklGcmFtZSIsInN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSIsIl9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMiLCJidWZmZXIiLCJfc2luZ2xlWmVyb0J5dGUiLCJfaXNTYWZhcmkiLCJfc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lIiwiX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyIsIl9pc0FuZHJvaWRDaHJvbWUiLCJfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQiLCJfc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lIiwiX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyIsIl9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiaXNBbmRyb2lkIiwiVHJhbnNmb3JtUGlwZWxpbmVNZXNzYWdlUm91dGVyIiwibWVzc2FnZVR5cGUiLCJyb3V0ZU1lc3NhZ2UiLCJfbWVzc2FnZVJvdXRlcyIsInJvdXRlTWVzc2FnZURhdGEiLCJDaHVuayIsIk1ldGFkYXRhIiwiX19CVUlMRF9WRVJTSU9OX18iLCJfZGVmYXVsdFZlcnNpb24iLCJUZWxlbWV0cnlTZXJ2aWNlIiwiX3RlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZU9mIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwib3RoZXIiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9uZXR3b3JrTW9uaXRvciIsImlzRm9yZWdyb3VuZCIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJub29wIiwiY2hhbm5lbFN0YXJ0VGltZSIsIl9zdHJlYW1JZCIsIl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUiLCJfbGlzdGVuVG9GaXJzdFRpbWUiLCJjYWxsVGltZVRvRmlyc3RGcmFtZSIsIl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciIsIl9saXN0ZW5Gb3JTdGFsbCIsIm9uU3RhbGwiLCJfbGlzdGVuRm9yQ29udGludWF0aW9uIiwiZXZlbnQiLCJvbkNvbnRpbnVhdGlvbiIsIl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIiLCJwdXNoVGltZVRvRmlyc3RGcmFtZSIsInB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3RpbWVUb0ZpcnN0RnJhbWUiLCJkdXJhdGlvblNpbmNlUGFnZUxvYWQiLCJfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl92aWRlb1N0YWxsZWQiLCJidWZmZXJlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiZW5kIiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|
|
11610
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQ2ZxM0Isb0dBQXVCLElBQUUsSUFBSSxFQUFFLElBQUksR0FBQXIzQixvRkFBQSxDQUNuQ3EzQixvR0FBdUIsSUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztFQUFFO0VBQzlHclcsR0FBRyxFQUFFLElBQUlLLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3ZSSixHQUFHLEVBQUUsSUFBSUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDaEgsQ0FBQztBQUFBL2dDLGlGQUFBLENBcEJrQjJ5Qyx5QkFBeUIsK0JBcUJRcUUsa0ZBQXdCO0FBQUFoM0MsaUZBQUEsQ0FyQnpEMnlDLHlCQUF5QiwrQkFzQlFzRSxtRkFBd0I7QUFBQWozQyxpRkFBQSxDQXRCekQyeUMseUJBQXlCLDJDQXVCb0IsQ0FBQztBQUFBM3lDLGlGQUFBLENBdkI5QzJ5Qyx5QkFBeUIsc0NBd0JNQSwwQkFBeUIsQ0FBQytFLHFDQUFxQzs7Ozs7Ozs7Ozs7Ozs7QUN4Q25IO0FBQ0E7QUFDQTs7QUFFMkc7QUFFM0csK0RBQWUsSUFBSTNXLFVBQVUsSUFBQTE5QixNQUFBLENBQUFxYyxvRkFBQSxDQUN4QnEzQixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBQXIzQixvRkFBQSxDQUN6R3EzQixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUFyM0Isb0ZBQUEsQ0FDMUNxM0Isb0dBQXVCLElBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUFyM0Isb0ZBQUEsQ0FBSyxJQUFJcWhCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQzF1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUUsR0FBRyxHQUFBcU4sb0ZBQUEsQ0FDekVxM0Isb0dBQXVCLElBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFBcjNCLG9GQUFBLENBQUssSUFBSXFoQixVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMxdUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxH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VSxxQkFBTSxvQkFBb0IscUJBQU07QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsaUJBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JELFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUiw0RUFBNEU7QUFDNUU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxxQ0FBcUMsNEJBQTRCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBCQUEwQixlQUFlO0FBQ3RFOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pvQkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNicjFDLEdBQUcsRUFBSEEsNENBQUc7RUFDSCsxQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1I1TixZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9EaW1lbnNpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnF1ZXVlTWljcm90YXNrKHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50Q3JlYXRlRWxlbWVudDxIVE1MSW1hZ2VFbGVtZW50PignaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gR2xvYmFsU2NvcGUudmFsdWUuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LmRvY3VtZW50Q3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkXG4gICAgICAmJiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBGb3JtRGF0YSgpOiB0eXBlb2YgRm9ybURhdGEge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuRm9ybURhdGE7XG4gIH1cblxuICBnZXQgSFRNTFZpZGVvRWxlbWVudCgpOiB0eXBlb2YgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5IVE1MVmlkZW9FbGVtZW50O1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtKCk6IHR5cGVvZiBNZWRpYVN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbVRyYWNrKCk6IHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtVHJhY2s7XG4gIH1cblxuICBnZXQgTWVkaWFTb3VyY2UoKTogdHlwZW9mIE1lZGlhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU291cmNlO1xuICB9XG5cbiAgZ2V0IFJUQ1BlZXJDb25uZWN0aW9uKCk6IHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBSVENTZXNzaW9uRGVzY3JpcHRpb24oKTogdHlwZW9mIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgUlRDSWNlQ2FuZGlkYXRlKCk6IHR5cGVvZiBSVENJY2VDYW5kaWRhdGUge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDSWNlQ2FuZGlkYXRlO1xuICB9XG5cbiAgZ2V0IFVSTCgpOiB0eXBlb2YgVVJMIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTDtcbiAgfVxuXG4gIGdldCBVUkxTZWFyY2hQYXJhbXMoKTogdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkxTZWFyY2hQYXJhbXM7XG4gIH1cblxuICBnZXQgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFySW50ZXJ2YWwoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFySW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFyVGltZW91dCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudENyZWF0ZUVsZW1lbnQoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50LmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SGFzRm9jdXMoKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Lmhhc0ZvY3VzLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZG9jdW1lbnQuaGlkZGVuO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50UXVlcnlTZWxlY3RvcigpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGZldGNoKCk6IChpbnB1dDogc3RyaW5nIHwgVVJMIHwgUmVxdWVzdCwgaW5pdD86IFJlcXVlc3RJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5mZXRjaC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25Ib3N0bmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvblNlYXJjaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2g7XG4gIH1cblxuICBnZXQgbmF2aWdhdG9yQ29ubmVjdGlvbigpOiBJTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgbmF2aWdhdG9ySXNPbkxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5vbkxpbmU7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB0aGlzLl93aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ107XG4gIH1cblxuICBnZXQgcXVldWVNaWNyb3Rhc2soKTogKG1pY3JvdGFzazogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5xdWV1ZU1pY3JvdGFzay5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3I6IHN0cmluZywgY3VycmVudFZhbHVlOiBzdHJpbmcgfCBFcnJvciwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGU6IG9iamVjdFtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCkgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nVGhyZXNob2xkIHtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB2YWx1ZSgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXRUaHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuLi9zZGsvVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi9zZGsvRW52aXJvbm1lbnQnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZXM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IE1ldHJpY3NTZXJ2aWNlfSA9IHt9O1xuXG4gIHN0YXRpYyBnZXRNZXRyaWNzU2VydmljZSh1cmw6IHN0cmluZyk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdXJsIG11c3QgYmUgYSBzdHJpbmcgaW5zdGVhZCByZWNlaXZlZCBbJHt0eXBlb2YgdXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF07XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzKSB7XG4gICAgICByZXR1cm4gbWV0cmljc1NlcnZpY2VzO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbmV3IE1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodXJsKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChTREsudGVsZW1ldHJ5TGV2ZWwpO1xuXG4gICAgcmV0dXJuIE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXSA9IG5ldyBNZXRyaWNzU2VydmljZShtZXRyaWNzQ29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogdm9pZCB7XG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gT2JqZWN0LnZhbHVlcyhNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzKTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMgJiYgbWV0cmljc1NlcnZpY2VzLmxlbmd0aCkge1xuICAgICAgbWV0cmljc1NlcnZpY2VzLmZvckVhY2gobWV0cmljc1NlcnZpY2UgPT4ge1xuICAgICAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IHRlbGVtZXRyeUxldmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldHJpY3NGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbCkge1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsOlxuICAgICAgICByZXR1cm4gJ0Vzc2VudGlhbCc7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbFR5cGU6IFRlbGVtZXRyeUxldmVsVHlwZSk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLk9mZjtcbiAgICAgIGNhc2UgJ0Vzc2VudGlhbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIge1xuICBzdGF0aWMgdHJ1bmNhdGVJY2VTZXJ2ZXJzKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkVmlkZW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRBdWRpb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0Y1N0YXRpc3RpYzogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+ID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPih7fSk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyYWNrc1RvTW9uaXRvcjogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgIHRoaXMuX3RyYWNrc1RvTW9uaXRvciA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLm1hcCh0cmFjayA9PiB0cmFjay5raW5kKSB8fCBbXTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5nZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU0RQID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkU0RQLmF1ZGlvQ29kZWM7XG4gICAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRTRFAudmlkZW9Db2RlYztcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMudXBkYXRlU3RhdGlzdGljTGVnYWN5KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbClcbiAgICAgIC50aGVuKHN0YXRzID0+IHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lICogMTAwMDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdpbmJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2luZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICAgIHN0YXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1JlY2VpdmVkIHx8IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1JlY2VpdmVkID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzUmVjZWl2ZWQgPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wIHx8IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgcGFja2V0c0xvc3Q6IHJlcG9ydC5wYWNrZXRzTG9zdCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNSZWNlaXZlZDogcmVwb3J0LnBhY2tldHNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LmZyYW1lc0RlY29kZWQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljTGVnYWN5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHNMZWdhY3koKS50aGVuKHN0YXRzID0+IHtcbiAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dvb2dSVFQnKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IHJlcG9ydC5zdGF0KCdtZWRpYVR5cGUnKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdID0ge3RpbWVzdGFtcDogRGF0ZS5ub3coKX07XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydtZWRpYVR5cGUnXSA9IG1lZGlhVHlwZTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2J5dGVzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdieXRlc1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2NvZGVjJ10gPSByZXBvcnQuc3RhdCgnZ29vZ0NvZGVjTmFtZScpLnRvU3RyaW5nKCkgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShtZWRpYVR5cGUpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgIGlmIChtZWRpYVR5cGUgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuc3RhdCgnZnJhbWVzRGVjb2RlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgMTAwMCB8fCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUNoYW5uZWx9IGZyb20gJy4vSUNoYW5uZWwnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0LCB7Q2hhbm5lbENvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBFbmNvZGVkU3RyZWFtU2luaywge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFN0cmVhbVRyYWNrVHJhbnNmb3JtLCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbn0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5pbXBvcnQgU3RyZWFtRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5jb25zdCBiYWNrZ3JvdW5kUmVjb3ZlcnlGYWlsc2FmZUludGVydmFsSW5NaWxsaXNlY29uZHMgPSA1MDAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsT3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbCBpbXBsZW1lbnRzIElDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NoYW5uZWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RXhpc3RzOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9NdXRlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9QYXVzZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQbGF5aW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUYXJnZXRMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TGFnOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlCaXRyYXRlTGltaXQ6IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZXNvbHV0aW9uOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zKSB7XG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbik7XG4gICAgY29uc3QgY2hhbm5lbENvbnRleHRPcHRpb25zOiBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnM/LnRhcmdldExhZyxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2ssXG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2tcbiAgICB9O1xuICAgIGNvbnN0IHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIGhhc0luc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBuZXcgQ2hhbm5lbENvbnRleHQoY2hhbm5lbENvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlFeGlzdHMgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPih0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPih0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuXG4gICAgaWYgKFNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgLy8gU0RLLmluaXRpYWxpemUoKSBndWFyYW50ZWVzIGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGlzIGNyZWF0ZWQgYmVmb3JlIGFueSBDaGFubmVsIGNhbiBiZSBpbnN0YW50aWF0ZWRcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgICAgIGlmICghaXNGb3JlZ3JvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgZmFpbHVyZUNvdW50IHJlc2V0IGFuZCBDaGFubmVsIHJlc3RhcnQgZHVlIHRvIENoYW5uZWwgYWxyZWFkeSBzdGFydGluZycsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmlzU3RyZWFtSGVhbHRoeSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgZmFpbHVyZUNvdW50IHJlc2V0IGFuZCBDaGFubmVsIHJlc3RhcnQgZHVlIHRvIHN0cmVhbSBiZWluZyBoZWFsdGh5JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLmlzUmV0cnlhYmxlU3RhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFNraXBwaW5nIGZhaWx1cmVDb3VudCByZXNldCBhbmQgQ2hhbm5lbCByZXN0YXJ0IGR1ZSB0byBDaGFubmVsU3RhdGUgYmVpbmcgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFJlc2V0IGZhaWx1cmVDb3VudCB0byAwIGFuZCByZXN0YXJ0aW5nIENoYW5uZWwgYWZ0ZXIgcmV0dXJuaW5nIHRvIGZvcmVncm91bmQnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBleGlzdHMoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RXhpc3RzO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBCaXRzUGVyU2Vjb25kIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBnZXQgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JldHJ5YWJsZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU3RyZWFtSGVhbHRoeSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuICAgIGNvbnN0IGhhc0FjdGl2ZVRyYWNrcyA9IG1lZGlhU3RyZWFtPy5nZXRUcmFja3MoKS5zb21lKHRyYWNrID0+IHRyYWNrLnJlYWR5U3RhdGUgPT09ICdsaXZlJykgPz8gZmFsc2U7XG5cbiAgICByZXR1cm4gIXZpZGVvRWxlbWVudC5wYXVzZWQgJiYgaGFzQWN0aXZlVHJhY2tzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNSZWNvdmVyeSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBpc1JlY292ZXJ5ID8gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcgOiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKGlzUmVjb3ZlcnkgPyAnY2xpZW50OnJlY292ZXInIDogJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPigndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPignYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSAmJiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIGluc2VydGFibGUtc3RyZWFtcyBhbmQgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgYXJlIGVuYWJsZWQsIG9ubHkgdXNlIG9uZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBoYXNFbmNvZGVkU3RyZWFtU2luayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayAmJiBoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gY2FsbGJhY2sgYW5kIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBzaW5rIGZ1bmN0aW9uIGZvdW5kLCBvbmx5IHVzZSBvbmUgdHlwZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1lZGlhIFN0cmVhbSBUcmFjayBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCEoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgaWYgKCFTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZC52YWx1ZSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gRGVmZXJyaW5nIHN0cmVhbSBmYWlsdXJlIGhhbmRsaW5nIHRvIGZvcmVncm91bmQgcmVjb3ZlcnknLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVBsYXllciA9IFN0cmVhbUZhY3RvcnkuY3JlYXRlKHRva2VuLCB0aGlzLl9jaGFubmVsQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIGlmICghc3RyZWFtUGxheWVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQoc3RyZWFtUGxheWVyKTtcblxuICAgIHJldHVybiBzdHJlYW1QbGF5ZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAsXG4gICAgICB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50LmJpbmQodGhpcykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBjaGFubmVsJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdGFydEFmdGVyU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgaW5pdGlhbGl6aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBsYXlpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwYXVzZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgaW52b2tlIHBsYXkoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlO1xuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudCAmJiB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjYXBhYmlsaXRpZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkgPSBjYXBhYmlsaXRpZXMuZmluZChjYXBhYmlsaXR5ID0+IGNhcGFiaWxpdHkuc3RhcnRzV2l0aCgnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uPScpKTtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIWZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyBubyBjYXBhYmlsaXR5IHdhcyBmb3VuZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBpdCBbJXNdJywgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkuc3BsaXQoJz0nKVsxXVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvbi50cmltKCkpXG4gICAgICAuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgIGNhc2UgJ3RpbWVjb2RlJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RpbWVzdGFtcHMnOlxuICAgICAgICAgICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0lnbm9yaW5nIHVua25vd24gZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIG9wdGlvbiBbJXNdJywgb3B0aW9uKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBjb25maWd1cmF0aW9uIFsodGltZWNvZGUgWyVzXSwgdGltZXN0YW1wcyBbJXNdKV0nLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGF5UHJvbWlzZSA9IHZpZGVvRWxlbWVudC5wbGF5KCk7XG5cbiAgICBpZiAocGxheVByb21pc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxheVByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgIGNvbnN0IGhhc0F1ZGlvVHJhY2sgPSAhIW1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZpbHRlcih0cmFjayA9PiB7XG4gICAgICAgIHJldHVybiB0cmFjay5raW5kID09PSAnYXVkaW8nO1xuICAgICAgfSkubGVuZ3RoO1xuICAgICAgY29uc3QgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgPSAhU0RLLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuXG4gICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgfHwgdmlkZW9FbGVtZW50Lm11dGVkIHx8ICFoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGF1c2VkIHZpZGVvIGFmdGVyIHBsYXkgZmFpbGVkLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQXVkaW9UcmFjaykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSBtdXRlZCB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHZpZGVvRWxlbWVudC5wbGF5KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBsYXllZCB2aWRlbyBhZnRlciBhdXRvIG11dGluZy4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkIHRvIHVubXV0ZS4nLCB0aGlzLnN0cmVhbUlkKTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgICAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBDaGFubmVsU3RhdGUge1xuICBJbml0aWFsaXppbmcgPSAwLFxuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcgPSAyLFxuICBQYXVzZWQgPSAzLFxuICBQbGF5aW5nID0gNCxcbiAgUmVjb3ZlcmluZyA9IDUsXG4gIFJlY29ubmVjdGluZyA9IDYsXG4gIFN0YW5kQnkgPSA3LFxuICBTdG9wcGVkID0gOCxcbiAgVW5hdXRob3JpemVkID0gOSxcbiAgR2VvUmVzdHJpY3RlZCA9IDEwLFxuICBHZW9CbG9ja2VkID0gMTEsXG4gIFVuc3VwcG9ydGVkRmVhdHVyZSA9IDEyLFxuICBDb25maWd1cmF0aW9uRXJyb3IgPSAxMyxcbiAgVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yID0gMTQsXG4gIENvbm5lY3Rpb25FcnJvciA9IDE1LFxuICBDbGllbnRTdGFydEVycm9yID0gMTYsXG4gIEVycm9yID0gMTdcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2hhbm5lbFN0YXRlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IENoYW5uZWwsIHtDaGFubmVsT3B0aW9uc30gZnJvbSAnLi9DaGFubmVsJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4vSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrJztcblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgPSB7XG4gIHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudDtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIHRhcmdldExhZz86IE1pbGxpc2Vjb25kO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+O1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT47XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxzIHtcbiAgc3RhdGljIGNyZWF0ZUNoYW5uZWwob3B0aW9uczogQ3JlYXRlQ2hhbm5lbE9wdGlvbnMpOiBDaGFubmVsIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGFubmVsT3B0aW9uczogQ2hhbm5lbE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnMudGFyZ2V0TGFnLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzOiBDaGFubmVsT3B0aW9ucyAmIHtcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaykge1xuICAgICAgY2hhbm5lbE9wdGlvbnMub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgY2hhbm5lbE9wdGlvbnMub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSBvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2hhbm5lbChvcHRpb25zLnZpZGVvRWxlbWVudCwgb3B0aW9ucy50b2tlbiwgY2hhbm5lbE9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgaXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWxzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW0sIFN1YnNjcmliZVN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4uL2NoYW5uZWxzL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWMsIElSdGNTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbmNvbnN0IGRlZmF1bHRUYXJnZXRMYWcgPSAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IG51bWJlcjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxDb250ZXh0IHtcbiAgY2hhbm5lbEluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIGNoYW5uZWxEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHJlbmRlcmVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBzdGF0ZTogU3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBleGlzdHM6IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBhdXRvTXV0ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dG9QYXVzZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcGxheWluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgdGFyZ2V0TGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgbGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPjtcbiAgYml0cmF0ZUxpbWl0OiBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICByZXNvbHV0aW9uOiBTdWJqZWN0PERpbWVuc2lvbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB8IG51bGw7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgfCBudWxsO1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHZpZGVvVGVsZW1ldHJ5OiBWaWRlb1RlbGVtZXRyeSB8IG51bGw7XG4gIHJ0Y0F1ZGlvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgcnRjVmlkZW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWMgfCBudWxsO1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ2hhbm5lbENvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbERpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5yZW5kZXJlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsSW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gbmV3IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxDaGFubmVsU3RhdGU+KENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuZXhpc3RzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuYXV0b011dGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0b1BhdXNlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnBsYXlpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnRhcmdldExhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPihvcHRpb25zPy50YXJnZXRMYWcgPz8gZGVmYXVsdFRhcmdldExhZyk7XG4gICAgdGhpcy5sYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICB0aGlzLmJpdHJhdGVMaW1pdCA9IG5ldyBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+KDApO1xuICAgIHRoaXMucmVzb2x1dGlvbiA9IG5ldyBTdWJqZWN0PERpbWVuc2lvbj4oRGltZW5zaW9uLmVtcHR5KTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy52aWRlb1RlbGVtZXRyeSA9IG51bGw7XG4gICAgdGhpcy5ydGNBdWRpb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5ydGNWaWRlb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LnZhbHVlICYmIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YW5kQnk7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5leGlzdHMudmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbn0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IHtcbiAgcHVibGljIHJlYWRvbmx5IHNob3VsZEV4dHJhY3RUaW1lY29kZTogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IHNob3VsZEV4dHJhY3RUaW1lc3RhbXBzOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgaXNFbmFibGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcbiAgcHVibGljIHJlYWRvbmx5IHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNob3VsZEV4dHJhY3RUaW1lY29kZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuaXNFbmFibGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4obnVsbCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvbjogU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubWVkaWFTdHJlYW0gPSBuZXcgU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogYm9vbGVhbjtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjayA9IHtcbiAgbWVkaWFTdHJlYW1UcmFjazogTWVkaWFTdHJlYW1UcmFjayB8IG51bGw7XG4gIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlciB8IG51bGw7XG4gIG1pZDogc3RyaW5nIHwgbnVsbDtcbiAgY29kZWM6IFZpZGVvQ29kZWMgfCBBdWRpb0NvZGVjIHwgbnVsbDtcbiAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IFdvcmtlciB8IG51bGw7XG4gIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYW5zZm9ybUNvbnRleHQge1xuICByZWFkb25seSBoYXNJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWFkb25seSB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG4gIHJlYWRvbmx5IHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0luc2VydGFibGVTdHJlYW1zKTtcbiAgICB0aGlzLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zKTtcbiAgICB0aGlzLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZFZpZGVvU3RyZWFtU2luaztcbiAgICB0aGlzLmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbms7XG4gICAgdGhpcy5hdWRpb1RyYWNrID0ge1xuICAgICAgbWVkaWFTdHJlYW1UcmFjazogbnVsbCxcbiAgICAgIHJlY2VpdmVyOiBudWxsLFxuICAgICAgbWlkOiBudWxsLFxuICAgICAgY29kZWM6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBbXVxuICAgIH07XG4gICAgdGhpcy52aWRlb1RyYWNrID0ge1xuICAgICAgbWVkaWFTdHJlYW1UcmFjazogbnVsbCxcbiAgICAgIHJlY2VpdmVyOiBudWxsLFxuICAgICAgbWlkOiBudWxsLFxuICAgICAgY29kZWM6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBbXVxuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIEF1ZGlvQ29kZWMge1xuICBPUFVTID0gMCxcbiAgQUFDID0gMVxufVxuXG5leHBvcnQgdHlwZSBBdWRpb0NvZGVjVHlwZSA9ICdPUFVTJyB8ICdBQUMnOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0F1ZGlvQ29kZWMsIEF1ZGlvQ29kZWNUeXBlfSBmcm9tICcuL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uLy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdWRpb0NvZGVjTWFwcGluZyB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlKGF1ZGlvQ29kZWM6IEF1ZGlvQ29kZWMpOiBBdWRpb0NvZGVjVHlwZSB7XG4gICAgc3dpdGNoIChhdWRpb0NvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuICdPUFVTJztcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiAnQUFDJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGF1ZGlvQ29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjKGF1ZGlvQ29kZWNUeXBlOiBBdWRpb0NvZGVjVHlwZSk6IEF1ZGlvQ29kZWMge1xuICAgIGNvbnN0IGF1ZGlvQ29kZWNTdHJpbmcgPSBhdWRpb0NvZGVjVHlwZS50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBBdWRpb0NvZGVjO1xuXG4gICAgc3dpdGNoIChhdWRpb0NvZGVjU3RyaW5nKSB7XG4gICAgICBjYXNlICdPUFVTJzpcbiAgICAgICAgcmV0dXJuIEF1ZGlvQ29kZWMuT1BVUztcbiAgICAgIGNhc2UgJ0FBQyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLkFBQztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGF1ZGlvQ29kZWNTdHJpbmcpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZW51bSBWaWRlb0NvZGVjIHtcbiAgSDI2NCA9IDAsXG4gIFZQOCA9IDEsXG4gIFZQOSA9IDJcbn1cblxuZXhwb3J0IHR5cGUgVmlkZW9Db2RlY1R5cGUgPSAnSDI2NCcgfCAnVlA4JyB8ICdWUDknOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge1ZpZGVvQ29kZWMsIFZpZGVvQ29kZWNUeXBlfSBmcm9tICcuL1ZpZGVvQ29kZWMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb0NvZGVjTWFwcGluZyB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlKHZpZGVvQ29kZWM6IFZpZGVvQ29kZWMpOiBWaWRlb0NvZGVjVHlwZSB7XG4gICAgc3dpdGNoICh2aWRlb0NvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgcmV0dXJuICdIMjY0JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiAnVlA4JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiAnVlA5JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjKHZpZGVvQ29kZWNUeXBlOiBWaWRlb0NvZGVjVHlwZSk6IFZpZGVvQ29kZWMge1xuICAgIGNvbnN0IHZpZGVvQ29kZWNTdHJpbmcgPSB2aWRlb0NvZGVjVHlwZS50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBWaWRlb0NvZGVjO1xuXG4gICAgc3dpdGNoICh2aWRlb0NvZGVjU3RyaW5nKSB7XG4gICAgICBjYXNlICdIMjY0JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuSDI2NDtcbiAgICAgIGNhc2UgJ1ZQOCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQODtcbiAgICAgIGNhc2UgJ1ZQOSc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQOTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWNTdHJpbmcpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMV0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVTdGF0ZSwgQml0cmF0ZVN0YXRlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZVN0YXRlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlKTogQml0cmF0ZVN0YXRlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlU3RhdGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLktlZXA6XG4gICAgICAgIHJldHVybiAnS2VlcCc7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlU3RhdGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxFbmRQb2ludD4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSlcbiAgICAgICAgICAudGhlbigoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KSlcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVVyaSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kaXNjb3ZlcnlVcmk6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oZGVmYXVsdERpc2NvdmVyeVVyaSk7XG5cbiAgc3RhdGljIGdldCB1cmkoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gRGlzY292ZXJ5VXJpLl9kaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGREaXNjb3ZlcnlVcmwodXJpOiBVUkwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lID09PSAnLycpIHtcbiAgICAgIHVybC5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5VXJpIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm91bmRUcmlwVGltZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRoaXMuX3RpbWVvdXQpKVxuICAgIF0pO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHsgLyogSGFuZGxlICovXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm91bmRUcmlwVGltZSA9IGZpbmlzaGVkIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIGFzeW5jIHN1YnNjcmliZSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlciwgb3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdzdWJzY3JpYmUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGxldCByZXF1ZXN0Qm9keTogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdDtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH1cblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/LihyZXF1ZXN0Qm9keSk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgU3Vic2NyaWJlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHN1YnNjcmliZSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHN1YnNjcmliZVJlc3BvbnNlKTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHB1Ymxpc2gobmFtZTogc3RyaW5nLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlcik6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdwdWJsaXNoJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBuZXcgRXJyb3IoYFB1Ymxpc2ggdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbT8uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBuZXcgRXJyb3IoYFNldCByZW1vdGUgZGVzY3JpcHRpb24gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBuZXcgRXJyb3IoYFNldCBsaW1pdCBiaXRyYXRlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBhc3luYyBhZGRJY2VDYW5kaWRhdGVzKHN0cmVhbTogSVN0cmVhbSwgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10sIGRpc2NvdmVyeUNvbXBsZXRlZDogYm9vbGVhbiwgb3B0aW9uczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2ljZScsICdjYW5kaWRhdGVzJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgY2FuZGlkYXRlcyxcbiAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIG5ldyBFcnJvcihgQWRkIGljZSBjYW5kaWRhdGVzIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBhZGQgSUNFIGNhbmRpZGF0ZXMgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtKHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgRGVsZXRlIHN0cmVhbSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgc3RyZWFtJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3I/LnNlbmRCZWFjb24pIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmRlc3Ryb3lTdHJlYW0oc3RyZWFtLCByZWFzb24pO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBuYXZpZ2F0b3Iuc2VuZEJlYWNvbih1cmwsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBwYXRoQXNBcnJheSA9IHVyaS5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgcGF0aEFzQXJyYXkubGVuZ3RoID0gcGF0aEFzQXJyYXkubGVuZ3RoIC0gMTtcblxuICAgIHVyaS5wYXRobmFtZSA9IHBhdGhBc0FycmF5LmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHVibGlzaFN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDY6XG4gICAgICAgIHJldHVybiAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU3Vic2NyaWJlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIHNoYXJlZFNlY3JldCxcbiAgICAgIGxhZyxcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0XG4gICAgICB9LFxuICAgICAgbGFnLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfTtcblxuICAgIGlmIChydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2U7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkOiBkYXRhLnN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oZGF0YS5ydGNDb25maWd1cmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwdWJsaXNoUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiA9IHtpY2VTZXJ2ZXJzOiBbXX07XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID09PSAnbnVtYmVyJykge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgICB1cmxzOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJscyxcbiAgICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPSBjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3k7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlOiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSURlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJ0cFRpbWVzdGFtcH0gZnJvbSAnLi9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCB7TWV0YWRhdGFNZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbmV4cG9ydCB0eXBlIEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgY29kZWM6IFZpZGVvQ29kZWM7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHZpZGVvRWxlbWVudDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD47XG4gIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBpc0VuYWJsZWRTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXI7XG4gIG1pZDogc3RyaW5nO1xuICB0cmFja0lkOiBzdHJpbmc7XG4gIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90cmFuc2Zvcm1OYW1lID0gJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wOiBNYXA8UnRwVGltZXN0YW1wLCBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ3N0YWxsZWQnIHwgJ2VuZGVkJyB8ICdlcnJvcicgfCAnd2FpdGluZycgPSAnd2FpdGluZyc7XG4gIHByaXZhdGUgX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZShjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGNvbnRleHQuc3RyZWFtSWQsIGNvbnRleHQuY29kZWMsIGNvbnRleHQucmVjZWl2ZXIsIGNvbnRleHQubWlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyhjb250ZXh0LnZpZGVvRWxlbWVudCwgY29udGV4dC5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB0aGlzLnNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybShjb250ZXh0LmNvZGVjLCBjb250ZXh0Lm1pZCwgY29udGV4dC50cmFja0lkLCBjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIGNvbnRleHQudHJhbnNmb3JtRnVuY3Rpb25OYW1lcywgY29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIGNvbnRleHQuaXNFbmFibGVkU3ViamVjdC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uKHN0cmVhbUlkOiBzdHJpbmcsIGNvZGVjOiBWaWRlb0NvZGVjLCByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIsIG1pZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvZGVjICE9PSBWaWRlb0NvZGVjLkgyNjQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSB2aWRlbyBjb2RlYyBpcyBub3QgSDI2NCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghcmVjZWl2ZXIpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSBubyByZWNlaXZlciB3YXMgZm91bmQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIW1pZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIG1pZCB3YXMgZm91bmQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvZGVjOiBWaWRlb0NvZGVjLCBtaWQ6IHN0cmluZywgdHJhY2tJZDogc3RyaW5nLCB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyLCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXSwgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyLnJlZ2lzdGVyUm91dGU8VHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD4+KFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLCB0aGlzLmhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZS5iaW5kKHRoaXMsIFZpZGVvQ29kZWNbY29kZWNdLCBtaWQhLCB0cmFja0lkISwgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5wdXNoKEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLl90cmFuc2Zvcm1OYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlKGNvZGVjOiBzdHJpbmcsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+LCBtZXNzYWdlOiBNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkKTogdm9pZCB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcnRwVGltZXN0YW1wLCBtZXRhZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMobWVzc2FnZSkpIHtcbiAgICAgIGNvbnN0IHJ0cFRpbWVzdGFtcE51bWJlciA9IHBhcnNlSW50KHJ0cFRpbWVzdGFtcCwgMTApO1xuICAgICAgY29uc3QgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBtZXRhZGF0YVsnZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24nXTtcblxuICAgICAgaWYgKGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb246IERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0ge1xuICAgICAgICAgIHRpbWVjb2RlOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50aW1lY29kZSA/PyBudWxsLFxuICAgICAgICAgIHJlY2VpdmVUaW1lc3RhbXA6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnJlY2VpdmVUaW1lc3RhbXAgPz8gbnVsbCxcbiAgICAgICAgICBraW5kOiAndmlkZW8nLFxuICAgICAgICAgIGNvZGVjLFxuICAgICAgICAgIG1pZCxcbiAgICAgICAgICB0cmFja0lkLFxuICAgICAgICAgIHNvdXJjZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBpbmdlc3RUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgZW5jb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHRyYW5zY29kZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBwbGF5YmFja1N0YXRlOiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IGZyYW1lVGltaW5nSW5mb3JtYXRpb247XG5cbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgICAgICB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLnNldChydHBUaW1lc3RhbXBOdW1iZXIsIGZyYW1lVGltaW5nSW5mb3JtYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKHZpZGVvRWxlbWVudFN1YmplY3Q6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuY2xlYXIoKSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcyk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHZpZGVvRWxlbWVudFN1YmplY3Quc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG5vdzogRE9NSGlnaFJlc1RpbWVTdGFtcCwgbWV0YWRhdGE6IFZpZGVvRnJhbWVDYWxsYmFja01ldGFkYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmUtcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBhZ2FpblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuXG4gICAgY29uc3QgcnRwVGltZXN0YW1wID0gbWV0YWRhdGEucnRwVGltZXN0YW1wO1xuXG4gICAgaWYgKCFydHBUaW1lc3RhbXApIHtcbiAgICAgIC8vIFRPRE8gKE5IKTogQWRkIGEgdGhyb3R0bGVkIGxvZyBpbmRpY2F0aW5nIHRoYXQgbm8gUlRQIHRpbWVzdGFtcCB3YXMgZm91bmRcbiAgICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBpdCdzIG51bGxhYmxlLCBidXQgd2UgYWx3YXlzIGhhdmUgaXQgaW4gYSBXZWJSVEMgY29udGV4dFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRpbWVzdGFtcHNUb0RlbGV0ZTogUnRwVGltZXN0YW1wW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW3RpbWVzdGFtcCwgZnJhbWVUaW1pbmddIG9mIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXApIHtcbiAgICAgIGlmICh0aW1lc3RhbXAgPiBydHBUaW1lc3RhbXApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QudmFsdWUgPSB7XG4gICAgICAgIC4uLmZyYW1lVGltaW5nLFxuICAgICAgICByZW5kZXJUaW1lc3RhbXA6IG5ldyBEYXRlKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBub3cpLFxuICAgICAgICBwbGF5YmFja1N0YXRlOiAncGxheWluZydcbiAgICAgIH07XG5cbiAgICAgIHRpbWVzdGFtcHNUb0RlbGV0ZS5wdXNoKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0aW1lc3RhbXAgb2YgdGltZXN0YW1wc1RvRGVsZXRlKSB7XG4gICAgICB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLmRlbGV0ZSh0aW1lc3RhbXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIGNvbnN0IG9uUGxheWluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BsYXlpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZykpKTtcblxuICAgIGNvbnN0IG9uUGF1c2UgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdwYXVzZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpKSk7XG5cbiAgICBjb25zdCBvblN0YWxsZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdzdGFsbGVkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgb25TdGFsbGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpKSk7XG5cbiAgICBjb25zdCBvbldhaXRpbmcgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICd3YWl0aW5nJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgb25XYWl0aW5nKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpKSk7XG5cbiAgICBjb25zdCBvbkVuZGVkID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnZW5kZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIG9uRW5kZWQpKSk7XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnZXJyb3InO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpKSk7XG5cbiAgICB0aGlzLl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpIHtcbiAgICAgICAgdmlkZW9FbGVtZW50LmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkKTtcbiAgICAgIH1cbiAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgaWYgKCF2aWRlb0VsZW1lbnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQgPSB2aWRlb0VsZW1lbnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayh0aGlzLmhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjay5iaW5kKHRoaXMsIHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi8uLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuLi8uLi9ydGMvU2RwUGFyc2VyJztcbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSwge1xuICBkZWZhdWx0VHJhY2tLaW5kcyxcbiAgRW5jb2RlZEluc2VydGFibGVTdHJlYW1zXG59IGZyb20gJy4uLy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgRW5kUG9pbnQsIHtTdWJzY3JpYmVPcHRpb25zLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0JztcbmltcG9ydCBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciwge0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXInO1xuaW1wb3J0IEluc2VydGFibGVTdHJlYW1zIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zJztcbmltcG9ydCB7SVN0cmVhbX0gZnJvbSAnLi9JU3RyZWFtJztcbmltcG9ydCBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyLCB7RW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHR9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXInO1xuaW1wb3J0IHtBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY1R5cGV9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQgVmlkZW9Db2RlY01hcHBpbmcgZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjTWFwcGluZyc7XG5pbXBvcnQgQXVkaW9Db2RlY01hcHBpbmcgZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZyc7XG5cbmNvbnN0IGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsID0gMTAwO1xuY29uc3QgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCA9IDMwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVN0cmVhbSBpbXBsZW1lbnRzIElTdHJlYW0ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVTdHJlYW0nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IGNoYW5uZWxDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICB9XG5cbiAgc3RhcnQodXJpOiBVUkwsIHRva2VuOiBzdHJpbmcsIGxpc3Rlbk9uU3RyZWFtU2V0dXA6IFN0cmVhbVNldHVwTGlzdGVuZXIsIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50OiBGdW5jdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWVcbiAgICAgIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPyBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRW5hYmxlZCA6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZDtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3JlY3Zvbmx5JywgZGVmYXVsdFRyYWNrS2luZHMsIHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlT3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICAgICAgc3Vic2NyaWJlT3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBudWxsLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnN1YnNjcmliZSh0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlLCBzdWJzY3JpYmVPcHRpb25zKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IHtzdGF0dXN9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZXhpc3RzLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IHVuZGVmaW5lZCA7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgJ1slc10gU3Vic2NyaWJlIGZhaWxlZCB3aXRoIHN0YXR1cyBbJXNdJyxcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSwgbGFnfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gbGFnO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24gYXMgUlRDQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ6IHVuZGVmaW5lZCB8IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBudWxsO1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHN3aXRjaCAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICAgICAgICAgICAgaWYgKEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbVByb21pc2UgPSBuZXcgUHJvbWlzZTxNZWRpYVN0cmVhbT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50Lm9uVHJhY2tEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZTogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFsndHJhY2snIHwgJ2FkZHN0cmVhbSddKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoJ3N0cmVhbXMnIGluIGUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKTtcbiAgICAgICAgICAgICAgfSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJWpdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGFuc3dlcik7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgYXMgRW5kUG9pbnQ7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zICYmIHBlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcihwZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyA9IFZpZGVvQ29kZWNNYXBwaW5nLmNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyhwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjIGFzIFZpZGVvQ29kZWNUeXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2suY29kZWMgPSBBdWRpb0NvZGVjTWFwcGluZy5jb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYyBhcyBBdWRpb0NvZGVjVHlwZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlcnMgPSBwZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrIGFuZCBvbmUgYXVkaW8gTWVkaWFTdHJlYW1UcmFja1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgLy8gQm90aCBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCwgYnV0IHRoZSB0eXBlIHN5c3RlbSBtYWtlcyB0aGVtIG51bGxhYmxlLCBzbyB3ZSBoYXZlIHRvIGFzc2VydCB0aGUgcHJlc2VuY2VcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSB2aWRlb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IHZpZGVvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrUmVjZWl2ZXIgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2sucmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmVyID0+IHJlY2VpdmVyLnRyYWNrID09PSBhdWRpb1RyYWNrKVswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5taWQgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldFRyYW5zY2VpdmVyc1xuICAgICAgICAgICAgICAgICAgPyBwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maWx0ZXIodHJhbnNjZWl2ZXIgPT4gdHJhbnNjZWl2ZXIucmVjZWl2ZXIgPT09IGF1ZGlvVHJhY2tSZWNlaXZlcilbMF0/Lm1pZFxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKEluc2VydGFibGVTdHJlYW1zLmNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZSh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtSWQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICBjb2RlYzogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLmNvZGVjLFxuICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQ6IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQucmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWRTdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5pc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsXG4gICAgICAgICAgICAgICAgICAgIG1pZDogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrSWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrLmlkISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lc1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcihmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFjazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmshLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmshXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIoZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBJbnNlcnRhYmxlU3RyZWFtcy5jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKG1lZGlhU3RyZWFtLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoZGlzcG9zYWJsZXMpO1xuICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gdHJhbnNmb3JtZWRTdHJlYW07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvciA9IG5ldyBSdGNDb25uZWN0aW9uTW9uaXRvcihwZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW0sIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwKTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uID0gcnRjQ29ubmVjdGlvbk1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcblxuICAgICAgICAgICAgICAgIGlmICghc3RhdGlzdGljcykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXVkaW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB2aWRlb1RyYWNrRmFpbGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy5hdWRpbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gQXVkaW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLnZpZGVvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkICYmIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuT2ZmbGluZTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2aWRlb1RyYWNrRmFpbGVkIHx8IGF1ZGlvVHJhY2tGYWlsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgdHJhY2sgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbih0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG5cbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLk9mZmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPyBDaGFubmVsU3RhdGUuUGxheWluZyA6IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBzdGF0ZSByZXN0b3JlZCB0byBbJXNdIGFmdGVyIHJlY29ubmVjdGluZycsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uKTtcblxuICAgICAgICAgICAgICBpZiAoIVNESy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXBwbHlSdGNDb25maWd1cmF0aW9uKFxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGwsXG4gICAgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgaWYgKCFvcHRpb25hbFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uID0gUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHJ1bmNhdGVJY2VTZXJ2ZXJzKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm4gU0RLLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSdGNDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4ub3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAuLi5ydGNDb25maWd1cmF0aW9uXG4gICAgfTtcblxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihuZXdSdGNDb25maWd1cmF0aW9uKTtcblxuICAgIHJldHVybiBvcHRpb25hbFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihzdHJlYW1JZDogc3RyaW5nLCBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKCFTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZC52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFNraXBwaW5nIHBlZXJDb25uZWN0aW9uIHJlY29ubmVjdGlvbiBhdHRlbXB0IHdoaWxlIG5vdCBpbiBmb3JlZ3JvdW5kIChwZWVyQ29ubmVjdGlvbiBzdGF0ZSBbJXNdKScsIHN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SVN0cmVhbX0gZnJvbSAnLi9JU3RyZWFtJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQgUmVhbFRpbWVTdHJlYW0gZnJvbSAnLi9SZWFsVGltZVN0cmVhbSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVN0cmVhbUZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbWluZycpO1xuXG4gIHN0YXRpYyBjcmVhdGUodG9rZW46IHN0cmluZywgY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogSVN0cmVhbSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdG9rZW5DYXBhYmlsaXRpZXMgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS5jYXBhYmlsaXRpZXM7XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ29uLWRlbWFuZCcpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBPbi1EZW1hbmQgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdzdHJlYW1pbmcnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgTGl2ZSBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtKGNoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVhbFRpbWVTdHJlYW1GYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IHtBdWRpb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2t9IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciwge1N1cnJvZ2F0ZUZyYW1lVHlwZSwgU2tpcEZyYW1lfSBmcm9tICcuL1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXInO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGV9IGZyb20gJy4vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi9DaHVuayc7XG5cbmV4cG9ydCB0eXBlIEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0ID0ge1xuICB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG4gIGF1ZGlvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0KSB7XG4gICAgdGhpcy5pbml0aWFsaXplKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKGNvbnRleHQ6IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKGNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjb250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5wdXNoKCdwcm90ZWN0ZWQtdmlkZW8nKTtcblxuICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyIS5yZWdpc3RlclJvdXRlKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkVmlkZW9DaHVuaywgKGNodW5rOiBSVENFbmNvZGVkVmlkZW9GcmFtZSkgPT4gdGhpcy5lbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayhjb250ZXh0LnZpZGVvVHJhY2ssIGNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayBhcyBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuaykpKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5hdWRpb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQuYXVkaW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC1hdWRpbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRBdWRpb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQuYXVkaW9UcmFjaywgY29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2sodHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaywgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bms6IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKTogUHJvbWlzZTxDaHVuaz4ge1xuICAgIGlmICghYXdhaXQgZW5jb2RlZEF1ZGlvU3RyZWFtU2luayh0cmFjay5tZWRpYVN0cmVhbVRyYWNrISwgY2h1bmspKSB7XG4gICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWModHJhY2suY29kZWMgYXMgQXVkaW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2h1bmsgYXMgdW5rbm93biBhcyBDaHVuaztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2sodHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaywgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiwgY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKTogUHJvbWlzZTxDaHVuayB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghYXdhaXQgZW5jb2RlZFZpZGVvU3RyZWFtU2luayh0cmFjay5tZWRpYVN0cmVhbVRyYWNrISwgY2h1bmspKSB7XG4gICAgICBsZXQgc3Vycm9nYXRlOiBTdXJyb2dhdGVGcmFtZVR5cGU7XG5cbiAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICBzdXJyb2dhdGUgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZSh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXJyb2dhdGUgPT09IFNraXBGcmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNodW5rLmRhdGEgPSBzdXJyb2dhdGUgfHwgY2h1bmsuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWModHJhY2suY29kZWMgYXMgVmlkZW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWModHJhY2suY29kZWMgYXMgVmlkZW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2h1bms7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+IHtcbiAgICAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIGNodW5rOiBUKTogYm9vbGVhbiB8IFByb21pc2VMaWtlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmNvZGVkU3RyZWFtU2luayB7XG4gIHN0YXRpYyB2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rPFQgZXh0ZW5kcyBSVENFbmNvZGVkQXVkaW9GcmFtZSB8IFJUQ0VuY29kZWRWaWRlb0ZyYW1lPihtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSUVuY29kZWRTdHJlYW1TaW5rPFQ+KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gRW5jb2RlZCBTdHJlYW0gU2luayBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDIuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbmNvZGVkU3RyZWFtU2luayBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2t9IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUud29ya2VyJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxudHlwZSBNZWRpYVN0cmVhbVRyYWNrS2luZCA9ICd2aWRlbycgfCAnYXVkaW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIHN0YXRpYyBjcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCk6IERpc3Bvc2FibGVMaXN0IHtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2sgPSAoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlIC0gVXNpbmcgV2VicGFjaydzIHdvcmtlciBsb2FkZXIgdG8gaW5saW5lIHdvcmtlclxuICAgICAgY29uc3Qgd29ya2VyID0gY29udGV4dC50cmFuc2Zvcm1QaXBlbGluZVdvcmtlciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpO1xuXG4gICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gd29ya2VyLnRlcm1pbmF0ZSgpKSk7XG4gICAgICBkaXNwb3NhYmxlcy5hZGQoY29udGV4dC50cmFuc2Zvcm1NZXNzYWdlUm91dGVyID0gbmV3IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIod29ya2VyKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHtyZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSB2aWRlb1RyYWNrO1xuXG4gICAgaWYgKHZpZGVvVHJhY2tSZWNlaXZlciAmJiB2aWRlb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayh2aWRlb1RyYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB7cmVjZWl2ZXI6IGF1ZGlvVHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2t9ID0gYXVkaW9UcmFjaztcblxuICAgIGlmIChhdWRpb1RyYWNrUmVjZWl2ZXIgJiYgYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2soYXVkaW9UcmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3Bvc2FibGVzO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICBjb25zdCBhZGRUcmFja1RyYW5zZm9ybXMgPSAodHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGlmICh0cmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdHJhbnNmb3JtRnVuY3Rpb25OYW1lIG9mIHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMpIHtcbiAgICAgICAgICAgIHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtLFxuICAgICAgICAgICAgICBkYXRhOiB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXF1aXJlZCBmb3Igc2FmYXJpIHRvIHByb3Blcmx5IHdvcmsgd2hlbiBvbmx5IHZpZGVvIHRyYW5zZm9ybWF0aW9uIGlzIGFkZGVkIChpLmUuIEZyYW1lVGltaW5nSW5mb3JtYXRpb24pXG4gICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtLFxuICAgICAgICAgICAgZGF0YTogJ3Bhc3MtdGhyb3VnaCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGRUcmFja1RyYW5zZm9ybXModmlkZW9UcmFjayk7XG4gICAgYWRkVHJhY2tUcmFuc2Zvcm1zKGF1ZGlvVHJhY2spO1xuXG4gICAgY29uc3QgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgLy8gU2FmYXJpIGFuZCBGaXJlZm94IC4uLlxuICAgICAgY29uc3QgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sgPSBhc3luYyhjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICB0cmFja1JlY2VpdmVyLnRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0odHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlciwge25hbWU6IGAke3RyYWNrTWVkaWFTdHJlYW1UcmFjay5raW5kfS10cmFuc2Zvcm0tcGlwZWxpbmVgfSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7b25jZTogdHJ1ZX0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2NvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKHZpZGVvVHJhY2spLCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayhhdWRpb1RyYWNrKV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyA9IGFzeW5jKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2sgPSAoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWNlaXZlcjogdHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdHJhY2tNZWRpYVN0cmVhbVRyYWNrLCB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcn0gPSBjb250ZXh0O1xuXG4gICAgICAgIGlmICh0cmFja1JlY2VpdmVyICYmIHRyYWNrTWVkaWFTdHJlYW1UcmFjayAmJiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBjcmVhdGVFbmNvZGVkU3RyZWFtcyBtZXRob2QgaXMgbm90IGRlZmluZWQgaW4gbGliLmRvbS5kLnRzXG4gICAgICAgICAgY29uc3QgZW5jb2RlZFJlY2VpdmVyU3RyZWFtcyA9IHRyYWNrUmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5Db25maWd1cmVQaXBlbGluZSxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsXG4gICAgICAgICAgICAgICAgICBzaW5rOiBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7dHJhbnNmZXI6IFtlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlLCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlXX1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgICAgY29uc3QgYWN0aW9uczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICAgIGlmICh2aWRlb1RyYWNrLnJlY2VpdmVyICYmIHZpZGVvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2sodmlkZW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXVkaW9UcmFjay5yZWNlaXZlciAmJiBhdWRpb1RyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrKGF1ZGlvVHJhY2spKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYWN0aW9ucyk7XG4gICAgfTtcblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkge1xuICAgICAgLy8gU2FmYXJpIGFuZCBGaXJlZm94Li4uXG4gICAgICBhd2FpdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0oc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaHJvbWUsIENocm9taXVtLi4uXG4gICAgYXdhaXQgY29uZmlndXJlRW5jb2RlZFN0cmVhbXMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKFxuICAgIHN0cmVhbTogTWVkaWFTdHJlYW0sXG4gICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkLFxuICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkXG4gICk6IHt0cmFuc2Zvcm1lZFN0cmVhbTogTWVkaWFTdHJlYW07IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBjb25zdCBraW5kOiBNZWRpYVN0cmVhbVRyYWNrS2luZCA9IHRyYWNrLmtpbmQgYXMgTWVkaWFTdHJlYW1UcmFja0tpbmQ7XG5cbiAgICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICd2aWRlbyc6IHtcbiAgICAgICAgICBpZiAodmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFZpZGVvRnJhbWUsIFZpZGVvRnJhbWU+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbVZpZGVvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IHZpZGVvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiB2aWRlb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcikucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2F1ZGlvJzoge1xuICAgICAgICAgIGlmIChhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8QXVkaW9EYXRhLCBBdWRpb0RhdGE+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbUF1ZGlvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IGF1ZGlvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiBhdWRpb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcikucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgICAgICAgbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLFxuICAgICAgZGlzcG9zYWJsZXNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnNlcnRhYmxlU3RyZWFtcyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+IHtcbiAgICAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIGNodW5rOiBULCBjb250cm9sbGVyOiBUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlcjxUPik6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyZWFtVHJhY2tUcmFuc2Zvcm0ge1xuICBzdGF0aWMgdmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQgZXh0ZW5kcyBBdWRpb0RhdGEgfCBWaWRlb0ZyYW1lPihtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQ+KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDMuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNklGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2SUZyYW1lJztcbmltcG9ydCBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWUgZnJvbSAnLi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZSc7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2NywgMHhmNCwgMHgwMCwgMHgwYSwgMHg5MSwgMHg5YiwgMHgyYiwgMHhmMSwgMHhmMSwgMHhmOCwgMHgwOCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwNywgMHg4OSwgMHgxMiwgMHhjYiwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg0MSwgMHg5YSwgMHg2OCwgMHg0OSwgMHhhOCwgMHg0MSwgMHg2OCwgMHg5OSwgMHg0YywgMHgwZiwgMHhmZiwgMHg5MiwgMHg4MV0pLCAvLyBTbGljZSBsYXllcjogbm9uIGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHgzMSwgMHgwMywgMHgwMCwgMHhlNCwgMHhlMCwgMHhhOCwgMHg5YiwgMHgzNywgMHhhZiwgMHgxMCwgMHg0ZiwgMHg0ZiwgMHhiMSwgMHgwYSwgMHgyZiwgMHhlNCwgMHg5MiwgMHhjMCwgMHgxZiwgMHhlNywgMHg0ZiwgMHg0NiwgMHhmZiwgMHhlZSwgMHg1MSwgMHhjMSwgMHg1ZCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODYsIDB4MDAsIDB4NDAsIDB4OTIsIDB4OWMsIDB4MjQsIDB4NDgsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NzAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lID0gc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lID0gc3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0ID0gMTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMoY29kZWM6IEF1ZGlvQ29kZWMpOiBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjb2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMuT1BVUy5idWZmZXI7XG5cbiAgICAgIC8vIFRPRE8gKEFaKTogQWRkIGEgZHVtbXkgQUFDIHNpbGVudCBmcmFtZSB3aGVuIEFBQyBzdXBwb3J0IGlzIGFkZGVkXG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTogQXJyYXlCdWZmZXIge1xuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyhjb2RlYzogVmlkZW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpKSB7XG4gICAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2SDI2NElGcmFtZS5idWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA5LmJ1ZmZlcjtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoY29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUoY29kZWM6IFZpZGVvQ29kZWMpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMgPT09IFZpZGVvQ29kZWMuSDI2NCkgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0O1xuXG4gICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogVmlkZW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDoge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSgpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAzLCA2NiwgMTkyLCA0MiwgMjE4LCA0LCA0LCAyMzIsIDY0LCAwLCAwLCAzLCAwLCA2NCwgMCwgMCwgMTUsIDM1LCAxOTgsIDEyLCAxNjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDQsIDIwNiwgNjAsIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDYsIDMsIDE2NywgLi4ubmV3IFVpbnQ4QXJyYXkoMTUwKS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwMSwgMTM2LCAxMzIsIDYsIDE5MSwgMjU1LCAyNTUsIDE1LCA2OSwgMCwgMSwgODcsIDE1OSwgLi4ubmV3IFVpbnQ4QXJyYXkoMTUpLmZpbGwoMzkpLCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgMTI4XG5dKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi8uLi8uLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFtcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDYsIDMsIDI1NSwgNjEsIC4uLm5ldyBVaW50OEFycmF5KDMxNikuZmlsbCgyNTUpLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2NSwgMTU0LCAzMiwgMjYsIDI0MCwgMTgsIDQ4XG5dKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgVHJhbnNmb3JtTWVzc2FnZSwgVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQsIFRyYW5zZm9ybU1lc3NhZ2VUeXBlfSBmcm9tICcuL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyYW5zZm9ybVBpcGVsaW5lTWVzc2FnZVJvdXRlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZVJvdXRlczogTWFwPFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgPFQ+KG1lc3NhZ2U6IFQpID0+IHZvaWQ+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHdvcmtlcjogV29ya2VyKSB7XG4gICAgdGhpcy5pbml0aWFsaXplKHdvcmtlcik7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJSb3V0ZTxUPihtZXNzYWdlVHlwZTogVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCByb3V0ZU1lc3NhZ2U6IChtZXNzYWdlOiBUKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5zZXQobWVzc2FnZVR5cGUsIHJvdXRlTWVzc2FnZSBhcyA8VD4obWVzc2FnZTogVCkgPT4gdm9pZCk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fbWVzc2FnZVJvdXRlcy5kZWxldGUobWVzc2FnZVR5cGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21lc3NhZ2VSb3V0ZXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSh3b3JrZXI6IFdvcmtlcik6IHZvaWQge1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50PFRyYW5zZm9ybU1lc3NhZ2U+KSA9PiB7XG4gICAgICBjb25zdCByb3V0ZU1lc3NhZ2VEYXRhID0gPFQ+KHt0eXBlLCBkYXRhfTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8VD4pID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVNZXNzYWdlID0gdGhpcy5fbWVzc2FnZVJvdXRlcy5nZXQodHlwZSk7XG5cbiAgICAgICAgaWYgKCFyb3V0ZU1lc3NhZ2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByb3V0ZU1lc3NhZ2UoZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rOlxuICAgICAgICBjYXNlIFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhOlxuICAgICAgICAgIHJvdXRlTWVzc2FnZURhdGEobWVzc2FnZS5kYXRhKTtcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfSwge29uY2U6IGZhbHNlfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IENodW5rIGZyb20gJy4uL0NodW5rJztcbmltcG9ydCB7UnRwVGltZXN0YW1wfSBmcm9tICcuLi8uLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkfSBmcm9tICcuL3RyYW5zZm9ybXMvZnJhbWVUaW1pbmdJbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VUeXBlIHtcbiAgRXJyb3IgPSAtMSxcbiAgQWRkVHJhbnNmb3JtID0gMCxcbiAgQ29uZmlndXJlUGlwZWxpbmUgPSAxLFxuICBNZXRhZGF0YSA9IDIsXG4gIENodW5rID0gMyxcbiAgUGlwZWxpbmVDb25maWd1cmVkID0gNFxufVxuXG5leHBvcnQgZW51bSBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUge1xuICBGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gMCxcbiAgRW5jb2RlZFZpZGVvQ2h1bmsgPSAxLFxuICBFbmNvZGVkQXVkaW9DaHVuayA9IDIsXG4gIFN1cnJvZ2F0ZVZpZGVvQ2h1bmsgPSAzLFxuICBTdXJyb2dhdGVBdWRpb0NodW5rID0gNFxufVxuXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxUPiA9IHtcbiAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlO1xuICBkYXRhOiBUO1xufTtcblxudHlwZSBXZWJSVENJbnNlcnRhYmxlU3RyZWFtcyA9IHtcbiAgc291cmNlOiBSZWFkYWJsZVN0cmVhbTtcbiAgc2luazogV3JpdGFibGVTdHJlYW07XG59O1xuXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1TdHJlYW1NZXRhZGF0YSA9IERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uUGF5bG9hZDtcbmV4cG9ydCB0eXBlIE1ldGFkYXRhTWVzc2FnZVBheWxvYWQgPSB7W3RpbWVzdGFtcDogUnRwVGltZXN0YW1wXToge2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBUcmFuc2Zvcm1TdHJlYW1NZXRhZGF0YX19O1xuXG50eXBlIFRyYW5zZm9ybU5hbWUgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1NZXNzYWdlID1cbiAgfCB7XG4gICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm07XG4gICAgICBkYXRhOiBUcmFuc2Zvcm1OYW1lO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5Db25maWd1cmVQaXBlbGluZTtcbiAgICAgIGRhdGE6IFdlYlJUQ0luc2VydGFibGVTdHJlYW1zO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPE1ldGFkYXRhTWVzc2FnZVBheWxvYWQ+O1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuaztcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPENodW5rPjtcbiAgICB9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fQlVJTERfVkVSU0lPTl9fOiBzdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlcnNpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlZmF1bHRWZXJzaW9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIHN0YXRpYyBnZXQgc2RrVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gX19CVUlMRF9WRVJTSU9OX187XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWZXJzaW9uO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L2xvZ3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9wYWdlTG9hZFRpbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3RocmVzaG9sZCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgdGVsZW1ldHJ5VXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgdGVsZW1ldHJ5VXJsLnBhdGhuYW1lID0gdGVsZW1ldHJ5VXJsLnBhdGhuYW1lICsgJy9sb2dzJztcblxuICAgIHRoaXMuX3VybCA9IHRlbGVtZXRyeVVybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzZXQgcGFnZUxvYWRUaW1lKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTnVtYmVycyBmcm9tICcuLi9sYW5nL051bWJlcnMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSA4MTkyO1xuXG5pbnRlcmZhY2UgSUxvZ0l0ZW0ge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBfbG9nczogQXJyYXk8SUxvZ0l0ZW0+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG51bWJlck9mTG9nc1RvU2VuZCA9IDA7XG4gICAgbGV0IHNpemVPZkxvZ3NUb1NlbmQgPSAwO1xuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGdldEl0ZW1TaXplID0gKGl0ZW06IG51bWJlciB8IHN0cmluZykgPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGltZW5zaW9uIGltcGxlbWVudHMgSUNvbXBhcmFibGU8RGltZW5zaW9uPiB7XG4gIHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7XG4gIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyO1xuXG4gIHN0YXRpYyBnZXQgZW1wdHkoKTogRGltZW5zaW9uIHtcbiAgICByZXR1cm4gbmV3IERpbWVuc2lvbigwLCAwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBEaW1lbnNpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3RoZXIgJiYgdGhpcy53aWR0aCA9PT0gb3RoZXIud2lkdGggJiYgdGhpcy5oZWlnaHQgPT09IG90aGVyLmhlaWdodDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMud2lkdGh9eCR7dGhpcy5oZWlnaHR9YDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvblRlbGVtZXRyeSBGYWlsZWQ6IE5vIGFwcGxpY2F0aW9uIG1vbml0b3IgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIGlmICghdGltZVNpbmNlTGFzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG50eXBlIENvbnRpbnVhdGlvbkV2ZW50ID0gSFRNTFZpZGVvRWxlbWVudEV2ZW50TWFwWydwbGF5JyB8ICdwbGF5aW5nJyB8ICdwcm9ncmVzcycgfCAndGltZXVwZGF0ZSddO1xuY29uc3Qgbm9vcCA9ICgpOiB2b2lkID0+IHVuZGVmaW5lZDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlkZW9UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfbGlzdGVuVG9GaXJzdFRpbWU6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9saXN0ZW5Gb3JTdGFsbDogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvckNvbnRpbnVhdGlvbjogKGV2ZW50OiBDb250aW51YXRpb25FdmVudCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX3RpbWVUb0ZpcnN0RnJhbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdmlkZW9TdGFsbGVkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbGFzdFByb2dyZXNzOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1Jlc29sdXRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuICBwcml2YXRlIF9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXI6IERpc3Bvc2FibGUgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihzdHJlYW1JZDogc3RyaW5nLCBwYWdlTG9hZFRpbWU6IG51bWJlciwgY2hhbm5lbFN0YXJ0VGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9zdHJlYW1JZCA9IHN0cmVhbUlkO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgICB0aGlzLl9jaGFubmVsU3RhcnRUaW1lID0gY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lID0gKCk6IHZvaWQgPT4gdGhpcy5jYWxsVGltZVRvRmlyc3RGcmFtZSgpO1xuXG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIH0pO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lcik7XG4gIH1cblxuICBzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmcodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0ZW5Gb3JTdGFsbCA9ICgpOiB2b2lkID0+IHRoaXMub25TdGFsbCgpO1xuXG4gICAgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uID0gKGV2ZW50OiBDb250aW51YXRpb25FdmVudCk6IHZvaWQgPT4gdGhpcy5vbkNvbnRpbnVhdGlvbihldmVudCwgdmlkZW8pO1xuXG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcblxuICAgIHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZHVyYXRpb25TaW5jZVBhZ2VMb2FkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHJldHVybiBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMucHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93KTtcbiAgICB0aGlzLnB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lci5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGltZVRvRmlyc3RGcmFtZSA9IG5vdyAtIHRoaXMuX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl90aW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIEZpcnN0IGZyYW1lIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGhpcy5fdGltZVRvRmlyc3RGcmFtZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKG5vdzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSA9IG5vdyAtIHRoaXMuX2NoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBDaGFubmVsIGNyZWF0aW9uIHRvIGZpcnN0IGZyYW1lIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGhpcy5fY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uU3RhbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ZpZGVvU3RhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuU3RhbGxlZCxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvU3RhbGxlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gW2J1ZmZlcmluZ10gU3RyZWFtIGhhcyBzdGFsbGVkJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbnRpbnVhdGlvbihldmVudDogQ29udGludWF0aW9uRXZlbnQsIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCF2aWRlby5idWZmZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlckxlbmd0aCA9IHZpZGVvLmJ1ZmZlcmVkLmxlbmd0aDtcbiAgICBjb25zdCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCA9IGV2ZW50LnR5cGUgPT09ICdwbGF5aW5nJ1xuICAgIHx8IGJ1ZmZlckxlbmd0aCA+IDAgPyAoZXZlbnQudHlwZSA9PT0gJ3Byb2dyZXNzJ1xuICAgICAgfHwgZXZlbnQudHlwZSA9PT0gJ3RpbWV1cGRhdGUnKVxuICAgICAgJiYgdmlkZW8uYnVmZmVyZWQuZW5kKGJ1ZmZlckxlbmd0aCAtIDEpID09PSB0aGlzLl9sYXN0UHJvZ3Jlc3MgOiB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLl92aWRlb1N0YWxsZWQgfHwgaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgdGhpcy5fbGFzdFByb2dyZXNzID0gdmlkZW8uYnVmZmVyZWQuZW5kKGJ1ZmZlckxlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHRpbWVTaW5jZVN0b3AgPSBEYXRlLm5vdygpIC0gdGhpcy5fdmlkZW9TdGFsbGVkO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5CdWZmZXJpbmcsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZVN0b3B9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gW2J1ZmZlcmluZ10gU3RyZWFtIGhhcyByZWNvdmVyZWQgZnJvbSBzdGFsbCBhZnRlciBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZVN0b3ApLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICAgIHRoaXMuX3ZpZGVvU3RhbGxlZCA9IG51bGw7XG4gIH1cblxuICBvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMobmV3UmVzb2x1dGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZCxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3UmVzb2x1dGlvbn0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiB0aGlzLl92aWRlb1Jlc29sdXRpb24gPyB7c3RyaW5nOiB0aGlzLl92aWRlb1Jlc29sdXRpb259IDogdW5kZWZpbmVkLFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl92aWRlb1Jlc29sdXRpb24gPSBuZXdSZXNvbHV0aW9uO1xuICB9XG59IiwiXG5pbXBvcnQgd29ya2VyIGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy93b3JrZXItbG9hZGVyL2Rpc3QvcnVudGltZS9pbmxpbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gV29ya2VyX2ZuKCkge1xuICByZXR1cm4gd29ya2VyKFwiLyoqKioqKi8gKGZ1bmN0aW9uKCkgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXFxuLyoqKioqKi8gXFx0XFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qKioqKiovIFxcdHZhciBfX3dlYnBhY2tfbW9kdWxlc19fID0gKHtcXG5cXG4vKioqLyBcXFwiLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgKi9cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbmZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHgpIHtcXG4gIHRocm93IG5ldyBFcnJvcihcXFwiVW5leHBlY3RlZCB2YWx1ZSBbXFxcIi5jb25jYXQoeCwgXFxcIl0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRcXFwiKSk7XFxufVxcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKGFzc2VydFVucmVhY2hhYmxlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTsgfSxcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VUeXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZVR5cGU7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbnZhciBUcmFuc2Zvcm1NZXNzYWdlVHlwZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoVHJhbnNmb3JtTWVzc2FnZVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJFcnJvclxcXCJdID0gLTFdID0gXFxcIkVycm9yXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJBZGRUcmFuc2Zvcm1cXFwiXSA9IDBdID0gXFxcIkFkZFRyYW5zZm9ybVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQ29uZmlndXJlUGlwZWxpbmVcXFwiXSA9IDFdID0gXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJNZXRhZGF0YVxcXCJdID0gMl0gPSBcXFwiTWV0YWRhdGFcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNodW5rXFxcIl0gPSAzXSA9IFxcXCJDaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIl0gPSA0XSA9IFxcXCJQaXBlbGluZUNvbmZpZ3VyZWRcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VUeXBlO1xcbn0oe30pO1xcbnZhciBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSkge1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCJdID0gMF0gPSBcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJFbmNvZGVkVmlkZW9DaHVua1xcXCJdID0gMV0gPSBcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZEF1ZGlvQ2h1bmtcXFwiXSA9IDJdID0gXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiXSA9IDNdID0gXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCJdID0gNF0gPSBcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCI7XFxuICByZXR1cm4gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlO1xcbn0oe30pO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gV29ya2VyVHJhbnNmb3JtczsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24gKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIik7XFxuXFxuXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG52YXIgV29ya2VyVHJhbnNmb3JtcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBXb3JrZXJUcmFuc2Zvcm1zKCkge1xcbiAgICAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NsYXNzQ2FsbENoZWNrX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkodGhpcywgV29ya2VyVHJhbnNmb3Jtcyk7XFxuICB9XFxuICByZXR1cm4gKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKFdvcmtlclRyYW5zZm9ybXMsIG51bGwsIFt7XFxuICAgIGtleTogXFxcImNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSgpIHtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xcbiAgICAgICAgICAoMCxfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKGNodW5rKTtcXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikge1xcbiAgICAgIHZhciBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwID0gbmV3IE1hcCgpO1xcbiAgICAgIHZhciBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24gc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlcihjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyLCBfcmVmKSB7XFxuICAgICAgICB2YXIgbWVzc2FnZSA9IF9yZWYuZGF0YTtcXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuayB8fCBtZXNzYWdlLmRhdGEudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5TdXJyb2dhdGVWaWRlb0NodW5rKSB7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YTtcXG4gICAgICAgIHZhciBfbWVzc2FnZURhdGEkZGF0YSA9IG1lc3NhZ2VEYXRhLmRhdGEsXFxuICAgICAgICAgIHN1cnJvZ2F0ZSA9IF9tZXNzYWdlRGF0YSRkYXRhLnN1cnJvZ2F0ZSxcXG4gICAgICAgICAgdGltZXN0YW1wID0gX21lc3NhZ2VEYXRhJGRhdGEudGltZXN0YW1wO1xcbiAgICAgICAgdmFyIGNodW5rUGVuZGluZ0VucXVldWUgPSBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmdldCh0aW1lc3RhbXApO1xcbiAgICAgICAgaWYgKCFjaHVua1BlbmRpbmdFbnF1ZXVlKSB7XFxuICAgICAgICAgIGNvbnNvbGUud2FybignW1dvcmtlclRyYW5zZm9ybXNdIFN1cnJvZ2F0ZSB2aWRlbyBjaHVuayBub3QgZm91bmQgZm9yIHRpbWVzdGFtcCcsIHRpbWVzdGFtcCk7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIGNodW5rUGVuZGluZ0VucXVldWUuZGF0YSA9IHN1cnJvZ2F0ZTtcXG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVua1BlbmRpbmdFbnF1ZXVlKTtcXG4gICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXBbXFxcImRlbGV0ZVxcXCJdKHRpbWVzdGFtcCk7XFxuICAgICAgfTtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQoY29udHJvbGxlcikge1xcbiAgICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIuYmluZChudWxsLCBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyKSwge1xcbiAgICAgICAgICAgIG9uY2U6IGZhbHNlXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rKSB7XFxuICAgICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuc2V0KGNodW5rLnRpbWVzdGFtcCwgY2h1bmspO1xcbiAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkVmlkZW9DaHVuayxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXFxuICAgICAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KGNodW5rLmRhdGEpLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBjaHVuay50eXBlXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdHJhbnNmZXI6IFtjaHVuay5kYXRhXVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikge1xcbiAgICAgIHZhciBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwID0gbmV3IE1hcCgpO1xcbiAgICAgIHZhciBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24gc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlcihjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyLCBfcmVmMikge1xcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmMi5kYXRhO1xcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rIHx8IG1lc3NhZ2UuZGF0YS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLlN1cnJvZ2F0ZUF1ZGlvQ2h1bmspIHtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhO1xcbiAgICAgICAgdmFyIF9tZXNzYWdlRGF0YSRkYXRhMiA9IG1lc3NhZ2VEYXRhLmRhdGEsXFxuICAgICAgICAgIHN1cnJvZ2F0ZSA9IF9tZXNzYWdlRGF0YSRkYXRhMi5zdXJyb2dhdGUsXFxuICAgICAgICAgIHRpbWVzdGFtcCA9IF9tZXNzYWdlRGF0YSRkYXRhMi50aW1lc3RhbXA7XFxuICAgICAgICB2YXIgY2h1bmtQZW5kaW5nRW5xdWV1ZSA9IGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZ2V0KHRpbWVzdGFtcCk7XFxuICAgICAgICBpZiAoIWNodW5rUGVuZGluZ0VucXVldWUpIHtcXG4gICAgICAgICAgY29uc29sZS53YXJuKCdbV29ya2VyVHJhbnNmb3Jtc10gU3Vycm9nYXRlIGF1ZGlvIGNodW5rIG5vdCBmb3VuZCBmb3IgdGltZXN0YW1wJywgdGltZXN0YW1wKTtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY2h1bmtQZW5kaW5nRW5xdWV1ZS5kYXRhID0gc3Vycm9nYXRlO1xcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rUGVuZGluZ0VucXVldWUpO1xcbiAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcFtcXFwiZGVsZXRlXFxcIl0odGltZXN0YW1wKTtcXG4gICAgICB9O1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydChjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlci5iaW5kKG51bGwsIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIpLCB7XFxuICAgICAgICAgICAgb25jZTogZmFsc2VcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmspIHtcXG4gICAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5zZXQoY2h1bmsudGltZXN0YW1wLCBjaHVuayk7XFxuICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRBdWRpb0NodW5rLFxcbiAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcXG4gICAgICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSksXFxuICAgICAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGVcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0cmFuc2ZlcjogW2NodW5rLmRhdGFdXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZVBhc3NUaHJvdWdoVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVBhc3NUaHJvdWdoVHJhbnNmb3JtKCkge1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9XSk7XFxufSgpO1xcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvZnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvZnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eSAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHIsIGUpIHsgdmFyIHQgPSBcXFwidW5kZWZpbmVkXFxcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1xcXCJAQGl0ZXJhdG9yXFxcIl07IGlmICghdCkgeyBpZiAoQXJyYXkuaXNBcnJheShyKSB8fCAodCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSkgfHwgZSAmJiByICYmIFxcXCJudW1iZXJcXFwiID09IHR5cGVvZiByLmxlbmd0aCkgeyB0ICYmIChyID0gdCk7IHZhciBfbiA9IDAsIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IHJldHVybiBfbiA+PSByLmxlbmd0aCA/IHsgZG9uZTogITAgfSA6IHsgZG9uZTogITEsIHZhbHVlOiByW19uKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUocikgeyB0aHJvdyByOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlxcXCIpOyB9IHZhciBvLCBhID0gITAsIHUgPSAhMTsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgdCA9IHQuY2FsbChyKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHIgPSB0Lm5leHQoKTsgcmV0dXJuIGEgPSByLmRvbmUsIHI7IH0sIGU6IGZ1bmN0aW9uIGUocikgeyB1ID0gITAsIG8gPSByOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBhIHx8IG51bGwgPT0gdFtcXFwicmV0dXJuXFxcIl0gfHwgdFtcXFwicmV0dXJuXFxcIl0oKTsgfSBmaW5hbGx5IHsgaWYgKHUpIHRocm93IG87IH0gfSB9OyB9XFxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHsgaWYgKHIpIHsgaWYgKFxcXCJzdHJpbmdcXFwiID09IHR5cGVvZiByKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkociwgYSk7IHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7IHJldHVybiBcXFwiT2JqZWN0XFxcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXFxcIk1hcFxcXCIgPT09IHQgfHwgXFxcIlNldFxcXCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXFxcIkFyZ3VtZW50c1xcXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDsgfSB9XFxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgeyAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7IGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdOyByZXR1cm4gbjsgfVxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxudmFyIEgyNjRfQ09OU1RBTlRTID0ge1xcbiAgTkFMX1VOSVRfVFlQRV9TRUk6IDYsXFxuICBOQUxfVU5JVF9IRUFERVJfU0laRTogMSxcXG4gIFNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORzogMSxcXG4gIEVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEU6IDB4MDMsXFxuICBTVEFSVF9DT0RFX1BSRUZJWF8zQjogWzB4MDAsIDB4MDAsIDB4MDFdLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfNEI6IFsweDAwLCAweDAwLCAweDAwLCAweDAxXVxcbn07XFxudmFyIEJJVFNUUkVBTV9DT05TVEFOVFMgPSB7XFxuICBNSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QOiAxMCxcXG4gIE1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUDogMTcsXFxuICBNSU5fQklUU19GT1JfVElNRV9PRkZTRVQ6IDI0XFxufTtcXG5mdW5jdGlvbiBmaW5kTmV4dE5hbFN0YXJ0KGRhdGEsIHBvc2l0aW9uKSB7XFxuICB2YXIgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xcbiAgZm9yICh2YXIgaSA9IHBvc2l0aW9uOyBpIDwgZGF0YUxlbmd0aCAtIDM7IGkrKykge1xcbiAgICBpZiAoZGF0YVtpXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAxXSA9PT0gMHgwMCkge1xcbiAgICAgIGlmIChkYXRhW2kgKyAyXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICAgIGlmIChpICsgMyA8IGRhdGFMZW5ndGggJiYgZGF0YVtpICsgMl0gPT09IDB4MDAgJiYgZGF0YVtpICsgM10gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgcmV0dXJuIC0xO1xcbn1cXG5mdW5jdGlvbiBleHRyYWN0U2VpUGF5bG9hZChkYXRhLCBzdGFydEluZGV4KSB7XFxuICB2YXIgaW5kZXggPSBzdGFydEluZGV4O1xcbiAgdmFyIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkVHlwZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcblxcbiAgLy8gUGFyc2UgcGF5bG9hZCBzaXplXFxuICBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFNpemUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG4gIHJldHVybiB7XFxuICAgIHR5cGU6IHBheWxvYWRUeXBlLFxcbiAgICBwYXlsb2FkOiBkYXRhLnN1YmFycmF5KGluZGV4LCBpbmRleCArIHBheWxvYWRTaXplKSxcXG4gICAgbGVuZ3RoOiBpbmRleCArIHBheWxvYWRTaXplIC0gc3RhcnRJbmRleFxcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVtb3ZlRW11bGF0aW9uUHJldmVudGlvbkJ5dGVzKGRhdGEpIHtcXG4gIHZhciByZXN1bHQgPSBbXTtcXG4gIHZhciB6ZXJvQ291bnQgPSAwO1xcbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGRhdGEpLFxcbiAgICBfc3RlcDtcXG4gIHRyeSB7XFxuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XFxuICAgICAgdmFyIF9ieXRlID0gX3N0ZXAudmFsdWU7XFxuICAgICAgaWYgKHplcm9Db3VudCA9PT0gMiAmJiBfYnl0ZSA9PT0gSDI2NF9DT05TVEFOVFMuRU1VTEFUSU9OX1BSRVZFTlRJT05fQllURSkge1xcbiAgICAgICAgemVyb0NvdW50ID0gMDsgLy8gUmVzZXQgYWZ0ZXIgZmluZGluZyBlbXVsYXRpb24gcHJldmVudGlvbiBieXRlLlxcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoX2J5dGUgPT09IDB4MDApIHtcXG4gICAgICAgICAgemVyb0NvdW50Kys7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB6ZXJvQ291bnQgPSAwO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmVzdWx0LnB1c2goX2J5dGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBjYXRjaCAoZXJyKSB7XFxuICAgIF9pdGVyYXRvci5lKGVycik7XFxuICB9IGZpbmFsbHkge1xcbiAgICBfaXRlcmF0b3IuZigpO1xcbiAgfVxcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XFxufVxcbmZ1bmN0aW9uIGNvbnZlcnRQaWNTdHJ1Y3RUb051bUNsb2NrVFMocGljU3RydWN0KSB7XFxuICBzd2l0Y2ggKHBpY1N0cnVjdCkge1xcbiAgICBjYXNlIDA6XFxuICAgIGNhc2UgMTpcXG4gICAgY2FzZSAyOlxcbiAgICAgIHJldHVybiAxO1xcbiAgICBjYXNlIDM6XFxuICAgIGNhc2UgNDpcXG4gICAgY2FzZSA3OlxcbiAgICAgIHJldHVybiAyO1xcbiAgICBjYXNlIDU6XFxuICAgIGNhc2UgNjpcXG4gICAgY2FzZSA4OlxcbiAgICAgIHJldHVybiAzO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAwO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBjcmVhdGVCaXRzdHJlYW1SZWFkZXIoYnVmZmVyKSB7XFxuICB2YXIgYml0T2Zmc2V0ID0gMDtcXG4gIGZ1bmN0aW9uIHJlYWRCaXRzKGJpdHNUb1JlYWQpIHtcXG4gICAgaWYgKGJpdE9mZnNldCArIGJpdHNUb1JlYWQgPiBidWZmZXIubGVuZ3RoICogOCkge1xcbiAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiQ2Fubm90IHJlYWQgW1xcXCIuY29uY2F0KGJpdHNUb1JlYWQsIFxcXCJdIGJpdHMgLSBvdXQgb2YgYm91bmRzXFxcIikpO1xcbiAgICB9XFxuICAgIHZhciB2YWx1ZSA9IDA7XFxuICAgIHZhciBiaXRzUmVtYWluaW5nID0gYml0c1RvUmVhZDtcXG4gICAgd2hpbGUgKGJpdHNSZW1haW5pbmcgPiAwKSB7XFxuICAgICAgdmFyIGJ5dGVPZmZzZXQgPSBNYXRoLmZsb29yKGJpdE9mZnNldCAvIDgpO1xcbiAgICAgIHZhciBiaXRJbkJ5dGUgPSBiaXRPZmZzZXQgJSA4O1xcbiAgICAgIHZhciBiaXRzTGVmdEluQnl0ZSA9IDggLSBiaXRJbkJ5dGU7XFxuICAgICAgdmFyIHJlYWROb3cgPSBNYXRoLm1pbihiaXRzUmVtYWluaW5nLCBiaXRzTGVmdEluQnl0ZSk7XFxuICAgICAgdmFyIG1hc2sgPSAoMSA8PCByZWFkTm93KSAtIDE7XFxuICAgICAgdmFyIGJ5dGVWYWwgPSBidWZmZXJbYnl0ZU9mZnNldF0gPj4gYml0c0xlZnRJbkJ5dGUgLSByZWFkTm93O1xcbiAgICAgIHZhciBiaXRzID0gYnl0ZVZhbCAmIG1hc2s7XFxuICAgICAgdmFsdWUgPSB2YWx1ZSA8PCByZWFkTm93IHwgYml0cztcXG4gICAgICBiaXRPZmZzZXQgKz0gcmVhZE5vdztcXG4gICAgICBiaXRzUmVtYWluaW5nIC09IHJlYWROb3c7XFxuICAgIH1cXG4gICAgcmV0dXJuIHZhbHVlO1xcbiAgfVxcbiAgZnVuY3Rpb24gc2tpcEJpdHMobikge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgbiA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3Qgc2tpcCBbXFxcIi5jb25jYXQobiwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgYml0T2Zmc2V0ICs9IG47XFxuICB9XFxuICBmdW5jdGlvbiBnZXRSZW1haW5pbmdCaXRzKCkge1xcbiAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCAqIDggLSBiaXRPZmZzZXQ7XFxuICB9XFxuICByZXR1cm4ge1xcbiAgICByZWFkQml0czogcmVhZEJpdHMsXFxuICAgIHNraXBCaXRzOiBza2lwQml0cyxcXG4gICAgZ2V0UmVtYWluaW5nQml0czogZ2V0UmVtYWluaW5nQml0c1xcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIHNlY29uZHNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuc2Vjb25kcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIG1pbnV0ZXNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMubWludXRlcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIGhvdXJzX2ZsYWcsIHdlIGFyZSBkb25lLlxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCA1KSB7XFxuICAgIHJldHVybiBmYWxzZTtcXG4gIH1cXG4gIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgcmV0dXJuIHRydWU7XFxufVxcbmZ1bmN0aW9uIHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKSB7XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IEJJVFNUUkVBTV9DT05TVEFOVFMuTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHZhciB0cyA9IHtcXG4gICAgY3RUeXBlOiByZWFkZXIucmVhZEJpdHMoMiksXFxuICAgIG51aXRGaWVsZEJhc2VkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjb3VudGluZ1R5cGU6IHJlYWRlci5yZWFkQml0cyg1KSxcXG4gICAgZnVsbFRpbWVzdGFtcEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgZGlzY29udGludWl0eUZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgY250RHJvcHBlZEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgbkZyYW1lczogcmVhZGVyLnJlYWRCaXRzKDgpXFxuICB9O1xcbiAgaWYgKHRzLmZ1bGxUaW1lc3RhbXBGbGFnKSB7XFxuICAgIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVApIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5ob3VycyA9IHJlYWRlci5yZWFkQml0cyg1KTtcXG4gIH0gZWxzZSB7XFxuICAgIGlmICghcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpKSB7XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfVElNRV9PRkZTRVQpIHtcXG4gICAgcmV0dXJuIG51bGw7XFxuICB9XFxuICB0cy50aW1lT2Zmc2V0ID0gcmVhZGVyLnJlYWRCaXRzKDI0KTtcXG4gIHJldHVybiB0cztcXG59XFxuZnVuY3Rpb24gcGFyc2VQaWN0dXJlVGltaW5nKGRhdGEsIGNvbmZpZykge1xcbiAgdmFyIHJlYWRlciA9IGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihyZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkpO1xcbiAgdmFyIHJlc3VsdCA9IHtcXG4gICAgcGljU3RydWN0OiB1bmRlZmluZWRcXG4gIH07XFxuICBpZiAoY29uZmlnLmNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnICYmIGNvbmZpZy5jcGJSZW1vdmFsRGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCAmJiBjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCkge1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSArIDEpO1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmRwYk91dHB1dERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICB9XFxuICBpZiAoY29uZmlnLnBpY1N0cnVjdFByZXNlbnRGbGFnKSB7XFxuICAgIHZhciBwaWNTdHJ1Y3QgPSByZWFkZXIucmVhZEJpdHMoNCk7XFxuICAgIHZhciBudW1DbG9ja1RTID0gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpO1xcbiAgICB2YXIgY2xvY2tUaW1lc3RhbXBzID0gW107XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2xvY2tUUzsgaSsrKSB7XFxuICAgICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxKSB7XFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgICAgdmFyIGNsb2NrVGltZXN0YW1wRmxhZyA9IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMTtcXG4gICAgICBpZiAoIWNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgY2xvY2tUaW1lc3RhbXBzLnB1c2goe1xcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcEZsYWc6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG4gICAgICB2YXIgdHMgPSBwYXJzZUNsb2NrVGltZXN0YW1wKHJlYWRlcik7XFxuICAgICAgaWYgKHRzKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogdHJ1ZSxcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXA6IHRzXFxuICAgICAgICB9KTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8gTm90IGVub3VnaCBiaXRzLCBzdG9wIHByb2Nlc3NpbmcgU0VJXFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcmVzdWx0LnBpY1N0cnVjdCA9IHtcXG4gICAgICBudW1DbG9ja1RTOiBudW1DbG9ja1RTLFxcbiAgICAgIGNsb2NrVGltZXN0YW1wczogY2xvY2tUaW1lc3RhbXBzXFxuICAgIH07XFxuICB9XFxuICByZXR1cm4gcmVzdWx0O1xcbn1cXG5mdW5jdGlvbiBkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKGNodW5rKSB7XFxuICB2YXIgcmVjZWl2ZVRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XFxuICB2YXIgY2h1bmtEYXRhID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSk7XFxuICB2YXIgY3VycmVudEluZGV4ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIDApO1xcbiAgd2hpbGUgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcXG4gICAgdmFyIG5leHROYWxTdGFydCA9IGZpbmROZXh0TmFsU3RhcnQoY2h1bmtEYXRhLCBjdXJyZW50SW5kZXggKyAxKTtcXG4gICAgdmFyIG5hbFVuaXRFbmQgPSBuZXh0TmFsU3RhcnQgPT09IC0xID8gY2h1bmtEYXRhLmxlbmd0aCA6IG5leHROYWxTdGFydDtcXG4gICAgdmFyIHN0YXJ0Q29kZUxlbmd0aCA9IGNodW5rRGF0YVtjdXJyZW50SW5kZXggKyAyXSA9PT0gMHgwMSA/IDMgOiA0O1xcbiAgICB2YXIgbmFsVW5pdEhlYWRlckluZGV4ID0gY3VycmVudEluZGV4ICsgc3RhcnRDb2RlTGVuZ3RoO1xcbiAgICB2YXIgbmFsVW5pdFR5cGUgPSBjaHVua0RhdGFbbmFsVW5pdEhlYWRlckluZGV4XSAmIDB4MWY7XFxuICAgIGlmIChuYWxVbml0VHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuTkFMX1VOSVRfVFlQRV9TRUkpIHtcXG4gICAgICB2YXIgc2VpSW5kZXggPSBuYWxVbml0SGVhZGVySW5kZXggKyBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9IRUFERVJfU0laRTtcXG4gICAgICB2YXIgbmFsVW5pdERhdGEgPSBjaHVua0RhdGEuc3ViYXJyYXkoc2VpSW5kZXgsIG5hbFVuaXRFbmQpO1xcbiAgICAgIHZhciBzZWlPZmZzZXQgPSAwO1xcblxcbiAgICAgIC8vIFByb2Nlc3MgU0VJIG1lc3NhZ2VzIHVudGlsIGVuZCBvZiBOQUwgdW5pdFxcbiAgICAgIHdoaWxlIChzZWlPZmZzZXQgPCBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgIC8vIFN0b3AgaWYgcmVtYWluaW5nIGRhdGEgaXMgdG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgU0VJIG1lc3NhZ2VcXG4gICAgICAgIGlmIChzZWlPZmZzZXQgKyAyID4gbmFsVW5pdERhdGEubGVuZ3RoKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHNlaVBheWxvYWQgPSBleHRyYWN0U2VpUGF5bG9hZChuYWxVbml0RGF0YSwgc2VpT2Zmc2V0KTtcXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLnR5cGUgPT09IEgyNjRfQ09OU1RBTlRTLlNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORykge1xcbiAgICAgICAgICB2YXIgX3BhcnNlZFBpY3R1cmVUaW1pbmckO1xcbiAgICAgICAgICB2YXIgcGFyc2VkUGljdHVyZVRpbWluZyA9IHBhcnNlUGljdHVyZVRpbWluZyhzZWlQYXlsb2FkLnBheWxvYWQsIHtcXG4gICAgICAgICAgICBjcGJEcGJEZWxheXNQcmVzZW50RmxhZzogZmFsc2UsXFxuICAgICAgICAgICAgcGljU3RydWN0UHJlc2VudEZsYWc6IHRydWVcXG4gICAgICAgICAgfSk7XFxuICAgICAgICAgIHZhciBmaXJzdENsb2NrVGltZXN0YW1wID0gKF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9IHBhcnNlZFBpY3R1cmVUaW1pbmcucGljU3RydWN0KSA9PT0gbnVsbCB8fCBfcGFyc2VkUGljdHVyZVRpbWluZyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9wYXJzZWRQaWN0dXJlVGltaW5nJC5jbG9ja1RpbWVzdGFtcHNbMF07XFxuICAgICAgICAgIGlmIChmaXJzdENsb2NrVGltZXN0YW1wICE9PSBudWxsICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IHZvaWQgMCAmJiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgICAgIHZhciBfZmlyc3RDbG9ja1RpbWVzdGFtcCQsIF9maXJzdENsb2NrVGltZXN0YW1wJDIsIF9maXJzdENsb2NrVGltZXN0YW1wJDMsIF9maXJzdENsb2NrVGltZXN0YW1wJDQ7XFxuICAgICAgICAgICAgdmFyIHJ0cFRpbWVzdGFtcCA9IGNodW5rLnRpbWVzdGFtcDtcXG4gICAgICAgICAgICB2YXIgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XFxuICAgICAgICAgICAgICB0aW1lY29kZTogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcCA/IHtcXG4gICAgICAgICAgICAgICAgaG91cnM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLmhvdXJzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJCA6IG51bGwsXFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQyID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5taW51dGVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgc2Vjb25kczogKF9maXJzdENsb2NrVGltZXN0YW1wJDMgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLnNlY29uZHMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDMgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDMgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBmcmFtZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5uRnJhbWVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0IDogbnVsbCxcXG4gICAgICAgICAgICAgICAgaXNGcmFtZURyb3A6IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuY250RHJvcHBlZEZsYWdcXG4gICAgICAgICAgICAgIH0gOiBudWxsLFxcbiAgICAgICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogcmVjZWl2ZVRpbWVzdGFtcFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcXG4gICAgICAgICAgICAgICAgZGF0YTogKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHt9LCBydHBUaW1lc3RhbXAsIHtcXG4gICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc2VpT2Zmc2V0ICs9IHNlaVBheWxvYWQubGVuZ3RoO1xcblxcbiAgICAgICAgLy8gU3RvcCBpZiBhbiBpbnZhbGlkIHBheWxvYWQgbGVuZ3RoIHdhcyBkZXRlY3RlZC5cXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gICAgY3VycmVudEluZGV4ID0gbmV4dE5hbFN0YXJ0O1xcbiAgfVxcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2FzeW5jVG9HZW5lcmF0b3I7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xcbiAgdHJ5IHtcXG4gICAgdmFyIGkgPSBuW2FdKGMpLFxcbiAgICAgIHUgPSBpLnZhbHVlO1xcbiAgfSBjYXRjaCAobikge1xcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xcbiAgfVxcbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xcbn1cXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XFxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xcbiAgICB2YXIgdCA9IHRoaXMsXFxuICAgICAgZSA9IGFyZ3VtZW50cztcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XFxuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwibmV4dFxcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJ0aHJvd1xcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBfbmV4dCh2b2lkIDApO1xcbiAgICB9KTtcXG4gIH07XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2NsYXNzQ2FsbENoZWNrOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcXG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXFxcIik7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2NyZWF0ZUNsYXNzOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XFxuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcXG4gICAgdmFyIG8gPSByW3RdO1xcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFxcXCJ2YWx1ZVxcXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICgwLF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoby5rZXkpLCBvKTtcXG4gIH1cXG59XFxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcXG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFxcXCJwcm90b3R5cGVcXFwiLCB7XFxuICAgIHdyaXRhYmxlOiAhMVxcbiAgfSksIGU7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2RlZmluZVByb3BlcnR5OyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xcbiAgcmV0dXJuIChyID0gKDAsX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XFxuICAgIHZhbHVlOiB0LFxcbiAgICBlbnVtZXJhYmxlOiAhMCxcXG4gICAgY29uZmlndXJhYmxlOiAhMCxcXG4gICAgd3JpdGFibGU6ICEwXFxuICB9KSA6IGVbcl0gPSB0LCBlO1xcbn1cXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIHRvUHJpbWl0aXZlOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XFxuICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gKDAsX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHQpIHx8ICF0KSByZXR1cm4gdDtcXG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFxcXCJkZWZhdWx0XFxcIik7XFxuICAgIGlmIChcXFwib2JqZWN0XFxcIiAhPSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoaSkpIHJldHVybiBpO1xcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlxcXCIpO1xcbiAgfVxcbiAgcmV0dXJuIChcXFwic3RyaW5nXFxcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyB0b1Byb3BlcnR5S2V5OyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJpbWl0aXZlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJpbWl0aXZlLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qc1xcXCIpO1xcblxcblxcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xcbiAgdmFyIGkgPSAoMCxfdG9QcmltaXRpdmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKSh0LCBcXFwic3RyaW5nXFxcIik7XFxuICByZXR1cm4gXFxcInN5bWJvbFxcXCIgPT0gKDAsX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKGkpID8gaSA6IGkgKyBcXFwiXFxcIjtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX3R5cGVvZjsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbmZ1bmN0aW9uIF90eXBlb2Yobykge1xcbiAgXFxcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXFxcIjtcXG5cXG4gIHJldHVybiBfdHlwZW9mID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIFxcXCJzeW1ib2xcXFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gdHlwZW9mIG87XFxuICB9IDogZnVuY3Rpb24gKG8pIHtcXG4gICAgcmV0dXJuIG8gJiYgXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXFxcInN5bWJvbFxcXCIgOiB0eXBlb2YgbztcXG4gIH0sIF90eXBlb2Yobyk7XFxufVxcblxcblxcbi8qKiovIH0pXFxuXFxuLyoqKioqKi8gXFx0fSk7XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvLyBUaGUgbW9kdWxlIGNhY2hlXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXFxuLyoqKioqKi8gXFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xcbi8qKioqKiovIFxcdFxcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxcbi8qKioqKiovIFxcdFxcdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xcbi8qKioqKiovIFxcdFxcdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xcbi8qKioqKiovIFxcdFxcdFxcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcXG4vKioqKioqLyBcXHRcXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXFxuLyoqKioqKi8gXFx0XFx0XFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHRleHBvcnRzOiB7fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0XFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0XFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcXG4vKioqKioqLyBcXHRcXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XFxuLyoqKioqKi8gXFx0fVxcbi8qKioqKiovIFxcdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKi8gXFx0Lyogd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovXFxuLyoqKioqKi8gXFx0IWZ1bmN0aW9uKCkge1xcbi8qKioqKiovIFxcdFxcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdH0oKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kICovXFxuLyoqKioqKi8gXFx0IWZ1bmN0aW9uKCkge1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH1cXG4vKioqKioqLyBcXHR9KCk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IHt9O1xcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2UhLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXIudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2sgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlICovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3JtcyAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiKTtcXG5cXG5cXG5cXG5cXG52YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgLyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL21haW4vcGFja2FnZXMvYmFiZWwtaGVscGVycy9MSUNFTlNFICovIHZhciBlLCB0LCByID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sIG4gPSByLml0ZXJhdG9yIHx8IFxcXCJAQGl0ZXJhdG9yXFxcIiwgbyA9IHIudG9TdHJpbmdUYWcgfHwgXFxcIkBAdG9TdHJpbmdUYWdcXFwiOyBmdW5jdGlvbiBpKHIsIG4sIG8sIGkpIHsgdmFyIGMgPSBuICYmIG4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gbiA6IEdlbmVyYXRvciwgdSA9IE9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpOyByZXR1cm4gX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiX2ludm9rZVxcXCIsIGZ1bmN0aW9uIChyLCBuLCBvKSB7IHZhciBpLCBjLCB1LCBmID0gMCwgcCA9IG8gfHwgW10sIHkgPSAhMSwgRyA9IHsgcDogMCwgbjogMCwgdjogZSwgYTogZCwgZjogZC5iaW5kKGUsIDQpLCBkOiBmdW5jdGlvbiBkKHQsIHIpIHsgcmV0dXJuIGkgPSB0LCBjID0gMCwgdSA9IGUsIEcubiA9IHIsIGE7IH0gfTsgZnVuY3Rpb24gZChyLCBuKSB7IGZvciAoYyA9IHIsIHUgPSBuLCB0ID0gMDsgIXkgJiYgZiAmJiAhbyAmJiB0IDwgcC5sZW5ndGg7IHQrKykgeyB2YXIgbywgaSA9IHBbdF0sIGQgPSBHLnAsIGwgPSBpWzJdOyByID4gMyA/IChvID0gbCA9PT0gbikgJiYgKHUgPSBpWyhjID0gaVs0XSkgPyA1IDogKGMgPSAzLCAzKV0sIGlbNF0gPSBpWzVdID0gZSkgOiBpWzBdIDw9IGQgJiYgKChvID0gciA8IDIgJiYgZCA8IGlbMV0pID8gKGMgPSAwLCBHLnYgPSBuLCBHLm4gPSBpWzFdKSA6IGQgPCBsICYmIChvID0gciA8IDMgfHwgaVswXSA+IG4gfHwgbiA+IGwpICYmIChpWzRdID0gciwgaVs1XSA9IG4sIEcubiA9IGwsIGMgPSAwKSk7IH0gaWYgKG8gfHwgciA+IDEpIHJldHVybiBhOyB0aHJvdyB5ID0gITAsIG47IH0gcmV0dXJuIGZ1bmN0aW9uIChvLCBwLCBsKSB7IGlmIChmID4gMSkgdGhyb3cgVHlwZUVycm9yKFxcXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXFxcIik7IGZvciAoeSAmJiAxID09PSBwICYmIGQocCwgbCksIGMgPSBwLCB1ID0gbDsgKHQgPSBjIDwgMiA/IGUgOiB1KSB8fCAheTspIHsgaSB8fCAoYyA/IGMgPCAzID8gKGMgPiAxICYmIChHLm4gPSAtMSksIGQoYywgdSkpIDogRy5uID0gdSA6IEcudiA9IHUpOyB0cnkgeyBpZiAoZiA9IDIsIGkpIHsgaWYgKGMgfHwgKG8gPSBcXFwibmV4dFxcXCIpLCB0ID0gaVtvXSkgeyBpZiAoISh0ID0gdC5jYWxsKGksIHUpKSkgdGhyb3cgVHlwZUVycm9yKFxcXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFxcXCIpOyBpZiAoIXQuZG9uZSkgcmV0dXJuIHQ7IHUgPSB0LnZhbHVlLCBjIDwgMiAmJiAoYyA9IDApOyB9IGVsc2UgMSA9PT0gYyAmJiAodCA9IGlbXFxcInJldHVyblxcXCJdKSAmJiB0LmNhbGwoaSksIGMgPCAyICYmICh1ID0gVHlwZUVycm9yKFxcXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcXFwiICsgbyArIFxcXCInIG1ldGhvZFxcXCIpLCBjID0gMSk7IGkgPSBlOyB9IGVsc2UgaWYgKCh0ID0gKHkgPSBHLm4gPCAwKSA/IHUgOiByLmNhbGwobiwgRykpICE9PSBhKSBicmVhazsgfSBjYXRjaCAodCkgeyBpID0gZSwgYyA9IDEsIHUgPSB0OyB9IGZpbmFsbHkgeyBmID0gMTsgfSB9IHJldHVybiB7IHZhbHVlOiB0LCBkb25lOiB5IH07IH07IH0ociwgbywgaSksICEwKSwgdTsgfSB2YXIgYSA9IHt9OyBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fSBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge30gdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgdmFyIGMgPSBbXVtuXSA/IHQodChbXVtuXSgpKSkgOiAoX3JlZ2VuZXJhdG9yRGVmaW5lMih0ID0ge30sIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCB0KSwgdSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGMpOyBmdW5jdGlvbiBmKGUpIHsgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAoZS5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSksIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh1KSwgZTsgfSByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcImNvbnN0cnVjdG9yXFxcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiwgX3JlZ2VuZXJhdG9yRGVmaW5lMihHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbywgXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbywgXFxcIkdlbmVyYXRvclxcXCIpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJ0b1N0cmluZ1xcXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFxcXCJbb2JqZWN0IEdlbmVyYXRvcl1cXFwiOyB9KSwgKF9yZWdlbmVyYXRvciA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgcmV0dXJuIHsgdzogaSwgbTogZiB9OyB9KSgpOyB9XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBuLCB0KSB7IHZhciBpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5OyB0cnkgeyBpKHt9LCBcXFwiXFxcIiwge30pOyB9IGNhdGNoIChlKSB7IGkgPSAwOyB9IF9yZWdlbmVyYXRvckRlZmluZTIgPSBmdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUoZSwgciwgbiwgdCkgeyBmdW5jdGlvbiBvKHIsIG4pIHsgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5faW52b2tlKHIsIG4sIGUpOyB9KTsgfSByID8gaSA/IGkoZSwgciwgeyB2YWx1ZTogbiwgZW51bWVyYWJsZTogIXQsIGNvbmZpZ3VyYWJsZTogIXQsIHdyaXRhYmxlOiAhdCB9KSA6IGVbcl0gPSBuIDogKG8oXFxcIm5leHRcXFwiLCAwKSwgbyhcXFwidGhyb3dcXFwiLCAxKSwgbyhcXFwicmV0dXJuXFxcIiwgMikpOyB9LCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG52YXIgd29ya2VyID0gc2VsZjtcXG4vLyBUaGlzIGlzIGhvdyB0aGUgZG9jdW1lbnRhdGlvbiBpbnN0cnVjdHMgdG8gZG8gaXQgLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93b3JrZXItbG9hZGVyXFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbnZhciBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpIHtcXG4gICAgKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fW1xcXCJkZWZhdWx0XFxcIl0pKHRoaXMsIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIH1cXG4gIHJldHVybiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIG51bGwsIFt7XFxuICAgIGtleTogXFxcImhhbmRsZUFkZFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUcmFuc2Zvcm0odHlwZSkge1xcbiAgICAgIGlmIChUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5faXNQaXBlbGluZUNvbmZpZ3VyZWQpIHtcXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IFBpcGVsaW5lIGlzIGxvY2tlZC4gQSB0cmFuc2Zvcm0gY2Fubm90IGJlIGFkZGVkIG9uY2UgdGhlIHBpcGVsaW5lIGhhcyBiZWVuIGNvbmZpZ3VyZWQnKTtcXG4gICAgICB9XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlICdmcmFtZS10aW1pbmctaW5mb3JtYXRpb24nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkLXZpZGVvJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncHJvdGVjdGVkLWF1ZGlvJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAncGFzcy10aHJvdWdoJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkVycm9yOiBVbmtub3duIHRyYW5zZm9ybSB0eXBlIFtcXFwiLmNvbmNhdCh0eXBlLCBcXFwiXVxcXCIpKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY29uZmlndXJlUGlwZWxpbmVcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xcbiAgICAgIHZhciBfY29uZmlndXJlUGlwZWxpbmUgPSAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKSgvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKHNvdXJjZSwgc2luaykge1xcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7XFxuICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Lm4pIHtcXG4gICAgICAgICAgICBjYXNlIDA6XFxuICAgICAgICAgICAgICBpZiAoc291cmNlICYmIHNpbmspIHtcXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDE7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogQ29uZmlndXJhdGlvbiBvZiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZSByZXF1aXJlcyBib3RoIGEgcmVhZGJhbGUgc291cmNlIGFuZCB3cml0YWJsZSBzaW5rJyk7XFxuICAgICAgICAgICAgY2FzZSAxOlxcbiAgICAgICAgICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKCk7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjtcXG4gICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5yZWR1Y2VSaWdodChmdW5jdGlvbiAocGlwZWxpbmUsIHRyYW5zZm9ybSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlwZWxpbmUucGlwZVRocm91Z2godHJhbnNmb3JtKTtcXG4gICAgICAgICAgICAgIH0sIHNvdXJjZSkucGlwZVRvKHNpbmspO1xcbiAgICAgICAgICAgIGNhc2UgMjpcXG4gICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCA9IHRydWU7XFxuICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkLFxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgICAgbmFtZTogVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2FzZSAzOlxcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmEoMik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0sIF9jYWxsZWUpO1xcbiAgICAgIH0pKTtcXG4gICAgICBmdW5jdGlvbiBjb25maWd1cmVQaXBlbGluZShfeCwgX3gyKSB7XFxuICAgICAgICByZXR1cm4gX2NvbmZpZ3VyZVBpcGVsaW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBjb25maWd1cmVQaXBlbGluZTtcXG4gICAgfSgpXFxuICB9LCB7XFxuICAgIGtleTogXFxcImhhbmRsZU1lc3NhZ2VcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShfcmVmKSB7XFxuICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgdmFyIHR5cGUgPSBtZXNzYWdlLnR5cGU7XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm06XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZUFkZFRyYW5zZm9ybShtZXNzYWdlLmRhdGEpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShtZXNzYWdlLmRhdGEuc291cmNlLCBtZXNzYWdlLmRhdGEuc2luayk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgKDAsX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1tcXFwiZGVmYXVsdFxcXCJdKSh0eXBlKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX3RyYW5zZm9ybXNcXFwiLCBbXSk7XFxuKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBcXFwiX2lzUGlwZWxpbmVDb25maWd1cmVkXFxcIiwgZmFsc2UpO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl93b3JrZXJOYW1lXFxcIiwgdm9pZCAwKTtcXG4oZnVuY3Rpb24gKCkge1xcbiAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1tUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcl0gRXJyb3I6IFslc10nLCBlcnJvcik7XFxuICB9O1xcbiAgd29ya2VyLm9ubWVzc2FnZSA9IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVNZXNzYWdlLmJpbmQoX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIGlmICh3b3JrZXIuUlRDVHJhbnNmb3JtRXZlbnQpIHtcXG4gICAgd29ya2VyLm9ucnRjdHJhbnNmb3JtID0gZnVuY3Rpb24gKF9yZWYyKSB7XFxuICAgICAgdmFyIHRyYW5zZm9ybWVyID0gX3JlZjIudHJhbnNmb3JtZXI7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lID0gdHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lO1xcbiAgICAgIHZhciBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcXG4gICAgICB2YXIgc2luayA9IHRyYW5zZm9ybWVyLndyaXRhYmxlO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShzb3VyY2UsIHNpbmspO1xcbiAgICB9O1xcbiAgfVxcbn0pKCk7XFxuLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF9fV0VCUEFDS19ERUZBVUxUX0VYUE9SVF9fID0gKG51bGwpO1xcbi8qKioqKiovIH0pKClcXG47XFxuXCIsIFwiV29ya2VyXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYsIG5vLXVzZS1iZWZvcmUtZGVmaW5lLCBuZXctY2FwICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjb250ZW50LCB3b3JrZXJDb25zdHJ1Y3Rvciwgd29ya2VyT3B0aW9ucywgdXJsKSB7XG4gIHZhciBnbG9iYWxTY29wZSA9IHNlbGYgfHwgd2luZG93O1xuXG4gIHRyeSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBibG9iO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBOZXcgQVBJXG4gICAgICAgIGJsb2IgPSBuZXcgZ2xvYmFsU2NvcGUuQmxvYihbY29udGVudF0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBCbG9iQnVpbGRlciA9IERlcHJlY2F0ZWQsIGJ1dCB3aWRlbHkgaW1wbGVtZW50ZWRcbiAgICAgICAgdmFyIEJsb2JCdWlsZGVyID0gZ2xvYmFsU2NvcGUuQmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuV2ViS2l0QmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuTW96QmxvYkJ1aWxkZXIgfHwgZ2xvYmFsU2NvcGUuTVNCbG9iQnVpbGRlcjtcbiAgICAgICAgYmxvYiA9IG5ldyBCbG9iQnVpbGRlcigpO1xuICAgICAgICBibG9iLmFwcGVuZChjb250ZW50KTtcbiAgICAgICAgYmxvYiA9IGJsb2IuZ2V0QmxvYigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgVVJMID0gZ2xvYmFsU2NvcGUuVVJMIHx8IGdsb2JhbFNjb3BlLndlYmtpdFVSTDtcbiAgICAgIHZhciBvYmplY3RVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgdmFyIHdvcmtlciA9IG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0ob2JqZWN0VVJMLCB3b3JrZXJPcHRpb25zKTtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VVJMKTtcbiAgICAgIHJldHVybiB3b3JrZXI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0oXCJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQsXCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChjb250ZW50KSksIHdvcmtlck9wdGlvbnMpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghdXJsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIklubGluZSB3b3JrZXIgaXMgbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXSh1cmwsIHdvcmtlck9wdGlvbnMpO1xuICB9XG59OyIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5leHBvcnQgeyBfYXJyYXlMaWtlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5leHBvcnQgeyBfYXJyYXlXaXRob3V0SG9sZXMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxuZXhwb3J0IHsgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5leHBvcnQgeyBfYXN5bmNUb0dlbmVyYXRvciBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxuZXhwb3J0IHsgX2NsYXNzQ2FsbENoZWNrIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxuZXhwb3J0IHsgX2NyZWF0ZUNsYXNzIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxuZXhwb3J0IHsgX2dldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0cyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5leHBvcnQgeyBfaXRlcmFibGVUb0FycmF5TGltaXQgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVSZXN0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlU3ByZWFkIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKSBvID0gbltyXSwgdC5pbmRleE9mKG8pID49IDAgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluZGV4T2YobikgPj0gMCkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5leHBvcnQgeyBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9zZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxuZXhwb3J0IHsgX3NsaWNlZFRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheVdpdGhvdXRIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlU3ByZWFkIGZyb20gXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCI7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5leHBvcnQgeyBfdG9Db25zdW1hYmxlQXJyYXkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCB0b1ByaW1pdGl2ZSBmcm9tIFwiLi90b1ByaW1pdGl2ZS5qc1wiO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5leHBvcnQgeyB0b1Byb3BlcnR5S2V5IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBfdHlwZW9mKG8pO1xufVxuZXhwb3J0IHsgX3R5cGVvZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5leHBvcnQgeyBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xudmFyIGcgPVxuICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMpIHx8XG4gICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZikgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpIHx8XG4gIHt9XG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGcsXG4gIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBnICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICBibG9iOlxuICAgICdGaWxlUmVhZGVyJyBpbiBnICYmXG4gICAgJ0Jsb2InIGluIGcgJiZcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIGcsXG4gIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIGdcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICBpZiAoaGVhZGVyLmxlbmd0aCAhPSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0hlYWRlcnMgY29uc3RydWN0b3I6IGV4cGVjdGVkIG5hbWUvdmFsdWUgcGFpciB0byBiZSBsZW5ndGggMiwgZm91bmQnICsgaGVhZGVyLmxlbmd0aClcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcbiAgICB9LCB0aGlzKVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIHZhciBvbGRWYWx1ZSA9IHRoaXMubWFwW25hbWVdXG4gIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUgPyBvbGRWYWx1ZSArICcsICcgKyB2YWx1ZSA6IHZhbHVlXG59XG5cbkhlYWRlcnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgaWYgKHRoaXMubWFwLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHRoaXMubWFwW25hbWVdLCBuYW1lLCB0aGlzKVxuICAgIH1cbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2gobmFtZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaXRlbXMucHVzaCh2YWx1ZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5pZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xufVxuXG5mdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gIGlmIChib2R5Ll9ub0JvZHkpIHJldHVyblxuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHZhciBtYXRjaCA9IC9jaGFyc2V0PShbQS1aYS16MC05Xy1dKykvLmV4ZWMoYmxvYi50eXBlKVxuICB2YXIgZW5jb2RpbmcgPSBtYXRjaCA/IG1hdGNoWzFdIDogJ3V0Zi04J1xuICByZWFkZXIucmVhZEFzVGV4dChibG9iLCBlbmNvZGluZylcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEFycmF5QnVmZmVyQXNUZXh0KGJ1Zikge1xuICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcbiAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXJzW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZSh2aWV3W2ldKVxuICB9XG4gIHJldHVybiBjaGFycy5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBidWZmZXJDbG9uZShidWYpIHtcbiAgaWYgKGJ1Zi5zbGljZSkge1xuICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgfSBlbHNlIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zi5ieXRlTGVuZ3RoKVxuICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gIH1cbn1cblxuZnVuY3Rpb24gQm9keSgpIHtcbiAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgLypcbiAgICAgIGZldGNoLW1vY2sgd3JhcHMgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiBhbiBFUzYgUHJveHkgdG9cbiAgICAgIHByb3ZpZGUgdXNlZnVsIHRlc3QgaGFybmVzcyBmZWF0dXJlcyBzdWNoIGFzIGZsdXNoLiBIb3dldmVyLCBvblxuICAgICAgRVM1IGJyb3dzZXJzIHdpdGhvdXQgZmV0Y2ggb3IgUHJveHkgc3VwcG9ydCBwb2xseWZpbGxzIG11c3QgYmUgdXNlZDtcbiAgICAgIHRoZSBwcm94eS1wb2xseWZpbGwgaXMgdW5hYmxlIHRvIHByb3h5IGFuIGF0dHJpYnV0ZSB1bmxlc3MgaXQgZXhpc3RzXG4gICAgICBvbiB0aGUgb2JqZWN0IGJlZm9yZSB0aGUgUHJveHkgaXMgY3JlYXRlZC4gVGhpcyBjaGFuZ2UgZW5zdXJlc1xuICAgICAgUmVzcG9uc2UuYm9keVVzZWQgZXhpc3RzIG9uIHRoZSBpbnN0YW5jZSwgd2hpbGUgbWFpbnRhaW5pbmcgdGhlXG4gICAgICBzZW1hbnRpYyBvZiBzZXR0aW5nIFJlcXVlc3QuYm9keVVzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZVxuICAgICAgX2luaXRCb2R5IGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgIHRoaXMuYm9keVVzZWQgPSB0aGlzLmJvZHlVc2VkXG4gICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICB0aGlzLl9ub0JvZHkgPSB0cnVlO1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciBpc0NvbnN1bWVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgIHJldHVybiBpc0NvbnN1bWVkXG4gICAgICB9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQgKyB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBhcyBBcnJheUJ1ZmZlcicpXG4gICAgfVxuICB9XG5cbiAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3RlZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxudmFyIG1ldGhvZHMgPSBbJ0NPTk5FQ1QnLCAnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUEFUQ0gnLCAnUE9TVCcsICdQVVQnLCAnVFJBQ0UnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbCB8fCAoZnVuY3Rpb24gKCkge1xuICAgIGlmICgnQWJvcnRDb250cm9sbGVyJyBpbiBnKSB7XG4gICAgICB2YXIgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHJldHVybiBjdHJsLnNpZ25hbDtcbiAgICB9XG4gIH0oKSk7XG4gIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgfVxuICB0aGlzLl9pbml0Qm9keShib2R5KVxuXG4gIGlmICh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIGlmIChvcHRpb25zLmNhY2hlID09PSAnbm8tc3RvcmUnIHx8IG9wdGlvbnMuY2FjaGUgPT09ICduby1jYWNoZScpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYSAnXycgcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmdcbiAgICAgIHZhciByZVBhcmFtU2VhcmNoID0gLyhbPyZdKV89W14mXSovXG4gICAgICBpZiAocmVQYXJhbVNlYXJjaC50ZXN0KHRoaXMudXJsKSkge1xuICAgICAgICAvLyBJZiBpdCBhbHJlYWR5IGV4aXN0cyB0aGVuIHNldCB0aGUgdmFsdWUgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy51cmwucmVwbGFjZShyZVBhcmFtU2VhcmNoLCAnJDFfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSBhZGQgYSBuZXcgJ18nIHBhcmFtZXRlciB0byB0aGUgZW5kIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB2YXIgcmVRdWVyeVN0cmluZyA9IC9cXD8vXG4gICAgICAgIHRoaXMudXJsICs9IChyZVF1ZXJ5U3RyaW5nLnRlc3QodGhpcy51cmwpID8gJyYnIDogJz8nKSArICdfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywge2JvZHk6IHRoaXMuX2JvZHlJbml0fSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcbiAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICBib2R5XG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgnJicpXG4gICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBmb3JtXG59XG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSB7XG4gIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yXG4gIHZhciBwcmVQcm9jZXNzZWRIZWFkZXJzID0gcmF3SGVhZGVycy5yZXBsYWNlKC9cXHI/XFxuW1xcdCBdKy9nLCAnICcpXG4gIC8vIEF2b2lkaW5nIHNwbGl0IHZpYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIGNvbW1vbiBJRTExIGJ1ZyB3aXRoIHRoZSBjb3JlLWpzIDMuNi4wIHJlZ2V4IHBvbHlmaWxsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9naXRodWIvZmV0Y2gvaXNzdWVzLzc0OFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNzUxXG4gIHByZVByb2Nlc3NlZEhlYWRlcnNcbiAgICAuc3BsaXQoJ1xccicpXG4gICAgLm1hcChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuaW5kZXhPZignXFxuJykgPT09IDAgPyBoZWFkZXIuc3Vic3RyKDEsIGhlYWRlci5sZW5ndGgpIDogaGVhZGVyXG4gICAgfSlcbiAgICAuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpLnRyaW0oKVxuICAgICAgaWYgKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6JykudHJpbSgpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1Jlc3BvbnNlICcgKyBlcnJvci5tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGhlYWRlcnNcbn1cblxuQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIHRoaXMudHlwZSA9ICdkZWZhdWx0J1xuICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzID09PSB1bmRlZmluZWQgPyAyMDAgOiBvcHRpb25zLnN0YXR1c1xuICBpZiAodGhpcy5zdGF0dXMgPCAyMDAgfHwgdGhpcy5zdGF0dXMgPiA1OTkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Jlc3BvbnNlJzogVGhlIHN0YXR1cyBwcm92aWRlZCAoMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgWzIwMCwgNTk5XS5cIilcbiAgfVxuICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gIHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVzVGV4dCA9PT0gdW5kZWZpbmVkID8gJycgOiAnJyArIG9wdGlvbnMuc3RhdHVzVGV4dFxuICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG59XG5cbkJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICB1cmw6IHRoaXMudXJsXG4gIH0pXG59XG5cblJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAyMDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgcmVzcG9uc2Uub2sgPSBmYWxzZVxuICByZXNwb25zZS5zdGF0dXMgPSAwXG4gIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gIHJldHVybiByZXNwb25zZVxufVxuXG52YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG59XG5cbmV4cG9ydCB2YXIgRE9NRXhjZXB0aW9uID0gZy5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgY2hlY2sgaWYgc3BlY2lmaWNhbGx5IGZvciB3aGVuIGEgdXNlciBmZXRjaGVzIGEgZmlsZSBsb2NhbGx5IGZyb20gdGhlIGZpbGUgc3lzdGVtXG4gICAgICAvLyBPbmx5IGlmIHRoZSBzdGF0dXMgaXMgb3V0IG9mIGEgbm9ybWFsIHJhbmdlXG4gICAgICBpZiAocmVxdWVzdC51cmwuaW5kZXhPZignZmlsZTovLycpID09PSAwICYmICh4aHIuc3RhdHVzIDwgMjAwIHx8IHhoci5zdGF0dXMgPiA1OTkpKSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0gMjAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSB4aHIuc3RhdHVzO1xuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCB0aW1lZCBvdXQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZy5sb2NhdGlvbi5ocmVmID8gZy5sb2NhdGlvbi5ocmVmIDogdXJsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgZml4VXJsKHJlcXVlc3QudXJsKSwgdHJ1ZSlcblxuICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnb21pdCcpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHtcbiAgICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3VwcG9ydC5hcnJheUJ1ZmZlclxuICAgICAgKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluaXQgJiYgdHlwZW9mIGluaXQuaGVhZGVycyA9PT0gJ29iamVjdCcgJiYgIShpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzIHx8IChnLkhlYWRlcnMgJiYgaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgZy5IZWFkZXJzKSkpIHtcbiAgICAgIHZhciBuYW1lcyA9IFtdO1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5pdC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgbmFtZXMucHVzaChub3JtYWxpemVOYW1lKG5hbWUpKVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIGlmIChuYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsKSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gIH0pXG59XG5cbmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXG5pZiAoIWcuZmV0Y2gpIHtcbiAgZy5mZXRjaCA9IGZldGNoXG4gIGcuSGVhZGVycyA9IEhlYWRlcnNcbiAgZy5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnLlJlc3BvbnNlID0gUmVzcG9uc2Vcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi9DaGFubmVscyc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsInVuZGVmaW5lZCIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCIsIlBhcmFtZXRlcnMiLCJfZGlzY292ZXJ5UGFyYW1ldGVycyIsImFwcGx5UGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJfX1BBUkFNRVRFUlNfXyIsImRpc2NvdmVyeSIsImludGVudGlvbnMiLCJicm93c2VyR2xvYmFsU2NvcGUiLCJkb2N1bWVudCIsImxvY2F0aW9uIiwid2luZG93IiwiZ2xvYmFsU2NvcGUiLCJfZG9jdW1lbnQiLCJfbG9jYXRpb24iLCJfd2luZG93IiwiRm9ybURhdGEiLCJNZWRpYVN0cmVhbSIsIk1lZGlhU3RyZWFtVHJhY2siLCJNZWRpYVNvdXJjZSIsIlJUQ1BlZXJDb25uZWN0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiUlRDSWNlQ2FuZGlkYXRlIiwiVVJMU2VhcmNoUGFyYW1zIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImNyZWF0ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhpZGRlbiIsInF1ZXJ5U2VsZWN0b3IiLCJmZXRjaCIsImhvc3RuYW1lIiwic2VhcmNoIiwiY29ubmVjdGlvbiIsIm9uTGluZSIsInNldEludGVydmFsIiwic2V0SW5zdGFuY2UiLCJwcm92aWRlZEdsb2JhbFNjb3BlIiwiZ2V0SW5zdGFuY2UiLCJfcmVhZE9ubHlJbnN0YW5jZSIsInN1YnNjcmliZSIsImNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlIiwiX2luc3RhbmNlIiwiZGlzcG9zYWJsZSIsIl9kaXNwb3NlZCIsIl9kaXNwb3NhYmxlIiwiY2FsbCIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwiX3RoaXMyIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIl8iLCJPYmplY3QiLCJhcmd1bWVudCIsImRhdGEiLCJ0b1N0cmluZ1N0ciIsIkxvZ2dpbmdUaHJlc2hvbGQiLCJUZWxlbWV0cnlBcHBlbmRlciIsIlRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJsb2dnZXIiLCJfbG9nZ2VycyIsImFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUxvZ2dpbmdMZXZlbCIsImFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwiLCJhcHBseUNvbnNvbGVMb2dnZXIiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwic2V0VGhyZXNob2xkIiwiYXBwbHlBcHBlbmRlciIsImxvZ2dpbmdMZXZlbCIsIk9mZiIsIkFsbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwiLCJsb2dnaW5nTGV2ZWxUeXBlIiwiVGVsZW1ldHJ5TGV2ZWwiLCJtZXRyaWNzIiwiX21ldHJpY3MiLCJnZXRUZWxlbWV0cnlMZXZlbCIsIlRpbWVUb0ZpcnN0RnJhbWUiLCJFc3NlbnRpYWwiLCJDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiU3RhbGxlZCIsIkJ1ZmZlcmluZyIsIlJvdW5kVHJpcFRpbWUiLCJEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIk5ldHdvcmtUeXBlIiwiUmVzb2x1dGlvbkNoYW5nZWQiLCJBcHBsaWNhdGlvbkZvcmVncm91bmQiLCJBcHBsaWNhdGlvbkJhY2tncm91bmQiLCJNZXRyaWNzQ29uZmlndXJhdGlvbiIsIl91cmwiLCJzZXQiLCJ1cmwiLCJtZXRyaWNzVXJsIiwicGF0aG5hbWUiLCJfZW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsIl90ZW5hbmN5IiwidGVuYW5jeSIsIl9zZXNzaW9uSWQiLCJzZXNzaW9uSWQiLCJNZXRyaWNzU2VydmljZSIsIlRlbGVtZXRyeVVybCIsIkVudmlyb25tZW50IiwiTWV0cmljc0ZhY3RvcnkiLCJnZXRNZXRyaWNzU2VydmljZSIsIl90eXBlb2YiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJfbWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfZXhwb25lbnRpYWxCYWNrb2ZmIiwiZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSIsInRoZW4iLCJsb2NhdGlvbkhvc3RuYW1lIiwiX2RvbWFpbiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsInNka1ZlcnNpb24iLCJpZ25vcmVkIiwic2VuZE1ldHJpY3NJZkFibGUiLCJQcm9taXNlIiwicmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUiLCJnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsInN0YXR1cyIsInRlbGVtZXRyeUxldmVsVHlwZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJkZWZhdWx0VHJhY2tLaW5kcyIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsInRyYWNrS2luZHMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwiRGlzYWJsZWQiLCJpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCIsIkVuYWJsZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVycyIsInZpZGVvVHJhbnNjZWl2ZXJzIiwib3B0aW9ucyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiYWRkVHJhbnNjZWl2ZXIiLCJjcmVhdGVPZmZlciIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInRyYWNrc0tpbmRzIiwiY291bnRUcmFja0tpbmRzIiwidHJhY2tLaW5kQ291bnQiLCJhdWRpbyIsInZpZGVvIiwiY291bnRlZFRyYWNrS2luZHMiLCJjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsIlJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwibWVkaWFTdHJlYW0iLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfdHJhY2tzVG9Nb25pdG9yIiwiZ2V0VHJhY2tzIiwibWFwIiwidHJhY2siLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24yIiwiZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJzZHAiLCJwYXJzZWRTRFAiLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfdXBkYXRlVGltZW91dCIsIl91cGRhdGVTdGF0aXN0aWMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24zIiwiX2lnbm9yZWQiLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkIiwidXBkYXRlU3RhdGlzdGljTGVnYWN5IiwiaWQiLCJnZXRTdGF0cyIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAiLCJyZXBvcnQiLCJjdXJyZW50Um91bmRUcmlwVGltZSIsIm1lZGlhVHlwZSIsImNvZGVjIiwiY29kZWNJZCIsIm1pbWVUeXBlIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjMiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY0IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NSIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY3IiwiYnl0ZXMiLCJieXRlc1JlY2VpdmVkIiwicHJldmlvdXNCeXRlc1JlY2VpdmVkIiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c0xvc3QiLCJwYWNrZXRzUmVjZWl2ZWQiLCJnZXRDb2RlY0J5VHlwZSIsImZyYW1lc0RlY29kZWQiLCJmcHMiLCJfdXBkYXRlU3RhdGlzdGljTGVnYWN5IiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNCIsImdldFN0YXRzTGVnYWN5IiwicmVzdWx0IiwibmFtZXMiLCJzdGF0IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMiIsIl9zZHAiLCJzZHBTcGxpdEJ5TGluZXMiLCJzZHBTcGxpdEJ5VHJhY2tzIiwiX2F1ZGlvQ29kZWMiLCJhcHBseUNvZGVjIiwiX3ZpZGVvQ29kZWMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJzZHBTZWN0aW9uRm9yVHlwZSIsImZpbmQiLCJzZHBUcmFjayIsIl9zZHBTcGxpdEJ5TGluZXMkZmluZCIsInJ0bWFwIiwic2RwTGluZSIsInVzZWRDb2RlY0xpbmUiLCJ1c2VkQ29kZWMiLCJjb2RlY05hbWUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb24iLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQiLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNSIsImdldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb242Iiwic2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjciLCJnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCIsImdldFRyYW5zY2VpdmVycyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjgiLCJfY3JlYXRlT2ZmZXIiLCJwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCIsInJlc29sdmUiLCJyZWplY3QiLCJfY3JlYXRlQW5zd2VyIiwiY3JlYXRlQW5zd2VyIiwiX3gyIiwiX3NldExvY2FsRGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldExvY2FsRGVzY3JpcHRpb24iLCJfeDMiLCJfc2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlNCIsIl9kZXNjcmlwdGlvbiRzZHAiLCJoYXNDcnlwdG8iLCJfY29udGV4dDQiLCJzZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94NCIsImdldFNlbmRlcnMiLCJnZXRSZWNlaXZlcnMiLCJzZWxlY3RvciIsIl90aGlzMyIsImFkZFN0cmVhbSIsIl90aGlzNCIsImFkZFRyYWNrIiwib250cmFjayIsImhhbmRsZXIiLCJvbmljZWNhbmRpZGF0ZSIsIm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwib25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJjbG9zZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjkiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlIiwic3ViamVjdCIsIl9zdWJqZWN0IiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsIl92YWx1ZSIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiX2kiLCJfYXJyIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9HbG9iYWxTY29wZSRnZXRJbnN0YSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwib25Mb2FkIiwiX2luaXRpYWxpemVkIiwiYWRkV2luZG93RXZlbnRMaXN0ZW5lciIsImluaXQiLCJvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUiLCJwZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJjb25zb2xlTG9nZ2luZ0xldmVsIiwiY29uc29sZUFwcGVuZGVyIiwiYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwid2ViUGxheWVyTG9hZGVyIiwic2hha2FQbGF5ZXJMb2FkZXIiLCJobHNKc0xvYWRlciIsIl90aGlzJF9hcHBsaWNhdGlvbkFjdCIsIl9TREsiLCJzZWdtZW50cyIsInByb3RvY29sIiwidW5zaGlmdCIsImVuZHNXaXRoIiwiam9pbiIsIkJpdHJhdGVTdGF0ZSIsIkJpdHJhdGVNb2RlIiwiRGltZW5zaW9uIiwiQ2hhbm5lbFN0YXRlIiwiVmlkZW9UZWxlbWV0cnkiLCJTZXNzaW9uVGVsZW1ldHJ5IiwiVG9rZW5Db250ZXh0IiwiQ2hhbm5lbENvbnRleHQiLCJFbmNvZGVkU3RyZWFtU2luayIsIlN0cmVhbVRyYWNrVHJhbnNmb3JtIiwiU3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsIlN0YXRlQ29udGV4dCIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwiU3RyZWFtRmFjdG9yeSIsIkRpc2NvdmVyeSIsImRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiIsImZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiQ2hhbm5lbCIsInZpZGVvRWxlbWVudCIsImNoYW5uZWxDb250ZXh0T3B0aW9ucyIsInRhcmdldExhZyIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zIiwiaGFzSW5zZXJ0YWJsZVN0cmVhbXMiLCJoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJ2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImVuY29kZWRWaWRlb1N0cmVhbVNpbmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1TaW5rIiwiX3Rva2VuQ29udGV4dCIsIl9jaGFubmVsQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIl9zdGF0ZUNvbnRleHQiLCJfY2hhbm5lbFN0YXJ0VGltZSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seUV4aXN0cyIsImV4aXN0cyIsIl9yZWFkT25seUF1dG9NdXRlZCIsImF1dG9NdXRlZCIsIl9yZWFkT25seUF1dG9QYXVzZWQiLCJhdXRvUGF1c2VkIiwiX3JlYWRPbmx5VG9rZW5FeHBpcmluZyIsInRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UGxheWluZyIsInBsYXlpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5VGFyZ2V0TGFnIiwiX3JlYWRPbmx5TGFnIiwibGFnIiwiX3JlYWRPbmx5Qml0cmF0ZUxpbWl0IiwiYml0cmF0ZUxpbWl0IiwiX3JlYWRPbmx5UmVzb2x1dGlvbiIsInJlc29sdXRpb24iLCJfcmVhZE9ubHlGYWlsdXJlQ291bnQiLCJmYWlsdXJlQ291bnQiLCJfcmVhZE9ubHlFbmRQb2ludCIsImVuZFBvaW50IiwiX3JlYWRPbmx5U3RyZWFtIiwic3RyZWFtIiwiX3JlYWRPbmx5UnRjU3RhdGlzdGljcyIsIl9yZWFkT25seU1lZGlhU3RyZWFtIiwiX3Nlc3Npb25UZWxlbWV0cnkiLCJjaGFubmVsRGlzcG9zYWJsZXMiLCJfdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyIiwiaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQiLCJfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJjb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCIsImlzRW5hYmxlZCIsIl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJyZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJyZW5kZXJlckRpc3Bvc2FibGVzIiwidmlkZW9UZWxlbWV0cnkiLCJkYXRhc2V0Iiwic2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSIsInNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyIsIlN0b3BwZWQiLCJyZXN0YXJ0QWZ0ZXJTdG9wIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUGxheWluZyIsIm9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyIsImVsYXBzZWRJbk1pbGxpc2Vjb25kcyIsImNoYW5uZWxJbml0aWFsaXphdGlvbiIsImdldFRpbWUiLCJsaW1pdEJpdHJhdGUiLCJLZWVwIiwiTm9ybWFsIiwiZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJzdGFydCIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJpc0ZvcmVncm91bmQiLCJpc1N0YXJ0aW5nIiwiaXNTdHJlYW1IZWFsdGh5IiwiaXNSZXRyeWFibGVTdGF0ZSIsInBhdXNlIiwic3JjT2JqZWN0IiwiSW5pdGlhbGl6aW5nIiwid2lkdGgiLCJ2aWRlb1dpZHRoIiwiaGVpZ2h0IiwidmlkZW9IZWlnaHQiLCJlbXB0eSIsImRpc3Bvc2FibGVzIiwic2V0Qml0cmF0ZUxpbWl0IiwiY2xlYXJCaXRyYXRlTGltaXQiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiUmVzZXQiLCJ1cGRhdGVUYXJnZXRMYWciLCJfc3RvcCIsInJlYXNvbiIsInByb2Nlc3NTdG9wIiwic3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJSZWNvbm5lY3RpbmciLCJTdGFuZEJ5IiwiT2ZmbGluZSIsIlJlY292ZXJpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJDbGllbnRTdGFydEVycm9yIiwiVW5hdXRob3JpemVkIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJTdGFydGluZyIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsIl9tZWRpYVN0cmVhbSRnZXRUcmFjayIsImhhc0FjdGl2ZVRyYWNrcyIsInNvbWUiLCJyZWFkeVN0YXRlIiwicGF1c2VkIiwiX3Byb2Nlc3NTdGFydCIsIl9jYWxsZWU1IiwiX3RoaXM1IiwiaXNSZWNvdmVyeSIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJ2YWxpZCIsInZhbGlkYXRpb25SZXN1bHQiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0yIiwiX3ZhbGlkIiwiX3ZhbGlkYXRpb25SZXN1bHQiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEiLCJfdmFsaWQyIiwiX3ZhbGlkYXRpb25SZXN1bHQyIiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhMiIsIl92YWxpZDMiLCJfdmFsaWRhdGlvblJlc3VsdDMiLCJoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayIsImhhc0VuY29kZWRTdHJlYW1TaW5rIiwiaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrIiwic3RyZWFtUGxheWVyIiwiX2NvbnRleHQ1IiwidmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luayIsImlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsInRpbWVvdXRJZCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJnZXRSZXRyeUludGVydmFsIiwiX3Jlc3RhcnRBZnRlclN0b3AiLCJfY2FsbGVlNiIsIl9jb250ZXh0NiIsIl9wbGF5IiwiX2NhbGxlZTciLCJfY29udGV4dDciLCJwbGF5IiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsIl90aGlzNiIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJkZXN0cm95U3RyZWFtIiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsIl90aGlzNyIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5IiwiY2FwYWJpbGl0eSIsInNob3VsZEV4dHJhY3RUaW1lY29kZSIsInNob3VsZEV4dHJhY3RUaW1lc3RhbXBzIiwiaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCIsIm9wdGlvbiIsInRyaW0iLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzOCIsInBsYXlQcm9taXNlIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsIm9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3MiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiX29wdGlvbnMkb25SZWFsVGltZVN1IiwiX29wdGlvbnMkb25SZWFsVGltZVN1MiIsInJ0Y0F1ZGlvU3RhdGlzdGljIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzIiwiYXVkaW9UcmFjayIsIm1lZGlhU3RyZWFtVHJhY2siLCJyZWNlaXZlciIsIm1pZCIsInRyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMiLCJ2aWRlb1RyYWNrIiwiQXVkaW9Db2RlYyIsIkF1ZGlvQ29kZWNNYXBwaW5nIiwiY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlIiwiT1BVUyIsIkFBQyIsImNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWNUeXBlIiwiYXVkaW9Db2RlY1N0cmluZyIsInRvVXBwZXJDYXNlIiwiVmlkZW9Db2RlYyIsIlZpZGVvQ29kZWNNYXBwaW5nIiwiY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlIiwiSDI2NCIsIlZQOCIsIlZQOSIsImNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyIsInZpZGVvQ29kZWNUeXBlIiwidmlkZW9Db2RlY1N0cmluZyIsIlVpbnQ4QXJyYXkiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJyYWNlIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsImNsaWVudFZlcnNpb24iLCJyZXF1ZXN0Qm9keSIsImh0dHBSZXNwb25zZSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjIiLCJfcmVzcG9uc2UiLCJzdWJzY3JpYmVSZXNwb25zZSIsImJ1aWxkVXJsIiwiYmVhcmVyVG9rZW4iLCJodHRwUm91bmRUcmlwVGltZSIsInNlc3Npb25EZXNjcmlwdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbiIsIm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwiY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJjYW5kaWRhdGVzIiwiZGlzY292ZXJ5Q29tcGxldGVkIiwiYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2FyZ3M2IiwibWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDEzIiwiX3gxNCIsIl94MTUiLCJfZGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50Iiwic2VuZEJlYWNvbiIsIl94MTgiLCJfeDE5IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlIiwicnRjQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJvdGhlclByb3BlcnRpZXMiLCJqc29uIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiX29iamVjdFNwcmVhZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsIl94MjAiLCJfeDIxIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsIl9jYWxsZWUwIiwicHVibGlzaFJlc3BvbnNlIiwiX2NvbnRleHQwIiwiX3gyMiIsIl94MjMiLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwiX3gyNCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyNiIsIlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIiwiY29udGV4dCIsIk1hcCIsImNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwic2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0iLCJ0cmFja0lkIiwiZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0IiwiaXNFbmFibGVkU3ViamVjdCIsInJlZ2lzdGVyUm91dGUiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlIiwiX3RyYW5zZm9ybU5hbWUiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJydHBUaW1lc3RhbXAiLCJtZXRhZGF0YSIsInJ0cFRpbWVzdGFtcE51bWJlciIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbiIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbjIiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwidGltZWNvZGUiLCJyZWNlaXZlVGltZXN0YW1wIiwic291cmNlVGltZXN0YW1wIiwiaW5nZXN0VGltZXN0YW1wIiwiZW5jb2RlVGltZXN0YW1wIiwidHJhbnNjb2RlVGltZXN0YW1wIiwicGxheWJhY2tTdGF0ZSIsIl9jdXJyZW50UGxheWJhY2tTdGF0ZSIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wIiwidmlkZW9FbGVtZW50U3ViamVjdCIsImNsZWFyIiwiX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzIiwic2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzIiwiaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrIiwiX2FybVZpZGVvRnJhbWVDYWxsYmFjayIsInRpbWVzdGFtcHNUb0RlbGV0ZSIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwiX3N0ZXAkdmFsdWUiLCJmcmFtZVRpbWluZyIsInJlbmRlclRpbWVzdGFtcCIsInBlcmZvcm1hbmNlIiwidGltZU9yaWdpbiIsImVyciIsIl9pMiIsIl90aW1lc3RhbXBzVG9EZWxldGUiLCJvblBsYXlpbmciLCJvblBhdXNlIiwib25TdGFsbGVkIiwib25XYWl0aW5nIiwib25FbmRlZCIsIm9uRXJyb3IiLCJfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCIsImNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJJbnNlcnRhYmxlU3RyZWFtcyIsIkVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsImRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQiLCJSZWFsVGltZVN0cmVhbSIsImNoYW5uZWxDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0Iiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwicmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJhbGwiLCJfcmVmMyIsIl9yZWYzJCIsInN1YnNjcmliZU9wdGlvbnMiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfY2hhbm5lbENvbnRleHQiLCJfcmVmNCIsInJldHJ5Q2FsbGJhY2siLCJuYXZpZ2F0b3JJc09uTGluZSIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwibWVkaWFTdHJlYW1Qcm9taXNlIiwib25UcmFja0Rpc2FibGVkIiwic3RyZWFtcyIsInRyYWNrTGlzdGVuZXIiLCJhbnN3ZXIiLCJfcmVmNSIsIm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0MiIsIl9wZWVyQ29ubmVjdGlvbiRnZXRUciIsIl9wZWVyQ29ubmVjdGlvbiRnZXRUcjIiLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsInJlY2VpdmVycyIsImdldFZpZGVvVHJhY2tzIiwidmlkZW9UcmFja1JlY2VpdmVyIiwic3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMiLCJ0cmFuc2NlaXZlciIsImdldEF1ZGlvVHJhY2tzIiwiYXVkaW9UcmFja1JlY2VpdmVyIiwiY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwicmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0IiwicmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0iLCJlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCIsImNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsIl9JbnNlcnRhYmxlU3RyZWFtcyRjbyIsImNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWVkU3RyZWFtIiwicnRjQ29ubmVjdGlvbk1vbml0b3IiLCJydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiIsInJ0Y1N0YXRpc3RpYyIsInN0YXRpc3RpY3MiLCJhdWRpb1RyYWNrRmFpbGVkIiwidmlkZW9UcmFja0ZhaWxlZCIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUyIiwiaXNDbGllbnRPZmZlckZsb3ciLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJSZWFsVGltZVN0cmVhbUZhY3RvcnkiLCJ0b2tlbkNhcGFiaWxpdGllcyIsIlN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJTa2lwRnJhbWUiLCJFbmNvZGVkVmlkZW9DaHVuayIsImNodW5rIiwiZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2siLCJFbmNvZGVkQXVkaW9DaHVuayIsImVuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrIiwiX2VuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSIsImdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMiLCJfZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2siLCJzdXJyb2dhdGUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUiLCJnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjIiwiZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyIsIm1vZGUiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwiY29uc3RydWN0b3IiLCJmcm9tIiwiVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIiLCJUcmFuc2Zvcm1NZXNzYWdlVHlwZSIsIlRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIiLCJjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrIiwid29ya2VyIiwidGVybWluYXRlIiwidmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjayIsIl9jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJhZGRUcmFja1RyYW5zZm9ybXMiLCJjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtcyIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZSIsInBvc3RNZXNzYWdlIiwiQWRkVHJhbnNmb3JtIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2siLCJ0cmFja1JlY2VpdmVyIiwidHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwidHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlciIsInRyYW5zZm9ybSIsIlBpcGVsaW5lQ29uZmlndXJlZCIsIm9uY2UiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrIiwiYWN0aW9ucyIsImVuY29kZWRSZWNlaXZlclN0cmVhbXMiLCJDb25maWd1cmVQaXBlbGluZSIsInNvdXJjZSIsInJlYWRhYmxlIiwic2luayIsInRyYW5zZmVyIiwiaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiY29udHJvbGxlciIsInRyYW5zZm9ybWVyIiwiVHJhbnNmb3JtU3RyZWFtIiwicHJvY2Vzc29yIiwiZ2VuZXJhdG9yIiwicGlwZVRocm91Z2giLCJwaXBlVG8iLCJyZW1vdmVUcmFjayIsImF1ZGlvUHVtcGVyIiwiQXVkaW8iLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYW5uZXhCRm91ckJ5dGVTdGFydENvZGUiLCJzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWUiLCJzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWUiLCJfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjIiwiYnVmZmVyIiwiX3NpbmdsZVplcm9CeXRlIiwiX2lzU2FmYXJpIiwiX3N1cnJvZ2F0ZTI4eDE2SDI2NElGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJfaXNBbmRyb2lkQ2hyb21lIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIiLCJfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0IiwiX3N1cnJvZ2F0ZTI4eDE2SDI2NFBGcmFtZSIsIl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMiLCJfU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsImlzQW5kcm9pZCIsIlRyYW5zZm9ybVBpcGVsaW5lTWVzc2FnZVJvdXRlciIsIm1lc3NhZ2VUeXBlIiwicm91dGVNZXNzYWdlIiwiX21lc3NhZ2VSb3V0ZXMiLCJyb3V0ZU1lc3NhZ2VEYXRhIiwiQ2h1bmsiLCJNZXRhZGF0YSIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIm90aGVyIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsIm5vb3AiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0cmVhbUlkIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJldmVudCIsIm9uQ29udGludWF0aW9uIiwiX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciIsInB1c2hUaW1lVG9GaXJzdEZyYW1lIiwicHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdGltZVRvRmlyc3RGcmFtZSIsImR1cmF0aW9uU2luY2VQYWdlTG9hZCIsIl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3ZpZGVvU3RhbGxlZCIsImJ1ZmZlcmVkIiwiYnVmZmVyTGVuZ3RoIiwiaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQiLCJlbmQiLCJfbGFzdFByb2dyZXNzIiwidGltZVNpbmNlU3RvcCIsIm5ld1Jlc29sdXRpb24iLCJfdmlkZW9SZXNvbHV0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==
|